1.首先下载RPLIDAR的驱动功能包 https://github.com/robopeak/rplidar_ros
2.然后解压放到~/catkin_ws/src目录下
3.执行catkin_make 去编译rplidarNode and rplidarNodeClient
4.运行rplidar node 观察rviz
roscore
roslaunch rplidar_ros view_rplidar.launch
5.运行rplidar node用测试程序观察
roslaunch rplidar_ros rplidar.launch
rosrun rplidar_ros rplidarNodeClient
查看rplidar.launch启动文件
<launch>
<node name="rplidarNode" pkg="rplidar_ros" type="rplidarNode" output="screen">
<param name="serial_port" type="string" value="/dev/ttyUSB0"/>
<param name="serial_baudrate" type="int" value="115200"/>
<param name="frame_id" type="string" value="laser"/>
<param name="inverted" type="bool" value="false"/>
<param name="angle_compensate" type="bool" value="true"/>
</node>
</launch>
发布节点源码
#include "ros/ros.h"
#include "sensor_msgs/LaserScan.h"
#include "std_srvs/Empty.h"
#include "rplidar.h"
#ifndef _countof
#define _countof(_Array) (int)(sizeof(_Array) / sizeof(_Array[0]))
#endif
#define DEG2RAD(x) ((x)*M_PI/180.)
using namespace rp::standalone::rplidar;
RPlidarDriver * drv = NULL;
void publish_scan(ros::Publisher *pub,
rplidar_response_measurement_node_t *nodes,
size_t node_count, ros::Time start,
double scan_time, bool inverted,
float angle_min, float angle_max,
std::string frame_id)
{
static int scan_count = 0;
sensor_msgs::LaserScan scan_msg;
scan_msg.header.stamp = start;
scan_msg.hea