欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > adaptive_compliance_policy环境部署

adaptive_compliance_policy环境部署

2024/12/26 0:28:45 来源:https://blog.csdn.net/weixin_42679387/article/details/143773844  浏览:    关键词:adaptive_compliance_policy环境部署

adaptive_compliance_policy代码部署

  • adaptive环境安装
  • cpplibrary编译
    • Dependencies
    • CMakelists.txt
    • build
  • force_control编译
  • hardware_interfaces编译
    • 尝试一 解决opencv冲突问题
    • 尝试二 加入gopro编译
    • 尝试三 加入force_control_demo和ft_calibration编译
    • 尝试四 加入workcell/table_top_manip
    • 尝试五 加入manipulation_data_collection
  • postprocess_add_virtual_target_label.py尝试运行
  • virtual_target_real_env_runner.py尝试运行

参照项目主页按 md文件逐步实现:adaptive_compliance_policy

adaptive环境安装

  • 尝试一

安装过程中的问题,安装mamba后并没有缓解mamba env create -f conda_environment.yaml 这一步卡住的问题

  • 尝试二

所以采用手动创建环境python==3.10然后 pip install -r requirements.txt
以下两个在requirements.txt里安装有问题,注释掉直接控制台安装
pytorch-cuda==12.1 还未安装
conda intall llvm-openmp=14 成功安装
接着出现 pip一直报错问题,不知道是什么安装的时候出问题了
pip install pip==23.0.1

  • 尝试三
    在py39里尝试安装下面两条似乎可行
    pip install vit-pytorch==1.7.12
    pip install imagecodecs==2023.9.18
    于是直接基于py39来安装
    conda create -n adaptive --clone /home/qing/anaconda3/envs/py39
    安装requirements.txt 注意pytorch要写成torch
    pip install -r requirements.txt
    然后安装失败的几条
    mamba install llvm-openmp==14
    mamba install eigen==3.4
    接着解决pytorch-cuda==12.1的问题,目前不明确12.1是不是有影响
    根据previous_pytorch_versions
    mamba install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

    运行virtual_target_real_env_runner.py报错,numpy pandas matplotlib冲突了应该
    现在这几个库都是pip安装的,查看一下版本pip list | grep -E 'numpy|pandas|matplotlib'
    卸载这几个库pip uninstall numpy pandas matplotlib -y #-y就是自动确认为yes
    重新安装mamba install numpy pandas matplotlib -y
    opencv-python, pybind11, boost, fmt, spdlog
    后面对opencv改装了4.4.0,boost卸载了。
    matplotlib不知道为啥没有装上,所以装一下,mamba install matplotlib --no-update-deps用这句话装的
    adaptive_compliance_policy/PyriteUtility/data_pipeline/episode_data_buffer.py需要imageiomamba install imageio --no-update-deps
    adaptive_compliance_policy/PyriteUtility/planning_control/compliance_helpers.py需要cvxpy,mamba install cvxpy --no-update-deps

cpplibrary编译

Dependencies

  • Eigen: /usr/include/eigen3/Eigen

  • yaml-cpp
    sudo apt-get update
    sudo apt-get install libyaml-cpp-dev
    pkg-config --modversion yaml-cpp # 验证是否安装好
    安装路径在/usr/lib/x86_64-linux-gnu
    ☝上面这些全部废除,因为还是要用conda环境里的库

  • eigen库已经安装:3.4.0

  • yaml-cpp:用mamba默认安装的是0.8.0版本太高不兼容,尝试手动安装0.6.2。
    查看可用版本mamba search -c conda-forge yaml-cpp
    安装mamba install -c conda-forge yaml-cpp=0.6.3

CMakelists.txt

