ros操作命令与实操-话题发布
在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:
- rosnode : 操作节点
- rostopic : 操作话题
- rosservice : 操作服务
- rosmsg : 操作msg消息
- rossrv : 操作srv消息
- rosparam : 操作参数
和之前介绍的文件系统操作命令比较,文件操作命令(参数增删改查)是静态的,操作的是磁盘上的文件,而上述命令是动态的,在ROS程序启动后,可以动态的获取运行中的节点或参数的相关信息。
实现分析:
- 乌龟运动控制实现,关键节点有两个,一个是乌龟运动显示节点 turtlesim_node,另一个是控制节点,二者是订阅发布模式实现通信的,乌龟运动显示节点直接调用即可,运动控制节点之前是使用的 turtle_teleop_key通过键盘 控制,现在需要自定义控制节点。
- 控制节点自实现时,首先需要了解控制节点与显示节点通信使用的话题与消息,可以使用ros命令结合计算图来获取。
- 了解了话题与消息之后,通过 C++ 编写运动控制节点,通过指定的话题,按照一定的逻辑发布消息即可。
实现流程:
- 通过计算图结合ros命令获取话题与消息信息。
- 编码实现运动控制节点。
- 启动 roscore、turtlesim_node 以及自定义的控制节点,查看运行结果。
1.话题与消息获取
第一个命令行:
roscore
第二个命令行:
rosrun turtlesim turtlesim_node
第三个命令行:
rosrun turtlesim turtle_teleop_key
第四个命令窗:
1.1话题获取
通过 rostopic 列出话题:
rostopic list
1.2消息获取
获取消息类型-rostopic type /turtle1/cmd_vel
获取消息格式-rosmsg info geometry_msgs/Twist
响应结果:
geometry_msgs/Vector3 linear //线速度
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular //角速度
float64 x
float64 y
float64 z
rostopic echo /turtle1/cmd_vel
可实时查看角速度线速度
2.输入命令-极简实现转圈
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:x: 1.0y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: 1.0"
pub- 发布
-r 10 以10hz的频率发布消息
/turtle1/cmd_vel 使用的话题
后面的Tab补齐
3.c++实现
1.配置功能包 plumbing_test
2.导入依赖的包 roscpp rospy std_msgs geometry_msgs
3.在功能包plumbing_test目录src下新建test01_pub_twist.cpp
/*编写 ROS 节点,控制小乌龟画圆准备工作:1.获取话题已知: /turtle1/cmd_vel)2.获取消息类型(已知: geometry_msgs/Twist)3.运行前,注意先启动 turtlesim_node 节点实现流程:1.包含头文件2.初始化 ROS 节点3.节点句柄4.创建发布者对象5.发布逻辑6.spinonce 循环
*/#include "ros/ros.h"
#include "geometry_msgs/Twist.h"int main(int argc, char *argv[])
{setlocale(LC_ALL,"");// 2.初始化 ROS 节点ros::init(argc,argv,"control");//3.创建节点句柄ros::NodeHandle nh;// 4.创建发布者对象
ros::Publisher pub =nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10); //句柄有个函数//5.发布逻辑ros::Rate rate(10); //设置发布频率//组织发布消息geometry_msgs::Twist twist;twist.linear.x =1.0; //前进速度-浮点类型twist.linear.y =1.0; //不能横着走-为0twist.linear.z =1.0; //上下速度,不是鸟,不能飞twist.angular.x = 0.0; //翻滚角twist.angular.y = 0.0; //俯仰角twist.angular.z = 0.5; //偏航角//循环发布while(ros::ok())
{pub.publish(twist);//休眠rate.sleep();//回头// 6.spinonce 循环ros::spinOnce();
}return 0;
}
4.配置文件
5.编译
第一个命令行:
roscore
第二个命令行:
rosrun turtlesim turtlesim_node
第三个命令行:
cd demo03_ws
catkin_make
source ./devel/setup.bash
rosrun plumbing_test test01_pub_twist
ros操作命令与实操-话题发布相关推荐
- 【一学就会的ROS基础入门教程 】03-1 ROS基础编程:ROS工作空间的创建、话题topic的发布与接收、以及话题消息的自定义使用
[一学就会的ROS基础入门教程 ]03-1 ROS基础编程:ROS工作空间的创建.话题topic的发布与接收.以及话题消息的自定义使用 文前白话 1.创建工作空间与功能包 关于工作空间的介绍 创建开发 ...
- 1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操
背景: 蓝绿发布.金丝雀发布.滚动发布.A/B测试 ,是大家日常常见的发布工作.所以发布的原理和实操是一个非常.非常核心的面试知识点. 在40岁老架构师 尼恩的读者交流群(50+)中,其相关面试题是一 ...
- datagridview 绑定list 不能刷新界面_人人都可写代码-H5零基础编程-发布活动界面实操07...
欢迎来到人人都可写代码,大家好,我是杨晓华,今天我们的课程内容是,项目实操,开发一个发布活动界面的H5. 这是要实现的H5发布活动界面展示效果,下面就是教大家如何制作的步骤: 1.在views的项目s ...
- 介绍一下ROS常用的命令<rosnode和rostopic实操>(一)
目录 前言 一.准备工作 1.打开终端,运行roscore 2.再打开两个新终端,发布和订阅话题 二.rosnode命令 2.1 rosnode list:列出正在运行的节点 2.2 rosnode ...
- 重磅发布:《AI产品经理的实操手册(2023版)》
今天是咱们社群"AI产品经理大本营"六周年活动的最后一天,正式发布这份大家和我都非常期待的重磅干货--<AI产品经理的实操手册(2023版)> 上周发布的"A ...
- 13.ROS编程学习:话题发布控制乌龟
目录 准备工作 c++控制乌龟运动 python控制乌龟运动 参考学习资料:赵虚左的课程+古月的ROS机器人开发实践P56的例程. 准备工作 打开ROS乌龟仿真器 roscore rosrun tur ...
- Linux实操篇之常用基本命令二【文件操作命令续,实现中英文切换】
这里写目录标题 写在前面 centos7 实现中英文切换 1. cat 1.1 基本语法 1.2 案例实操 2. more 2.1 基本语法与操作说明 2.2 案例实操 输入 = 输入 :f 3. l ...
- 谷歌大数据三篇论文标题_抖音短视频标题怎么写才能上热门?起标题的3个实操步骤,大数据分析爆款标题的套路...
抖音短视频运营学习路线图,带你全面系统性学习抖音短视频运营! 第十一篇:抖音短视频标题撰写技巧. 1.了解视频标题应该具备的特点. 2.掌握起视频标题的3个实操步骤. 3.掌握起视频标题的注意事项. ...
- 学计算机高考英语听力考试,高考英语听力机考,常识、实操、备考,你要知道这些...
原标题:高考英语听力机考,常识.实操.备考,你要知道这些 关于北京高考英语听力考试,从相关政策.考试安排和注意事项,再到备考,你需要知道的,都在这儿啦! 这些基本常识你要知道: 北京高考英语听力考试 ...
最新文章
- 检查邮箱是否包含教育后缀.edu结尾的邮箱
- 转:Fedora 17安装后配置|rpmfusion源|Rhythmbox mp3 wma支持插件|smplayer
- win10 linux子系统ssh,win10 子系统 bash 不能监听端口
- Spring AOP之异常转换
- Deepin系统更新apt-get源
- 看来cmwap真的是没有可以使用的邮件客户端了
- JavaMail中解决中文附件名乱码的问题
- javase基础复习攻略《六》
- MVC中页面的传值方式总结
- msp430的常量可以这样定义
- Springmvc源码分析之dispatcherServlet
- python怎么播放音乐_Python实现在线音乐播放器
- edp和edt哪个好_菲拉格慕香水edp和edt的区别 选择适合自己的香水方法
- 我想加入阿里,我该怎么做
- SRGB和RGB的区别
- 学生个人网页制作成品
- 优化代码中的“坏味道”
- Thinking -- CSS从根解决选择前一个兄弟元素
- 【水果识别】形态学水果识别(含识别率)【含GUI Matlab源码 907期】
- day16re模块和面向对象
热门文章
- 这些大厂笔试题 你都见识(被无情鞭挞)过了吗?—— 哔哩哔哩篇
- 用Python 写个 开心消消乐小游戏
- 1323:【例6.5】活动选择
- CorelDraw2022完整版图形平面设计
- 【ZZULIOJ】 Python 1016: 银行利率
- C语言生成随机数的函数,为什么循环后随机数都一样?
- Day17 什么是静态成员类?为什么静态成员类优于非静态成员类?
- 上顿号符号_标点符号(1):谈谈顿号的用法
- spss入门——简单的数据预处理到时间序列分析系列(四)
- 用luasocket读取双色球中奖号码