【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动

2023-10-30 05:12

本文主要是介绍【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ROS创建节点发布命令使得小海龟做圆周运动

  • 1.任务需求
  • 2.任务分析
    • 2.1发布方topic和msg
    • 2.2接收方topic和msg
    • 2.3目标明确!
  • 3.创建ROS节点
    • 3.1创建发布方节点pub_pose
    • 3.2创建订阅方节点sub_pose

1.任务需求

  创建一个节点,在其中实现一个订阅者和一个发布者,完成以下功能:

  • 发布者:发布海龟速度指令,让海龟做圆周运动;
  • 订阅者:订阅海龟的位置信息,并在终端中周期打印输出;

2.任务分析

  要发布海龟速度指令,我们得先知道海龟速度指令对应的话题名称和数据格式是什么,首先生成一只小海龟,并用键盘控制其运动。打开roscore
在这里插入图片描述

  启动小海龟rosrun turtlesim turtlesim_node
在这里插入图片描述

2.1发布方topic和msg

  查看当前有那些话题rostopic list
在这里插入图片描述

  其中 cmd_vel 是速度指令话题,获取这个话题的消息类型rostopic type /turtle1/cmd_vel如下:
在这里插入图片描述

  可以看到,发布速度信息的消息名称是 geometry_msgs/Twist,我们继续用指令rosmsg info geometry_msg/Twist查看这个消息的具体格式,分别由 xyz 方向上的线速度和 xyz 方向的角速度组成。
在这里插入图片描述

2.2接收方topic和msg

  pose 是小海龟当前姿态话题,用rostopic type /turtle1/pose获取这个话题的消息类型为turtlesim/Pose如下:
在这里插入图片描述

  同样查看该topic的消息类型rosmsg info turtlesim/Pose
在这里插入图片描述

2.3目标明确!

  因此我们的目的便明确了:

  • 建立一个发布方节点,发布的话题名称是/turtle1/cmd_vel/turtle1/cmd_vel的消息格式是 geometry_msgs/Twist,具体的数值可以设置为 x 方向线速度为1,z 方向角速度为1;
  • 建立一个订阅方的节点,订阅的话题为/turtle1/pose/turtle1/pose的数据格式为turtlesim/Pose

3.创建ROS节点</

这篇关于【ROS教程demo】用C++创建一个ROS节点,发布指令使得小海龟做圆周运动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基