【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++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C# 预处理指令(# 指令)的具体使用

《C#预处理指令(#指令)的具体使用》本文主要介绍了C#预处理指令(#指令)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1、预处理指令的本质2、条件编译指令2.1 #define 和 #undef2.2 #if, #el

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u