宇树Unitree2023 ROS暑期学校课程

在B站上跟着宇树的视频实践时,编译时会遇到各种问题,踩了各种坑,而全网也没有一个详细的教程,解决我遇到的问题。于是写下遇到的问题及解决方法以供后来者借鉴参考。希望能少踩点坑!视频链接如下:宇树科技Unitree2023 ROS暑期学校课程


目录

运行环境搭建

1、protobuf安装

2、安装OpenCV

3、安装GTSAM

4、编译lio-sam

5、编译课程源码

一、搭建GAZEBO仿真环境玩转四足机器人(上)

二、搭建GAZEBO仿真环境玩转四足机器人(下)

三、仿真环境下实现四足机器人的SLAM(上)

四、仿真环境下实现四足机器人的SLAM(中)

五、仿真环境下实现四足机器人的SLAM(下)


运行环境搭建

基于ubuntu20.04,ROS-notice版本,gtsam-4.1.0,googletest-1.8.1,opencv-4.5.0,protobuf-3.6.1。

注意对应库的版本号,否则编译可能会出错。

链接分别如下,注意下载对应版本的源码:

gtsam:Releases · borglab/gtsam · GitHub

googletest:https://github.com/google/googletest/archive/release-1.8.1.tar.gz

opencv:Releases · opencv/opencv · GitHub

protobuf:https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.1

在home下新建catkin_ws文件夹,并在catkin_ws下新建src文件夹,在src下打开终端,并执行以下命令获取课程源码:

git clone https://gitee.com/rugels/simulation_unitree.git

 在home下新建liosam_ws文件夹,并在liosam_ws下新建src文件夹,在src下打开终端,并执行以下命令获取lio-sam源码:

git clone https://github.com/TixiaoShan/LIO-SAM.git

这里默认已经安装好ROS-notice,和cartographer。若没有安装可参考我之前发的文章,原文链接如下:

ubuntu下ROS1与ROS2共存安装(亲测有效,安装超简单)_ubuntu 安装ros1 后 安装ros2-CSDN博客

cartographer安装(过程超简单,成功安装经验)_安装cartographer-CSDN博客

安装cartographer时注意,protobuf需为3.6.1版本(注意:我提供的cartographer安装中protobuf的版本为3.4.1),否则后面catkin_make编译时会与gazebo11发生冲突,可能会报出以下错误:

 解决办法是:重新安装protobuf-3.6.1,并将cartographer重新编译安装,然后catkin_make编译课程源码即可通过。

1、protobuf安装

由于之前安装的protobuf版本为3.4.1,需执行以下命令删除并卸载相关文件。

sudo apt-get remove libprotobuf-dev
sudo rm /usr/local/bin/protoc  //执行文件
sudo rm -rf /usr/local/include/google //头文件
sudo rm -rf /usr/local/lib/libproto* //库文件
sudo rm -rf /usr/lib/protoc

将cartographer_install下的protobuf文件夹替换为3.6.1版本的,并将下载的googletest-release-1.8.1改名为googletest并放入protobuf/third_party/下,然后在protobuf目录下,终端执行以下命令进行安装:

mkdir build && cd build
cmake -G Ninja \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -Dprotobuf_BUILD_TESTS=OFF \
  ../cmake
ninja
sudo ninja install

 2、安装OpenCV

终端执行以下命令,安装所需依赖:

sudo apt update
sudo apt install cmake
sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt install pkg-config

在opencv目录下,终端执行以下命令:

mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j4
sudo make install

 终端执行以下命令:

sudo gedit /etc/profile.d/pkgconfig.sh

在打开的文件中加入以下代码:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

 保存并退出。终端执行以下命令,刷新一下:

source /etc/profile

 终端执行以下命令验证是否成功:

pkg-config --libs opencv4

出现以下内容,则说明成功:

 终端执行以下命令:

sudo gedit /etc/ld.so.conf.d/opencv4.conf

 在打开的文件中加入以下代码:

/usr/local/lib

 保存并退出。最后执行以下命令,使配置的路径生效。

