2749|2

654

帖子

27

TA的资源

版主

38“万里”树莓派小车——ROS学习(ROS基本概念介绍,以小乌龟节点为例) [复制链接]

     ROS是一个分布式框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。 ROS官方中文教程

ROS概念关系图

    主要概念关系可以用下面的这张图展示。

image-20220529221433-1.jpeg

    节点(node):ROS是以节点的形式开发的,可执行程序的最小单位。

    消息(message):节点之间通过传送消息进行通讯。

    主题(topic):消息以一种发布(publication)/订阅(subscription) 的方式传递,一个或多个节点可以在一个给定的主题中发布消息,多个节点可以订阅同一个主题。

    服务(service):一个同步的消息通信方式,是一种一对一的机制。

    在前面介绍了通过键盘控制小乌龟,指令如下。

    1. 打开ROS服务

roscore

    2. 打开一个新终端,运行“turtlesim_node”节点,打开小乌龟

rosrun turtlesim turtlesim_node

    3. 打开一个新终端,运行“turtle_teleop_key”节点,通过键盘控制小乌龟

rosrun turtlesim turtle_teleop_key

     输入如下指令展现当前的节点。

rosnode list

image-20220529221433-2.png        “/teleop_turtle”是键盘控制的节点,“/turtlesim”是小乌龟仿真节点。

       输入如下指令展现“/turtlesim”节点的信息。

rosnode info /turtlesim

image-20220529221433-3.png        “/turtlesim”节点有三个发布,一个订阅,中括号后面是信息类型。都是通过topic方式进行消息传输,同时还有多个服务。其中有很多“turtle1”字段,表示当前的这只小乌龟名字。

发布(Publication)介绍

      发布可以通过topic获取节点信息,下面来实例介绍。

      输入如下指令,查看“/turtle1/color_sensor”发布的消息,该消息为窗口的背景色。

rostopic echo /turtle1/color_sensor

     会不断的显示如下(按下“Ctrl+C”可以退出)

---
r: 69
g: 86
b: 255

     输入如下指令,查看“/turtle1/pose”发布的消息,该消息为小乌龟的位置和速度。

rostopic echo /turtle1/pose

    会不断的显示如下。

---
x: 5.544444561004639
y: 5.544444561004639
theta: 0.0
linear_velocity: 0.0
angular_velocity: 0.0

订阅(subscription)介绍

     订阅可以通过topic接收节点信息,下面来实例介绍。

     “/turtlesim”节点只有一个订阅“/turtle1/cmd_vel”,先输入如下指令看出该订阅的数据类型。

rosmsg show geometry_msgs/Twist

image-20220529221433-4.png

       该数据类型是两个三向量的数据,分别为线速度和角速度。三个向量分别表示x,y,z三个轴,不过由于小乌龟模拟器是一个二维平面,所以只有线速度的x,y轴和角速度的z轴有效。

       用指定的话题名称发布消息的命令为。

rostopic pub [话题名称] [消息类型] [参数]

      例如输入如下指令发布一次消息,让小乌龟以x轴(乌龟前行)2m/s线速度和z轴2rad/s角速度运动三秒。

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- [2,0,0] [0,0,2]

image-20220529221433-5.png  服务(service)介绍

     服务是节点间一对一的通信机制,“/turtlesim”节点有多个服务,这里介绍修改绝对位置和相对位置的服务。

     输入如下指令,查看服务的参数。

rosservice args /turtle1/teleport_absolute
rosservice args /turtle1/teleport_relative

image-20220529221433-6.png        用输入的参数请求服务的命令格式如下。

rosservice call [服务名称] [参数] 用输入的参数请求服务

     输入如下指令,修改小乌龟的绝对位置和相对位置。

rosservice call /turtle1/teleport_absolute 1 1 0
rosservice call /turtle1/teleport_relative 1 0

     前面获取到小乌龟的坐标位置约为[5.5 5.5],上述两条指令修改小乌龟绝对位置到[1 1],然后在向x轴方向移动1。

image-20220529221433-7.png

rqt_publisher模拟数据发送

     除了使用指令发送,ROS还提供rqt数据发送工具箱。

     输入如下指令,启动rqt_publisher工具。

rosrun rqt_publisher rqt_publisher

      Topic选择“/turtle1/cmd_vel”,Type选择“geometry_msgs/Twist”,修改参数,最后勾上复选框,就可以自动的控制小乌龟了。

image-20220529221433-8.png  问题

     使用指令来控制小乌龟的移动还是太麻烦,有不有更简单方便的方法控制小乌龟呢?

最新回复

期待多多详细得介绍一下ros入门呀。三过其门而不入。。。   详情 回复 发表于 2022-5-31 09:46
个人签名QQ:252669569

回复
举报

650

帖子

8

TA的资源

纯净的硅(初级)

键盘,手机,遥控器


回复

7504

帖子

2

TA的资源

五彩晶圆(高级)

期待多多详细得介绍一下ros入门呀。三过其门而不入。。。

个人签名

默认摸鱼,再摸鱼。2022、9、28


回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表