小强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" 0_1481030229497_udev0.png 2.根据获取的串口设备的ID,建立udev规则文件,将底盘通信u转串指定为ttyUSB001,将激光雷达指定为ttyUSB002

sudo 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

0_1481031023725_udev.png

3.修改小车底盘ROS驱动节点launch文件,将通信设备指定为上文设置的ttyUSB001

0_1481031213813_udev2.png

4.修改rplidar二代激光的ROS驱动节点launch文件,将通信设备指定为上文设置的ttyUSB002


驱动的安装

cd ~/Documents/ros/src
git clone https://github.com/BlueWhaleRobot/rplidar_ros.git
cd  ..
catkin_make

0_1481031433261_udev3.png

5.重启小车,现在已经可以同时正常使用激光雷达和小车底盘,例如运行下述命令测试激光雷达

roslaunch rplidar_ros view_rplidar.launch

0_1481031554709_udev4.png

小强主页 返回目录

results matching ""

    No results matching ""