机器人平台搭建(四)——为机器人装配激光雷达
总述
移动机器人在环境中获取障碍物的具体位置、房间的内部轮廓等信息都是非常必要的,这些信息是机器人创建地图、进行导航的基本数据,使用激光雷达作为这种场景应用下的传感器。
激光雷达可用于测量机器人和其他物体之间的距离。
1、rplidar功能包
针对激光雷达,ROS中有相应的驱动功能包——rplidar,该功能包的相关话题、参数设置接口如下。
(1)话题与服务
rplidar功能包发布的话题和提供的服务。
话题发布
名称:Scan
类型:sensor_msgs/LaserScan
描述:发布激光雷达数据
服务
名称:stop_motor
类型:std_srvs/Empty
描述:停止旋转电机
名称:start_motor
类型:std_srvs/Empty
描述:开始旋转电机
(2)参数
rplidar功能包中可供配置的参数
参数:serial_port
类型:string
默认值:"/dev/ttyUSB0"
描述:激光雷达串口名称
参数:serial_baudrate
类型:int
默认值:115200
描述:串口波特率
参数:frame_id
类型:string
默认值:“laser”
描述:激光雷达坐标系
参数:inverted
类型:bool
默认值:false
描述:是否倒置安装
参数:angle_compensate
类型:bool
默认值:true
描述:角度补偿
rplidar功能包的安装可以使用如下命令完成:
sudo apr-get install ros-kinetic-rplidar-ros
2、PC端驱动rplidar
将rplidar连接到PC端的USB接口,使用lsusb命令检测是否连接成功。
启动激光雷达的过程中有可能遇到串口权限问题。
使用以下命令添加用户权限可以解决该问题。其中USER_NAME是当前用户名,设置后需要注销并重新登录Ubuntu系统:
sudo gpasswd --add USER_NAME dialout
正常工作后,可以使用激光雷达获取信息,使用以下命令启动激光节点:
rosrun rplidar_ros rplidarNode
如果终端中的输出信息无报错,则说明rplidar启动成功。
使用rostopic命令查看当前系统中的话题列表:
rostopic list
如果想查看更多关于激光雷达发布的信息,可以使用以下命令打印:
rostopic echo /scan
但是终端中的激光数据并不形象,故可以使用rviz在图形化界面下显示激光雷达数据。修改“Fixed Frame”为“laser”,点击“Add”按钮添加LaserScan显示插件,设置插件订阅“/scan”话题,就可以看到激光雷达信息。
也可以使用rplidar功能包中的命令直接在rviz中查看激光数据:
roslaunch rplidar_ros view_rplidar.launch