??对于ROS机器人,如果想让其启动,我们需要逐一启动底盘控制与激光雷达,操作有点冗余。并且如果只是简单启动这些节点,那么在在 rviz 中显示时,会发现出现了TF转换异常,比如参考坐标系设置为odom时,雷达信息显示失败。
??为了解决上述问题,我们需要优化底盘、雷达相关节点的启动并通过坐标变换实现机器人底盘与里程计、雷达的关联,具体实现流程如下:
新建功能包:
catkin_create_pkg mycar_start roscpp rospy std_msgs ros_arduino_python rplidar_ros
功能包下创建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>
对于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>
启动PC端和Jetson nano端相关节点并运行查看结果。
执行机器人launch启动文件:
roslaunch mycar_start start_tf.launch
启动键盘控制节点:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
启动rviz:
rviz