本文记录在Ubuntu18.04-melodic中适配镭神智能C16多线雷达的过程,使用最近比较火的国产ROS开发板鲁班猫(LubanCat )进行适配。
一套镭神智能C16多线雷达套件(雷达主体、电源适配器、网线-用来通信)
一个ROS开发板鲁班猫,用于提供Ubuntu18.04-melodic系统环境
将LslidarC16雷达连接鲁班猫主控,可通过rviz查看输出pointcloud点云,读取LaserScan点云数据。
镭神智能C16多线激光雷达,采用16条激光线,能达到20HZ的扫描频率,对应最高0.09度的角分辨率,精度±3cm,能够精确地检测物体的位置和形态。
鲁班猫(LubanCat)是野火科技推出的Linux、Android卡片电脑系列品牌。这个系列的板子便宜好用,操作系统适配度高,开源教材资料比较多,能学到挺多东西的。
将LslidarC16雷达按照下面的接线方式进行连接,先给雷达接上电源,用网线的一端接入雷达接线盒,另一端接入鲁班猫,如图所示
镭神智能C16功能包:
git clone -b C16_V2.6/2.8/3.0 https://github.com/Lslidar/Lslidar_ROS1_driver.git
其他雷达的功能包可以在这里获取:
https://github.com/Lslidar/Lslidar_ROS1_driver
pointcloud _to _lasescan功能包:
https://github.com/ros-perception/pointcloud_to_laserscan.git
把对应的SDK下载到本地端,然后将文件放入工作空间内。
lslidar_driver功能包是16线雷达输出ROS消息数据的驱动功能包,输出16线雷达点云相关消息数据。
pointcloud _to _lasescan功能包是将pointcloud2点云消息数据转为laser_scan消息的功能包。
将llslidar_driver功能包和pointcloud_to_laserscan功能包到工作空间中,在工作空间目录下编译相关的功能包:
rosdep install--from-pathssrc--ignore-src-r-y#一键安装依赖
catkin_make
打开网络设置,找到有线的设备号eth0 (根据Device中的选项确定)
在IPV4设置中将模式改为Manual,输入固定的ip地址:192.168.1.102,子网掩码255.255.255.0,网关192.168.1.1,单击保存设置。保存好之后,就可以在机器人重启后自动连接到16线雷达。
在终端输入ifconfig来查看静态ip是否固定成功:
ifconfig
下面是16线雷达的一些相关参数,大家可以根据需要进行配置:
<launch>
<arg name="device_ip" default="192.168.1.200" />
<arg name="msop_port" default="2368"/>
<arg name="difop_port" default="2369"/>
<arg name="use_gps_ts" default="false" />
<!--pcl_type切换点云类型 --false:点云类型为xyzirt --true:点云类型为xyzi-->
<arg name="pcl_type" default="false" />
<!--c16表示机械式16线雷达;c32表示机械式32线雷达 -->
<arg name="lidar_type" default="c32"/>
<!--包长1206或1212 -->
<arg name="packet_size" default="1206"/>
<!--c16_2表示16线垂直角度分辨率为2度的雷达,c16_1表示16线垂直角度分辨率为1.33度的雷达 -->
<arg name="c16_type" default="c16_2"/>
<!--c32_2表示32线垂直角度分辨率为1度的雷达,c32_1表示32线垂直角度分辨率为0.33度的雷达 -->
<arg name="c32_type" default="c32_2"/>
<!--3表示32线fpga为2.7\2.8\3.0的版本的雷达,2表示32线fpga为2.6的版本的雷达-->
<arg name = "c32_fpga_type" default="3"/>
<node pkg="lslidar_driver" type="lslidar_driver_node" name="lslidar_driver_node" output="screen">
<!--param name="pcap" value="$(find lslidar_driver)/pcap/xxx.pcap" /-->
<param name="device_ip" value="$(arg device_ip)" />
<param name="msop_port" value="$(arg msop_port)" />
<param name="difop_port" value="$(arg difop_port)"/>
<param name="lidar_type" value="$(arg lidar_type)"/>
<param name="packet_size" value="$(arg packet_size)"/>
<param name="pcl_type" value="$(arg pcl_type)"/>
<param name="c16_type" value="$(arg c16_type)"/>
<param name="c32_type" value="$(arg c32_type)"/>
<param name="c32_fpga_type" value="$(arg c32_fpga_type)"/>
<param name="add_multicast" value="false"/>
<param name="group_ip" value="224.1.1.2"/>
<param name="use_gps_ts" value="$(arg use_gps_ts)"/>
<param name="min_range" value="0.15"/>
<param name="max_range" value="150.0"/>
<param name="horizontal_angle_resolution" value="0.2"/>
<param name="frame_id" value="laser"/>
<param name="distance_unit" value="0.4"/>
<param name="angle_disable_min" value="0"/>
<param name="angle_disable_max" value="0"/>
<param name="packet_rate" value="1700.0"/>
<param name="scan_num" value="16"/>
<param name="publish_scan" value="false"/>
<param name="pointcloud_topic" value="point_cloud_raw"/>
<param name="coordinate_opt" value="false"/>
</node>
<!-- <node pkg="rviz" type="rviz" name="rviz" args="-d $(find lslidar_driver)/rviz_cfg/lslidar.rviz"/> -->
<!--node pkg="tf" type="static_transform_publisher" name="laser_link_to_world" args="0 0 0 0 0 0 world laser_link 100" /-->
</launch>
在16线雷达使用过程中,为了方便利用雷达的点云消息,需要使用pointcloud_to_laserscan功能包来将点云数据转换到2D平面的laser_scan消息,同时要打开lslidar_ros功能包的start.launch文件,和pointcloud_to_laserscan功能包的pointcloud_scan.launch文件。
roslaunch lslidar_driver lslidar_c16.launch
roslaunch pointcloud_to_laserscan pointcloud_scan.launch
打开RVIZ,添加相应的组件就可以看到可视化的数据了。
rosrun rviz rviz
注意:使用pointcloud_to_laserscan功能包时,相关参数同样需要在launch文件中进行配置。
话题名称 | 描述 |
---|---|
/scan | 点云数据转laser_scan (丢失intensities强度信息) |
/scan_raw | 16线雷达某个通道的laser_scan |
/point_cloud_raw | 16线雷达点云数据 |