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

2023-10-12 02:52

本文主要是介绍ros之乌龟做圆周运动and订阅乌龟的位姿信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  • 打开终端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

在这里插入图片描述

这篇关于ros之乌龟做圆周运动and订阅乌龟的位姿信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/192735

相关文章

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

uva 10154 DP 叠乌龟

题意: 给你几只乌龟,每只乌龟有自身的重量和力量。 每只乌龟的力量可以承受自身体重和在其上的几只乌龟的体重和内。 问最多能叠放几只乌龟。 解析: 先将乌龟按力量从小到大排列。 然后dp的时候从前往后叠,状态转移方程: dp[i][j] = dp[i - 1][j];if (dp[i - 1][j - 1] != inf && dp[i - 1][j - 1] <= t[i]

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

Linux命令(11):系统信息查看命令

系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

【小迪安全笔记 V2022 】信息打点9~11

第9天 信息打点-CDN绕过篇&漏洞回链8接口探针&全网扫指&反向件 知识点: 0、CDN知识-工作原理及阻碍 1、CDN配置-域名&区域&类型 2、CDN绕过-靠谱十余种技战法 3、CDN绑定-HOSTS绑定指向访问 CDN 是构建在数据网络上的一种分布式的内容分发网。 CDN的作用是采用流媒体服务器集群技术,克服单机系统输出带宽及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

Python批量读取身份证信息录入系统和重命名

前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。 实现过程概述: 模块与功能: re 模块:用于从 OCR 识别出的文本中提取所需的信息。 日期模块:计算年龄。 pandas:处理和操作表格数据。 PaddleOCR:百度的

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM