使用roslaunch来启动多个turtlesim节点和一个模仿节点以让一个turtlesim节点来模仿另一个turtlesim节点

版权声明:转载请标明出处,谢谢! https://blog.csdn.net/kdongyi/article/details/84447014

使用roslaunch来启动多个turtlesim节点和一个模仿节点以让一个turtlesim节点来模仿另一个turtlesim节点。

使用roslaunch

  • roslaunch可以用来启动定义在launch文件中的多个节点。
  • 用法:
$ roslaunch [package] [filename.launch]
  • 先切换到beginner_tutorials程序包目录下:
$ roscd beginner_tutorials
  • 如果roscd执行失败了,记得设置你当前终端下的ROS_PACKAGE_PATH环境变量
  • 设置方法如下:
$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH
$ roscd beginner_tutorials
  • 如果你仍然无法找到beginner_tutorials程序包,说明该程序包还没有创建,那么请返回到ROS/Tutorials/CreatingPackage教程,并按照创建程序包的操作方法创建一个beginner_tutorials程序包。
  • 然后创建一个launch文件夹:
$ mkdir launch
$ cd launch

Launch 文件

  • 现在我们来创建一个名为turtlemimic.launch的launch文件并复制粘贴以下内容到该文件里面:
   1 <launch>
   2 
   3   <group ns="turtlesim1">
   4     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   5   </group>
   6 
   7   <group ns="turtlesim2">
   8     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   9   </group>
  10 
  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  15 
  16 </launch>

Launch 文件解析

  • 现在我们开始逐句解析launch xml文件。
<launch>
  • 在这里我们以launch标签开头以表明这是一个launch文件。
   3   <group ns="turtlesim1">
   4     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   5   </group>
   6 
   7   <group ns="turtlesim2">
   8     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   9   </group>
  • 在这里我们创建了两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。
  • 这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。
  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  • 在这里我们启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1。
</launch>
  • 这个是launch文件的结束标签。

roslaunching

  • 现在让我们通过roslaunch命令来启动launch文件:
$ roslaunch beginner_tutorials turtlemimic.launch
  • 现在将会有两个turtlesims被启动,然后我们在一个新终端中使用rostopic命令发送速度设定消息:
$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
  • 你会看到两个turtlesims会同时开始移动,虽然发布命令只是给turtlesim1发送了速度设定消息。

  • 我们也可以通过rqt_graph来更好的理解在launch文件中所做的事情。
  • 运行rqt并在主窗口中选择rqt_graph:
$ rqt
  • 或者直接运行:
$ rqt_graph
  • 效果:

猜你喜欢

转载自blog.csdn.net/kdongyi/article/details/84447014