ROS---传感器集成

ROS—传感器集成

  对于ROS机器人,如果想让其启动,我们需要逐一启动底盘控制与激光雷达,操作有点冗余。并且如果只是简单启动这些节点,那么在在 rviz 中显示时,会发现出现了TF转换异常,比如参考坐标系设置为odom时,雷达信息显示失败。
  为了解决上述问题,我们需要优化底盘、雷达相关节点的启动并通过坐标变换实现机器人底盘与里程计、雷达的关联,具体实现流程如下:

  1. 编写用于集成的 launch 文件;
  2. 发布TF坐标变换;
  3. 启动并测试。

1 集成的launch文件

新建功能包:

catkin_create_pkg mycar_start roscpp rospy std_msgs ros_arduino_python rplidar_ros

ROS---传感器集成_第1张图片

功能包下创建launch文件夹,launch文件夹中新建launch文件,文件名自定义(本文新建名为start.launch)。
内容如下:

<!-- 机器人启动文件:
        1.启动底盘
        2.启动激光雷达
 -->
<launch>
        <include file="$(find ros_arduino_python)/launch/arduino.launch" />
        <include file="$(find rplidar_ros)/launch/rplidar_a1.launch" />
</launch>

2 坐标变换

对于ROS机器人,我们需要自定义坐标变换,新建launch文件(本文新建名为start_tf.launch)。
内容如下:

<!-- 机器人启动文件:
        当不包含机器人模型时,需要发布坐标变换
 -->
<launch>
    <include file="$(find mycar_start)/launch/start.launch" />    
    <node name="rplidar2basefootprint" pkg="tf2_ros" type="static_transform_publisher" args="0 0 0.1 0 0 0 /base_footprint /laser"/>
</launch>

3 测试

启动PC端和Jetson nano端相关节点并运行查看结果。

3.1 Jetson nano端

执行机器人launch启动文件:

roslaunch mycar_start start_tf.launch

3.2 PC端

启动键盘控制节点:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

启动rviz:

rviz

3.3 结果展示

ROS---传感器集成_第2张图片

你可能感兴趣的:(ros,机器人)