这里是将韩国的LG雷达更改为思岚的rplidar
1、硬件连接
激光雷达转接板图片:
激光雷达通过串口转接板连接到树莓派,树莓派和所有的硬件通信除了网络基本上都是通过USB串口形式,在ubuntu里面的dev下会产生一个相应的设备节点,一般熟悉的有dev下的ttyUSB0、ttyUSB1、ttyUSB2这样的,但是这样的是不规范的,当插入多个设备之后不知道ttyUSB0、ttyUSB1、ttyUSB2分别对应什么,所以要对对应的设备CP2102芯片(USB转串口)做一个修改串口号,修改之后就可以在ubuntu加载驱动时候通过描述符重定义设备名字。在这里我们只能给CP2102去修改,像CH340这样的USB转串口是不能修改的。
修改方法:
安装 CP21xx Customization Utility,将雷达的这个转换模块接到电脑,打开软件
打开之后点击1处Refresh重新扫描一下,然后在2处的Serial行修改Value值,可以根据自己需要将0001修改成0002、0003等,修改完成后点击3处的Program Device,就会保存设置。
修改完成后将雷达连接到树莓派上,然后给机器人上电。
2、树莓派配置
首先下载思岚激光雷达的一个包,直接搜索思岚科技->下载与支持->RPLIDAR A Series->GitHub仓库,将代码下载。
打开虚拟机, ssh连接小车,挂载/mnt。
ssh huike@192.168.12.1
sudo mount -t nfs 192.168.12.1:/home/huike/robot_ws /mnt
首先将Windows下下载好的rplidar_ros_master.zip复制到虚拟机中(PC端)->解压缩->修改一下名字(防止和原来的雷达包名字重复,我改成rplidar_ros),然后将修改后的包复制到树莓派的src下(在PC端进行):
cp /home/ubuntu_name/rplidar_ros /mnt/src/ -rf
然后在树莓派的工作空间下进行编译(在树莓派中进行):
sudo data -s "2020-12-23 13:17:30"
cd /robot_ws
catkin_make
查看树莓派上的usb设备,在工作空间robot_ws中输入:
ls /dev/ttyUSB*
可以看到有很多个设备,这时候需要确定哪一个是我们刚刚安装的雷达接口,subl(一种编辑器,个人认为比较好用)打开src/huanu_robot_start/src/creat_huanyu_udev.sh
可以看到第三行是我们新安装的思岚激光雷达rplidar,将串口号由0004改为0001(之前硬件连接中设置的0001),保存。进入huanyu_robot_start功能包中给creat_huanyu_udev.sh一个执行权限,然后运行当前目录下的该文件。
cd src/huanyu_robot_start/
sudo chmod +x creat_huanyu_udev.sh
sudo creat_huanyu_udev.sh
然后把思岚雷达重新拔插一下,再重新查看一下dev下是否有新安装好的雷达:
ls /dev/rplidar_laser
如果一切正常是可以看到rplidar_laser下面有文件的。
subl打开rplidar_ros 下的rplidar.launch文件,将
<param name="serial_port" type="string" value="/dev/ttyUSB0"/>
中的value值改为"dev/rplidar_laser",保存一下。
退回到robot_ws/src目录下,当添加新的功能包后都需要运行一下rospack,这样运行roslaunch才能找到我们的功能包:
rospack profile
接下来运行launch文件:
roslaunch rplidar_ros rplidar.launch
3、验证激光雷达
在PC端运行
rostopic list
rostopic echo /scan
可以查看到/scan话题,监听一下/scan的数据也是可以收到的。
打开rviz,可以从rplidar.launch中看出,他的frame_id就是laser,所以在rviz中将frame改为laser,可以看到激光点信息。
此时说明雷达安装时没有问题的。
4、雷达代码移植到小车
(1)将rplidar.launch文件中的node节点信息复制。
(2)打开huanyu_robot_start.launch,将原来雷达的功能包屏蔽掉,将思岚雷达的代码粘贴过来。
接下来修改静态tf的发布,修改(2)中文件的如下代码:
可以看到args中有6个数(有的是7个),分别代表:x、y、z的坐标(从base_footprint开始的坐标 )和四元数。
接下来修改args的值:先假设六个数分别为abcdef(为了写起来方便,程序中不用),a代表雷达相对于机器人正中心x方向偏移?米(右手笛卡尔坐标系);b代表y方向偏移?米;c代表激光雷达的高度?米;d代表雷达正方向和小车正方向偏移量(思岚激光雷达的正方向在电机和屁股座那里,而我们反过来安装的,雷达正方向和小车正方向相反,为180度,为π,所以写3.1415,如果安装时是其他角度,因为是右手笛卡尔坐标系,顺时针为负方向,逆时针为正方向)。后面的laser也要和node中的laser对应起来,保持一致。
修改为如下参数:
此时,所有的代码设置完成 ,保存。
4、启动小车验证
roslaunch huanyu_robot_start Huanyu_robot_start.launch
roslaunch huanyu_robot_start gmapping_slam.launch
打开rviz ,可以看到地图和激光点都是ok的。