安装M10 ROS 驱动
照着文档安装,编译ROS SDK时有一个编译时return type的warning会导致运行错误,在lsm10.cpp Line87 getScan()函数
修改一下重新编译即可。
launch文件中修改topic话题,雷达坐标名称等
注意 激光数据topic名称“scan”,激光坐标“laser”,连接的串口“/dev/ttyUSB0”
# lsm10_v2.launch
<launch>
<node name="lsm10_v2" pkg="lsm10_v2" type="lsm10_v2" output="screen">
<param name="scan_topic" value="scan"/> <!--设置激光数据topic名称-->
<param name="frame_id" type="string" value="laser"/> <!--激光坐标-->
<param name="serial_port" value="/dev/ttyUSB0"/> <!--雷达连接的串口-->
<param name="baud_rate" value="460800" /> <!--雷达连接的串口波特率-->
</node>
</launch>
修改串口读写权限
sudo chmod 666 /dev/ttyUSB0
参考:永久修改串口权限
启动laser节点
roslaunch lsm10_v2 lsm10_v2.launch
查看话题发布
rostopic list
以文本形式查看数据
rostopic echo /scan
查看话题信息
rostopic info /scan
yhs@yhs-CN15S:~$ rostopic info /scan
Type: sensor_msgs/LaserScan
Publishers:
* /lsm10_v2 (http://yhs-CN15S:44739/)
Subscribers: None
查看msg类型 rosmsg show sensor_msgs/LaserScan
std_msgs/Header header
uint32 seq
time stamp
string frame_id
# Header也是一个结构体,包含了seq,stamp,frame_id,其中seq指的是扫描顺序增加的id,stamp包含了开始扫描的时间和与开始扫描的时间差,frame_id是扫描的参考系名称.注意扫描是逆时针从正前方开始扫描的.
float32 angle_min # 开始扫描的角度(角度)
float32 angle_max # 结束扫描的角度(角度)
float32 angle_increment # 每一次测量(两点间)增加的角度(角度)
float32 time_increment # 测量(两点间)的时间间隔(s)
float32 scan_time # 一次扫描(1000个点)的时间间隔(s)
float32 range_min # 距离最小值(m)
float32 range_max # 距离最大值(m)
float32[] ranges # 距离数组
float32[] intensities # 与设备有关,强度数组
通过 rviz 来查看雷达的点云图像
直接在终端输入 rviz 并执行。打开 rviz 后,先将 Fixed Frame 后面对应的值修改为 lsm10_v2.launch 中 frame_id 对应的值laser。
点击 Rviz 左下角的 Add 按键,在弹出的窗口中点击 By topic 选中/scan话题下的 LaserScan 并点击 OK。
安装 cartographer
参考
有一个protobuf找不到src的问题,自己到源文件修改到对应路径就行
修改相关cartographer_ros配置文件
参考
有些参数需要根据传感器自身修改,maxrange之类的
修改完了重新编译
catkin_make_isolated --install --use-ninja
启动雷达和节点
roslaunch lsm10_v2 lsm10_v2.launch
roslaunch cartographer_ros demo_revo_lds.launch