ros之乌龟做圆周运动and订阅乌龟的位姿信息

news/2025/2/14 2:02:05/

一 .基于乌龟显示节点,通过话题发布,编码实现控制小乌龟做圆周运动

  • 打开终端1,进入工作空间 ros_ws
cd ros_ws
  • 启动节点(ros服务器)
roscore

在这里插入图片描述

  • 新开终端2,启动乌龟节点(turtlesim )
rosrun turtlesim turtlesim_node 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 新开终端3,查看启动的节点信息
rosnode list

在这里插入图片描述

  • 乌龟的节点为 turtlesim ,并查看该节点的信息,找到订阅者话题为 /turtle1/cmd_vel
rosnode info turtlesim

在这里插入图片描述

  • 查看 /turtle1/cmd_vel话题的信息,可找到话题的消息类型为 geometry_msgs/Twist
rostopic info /turtle1/cmd_vel

在这里插入图片描述

  • 查看 geometry_msgs/Twist 消息的内容
rosmsg show geometry_msgs/Twist

在这里插入图片描述

  • 进入工作空间 ros_wssrc文件夹,创建新的功能包 wugui_topic
cd ros_ws/src
catkin_create_pkg wugui_topic roscpp rospy std_msgs
  • 进入功能包 wugui_topic ,创建 scripts文件夹
cd wugui_topic
mkdir scripts
  • 打开vscode

  • scripts下创建python文件 wu_tal.py,并进行编写程序

#! /usr/bin/env python
"""编写 ROS 节点,控制小乌龟画圆准备工作:1.获取topic : /turtle1/cmd_vel2.获取消息类型 : geometry_msgs/Twist3.运行前,注意先启动 turtlesim_node 节点实现流程:1.导包2.初始化 ROS 节点3.创建发布者对象4.创建频率对象 10HZ5.创建消息对象6.创建发布的消息内容
"""import rospy
from geometry_msgs.msg import Twistif __name__ == "__main__":# 初始化 ROS 节点rospy.init_node("wu_tal_p")# 创建发布者对象pub = rospy.Publisher("/turtle1/cmd_vel",Twist,queue_size=10)# 创建频率对象(10HZ)rate = rospy.Rate(10)# 创建消息对象message = Twist()# 创建发布的消息内容message.linear.x = 2.0message.linear.y = 1.0message.linear.z = 0.0# 偏航角 单位弧度message.angular.x = 0.0message.angular.y = 0.0message.angular.z = 1.0while not rospy.is_shutdown():#判断rospy是否是关闭状态,如果不是运行以下代码pub.publish(message)rate.sleep()
  • 在vscode中wugui_topic 中的 CMakeLists.txt 文件中的 162-165 行取消注释,修改为 scripts/wu_tal.py

在这里插入图片描述

  • 进入 scripts文件夹,并给python文件增加可执行权限
chmod +x *.py
  • 返回终端1,在终端1先关闭 roscore节点管理器,在对工作空间进行编译后,再开启节点管理器
catkin_make
roscore
  • 终端2,重新启动乌龟节点(turtlesim )
rosrun turtlesim turtlesim_node 
  • 新开终端4,进入 ros_ws工作空间
cd ros_ws
  • 刷新并运行程序
source ./devel/setup.bash
rosrun wugui_topic wu_tal.py

在这里插入图片描述

二.在键盘控制乌龟运动的基础上,编码实现话题订阅,打印乌龟实时位姿信息

  • 打开终端1 启动 roscore节点管理器,并新开 终端2 启动乌龟节点
roscore       # 终端1 启动
rosrun turtlesim turtlesim_node   # 终端2 启动
  • 新开 终端3 查看 /turtlesim 节点的信息

    该节点信息的发布方具有三个话题

    /rosout:用于在ROS中进行日志记录和调试。

    /turtle1/color_sensor:用于获取turtlesim包中的turtle1海龟的颜色传感器信息

    /turtle1/pose:表示乌龟的位姿信息

rosnode info /turtlesim 

在这里插入图片描述

  • 查看位姿话题 /turtle1/pose 的信息,可找到话题类型为 turtlesim/Pose
rostopic info /turtle1/pose 

在这里插入图片描述

  • 查看 turtlesim/Pose内容
rosmsg show turtlesim/Pose

在这里插入图片描述

  • 在功能包 wugui_topic下的 scripts文件夹下创建python文件 wu_lis.py,并进行编写程序
