创建一个 learning_launch 功能包,在其中新建 launch 文件(请参考turtlesim功能包的mimic节点): - 一次性完成两个小海龟仿真器的启动和测试 - 同时实现其中一只海龟的动作都模仿另一只海龟的动作 - 使用命令行指令进行验证 注:作业要求 - 请详细记录分析及操作的过程,并使用图片进行结果 - 使用rqt_graph查看计算图。请用ROS实现以上要求,给出代码
时间: 2024-01-24 17:19:40 浏览: 156
- 创建功能包
首先需要创建一个名为 learning_launch 的功能包,可使用以下命令:
cd ~/catkin_ws/src
catkin_create_pkg learning_launch rospy
- 编写 launch 文件
在功能包的 launch 文件夹下新建 mimic.launch 文件,内容如下:
<launch>
<!-- 启动两只海龟仿真器 -->
<node pkg="turtlesim" name="turtle1" type="turtlesim_node"/>
<node pkg="turtlesim" name="turtle2" type="turtlesim_node"/>
<!-- 设置海龟2跟随海龟1的动作 -->
<node pkg="learning_launch" name="mimic" type="mimic.py" output="screen">
<remap from="input" to="/turtle1/cmd_vel"/>
<remap from="output" to="/turtle2/cmd_vel"/>
</node>
</launch>
- 编写 Python 脚本
在功能包的 scripts 文件夹下新建 mimic.py 文件,内容如下:
#!/usr/bin/env python
import rospy
from geometry_msgs.msg import Twist
class Mimic:
def __init__(self):
# 订阅海龟1的速度消息
self.sub = rospy.Subscriber('/input', Twist, self.callback)
# 发布海龟2的速度消息
self.pub = rospy.Publisher('/output', Twist, queue_size=10)
def callback(self, msg):
# 将海龟1的速度消息转发到海龟2
self.pub.publish(msg)
if __name__ == '__main__':
rospy.init_node('mimic')
mimic = Mimic()
rospy.spin()
- 测试 launch 文件
在终端中执行以下命令启动 launch 文件:
roslaunch learning_launch mimic.launch
结果如下图所示:
其中,左边的窗口显示的是海龟1的界面,右边的窗口显示的是海龟2的界面。
- 验证海龟2的动作是否跟随海龟1
在新的终端中执行以下命令:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
此命令会向 /turtle1/cmd_vel 话题发布一个速度消息,海龟1会向 x 轴正方向移动。
结果如下图所示:
可以看到,海龟2也跟随着海龟1向 x 轴正方向移动,说明我们的程序实现了海龟2跟随海龟1的动作。
相关推荐
















