ROS2-Launch
ros2里面的launch
是基于python的,与ros1的不一样。
编写Launch文件
turtlesim_mimic_launch.py
通过在终端中输入以下命令来创建启动文件:
1 | touch launch/turtlesim_mimic_launch.py |
使用turtlesim
软件包及其可执行文件将ROS 2启动文件放在一起。
复制完整的代码并将其粘贴到turtlesim_mimic_launch.py
文件中:
1 | #引入launch模块 |
该系统的目标是启动两个turtlesim窗口,并让其中一只乌龟模仿另一只乌龟的运动。
启动描述中的前两个动作将启动两个turtlesim窗口:
1 | Node( |
注意,两个节点之间的唯一区别是它们的
node_namespace
值。唯一的名称空间使系统可以启动两个模拟器,而不会出现节点名或主题名冲突的情况。
该系统中的两个海龟都接收有关同一主题的命令,并在同一主题上发布其姿势。如果没有唯一的名称空间,就无法区分用于一只乌龟或另一只乌龟的消息。
最后一个节点也来自turtlesim
程序包,但是是一个不同的可执行文件:mimic
。
1 | Node( |
该节点以重新映射的形式添加了配置详细信息。
mimic
的/input/pose
主题已重新映射到/turtlesim1/turtle1/pose
,主题也已映射/output/cmd_vel
到/turtlesim2/turtle1/cmd_vel
。这意味着mimic
将订阅/turtlesim1/sim
的pose
主题,并将其重新发布以供/turtlesim2/sim
速度指令主题订阅。换句话说,turtlesim2
将模仿turtlesim1
的动作。
启动Launch文件
要启动turtlesim_mimic_launch.py
,请运行以下命令:
1 | ros2 launch turtlesim_mimic_launch.py |
将打开两个turtlesim窗口,您将看到以下[INFO]
消息,告诉您启动文件已启动了哪些节点:
1 | [INFO] [launch]: Default logging verbosity is set to INFO |
启动效果:
要查看运行中的系统,请打开一个新终端,然后在主题上运行命令以使第一个乌龟移动:ros2 topic pub``/turtlesim1/turtle1/cmd_vel
1 | ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}' |
看到两只乌龟都遵循相同的路径:
使用rqt_graph
当系统仍在运行时,打开一个新终端并运行rqt_graph
以更好地了解启动文件中节点之间的关系。
运行命令:
1 | rqt_graph |
一个隐藏的节点(您运行的命令)正在将数据发布到该节点已预订的左侧主题。图的其余部分显示了先前描述的内容:订阅的位姿主题,并发布到的速度命令主题。ros2 topic pub``/turtlesim1/turtle1/cmd_vel``/turtlesim1/sim``mimic``/turtlesim1/sim``/turtlesim2/sim