#! /usr/bin/env python
"""获取小乌龟的位资准备工作:1.获取topic : /turtle1/pose2.获取消息类型 : turtlesim/Pose3.运行前,注意先启动 turtlesim_node 节点实现流程:1.导包2.初始化 ROS 节点3.创建服务对象4.回调函数处理请求并产生响应5.spin 函数
"""import rospy
from turtlesim.msg import Pose# 回调函数
def coord(msg):rospy.loginfo("乌龟位姿信息: 坐标(%.2f,%.2f), 朝向:%.2f, 线速度:%.2f, 角速度:%.2f",msg.x,msg.y,msg.theta,msg.linear_velocity,msg.angular_velocity)if __name__ == '__main__':# 初始化节点rospy.init_node("wu_lis_p")  # 创建服务对象sub = rospy.Subscriber("/turtle1/pose",Pose,coord,queue_size=10)# 阻塞函数rospy.spin()
  • 在vscode中wugui_topic 中的 CMakeLists.txt 文件中的 162-165 行取消注释,添加为 scripts/wu_lis.py

在这里插入图片描述

  • 返回终端1,在终端1先关闭 roscore节点管理器,在对工作空间进行编译后,再开启节点管理器
catkin_make
roscore
  • 终端2,重新启动乌龟节点(turtlesim )
rosrun turtlesim turtlesim_node 
  • 新开终端4,启动海龟控制节点
rosrun turtlesim turtle_teleop_key

在这里插入图片描述

  • 新开终端5,进入 ros_ws工作空间
cd ros_ws
  • 刷新并运行程序
source ./devel/setup.bash
rosrun wugui_topic wu_lis.py

在这里插入图片描述


http://www.ppmy.cn/news/1149311.html

相关文章

Linux:redis集群(3.*版本 和 5.*版本)搭建方法

介绍 至少6个实例才能组成集群。3主3从会自动分配 Redis集群原理 Redis集群架构 Redis Cluster采用虚拟槽分区,将所有的数据根据算法映射到0~16383整数槽内 Redis Cluster是一个无中心的结构 每个节点都保存数据和整个集群的状态 集群角色 Master:Master…

机器人流程自动化(RPA)如何提升用户体验?

机器人流程自动化(RPA)是一种新型的自动化技术,它通过模拟人类在计算机上执行的操作,将重复性、繁琐的任务自动化。除了在内部流程中提高效率,RPA还可以通过提升用户体验来为企业带来更多收益。下面将从几个方面探讨RP…

Docker系列--镜像和容器备份与恢复的方法

原文网址:Docker系列--镜像和容器备份与恢复的方法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍备份和恢复Docker镜像与容器的方法。 命令对比 保存与导出 docker save:保存的是镜像(image)。(保存的是分层的…

微软发布2023年10月补丁,修复了103个缺陷,包括2个活跃的漏洞利用

导语 最近,微软发布了2023年10月的补丁更新,共修复了103个缺陷。这些补丁包括两个正在被黑客利用的漏洞。让我们来看看这些补丁的具体内容和影响。 修复103个缺陷 微软此次的补丁更新共修复了103个缺陷,其中13个被评为严重,90个被…

常见算法-巴斯卡三角形(Pascal)

常见算法-巴斯卡三角形(Pascal) 1、说明 巴斯卡(Pascal)三角形基本上就是在解 nCr,因为三角形上的每一个数字各对应一个nCr,其中 n 为 row,而 r 为 column,如下: 0C0 1…

数学建模——平稳时间序列分析方法

目录 1、平稳性的Daniel检验 (1)Spearman相关系数假设检验 (2)时间序列平稳性的Danniel假设检验 案例 【模型分析】 1、原始数据at的平稳性检验 2、一阶差分序列的平稳性检验 3、二阶差分序列的平稳性检验 4、建立AR&#…

简单写个JS插件替换网页上的文本

背景: 使用Grafana监控面板,随着项目迭代,页面上几百个图表了,相当一部分和错误码有关,逐个图表单替换维护过于繁琐,于是尝试一键替换grafana面板上的错误码(也就替换网页上特定的文本元素),原…

uniapp小程序中给web-view页面添加授权弹窗(使用cover-view组件覆盖实现该功能)

效果图: web-view是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。 再看下面一个提示: 每个页面只能有一个 web-view,web-view 会自动铺满整个页面,并覆盖其他组件。 也就是说,…