cmake_minimum_required(VERSION 3.10) #指定最低版本的 CMake,以确保兼容性。
project(RobotUtilities) # 定义项目名称。
set(CMAKE_BUILD_TYPE Release) # 设置构建类型为 Release,以生成优化后的代码
add_compile_options(-std=c++11) #添加编译选项,使用 C++11 标准。# 包含路径和依赖
include_directories(include/) #将项目的 include 目录添加到头文件搜索路径。find_package(Eigen3 REQUIRED) #查找 Eigen3 库。
include_directories(${EIGEN3_INCLUDE_DIR}) #将 Eigen3 的头文件路径加入搜索路径。find_library(YAMLLib yaml-cpp HINTS /usr/local/lib) #查找 yaml-cpp 的库文件(比如 .so 或 .a),提示它位于 /usr/local/lib。###########
## Build ##
###########
add_library(Utilities SHAREDsrc/spatial_utilities.cppsrc/timer_linux.cppsrc/butterworth.cpp
)
# 定义名为 Utilities 的共享库,包含指定的源文件,这里是三个src/spatial_utilities.cpp,src/timer_linux.cpp, src/butterworth.cpp
target_link_libraries(Utilities ${YAMLLib}) # 将 yaml-cpp 库链接到 Utilities 库。用于为目标程序或库指定要链接的库。add_executable(test_utilities src/test.cpp) #把src/test.cpp 构建为可执行文件test_utilities。
target_link_libraries(test_utilities Utilities) # 将 Utilities 库链接到 test_utilities#############
## Install ##
#############
# headersinstall(DIRECTORY include/DESTINATION ${CMAKE_INSTALL_PREFIX}/include/)
# 将 include/ 中的头文件安装到指定路径。
# binaries
install(TARGETS UtilitiesDESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}/)
# 将 Utilities 库安装到指定路径。
# CMAKE_INSTALL_PREFIX 是一个变量,表示安装的根目录,默认值为 /usr/local。

build

使用的内容在md文件中,保证build出来的库的路径,保证使用adaptive环境中的Eigen库。
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local -DCMAKE_PREFIX_PATH=$CONDA_PREFIX ..
adaptive环境里的:~/mambaforge/envs/adaptive/include/eigen3
系统库的:/usr/include/eigen3/Eigen
注意不要用sudo make install
make install输出如下

Install the project...
-- Install configuration: "Release"
-- Installing: /home/qing/.local/include/
-- Installing: /home/qing/.local/include//RobotUtilities
-- Installing: /home/qing/.local/include//RobotUtilities/data_buffer.h
-- Installing: /home/qing/.local/include//RobotUtilities/interpolation_controller.h
-- Installing: /home/qing/.local/include//RobotUtilities/spatial_utilities.h
-- Installing: /home/qing/.local/include//RobotUtilities/timer_linux.h
-- Installing: /home/qing/.local/include//RobotUtilities/butterworth.h
-- Installing: /home/qing/.local/lib/RobotUtilities/libUtilities.so

运行test_utilities在build文件夹内

force_control编译

找不到RobotUtilities的头文件,改一下CMakeLists.txt,添加了头文件路径 ${CMAKE_INSTALL_PREFIX}/include

 include_directories(include/usr/include/eigen3${CMAKE_INSTALL_PREFIX}/include
)

另外我改了一下输出的路径,加了一层${PROJECT_NAME}的文件夹

 install(TARGETS FORCE_CONTROLLERSDESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}/
)

make install输出如下

Install the project...
-- Install configuration: ""
-- Up-to-date: /home/qing/.local/include/
-- Installing: /home/qing/.local/include//force_control
-- Installing: /home/qing/.local/include//force_control/config_deserialize.h
-- Installing: /home/qing/.local/include//force_control/admittance_controller.h
-- Installing: /home/qing/.local/lib/force_control/libFORCE_CONTROLLERS.so
-- Set runtime path of "/home/qing/.local/lib/force_control/libFORCE_CONTROLLERS.so" to ""

hardware_interfaces编译

先安装依赖

  • ur_rtde 按照md 默认安装的版本为1.5.1不对。

    sudo add-apt-repository ppa:sdurobotics/ur-rtde
    sudo apt-get update
    sudo apt install librtde librtde-dev
    

    ls /usr/lib/x86_64-linux-gnu/librtde.so

    # 卸载库
    sudo apt remove --purge librtde librtde-dev
    # 删除依赖包
    sudo apt autoremove --purge
    

    按照这个重装的,从源码build,但是不清楚这里面pybind11作用,ur_rtde_doc

  • real_sense2
    参考文档

尝试一 解决opencv冲突问题

