0.前言
上一篇文章教大家如何在宇树机器狗go2的仿真环境中添加2d激光雷达、单目相机、深度相机(宇树机器狗go2仿真添加2d雷达和深度相机),本期文章将urdf文件中有关radar的描述迁移到xacro文件中并加入一个3d激光雷达进行匹配(会添加livox的mid360和velodyne的系列雷达,分别在上下期)。宇树机器狗go2仿真会作为一个长期项目来进行不定期更新,仿真不只限于在gazebo上实现,后面还会在isaac sim等仿真平台上教大家如何搭建,其目的还是帮助各位都能以较低的成本加入到宇树机器狗go2的学习中。gazebo的仿真对电脑的需求会低于isaac sim等仿真平台,这对实验条件要求会低很多,更很适合学校小实验室或个人进行仿真实验。
同时我也希望能有更多的开发者加入近来一起完成机器狗go2的仿真实验项目的建设,如有更好的方案和建议可以私聊或申请共创作者。
注意:推荐在使用3d雷达的时候将深度相机和单目相机进行屏蔽,这样电脑仿真负载会降低,这样能保证机器狗go2的平衡控制器的正常运算。
1.添加机器狗go2的radar描述添加到xacro文件中
将下方描述(来源于go2的urdf文档中的描述)添加到go2的xacro文件中:
<!-- 内置激光雷达 -->
<link
name="radar">
<inertial>
<origin
xyz="0 0 0"
rpy="0 0 0" />
<mass
value="0" />
<inertia
ixx="0"
ixy="0"
ixz="0"
iyy="0"
iyz="0"
izz="0" />
</inertial>
</link>
<joint
name="radar_joint"
type="fixed">
<origin
xyz="0.28945 0 -0.046825"
rpy="0 2.8782 0" />
<parent
link="base" />
<child
link="radar" />
<axis
xyz="0 0 0" />
</joint>
-->
添加后的关节结构图如下:
2.添加livox 3d激光雷达
1.软件包下载
尽管mid360雷达的gazebo库听说是失真现象较严重,但作为国产雷达品牌(大疆孵化的雷达公司)其实力是值得认可的,如果在仿真环境下没有失真现象的话绝对是一个不错的选择。
cd go2_ws/src
git clone https://github.com/Livox-SDK/livox_laser_simulation
2.进行编译
第一次编译大概率是会失败的,请先看完问题与解决,将问题解决完后再进行编译。
catkin_make
3.问题与解决
1.问题
Livox Laser Simulation包默认是在ununtu 18.04和gazebo 9,但Ubuntu 20.04系统默认的是gazebo 11
gazebo --version
2.解决
打开livox_laser_simulation下的CMakeLists.txt
cd go2_ws/src/livox_laser_simulation/
add_compile_options(-std=c++11)
改成
add_compile_options(-std=c++17)
4.问题与解决
1.问题
编译的时候会出现编译出错,其本质原因是没有ignition/math4/ignition 路径下的 math.hh文件,但其实是有的,只是路径不对,正确的路径是在ignition/math6/ignition/math.hh。
2.解决
1.修改livox_ode_multiray_shape.h文件
打开livox_laser_simulation/include/livox_laser_simulation下的livox_ode_multiray_shape.h文件:
#include <ignition/math4/ignition/math.hh>
改成
#include <ignition/math6/ignition/math.hh>
2.修改livox_ode_multiray_shape.cpp文件
打开/home/huahua/go2_ws/src/livox_laser_simulation/src下的livox_ode_multiray_shape.cpp文件:
#include <ignition/math4/ignition/math.hh>
改称
#include <ignition/math6/ignition/math.hh>
5.更改仿真世界并启动雷达仿真进行验证
1.更改仿真世界
如果直接使用官方的世界模型很难将其打开(因为他需要更新gazebo的模型库),所以我们曲线救国,虽然不能直接跳过模型下载但能让下载量减少让启动更快,如果有足够的耐心可以跳过这一步,直接更换其世界模型后在启动其验证程序。
1.添加世界描述
将宇树机器狗go2的unitree_ros/unitree_gazebo/worlds中的stairs.world复制粘贴到livox_laser_simulation/worlds上 可以使用下方的指令执行复制,但一定要将工作空间更换成自己的工作空间:
cp go2_ws/src/unitree_ros/unitree_gazebo/worlds/stairs.world go2_ws/src/livox_laser_simulation/worlds/
也可以直接自己打开文件夹进行copy
2.打开launch文件
打开livox_laser_simulation/launch下的livox_simulation.launch文件 可使用vim或者gedit指令: vim指令打开:
vim go2_ws/src/livox_laser_simulation/launch/livox_simulation.launch
gedit指令打开:
gedit go2_ws/src/livox_laser_simulation/launch/livox_simulation.launch
也可以直接在文件架下双击打开:
3.更改launch文件
将已经打开的launch文件中的:
<arg name="world" default="$(find livox_laser_simulation)/worlds/standardrobots_factory.world" />
更改为
<arg name="world" default="$(find livox_laser_simulation)/worlds/.world" />
2.启动仿真验证
roslaunch livox_laser_simulation livox_simulation.launch
1.未进行模型更换下的启动场景
部分东西依然会进行报错和警告,但这不是我们关注的重点,我们的目的是将livox的3d雷达添加到宇树机器狗go2上。
在gazebo仿真场景中会看到一个大的场景并且在rviz中可以看到3d点云
2.更换了模型后的3d雷达情况
6.livox 3d雷达更换
1.雷达参数更换
功能包默认的雷达是livox avia,具体的雷达参数可以查看官网,但单个雷达价格就接近1w元了,后续要使用的是 livox mid360,具体的雷达参数可以查看官网,是目前比较有性价比的雷达之一。
livox功能包中的雷达描述文件在go2_ws/src/livox_laser_simulation/urdf中
cd go2_ws/src/livox_laser_simulation/urdf/
每一份雷达的xacro文件都描述了每款雷达的仿真参数,如果不满意也可以进行调整修改: