最近的一个项目需要做点云目标分类的任务,但是待分类的目标没有合适的数据集并且采集比较困难,师兄就给想到了仿真的方法,我为此 做了一些调研与尝试。
使用的传感器是Livox的激光雷达,官网如下:
Livox LiDAR Sensors - For massive industrial applications
1、Blensor:目前有一个开源的仿真软件叫blensor,这个软件可以拖CAD模型进去仿真一些型号的激光雷达采集数据。
Blensor链接:Blender Sensor Simulation - lidar
相关教程:点云仿真软件Blensor介绍 - JusticeZQ - 博客园
Blensor是一款开源的点云仿真软件,是国外的研究人员在三维动画软件Blender基础上进行开发的,整个安装包很小,只有80M左右,能够模拟Lidar(Velodyne 32/64线等)、TOF相机、Kinect等,而且可以根据自己的需求调整传感器参数,也可以加入噪声模拟实际点云,总之是一款很优秀的点云仿真软件。
2、Gazebo
我们要做的工作是基于livox雷达的,blensor没法设计这款雷达的参数,添加新的型号的雷达需要自己写一个新雷达的脚本放进去,比较复杂。
所以想到了gazebo的方法,搜了一下览沃官方是做过一个仿真工程的:
环境:Ubuntu16.04+ros kinetic+gazebo7+Livox-SDK
链接:https://github.com/Livox-SDK/livox_laser_simulation
另一个(kinetic):https://github.com/lvfengchi/livox_laser_simulation
关于ros和gazebo的环境配置参考网上文章,尽量安装all版本的。但是all版本里面附带的gazebo是不全面的,需要自己手动去安装全面的gazebo。
此外,环境需要Livox-SDK,需要自己配置
Livox-SDK:https://github.com/Livox-SDK/Livox-SDK
Livox激光雷达与ros的接口:https://github.com/Livox-SDK/livox_ros_driver
所有的工程都是在上述的livox_ros_driver的工作空间ws_livox里面运行,下载的仿真工程同样需要放到这个工作空间里面,catkin_make是需要的。
之后就是运行这个工程的demo
在工作空间的src文件夹里
roslaunch livox_laser_simulation livox_simulation.launch
中间会遇到一些报错都可以上网搜到解决方式。需要注意的是,如果自己的.gazebo/models文件夹还没有下载官方的模型库的话,模型是打不开的。还需要git clone一下。
然后这个工程里面一个会输出四种类型的点云
在.h头文件里面可以找到具体的数据格式的介绍
在.world文件里修改调用自己的CAD模型。需要.dae的格式
在.xacro文件里面可以修改输出数据格式一个LIDAR型号
通过监控rostopic /scan就可以获得想要的点云数据。
比如想在rviz中可视化仿真结果的话,需要输出·sensor_msg::pointcloud类型的点云。
想要保存成pcd格式,要选择在gazebo输出sensor_msg::pointcloud2(pcl::Pointcloud
多次的手动采集相当于简单重复劳动,还可以把整个过程写成一个shell脚本,每次调用需要的模型编号和方位编号即可,脚本有需要的可以评论or私信。