目录
官方文档
我使用的是Ubuntu 20.04 + ROS noetic 环境。
unitree_guide
1. 快捷指令
如果以下配置都已经完成,直接使用以下三条指令,快速完成Go1的配置:
// 在~/catkin_ws下打开第一个终端
source ./devel/setup.bash
roslaunch unitree_guide gazeboSim.launch
// 在~/catkin_ws下打开第二个终端
sudo ./devel/lib/unitree_guide/junior_ctrl
2. ROS安装
参考 ROS—1. ROS安装
3. LCM库安装
LCM(Lightweight Communications and Marshalling)是一组用于消息传递和数据编组的库和工具,其基于UDP传输的属性,传输速度较快,其目标是高带宽和低延迟的实时系统。它提供了一种发布/订阅消息传递模型以及带有各种编程语言C++、Java、python等应用程序绑定的自动编组/解组代码生成,LCM通过将消息封装在不同的Channel中进行通信,这点类似于ROS中的Topic。
网址:GitHub - lcm-proj/lcm: Lightweight Communications and Marshalling
LCM Documentation — LCM documentation
3.1. 安装步骤
- 安装编译依赖:
sudo apt-get install build-essential autoconf automake autopoint libglib2.0-dev libtool openjdk-8-jdk python-dev
- GitHub上下载releases,我下载的是V1.5.0版本
- 将下载的压缩包解压到:主目录
- 进入
lcm-1.5.0
打开终端输入:
mkdir build
cd build
cmake ..
make
make install
- 上面完成了LCM的安装。然后告诉系统lib的库所在位置:
export LCM_INSTALL_DIR=/usr/local/lib
sudo sh -c "echo $LCM_INSTALL_DIR> /etc/ld.so.conf.d/lcm.conf"
sudo ldconfig
- 配置pkgconfig:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$LCM_INSTALL_DIR/pkgconfig
- 以上步骤都完成后:输入指令
lcm-tester
以测试是否已经安装 LCM。 若终端显示的内容与下图类似,则表示已经安装 LCM。
4. pthread库
一个多线程库。
运行 getconf GNU_LIBPTHREAD_VERSION
命令以测试是否已经安装pthread库。若可以显示版本信息,则说明 pthread 库已经安装。
5. 工程文件下载
到宇树Github下载这三个文件:
- unitree_guide :
GitHub - unitreerobotics/unitree_guide - unitree_ros :
GitHub - unitreerobotics/unitree_ros - unitree_legged_msgs :
GitHub - unitreerobotics/unitree_ros_to_real
下载完成后的目录结构如下:
6. 编译
打开一个终端,并将工作路经切换至包含 unitree_guide 工程的 ros 工作空间的根目录下(本文假设该路经为 ~/catkin_ws ),并在终端输入下列命令开始编译该工程: catkin_make
编译通过后,显示如下:进度条100%
如果出现报错,就安装对应的包。
报错:
报错1
比如出现这个报错:Could not find the required component 'move base msgs'. The followingCMake eror indicates that you either need to install the package with the same name orchange your environment so that it can be found.
原因:此报错是由于move_base_msgs缺失引起的,使用如下命令安装这个功能包:
sudo apt-get install ros-noetic-navigation
报错2:
pip3 install pyyaml
报错3
出现报错:AttributeError: module 'em' has no attribute 'RAW_OPT'
解决办法:
pip3 install empy==3.3.4
其他报错
其他类似报错参考:开源四足机器人代码踩坑指南
7. 运行
7.1. 运行 Gazebo 仿真环境
在同一个终端中,执行下列命令:
source ./devel/setup.bash
然后执行下列命令来打开 Gazebo 仿真环境:
roslaunch unitree_guide gazeboSim.launch
出现报错:
解决方法:
pip3 install rospkg
正确运行后,会跳出 Gazebo 仿真器窗口,并且 Go1 机器人会躺在仿真环境中的地面上。要想让机器人动起来,还需要启动控制器。
7.2. 启动控制器
打开另外一个终端,并切换至相同路径下(本文假设该路经为~/catkin_ws ),然后输入下列命令以启动控制器:
sudo ./devel/lib/unitree_guide/junior_ctrl
报错:./devel/lib/unitree_guide/junior_ctrl: error while loading shared libraries: libxmlrpcpp.so: cannot open shared object file: No such file or directory
解决方法:宇树科技 文档中心
添加修改:
/opt/ros/noetic/lib
/usr/local/lib
配置成功后,显示:
8. 简单使用
选中在上一步中用来启动控制器的终端,然后按下键盘上的 “2” 键。此时在 Gazebo 环境中的机器人会站起来,同时终端会显示:
“Switched from passive to fixed stand”
在仿真环境中,按下键盘上的 W A S D 键 分别控制机器人 前进 左平移 后腿 右平移。按下键盘上的 J L 键 分别控制机器人 左转 右转。
9. 自主导航
首先安装依赖项:
sudo apt-get install joint-state-publisher
sudo apt-get install ros-noetic-openni-*
sudo apt-get install ros-noetic-pointcloud-to-laserscan
编译:
catkin_make
打开控制程序接口:
将 unitree_guide/unitree_guide/CMakeLists.txt
中的第 11 行 set(MOVE_BASE)
设置为ON
打开 Gazebo 仿真:
roslaunch unitree_move_base gazebo_move_base.launch
然后启动机器人的控制程序 junior_ctrl,考虑到计算机计算压力较大,需要在 root 权限下运行 junior_ctrl,执行以下指令:
// 打开一个新的终端
sudo su
source ./devel/setup.bash
rosrun unitree_guide junior_ctrl
按下 <2> 使机器人进入固定站立模式,再按下 <5> 使机器人进入导航模式,然后在一个新的终端运行导航程序:
// 打开一个新的终端
sudo su
source ./devel/setup.bash
roslaunch unitree_move_base rvizMoveBase.launch
最后在 RViz 中通过 2D Nav Goal
工具来为机器狗发布目标位置和目标角度。