硬件组成
一个香橙派zero3
一个激光雷达(本人使用的是ms200激光雷达)
一个usb转uart模块(ch340或者cp2102,本人使用的是cp2102)
烧录系统
首先用烧录工具烧录香橙派官方提供的乌班图镜像(我使用的版本是20.04桌面版,因为20.04版本可以装ros1和ros2,并且本文是复现slam建图,不能具体的看图怎么能成呢!)
远程登陆
烧录好镜像后远程登陆开发板(这里使用的是Xshell软件,账号密码默认都为orangepi)
安装ros
这里使用的是小鱼一键安装ros,感谢鱼香大佬的简易安装工具(鱼香论坛https://fishros.org.cn/forum/)
wget http://fishros.com/install -O fishros && . fishros
我这里选择的是ROS1Noetic桌面版本(记得换源再安装,不换源会有安装不成功的几率)
安装激光雷达驱动并启动雷达
先创建工作空间,并将激光雷达的驱动文件解压到工作空间的src文件夹下
mkdir catkin_ws
cd catkin_ws/
mkdir src
cd src/
catkin_init_workspace
tar -xvf oradar_ros.tar.xz
上面解压的oradar_ros.tar.xz是我这款ms200的驱动文件(由厂商提供)
回到工作空间并编译
cd catkin_ws
catkin_make
编译完成后添加工作空间环境变量,在终端输入
sudo vim ~/.bashrc
在该文件的末尾添加以下语句
source ~/catkin_ws/devel/setup.bash --extend
将激光雷达通过cp2102串口转usb模块插到板子上的usb接口,终端输入
cd catkin_ws/src/oradar_ros
sudo cp oradar.rules /etc/udev/rules.d/
这个oradar.rules是绑定雷达端口的规则文件,其中的参数是厂家提供的,我们要按实际修改,终端输入
lsusb
此时记住这个cp2102的id号为10c4:ea60,然后终端输入
sudo vim etc/udev/rules.d/oradar.rules
编辑刚刚复制过去的规则文件修改为
重新插拔雷达串口,并在终端输入
ll /dev/oradar
此时出现说明端口绑定成功。
然后新建一个终端,输入
roslaunch oradar_lidar ms200_scan.launch
此时可以看到发布scan话题成功,表示激光雷达已经驱动起来了。
(经评论区大佬提醒,各位在操作的过程中确认一下发布话题的名称,否则会产生话题订阅问题)
复现hector mapping
先安装依赖
sudo apt-get install ros-noetic-hector-mapping
打开两个终端,先试试hector能否订阅到scan话题其中一个终端启动激光雷达,另一个启动hector
roslaunch oradar_lidar ms200_scan.launch
rosrun hector_mapping hector_mapping
此时出现
这是获取坐标转换数据超时的提醒,看来hector已经订阅了scan话题,但由于没有提供坐标信息无法正常运行。
我们找到hector mapping 的启动文件
cd opt/ros/noetic/share/hector_mapping/launch/
sudo vim mapping_default.launch
将修改为
<!-- Frame names -->
<param name="map_frame" value="map" />
<param name="base_frame" value="base_link" />
<param name="odom_frame" value="base_link" />
同时在激光雷达的启动文件中添加两个TF变换坐标
vim catkin_ws/src/oradar_ros/launch/ms200_scan.launch
在末尾的</launch>上面添加
<node pkg="tf" type="static_transform_publisher" name="map_to_odom" args="0.0 0.0 0.0 0 0 0.0 /odom /base_link 10"/>
<node pkg="tf" type="static_transform_publisher" name="base_frame_laser" args="0 0 0 0 0 0 /base_link /laser 10"/>
再重新打开两个终端并启动激光雷达和hector
可以看到错误提示已经消失,hector mapping正常运行
在rviz上查看建图效果
通过香橙派官方推荐的nomachine远程桌面登陆香橙派zero3(如何安装使用nomachine在官方的用户手册中有详细说明,这边不再赘述)
打开三个终端分别输入
roslaunch oradar_lidar ms200_scan.launch
rosrun hector_mapping hector_mapping
rviz rviz
第一条是启动激光雷达,发布scan话题
第二条是启动hector mapping发布map话题
第三条是启动rviz可视化工具,查看建图效果
在rviz中添加laserscan和map同时订阅scan话题和map话题
此时可以在rviz上看到建图效果,同时移动激光,图中也会跟着建图。
此致大功告成。
后续优化
编写launch文件,将上述三条指令整合到一个启动文件中
<launch>
<include file="$(find oradar_lidar)/launch/ms200_scan.launch" />
<node pkg="hector_mapping" type = "hector_mapping" name = "hector_mapping" />
<node pkg="rviz" type = "rviz" name = "rviz" args="-d $(find oradar_lidar)/rviz/myslam.rviz"/>
</launch>
其中myslam.rviz文件是rviz配置文件,可从rviz左上角保存。