《ROS理论与实践》学习笔记Launch文件与TF坐标变换

Posted Sakurazzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《ROS理论与实践》学习笔记Launch文件与TF坐标变换相关的知识,希望对你有一定的参考价值。

在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第四讲:ROS常用组件工具 。主要学习了ROS的Launch启动文件、TF坐标变换、可视化显示与仿真工具。


课程内容

1.Launch启动文件

采用XML对节点进行配置和启动,常用标签定义如下:

  1. < launch > 根元素

  2. < node > 启动节点

    格式:
    < node pkg=“package-name” type=“executable-name” name =“node-name” >

    · pkg: 节点所在的功能包名称
    · type: 节点的可执行文件名称
    · name: 节点运行时的名称
    · output、respawn、required、ns、args

  3. < param >/< rosparam > 设置参数

    格式:
    < param name=“output_frame” value=“odom”/>
    < rosparam file=“params.yaml” command=“load” ns=“params”>

    < arg > launch文件的局部变量

    格式:
    < param name=“foo” value=${arg arg-name}/>
    < node name=“node” pkg=“package” type=“type” args=" $(arg arg-name)"/>

  4. < remap > 重映射ROS计算图资源的命名

    格式:
    < remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>

  5. < include> 包含其他launch文件

    格式:
    < include file="$(dirname)/other.launch">

2.TF坐标变换

在课程《机器人学》中我们已经学习了相关的坐标变换关系知识,包括D-H坐标系建立、齐次坐标变换矩阵、速度雅可比矩阵等。

  • TF功能包安装(18.04 melodic)
$ sudo apt-get install ros-melodic-turtle-tf
  • TF广播器实现
  1. 定义TF广播器(TransformBroadcaster)
  2. 创建坐标变换值
  3. 发布坐标变换(sendTransform)
  • TF监听器实现
  1. 定义TF监听器(TransformListerner)
  2. 查找坐标变换(waitForTransform、lookupTransform)

具体代码实现来自课程配套代码包,不再贴出。

3.可视化显示与仿真工具

  • 日志输出工具—— rqt_console
     $ rosrun rqt_console rqt_console
    
  • 计算图可视化工具—— rqt_graph
    $ rosrun rqt_graph rqt_graph
    
  • 数据绘图工具—— rqt_plot
    $ rosrun rqt_plot rqt_plot
    
  • 图像渲染工具—— rqt_image_view
    $ rosrun rqt_iamge_view rqt_iamge_view
    
  • 三维可视化工具Rviz
    $ rosrun rviz rviz
    
  • 三维动态物理仿真器Gazebo
    为快速加载模型,需要提前下载模型文件库,放置在~/.gazebo/models目录下(若主目录找不到文件夹,可以使用Ctrl+h显示隐藏文件夹)。
    模型库百度网盘下载链接:
    链接: Gazebo模型库文件 提取码: ju8p

本讲作业

1.创建launch功能包,分别用launch文件完成上一讲的三道题目的启动

  • 启动发布者和订阅者节点,让海龟圆周运动,并且订阅海龟的位置信息

    <launch>
    	<param name="/turtle_number"   value="1"/>
    
    	<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
    		<param name="turtle_name1"   value="Tom"/>
    	</node>
    	
     	<node pkg="ch3" type="circle_publisher" name="speedpub" />
        <node pkg="ch3" type="pose_subscriber"  name="posesub" output="screen" /> 
    </launch>
    

    启动方法:

    $ roslaunch ch3 turtlesp.launch
    
  • 生成一只新的海龟

    <launch>
        <param name="/turtle_number"   value="1"/>
    
     <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
    		<param name="turtle_name1"   value="Tom"/>
    	</node>
    
    	<node pkg="ch3" type="create_client" name="create2" args="turtle2" output="screen" /> 
    </launch>
    

    启动方法:

    $ roslaunch ch3 turbuild.launch
    

2.下载gazebo离线模型库并安装

根据上述百度云链接下载并安装即可。

3.创建learning_tf功能包,完成tf的编程和测试

尚未完成。


结语

本讲完成了launch启动文件的代码实现,TF坐标变换的编程、可视化显示与仿真工具的使用,并在作业中进行了综合练习。

以上是关于《ROS理论与实践》学习笔记Launch文件与TF坐标变换的主要内容,如果未能解决你的问题,请参考以下文章

《ROS理论与实践》学习笔记ROS通信编程

《ROS理论与实践》学习笔记机器人语音交互

《ROS理论与实践》学习笔记机器人语音交互

《ROS理论与实践》学习笔记机器人自主导航

《ROS理论与实践》学习笔记机器人自主导航

《ROS理论与实践》学习笔记机器人SLAM建图