已注释add_subdirectory(hardware/gopro)
add_subdirectory(workcell/table_top_manip)
add_subdirectory(applications/force_control_demo)
add_subdirectory(applications/ft_calibration)
add_subdirectory(applications/manipulation_data_collection)
make -j一直报错

  1. 4.7的opencv,5.12的qt
  2. 尝试mamba install opencv=4.2.0 不支持py39
  3. 尝试mamba install opencv=4.4.0 pulseaudio-daemon openssl冲突(GPT回答:OpenCV 4.4.0 依赖 qt(5.12.x),而 qt 对 openssl 的要求是<3 或特定版本的 1.1.x。然而,当前环境中的某些包(如 pulseaudio-daemon)要求更高版本的 openssl(>=3.x),这导致依赖冲突。) 所以mamba remove pulseaudio-daemon # 这一个音频库 不知道是什么时候装上的 感觉没啥用所以remove掉了。现在的版本是qt5.12.9,opencv4.4.0。

可以编译

尝试二 加入gopro编译

加入gopro的代码也可以编译 add_subdirectory(hardware/gopro)

尝试三 加入force_control_demo和ft_calibration编译

加入add_subdirectory(applications/force_control_demo)
add_subdirectory(applications/ft_calibration)

  1. 头文件报错
    报错为缺头文件,要不然就是先编译一遍不带这两句话的把其他内容都编译到${CMAKE_INSTALL_PREFIX}/include
    然后再编译一遍。

    在这里插入图片描述
    在这里插入图片描述
  2. yaml-cpp报错:把yaml-cpp手动改为 /home/qing/mambaforge/envs/adaptive/include/
include_directories(include/#yaml-cpp/home/qing/mambaforge/envs/adaptive/include/${EIGEN3_INCLUDE_DIRS}
)

尝试四 加入workcell/table_top_manip

加入
file(GLOB HARDWARE_INCLUDE_DIRS “hardware/*/include”)
include_directories(${HARDWARE_INCLUDE_DIRS})
add_subdirectory(workcell/table_top_manip)

  1. 报错 std::filesystem 在 GCC 8 及以上版本中才完整支持。如果你使用的是 GCC 7.x 或更旧版本,可能会出现该问题。
    目前使用的是系统路径下的gcc
    (adaptive) qing@qing:~/EDisk/codeLib/yifan_adavptive/hardware_interfaces/build$ which gcc
    /usr/bin/gcc
    解决方案:不升级gcc但是尝试使用boost::filesystem代替
    在这里插入图片描述
    在hardware_interfaces/workcell/table_top_manip/src/helpers.hpp中修改
    #include <filesystem>–>#include <boost/filesystem.hpp>
    namespace fs = std::filesystem;–>namespace fs = boost::filesystem;
    在hardware_interfaces/workcell/table_top_manip/CMakeLists.txt中修改
    find_package(Boost REQUIRED COMPONENTSsystemthreadprogram_optionsfilesystem # q
    )
    target_link_libraries(ManipServerREALSENSEATI_NETFTGoProROBOTIQ_FT_HWRQSensorLinuxUR_RTDEHI_COMMON${RUT}${FORCE_CONTROLLERS}${realsense2_LIBRARY}${OpenCV_LIBS}${YAMLLib}${Boost_LIBRARIES} #q
    )
    

    尝试五 加入manipulation_data_collection

    add_subdirectory(applications/manipulation_data_collection)
    还是会有boost::filesystem的报错问题
    把conda里的boost卸载掉了

postprocess_add_virtual_target_label.py尝试运行

应该是这都是real的数据,需要放到含real的路径下,所以直接把这里注释掉。

if "real" in dataset_path:flag_real = True

不改的话 line100左右这里不对的。

if not flag_real:  # for simulation dataft_sensor_pose_fb = ep_data["ft_sensor_pose_fb"]

virtual_target_real_env_runner.py尝试运行

还没运行起来

/home/qing/EDisk/codeLib/yifan_adavptive/hardware_interfaces/workcell/table_top_manip

PyriteEnvSuites/envs/task/manip_server_env.py里需要把hardware_interfaces加进去

from hardware_interfaces.workcell.table_top_manip.python import (manip_server_pybind as ms,
)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com