ROS turtlesim小乌龟的使用与分析

本文详细介绍了ROS系统的启动过程,包括rosmaster的激活、turtlesim节点的使用及键盘控制。深入探讨了计算图、节点和topic的概念,并展示了如何通过rqt_graph和rosnode命令进行系统监控。此外,还解析了turtlesim功能包的结构及其内部节点的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备

在之前的文章中完成了ROS的安装并且启用了小乌龟。链接如下:

https://blog.youkuaiyun.com/sf9898/article/details/105290198

这次同样先启用小乌龟,先roscore启用ros master,之后再开一个terminal输入rosrun turtlesim turtlesim_node启用小乌龟,再开一个terminal输入rosrun turtlesim turtle_teleop_key启用键盘控制。

格式
rosrun 功能包 节点
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

效果如图

在这里插入图片描述

分析

关于roscore

通过上面的代码,可以启用turtlesim里面的两个节点。首先先看下roscore 的terminal,之前仅是启用ros master但是没有去分析terminal里面的信息的含义。打印的信息基本上是版本信息。其中有比较重要的信息,如图,有个http,由于ROS是分布式的,因此ros master可能存在于任一主机中,因此需要标记下。ROS分布式的优点就是可以使得不同的功能模块在不同的主机上面运行,可以节省计算资源,提高效率等。

在这里插入图片描述

关于计算图和节点

用rqt_graph查看一下计算图,可以看到有两个节点。图中两种输入方式皆可。

在这里插入图片描述
找一个terminal输入以下信息(此时已经把计算图关掉了)

rosnode list
rostopic list

在这里插入图片描述
跟之前的计算图对比,可以注意到两个椭圆内的是节点,箭头上的是topic名称。
重新打开计算图,如果在rqt_graph里面把debug的√取消,那么效果如下,可以发现多出了点奇怪的东西。
此时上图terminal打印出的/rosout就出现了。其实这几个多出来的也不需要关注。/rosout是必然存在的一个节点,从名字可以看出这节点关乎输出,是一个管理日志信息的节点,每个节点都可以通过/rosout的话题将信息传到/rosout节点。

在这里插入图片描述

另一个gui的节点是因为rqt_graph的存在,打开一个新的terminal验证,输入rosnode list,结果如下

在这里插入图片描述
可以用以下命令查看节点信息

rosnode info 节点名

在这里插入图片描述

关于turtlesim

再看乌龟,这个turtlesim 对应的文件是在哪?里面的节点有哪些?之前安装完ROS的时候说过它的位置。点:计算机-opt-ros。

在这里插入图片描述
进去之后可以看到很多文件夹和脚本,注意到有setup.bash,之前安装和配置的时候有用到。

在这里插入图片描述

其中后面三个文件夹是最重要的,include类似于C语言里面的include,里面存的头文件,lib存一些包,里面有节点(可执行文件)和Python文件等,比如这里的turtlesim,运行节点就可以启用相应的功能包里面的功能。

在这里插入图片描述
在这里插入图片描述
这里就可以看到有之前调用的turtlesim_node 和 turtle_teleop_key,同理,可以验证下其他的节点,比如draw_square。(另一个不了解,有兴趣的可以研究)

rosrun turtlesim draw_square

在这里插入图片描述

share里面可以看到很多的功能包,打开一看是有cmake 的配置文件和msg,srv的定义等等

在这里插入图片描述

打开images文件夹,可以看到好多的小乌龟logo,这就解释了为什么每次调用乌龟节点出现的乌龟长得不一定一样了。

在这里插入图片描述

关于turtle控制信息

通过以下命令实现监听,打印出的信息是乌龟的运动信息,键盘控制时会有相应的数值变化

rostopic echo /turtle1/cmd_vel

在这里插入图片描述

其他

发布话题、新增turtle的操作可以参考

https://www.cnblogs.com/chendeqiang/p/10190821.html

小海龟的坐标变换和RVIZ可视化可以参考

https://blog.youkuaiyun.com/sf9898/article/details/105350138
### 使用ROS Turtlesim绘制最大三角形 为了在ROS环境中让Turtlesim中的海龟绘制尽可能大的三角形,需要理解Turtlesim的工作原理以及如何通过编程控制其运动。这涉及到创建一个节点并发布消息到`/turtle1/cmd_vel`话题以改变海龟的方向和速度。 #### 创建Python脚本实现大三角形绘制 下面是一个基于Python编写的ROS程序实例,用于指挥Turtlesim里的虚拟海龟画出一个较大的等边三角形: ```python #!/usr/bin/env python import rospy from geometry_msgs.msg import Twist import math def draw_triangle(): pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10) rospy.init_node('draw_triangle', anonymous=True) rate = rospy.Rate(1) # 设置循环频率 side_length = 8.0 # 边长设定为屏幕宽度的一半左右 angle_turn = 120 * (math.pi / 180) twist_msg = Twist() for i in range(3): # 绘制三条边形成闭合图形 # 向前移动指定距离 twist_msg.linear.x = side_length twist_msg.angular.z = 0 pub.publish(twist_msg) rate.sleep() # 转弯准备下一个方向 twist_msg.linear.x = 0 twist_msg.angular.z = angle_turn pub.publish(twist_msg) rate.sleep() if __name__ == '__main__': try: draw_triangle() except rospy.ROSTimeMovedBackwardsException as e: pass ``` 此代码片段定义了一个名为`draw_triangle()`的功能函数,它会向`turtle1/cmd_vel`主题发送命令,使得海龟能够沿着三个顶角各转过120度的角度前进一段固定长度的距离,从而构成一个近似于全屏大小的正三角形[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值