Ubuntu20.04仿真 | iris四旋翼添加livox mid360激光雷达
申明:
1、本人使用的是Ubuntu20.04+ros1+gazebo+xtdrone+px4的仿真组合
2、下列仿真系列文章是为我个人对飞机的传感器需求进行配置,不同需要仅作参考
3、为了使传感器模型和飞机模型解耦合,实现不同平台对传感器可直接调用,本系列博文涉及的所有传感器均不直接添加在相应平台的sdf当中,而是通过编写xxx_joint.sdf的形式,将平台和传感器统一,可由launch文件直接拉起。
4、针对livox mid360的配置,由于目前livox官方和仿真之间的合作(?)并没有公开mid360的模型文件以及对应驱动,所以模型上只能魔改已有的mid40,驱动则需下载后修改相应代码以通过编译
Ubuntu20.04仿真系列文章大合集:
Ubuntu20.04仿真 |iris四旋翼添加云台相机详述-CSDN博客
Ubuntu20.04仿真 | 云台相机可直接使用文件-CSDN博客
Ubuntu20.04仿真 | iris四旋翼添加双目相机D435i-CSDN博客
-------------------------------分割线以下为双目正文----------------------------------
后续提到的部分文件都在这个github库里,可以先下载了解压
https://github.com/ZTL0806/Livox-mid360-PX4-XTDrone-Faster-lio
此外本文参考了Livox-mid360+PX4+XTDrone+Faster-lio仿真_无人机livox雷达仿真-CSDN博客但对其进行了顺序调整,以及融入了上述解耦合的思想
一、安装驱动和仿真库
因为要使用mid360,所以驱动和sdk都需要下载“2”
cd ~/工作空间/src/
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
git clone https://github.com/Livox-SDK/Livox-SDK2.gitcd ./Livox-SDK2/
mkdir build
cd build
cmake .. && make -j
sudo make installcd ../livox_ros_driver2
source /opt/ros/noetic/setup.sh
./build.sh ROS1
克隆好以后先不要执行两个编译代码,先找到livox_laser_simulation,把它移到其他文件夹中,不要放在当前工作空间,然后再build/make。因为我们需要的是livox_ros_driver2对应驱动,而livox_laser_simulation是根据driver1写的。
编译通过以后,开始修改livox_laser_simulation
把livox_laser_simulation放回原来的位置,重新执行以上编译,此时的报错就完全来源于livox_laser_simulation,根据报错信息,找到对应文件,把里面的livox_ros_driver全部加上“2”就行(头文件、声明等都要改)
二、配置mid360实体模型
mid360的配置和上述链接中云台相机中的配置逻辑略有不同,cgo3是在原iris.sdf中引入云台转动所需的舵机接口即可,但是mid360涉及到雷达到无人机的接口,不完全像相机一样独立,所以用仿真库中自带的iris_3d_lidar文件夹中的sdf文件修改比较保险
1、添加mid模型
把iris_3d_lidar.sdf复制一份,命名为iris_mid.sdf
在iris_mid.sdf中检索,将以下代码的include和joint注释掉
<include><uri>model://3d_lidar</uri><pose>0 0 0.08 0 0 0</pose><joint name="lidar_joint" type="fixed">
...
</joint>
上述我参考的博客在此处直接添加了mid对应的模型,但我为了满足解耦合的需求,不会在此处添加(详见2.(5))
<include><uri>model://Mid360</uri><pose>0 0 0.05 0 0 0</pose></include><joint name="lidar_joint" type="fixed"><child>Mid360::livox_base</child><parent>base_link</parent><axis><xyz>0 0 1</xyz><limit><upper>0</upper><lower>0</lower></limit></axis></joint>
2、添加mid360实例
在上述新添加的include中,可以看到有一个mid360文件夹,想要能够实际引入,还需要在仿真库的models中添加对应文件夹。(your_path to sitl_gazebo/models这个路径下)
(1)在models中新建Mid360文件夹,然后将上述提前下载的链接中同名文件夹下的所有内容复制进来
(2)在models中新建livox_mid40文件夹,同样将同名文件复制进来
(3)修改Mid360.sdf中的collision和visual索引的文件夹路径
<uri>model://livox_mid40/meshes/livox_mid40.dae</uri>
<uri>model://livox_mid40/meshes/mid360.dae</uri>
(4)修改<csv_file_name>路径
<csv_file_name>/home/byy/catkin_ws/src/livox_laser_simulation/scan_mode/mid360.csv</csv_file_name>
(5)编写飞机iris_mid.sdf和mid360的耦合sdf,将1中的mid360模型文件加入iris_mid_joint.sdf
详细可见系列文章:(博客还没写好hhh,这两天就会发布)
3、修改launch(我用的是empty world的单机仿真launch修改)中拉起的sdf为iris_mid_joint.sdf,如果配置成功的话,会看到
并且用rostopic中echo /scan、/imu_gazebo会有数据。具体话题名用list看一下