conda 使用 ros humble 编译宇树科技 unitree_ros2
conda create -n ros_humble -c robostack-humble -c conda-forge ros-humble-desktop-full
#提前安装python带上的依赖会导致冲突,一定要干净的环境
conda install conda-forge::mamba
alias conda=mamba
conda install robostack-humble::ros-humble-rmw-cyclonedds-cpp \
robostack-humble::ros-humble-rosidl-generator-dds-idl \
conda-forge::colcon-common-extensions main::yaml-cpp
git clone https://github.com/unitreerobotics/unitree_ros2
cd unitree_ros2/cyclonedds_ws
colcon build --symlink-install \
--cmake-args \
-DPython_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_FIND_STRATEGY=LOCATION \
-DPython_FIND_STRATEGY=LOCATION \
-Wno-dev
source install/setup.bash
cd ../example
colcon build --symlink-install \
--cmake-args \
-DPython_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_FIND_STRATEGY=LOCATION \
-DPython_FIND_STRATEGY=LOCATION \
-Wno-dev这样就是编译好了
接下来激活环境,有个坑点,宇树科技硬编码了 setup.sh setup_default.sh setup_local.sh 里的ros激活路径和项目相对home的路径,我们把脚本内容拿出来直接用
cd ..
unitree_ros2=$(pwd)
source $unitree_ros2/cyclonedds_ws/install/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
<NetworkInterface name="enp3s0" priority="default" multicast="default" />
</Interfaces></General></Domain></CycloneDDS>'
仿真依赖
# 按照 github 配置依赖
conda install robostack-staging::ros-humble-gazebo-ros2-control \
robostack-humble::ros-humble-robot-localization \
robostack-humble::ros-humble-ros2-controllers \
robostack-humble::ros-humble-ros2-control \
robostack-humble::ros-humble-velodyne \
robostack-humble::ros-humble-velodyne-gazebo-plugins \
robostack-humble::ros-humble-velodyne-description \
robostack-humble::ros-humble-perception-pcl \
robostack-humble::ros-humble-pcl-msgs \
robostack-humble::ros-humble-vision-opencv \
robostack-humble::ros-humble-xacro
# 摸索出来的缺的,项目readme没写
conda install -y -c robostack-humble -c conda-forge \
ros-humble-gazebo-ros-pkgs \
ros-humble-gazebo-plugins \
ros-humble-robot-localization \
ros-humble-joint-state-publisher-gui \
ros-humble-joint-state-publisher \
ros-humble-nav2-bringup
conda install -y conda-forge::eigen conda-forge::bullet conda-forge::tbb-devel conda-forge::ogre conda-forge::sophus conda-forge::gtsam
# 还剩下 ros-humble-ecl-threads
#在 ros wiki 找到项目托管地址,后面 介绍 clone 编译这个依赖, conda包源里没有,也不知道仿真项目从哪里找到的东西,看起来只在ppa ros库里有先编译 ecl-threads
cd ..
git clone https://github.com/stonier/ecl_core
cd ecl_core
# 下面两个不确定是不是和ecl_core 应该同等级,不过能编译就不管了,而且后面有点打算把东西都迁移到~/dev/ros_hunble
git clone https://github.com/stonier/ecl_tools.git
git clone https://github.com/stonier/ecl_lite.git
# 需要修改一下代码,用的 pcl 有点老,头文件进行了 break change ,需要对include小改执行以下
TARGET_FILE=~/dev/simdog/src/ndt_omp_ros2/include/pclomp/voxel_grid_covariance_omp_impl.hpp
# 注入 Boost 头文件并注释旧引用
sed -i '42i #include <boost/random/mersenne_twister.hpp>\n#include <boost/random/normal_distribution.hpp>\n#include <boost/random/variate_generator.hpp>\n#include <boost/mpl/size.hpp>' $TARGET_FILE
sed -i 's|#include <pcl/filters/boost.h>|// #include <pcl/filters/boost.h>|g' $TARGET_FILE
colcon build --symlink-install \
--cmake-args \
-DPython_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_FIND_STRATEGY=LOCATION \
-DPython_FIND_STRATEGY=LOCATION \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DBUILD_TESTING=OFF \
-DCMAKE_CXX_FLAGS="-w" \
-Wno-dev
# 这里看起来还有几个包是编译失败,不过需要的已经编译好就不管了
# 搞定然后激活一下就ok了
source ~/dev/ecl_core/install/setup.bashz
终于开始编译仿真了
cd ..
git clone https://github.com/fishros/simdog.git -b main -o go2_ws
cd simdog/
colcon build --symlink-install \
--cmake-args \
-DPython_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python \
-DPython3_FIND_STRATEGY=LOCATION \
-DPython_FIND_STRATEGY=LOCATION \
-Wno-dev \
-DCMAKE_PREFIX_PATH=$CONDA_PREFIX \
-DCMAKE_LIBRARY_PATH=$CONDA_PREFIX/lib \
-DCMAKE_EXE_LINKER_FLAGS="-L$CONDA_PREFIX/lib -Wl,-rpath,$CONDA_PREFIX/lib" \
-DCMAKE_SHARED_LINKER_FLAGS="-L$CONDA_PREFIX/lib -Wl,-rpath,$CONDA_PREFIX/lib"
# 启动
./start.sh问题总结,好像还是不能完全仿真,问题在于humble conda还缺了不少包,有点想装个虚拟机要用了