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.bash

z

终于开始编译仿真了

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还缺了不少包,有点想装个虚拟机要用了

Read more

steam blue archive

年龄验证 使用 mmddyyyy 八位而不是yyyymmdd 八位 Maintenance in progress, closing app 梯子 开 tui 覆盖网络路由,或者使用加速器 登录已有账号 ▎必讀!Steam 用戶端帳號連結 & 解除指南🎈 《蔚藍檔案》Steam 用戶端可以至 Steam 商店頁面 [立即前往] 下載。 目錄 1. Steam 帳號 – NEXON 帳號連結方法 2. 解除以及變更連結至 Steam 的 NEXON 帳號(使用其他 NEXON 帳號連結 Steam) 🕹 本指南介紹的 Steam 用戶端 – NEXON 帳號連結操作僅可透過 Steam

By bakamake