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需要imageio,mamba 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一直报错
- 4.7的opencv,5.12的qt
- 尝试mamba install opencv=4.2.0 不支持py39
- 尝试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)
- 头文件报错
报错为缺头文件,要不然就是先编译一遍不带这两句话的把其他内容都编译到${CMAKE_INSTALL_PREFIX}/include
然后再编译一遍。
- 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)
- 报错 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,
)