ROS交流群
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
小强ROS机器人教程(13)___rplidar二代激光雷达的使用和利用udev给小车增加串口设备
-
本节教程的1、2、3、4步骤仅用于演示给小强增加串口设备的方法,小强用户请接上硬件后直接跳到步骤5测试雷达。
小车主机和底盘的通信是通过串口实现的,在实际开发过程中我们可能会给小车增加串口外设,这会导致串口号(ttyUSB***)的混乱,引发小车底盘ros驱动和串口设备的异常。下文将以rplidar二代激光雷达为例,演示通过修改udev文件指定设备串口号的方式解决串口冲突问题。本文方法出处1.查看各个串口设备的ID
sudo apt-get install expect-dev unbuffer udevadm monitor --environment | grep 'ID_SERIAL='
将底盘通信u转串重新插拔一下,终端会打印出此设备的ID信息,例如下图中的"Prolific_Technology_Inc._USB-Serial_Controller"
再将激光雷达的usb适配器重新插入主机,终端也会打印出激光雷达的ID信息,例如下图中的"Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001"
2.根据获取的串口设备的ID,建立udev规则文件,将底盘通信u转串指定为ttyUSB001,将激光雷达指定为ttyUSB002sudo gedit /etc/udev/rules.d/60-persistent-serial.rules
输入下面内容后保存,请将文中ID_SERIAL后面的字符串换成步骤1中获取的ID
ACTION!="add", GOTO="persistent_serial_end" SUBSYSTEM!="tty", GOTO="persistent_serial_end" KERNEL!="ttyUSB[0-9]*", GOTO="persistent_serial_end" # This is old 11.10 style: IMPORT="usb_id --export %p" IMPORT{builtin}="path_id" ENV{ID_SERIAL}=="Prolific_Technology_Inc._USB-Serial_Controller" , SYMLINK="stm32Car" , SYMLINK+="ttyUSB001" , OWNER="xiaoqiang" ENV{ID_SERIAL}=="Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001" , SYMLINK="rplidarA2" , SYMLINK+="ttyUSB002" , OWNER="xiaoqiang" LABEL="persistent_serial_end"
更新系统udev规则
sudo udevadm control --reload
重新插拔所有usb串口设备,现在底盘通信u转串成功被识别为ttyUSB001、激光雷达被识别为ttyUSB002,与设备插入顺序和端口无关。
ls /dev
3.修改小车底盘ROS驱动节点launch文件,将通信设备指定为上文设置的ttyUSB001
4.修改rplidar二代激光的ROS驱动节点launch文件,将通信设备指定为上文设置的ttyUSB002
驱动的安装 cd ~/Documents/ros/src git clone https://git.bwbot.org/publish/rplidar_ros cd .. catkin_make
5.重启小车,现在已经可以同时正常使用激光雷达和小车底盘,例如运行下述命令测试激光雷达
roslaunch rplidar_ros view_rplidar.launch