JetRacer ROS AI Kit 教程九、启动激光雷达节点

来自Waveshare Wiki
跳转至: 导航搜索

JetRacer ROS AI Kit 初级教程目录

步骤1、启动激光雷达节点

  • 首先开启雷达电源开关使其转动
  • 在机器人端,运行如下命令启动激光雷达节点
roslaunch jetracer lidar.launch
JetRacer ROS 40.png
  • 如果节点启动出错,按一下扩展板RESET按键,重启扩展板,然后再次运行。
  • 可以运行ls /dev查看扩展板是否正常连接jetson nano,是否有发现ttyACM0,ttyACM1设备【其中ttyACM0 用于与微控制器通讯,ttyACM1用于与雷达通讯】
 ls /dev    
JetRacer ROS 21.png

步骤2、查看数据并添加组件

  • 在虚拟机中通过RVIZ工具查看雷达数据。请输入如下命令,打开RVIZ图形工具界面
rosrun rviz rviz
Jetbot image45.png
  • 点击"Add" 添加 LaserScan 组件,Topic选择/scan 话题,Fixed Frame选择 Laser_frame即可看到雷达数据,图像中红色的点即为雷达扫描到的点
Jetbot image46.png
  • 点击"Add" 添加TF组件;
J1.png
  • TF显示两个坐标,其中base_footprint为机器人底盘坐标,laser_frame为雷达坐标,雷达坐标和底盘坐标相反
J2.png

步骤3、雷达数据分析

  • 运行如下命令可以查看雷达的话题 /scan的数据类型
  rostopic type /scan    
J3.png
  • 如上图所示,输出类型为 sensor_msgs/LaserScan ,可输入以下命令查看LaserScan详细的消息结构
  rosmsg show sensor_msgs/LaserScan  
J4.png
  • 其中:
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  
J6.png
  • 从数据中可以发现扫描角度为-3.14 ~ 3.14,即为360度一圈;雷达扫描距离范围为0.15m~12M。ranges数据为每个角度的距离数据,数组长度大约为(angle_max-angle_min)/angle_increment
  • A1雷达角度如下图所示,ranges第一个数据角度为图中0度(即机器人正前方),最后一个数据为360度
J5.png

步骤4、雷达数据过滤

  • 从上面步骤我们知道了雷达发送的数据格式以及雷达数据信息,因此我们可以选择过滤不需要的部分
  • 【注意:请先关闭雷达节点,否则多次启动雷达节点会出错】
  • 在机器人端输入以下命令启动雷达过滤节点
 roslaunch jetracer laser_filter.launch     #启动雷达过滤节点   
  • 在虚拟机端运行如下命令,打开RVIZ图形工具界面
 rosrun rviz rviz    
  • 添加LaserScan 组件,Topic选择/filteredscan话题,Fixed Frame选择 base_footprint;添加TF组件显示机器人底盘坐标;图像中红色的点即为雷达扫描到的点。此时可以发现雷达数据数据只有前面一半,后面一般数据被过滤掉了

家.png

  • 运行如下命令启动动态参数调试界面
 rosrun rqt_reconfigure rqt_reconfigure    

J8.png

  • 其中:
    • laserAngle :设置有效角度范围,探测机器人前面的角度
    • distance :设置有效距离,超过此距离的数据将被过滤
  • 拖动滑条调节参数可以发现雷达显示的红点也跟着改变