JetRacer ROS AI Kit 教程九、启动激光雷达节点
来自Waveshare Wiki
JetRacer ROS AI Kit 初级教程目录
- JetRacer ROS AI Kit 教程一、组装小车
- JetRacer ROS AI Kit 教程二、安装Jetson nano 镜像
- JetRacer ROS AI Kit 教程三、安装Ubuntu虚拟机 镜像
- JetRacer ROS AI Kit 教程四、配置多机通讯
- JetRacer ROS AI Kit 教程五、机器人移动控制
- JetRacer ROS AI Kit 教程六、使用ROS图形工具查看节点话题
- JetRacer ROS AI Kit 教程七、机器人里程计校准
- JetRacer ROS AI Kit 教程八、启动摄像头节点
- JetRacer ROS AI Kit 教程九、启动激光雷达节点
- JetRacer ROS AI Kit 主页
步骤1、启动激光雷达节点
- 首先开启雷达电源开关使其转动
- 在机器人端,运行如下命令启动激光雷达节点
roslaunch jetracer lidar.launch
- 如果节点启动出错,按一下扩展板RESET按键,重启扩展板,然后再次运行。
- 可以运行ls /dev查看扩展板是否正常连接jetson nano,是否有发现ttyACM0,ttyACM1设备【其中ttyACM0 用于与微控制器通讯,ttyACM1用于与雷达通讯】
ls /dev
步骤2、查看数据并添加组件
- 在虚拟机中通过RVIZ工具查看雷达数据。请输入如下命令,打开RVIZ图形工具界面
rosrun rviz rviz
- 点击"Add" 添加 LaserScan 组件,Topic选择/scan 话题,Fixed Frame选择 Laser_frame即可看到雷达数据,图像中红色的点即为雷达扫描到的点
- 点击"Add" 添加TF组件;
- TF显示两个坐标,其中base_footprint为机器人底盘坐标,laser_frame为雷达坐标,雷达坐标和底盘坐标相反
步骤3、雷达数据分析
- 运行如下命令可以查看雷达的话题 /scan的数据类型
rostopic type /scan
- 如上图所示,输出类型为 sensor_msgs/LaserScan ,可输入以下命令查看LaserScan详细的消息结构
rosmsg show sensor_msgs/LaserScan
- 其中:
std_msgs/Header header # Header也是一个结构体,包含了seq,stamp,frame_id uint32 seq # 指的是扫描顺序增加的id time stamp # stamp包含了开始扫描的时间和与开始扫描的时间差.注意扫描是逆时针从正前方开始扫描的. string frame_id # frame_id是扫描的参考系名称,在ROS中作用至关重要,消息将和tf绑定才可以读取数据 float32 angle_min # 开始扫描的角度(rad) float32 angle_max # 结束扫描的角度(rad) float32 angle_increment # 每一次扫描增加的角度(rad) float32 time_increment # 测量的时间间隔(second) float32 scan_time # 扫描的时间间隔(second) float32 range_min # 距离最小值(m) float32 range_max # 距离最大值(m) float32[] ranges # 距离数组(m) ,数组长度等于扫描角度除以每次增加角度 float32[] intensities # 与设备有关,强度数组,长度和ranges一样
- 输入以下命令可以查看雷达话题 /scan 的数据
rostopic echo /scan
- 从数据中可以发现扫描角度为-3.14 ~ 3.14,即为360度一圈;雷达扫描距离范围为0.15m~12M。ranges数据为每个角度的距离数据,数组长度大约为(angle_max-angle_min)/angle_increment
- A1雷达角度如下图所示,ranges第一个数据角度为图中0度(即机器人正前方),最后一个数据为360度
步骤4、雷达数据过滤
- 从上面步骤我们知道了雷达发送的数据格式以及雷达数据信息,因此我们可以选择过滤不需要的部分
- 【注意:请先关闭雷达节点,否则多次启动雷达节点会出错】
- 在机器人端输入以下命令启动雷达过滤节点
roslaunch jetracer laser_filter.launch #启动雷达过滤节点
- 在虚拟机端运行如下命令,打开RVIZ图形工具界面
rosrun rviz rviz
- 添加LaserScan 组件,Topic选择/filteredscan话题,Fixed Frame选择 base_footprint;添加TF组件显示机器人底盘坐标;图像中红色的点即为雷达扫描到的点。此时可以发现雷达数据数据只有前面一半,后面一般数据被过滤掉了
- 运行如下命令启动动态参数调试界面
rosrun rqt_reconfigure rqt_reconfigure
- 其中:
- laserAngle :设置有效角度范围,探测机器人前面的角度
- distance :设置有效距离,超过此距离的数据将被过滤
- 拖动滑条调节参数可以发现雷达显示的红点也跟着改变