sudo ldconfig

 在opencv/samples/cpp/example_cmake目录下,依次执行以下命令:

cmake .
make
./opencv_example

若出现以下画面,则表示安装成功。

3、安装GTSAM

终端执行以下命令,安装相关依赖:

sudo apt-get install libboost-all-dev
sudo apt-get install libtbb-dev

在gtsam目录下,终端执行以下命令:

mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_WITH_EIGEN_MKL=OFF -DGTSAM_WITH_EIGEN_MKL_OPENMP=OFF ..
make check
sudo make install 

 4、编译lio-sam

由于安装了opencv4,需要进行以下修改:

在 LIO-SAM/include/utility.h 中将

#include <opencv/cv.h> 

修改为:

 #include <opencv2/imgproc.hpp>

在 LIO-SAM/CMakeList.txt 中将

set(CMAKE_CXX_FLAGS "-std=c++11") 

修改为:

set(CMAKE_CXX_STANDARD 14)

在liosam_ws目录下,执行以下命令:

catkin_make

 出现以下报错:

缺少依赖,终端执行以下命令安装:

sudo apt-get install libparmetis-dev

 继续catkin_make编译lio-sam,又出现如下报错:

### Unitree Legged Control 四足机器人控制库使用教程 #### 启动控制器 为了启动四足机器人的控制器,可以使用ROS命令来加载相应的launch文件。具体操作如下: ```bash roslaunch legged_controllers legged_controller.launch ``` 这将初始化并启动所需的节点和服务,使机器人能够响应来自用户的指令[^1]。 #### C++ 示例代码展示 对于希望深入了解如何通过编程方式操控这些设备的研究人员来说,`unitree_legged_sdk`提供了丰富的API接口以及详细的文档说明。下面是一个简单的C++程序片段,展示了怎样连接到机器人并获取其状态信息: ```cpp #include "unitree_legged_sdk/unitree_legged_sdk.h" using namespace UNITREE_LEGGED_SDK; int main() { LowCmd cmd; LowState state; UDP udp; while (true) { udp.Recv(&state); // 接收当前的状态数据包 std::cout << "Robot Mode: " << static_cast<int>(state.mode) << "\n"; cmd.mode = LOWLEVEL; // 设置为低级模式 cmd.gaitType = TROT; // 设定步态类型为小跑步态 cmd.speedLevel = MEDIUM; // 中等速度级别 udp.Send(cmd); // 发送命令给机器人执行 } } ``` 此段代码实现了基本的功能——建立通信链路、读取传感器数值并向目标发送动作请求。开发者可以根据实际应用场景调整参数配置以适应不同的任务需求[^2]。 #### Python API介绍 除了原生支持C/C++外,官方还额外维护了一套基于Python语言封装后的高层抽象层,极大地方便了那些更倾向于脚本化开发流程的技术爱好者们快速上手试玩。以下是利用Pyhton调用上述相同功能的一个实例: ```python from unitree_legged_sdk import Robot, HighlevelCommand robot = Robot() commander = HighlevelCommand() while True: robot_state = robot.get_state() print(f"Current Battery Voltage:{robot_state.batteryVoltage:.2f}V") commander.set_mode(HighlevelCommand.Mode.REMOTE_CONTROL) commander.set_gait_type(HighlevelCommand.Gait.TROT) robot.send_command(commander.pack()) ``` 这段简洁明了的Python脚本同样完成了与之前相同的交互过程:周期性查询电量水平的同时改变移动姿态至“trotting”。借助这样的工具集,即使是初学者也能轻松驾驭复杂多变的实际工况挑战[^3]。 #### 高度定制化的应用拓展 考虑到不同领域内可能存在的特殊要求,`unitree_legged_sdk`特别强调开放性和灵活性的设计理念,在保留核心框架稳定性的前提下给予使用者充分自由去探索未知的可能性空间。无论是针对特定科研课题开展深入探究还是面向工业生产环节实施自动化改造方案,这套强大的软件套装都能够成为理想的合作伙伴。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如果是君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值