ros初识笔记<2>

开坑time 2023-07-28 09:08:22

包含三讲,到ros常用与节点话题密切相关的命令行使用为止。

1.ROS 是什么

发展史

2007年诞生于斯坦福STAIR项目  发起人Morgan Quigley

08年willow garage

10年ROS 1.0发布 11年发布TurtleBot(扫地机器人,成本低)

12年 ROScon(ROS开发者大会)

13年OSRF(开源机器人基金会)

14年Indigo   16 Kinetic 17    ROS 2.0 Ardent      18 Melodic 

ros1可能已经停止维护了,未来可能会逐渐流行ros2,Windows上也可以支持。

 

ROS

通信机制

松耦合分布式通信

 

开发工具

命令行&编译器

TF坐标变换

Rviz

Gazebo

QT工具箱

 

应用功能

Navigation   导航

SLAM             建图

moveIt!        机械臂运动

 

生态系统

1.发行版

2.软件源

3.ROS wiki(论坛)

4.邮件列表

5.ROS Answers

6.博客(Blog)

功能包—元功能包—软件仓库—ROS社区

目的:提高机器人研发中的软件复用率(善于利用别人已经开发过的代码,避免重复造轮子)

 

2. ROS 中的核心概念

通信机制

节点 Node ——执行单元

1. 执行具体任务的进程,独立运行的可执行文件

2. 不同节点可使用不同的编程语言,可分布式运行在不同的主机

3. 节点在系统中的名称必须是唯一的

 

节点管理器(ROS Master)——控制中心

1. 为节点提供命名和注册服务

2. 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接

3. 提供参数服务器,节点使用此服务器存储和检索运行时的参数

 

话题 Topic ——异步通信机制

话题模型:发布/订阅

节点间用来传输数据的重要总线

单向传输

使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一

 

消息 Message ——话题数据

具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型

使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件

 

服务 service 同步通信机制

有反馈

使用客户端/服务器(C/S)模型,客户端发送请求(request)数据,服务器完成处理后返回应答(response)数据。

使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件。

 

话题与服务区别

底层协议?

缓冲区?

 

参数 parameter ——全局共享字典

可以通过网络访问的共享、多变量字典

节点使用此服务器来存储和检索运行时的参数

适合存储静态,非二进制的配置参数,不适合存储动态配置的数据

 

功能包 package

ros软件中的基本单元,包含节点源码、配置文件、数据定义等

功能包清单 package manifest

记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等

 

3.ROS命令行工具的使用

常用命令

rostopic

可以通过终端命令行向turtle1/cmd_vel下达指令来控制乌龟运动

利用rostopic pub 

后面跟话题名+消息类型+数据内容(可用tab键补全)

Twist是数据结构,包括linear angular(线速度m/s,角速度弧度/s)

pub只会发布一次,海龟只会跑一小段,为了一直跑需要加循环,在pub后加-r 10(表示频率)(表示1秒钟发布十次)

为了让海龟停下来可在终端里ctrl+c

不然会一直是这种警告:oh no i hit the wall 撞墙

 

 

rosservice

上面有个服务叫spawn,顾名思义可以让乌龟产卵,可以再产生其他乌龟

 

需要使用call

x,y为新增海龟初始位置

名称自取

第二行name为新增成功的反馈

第二只乌龟出生了

list里面出现了turtle2

现在复习上面的,控制海龟2

这样第二只也能跑

 

rosnode(显示节点相关信息)

rosnode is a command-line tool for printing information about ROS Nodes.

翻译:rosnode是一个用于显示ROS节点信息的一种命令行工具。

多了个rosout节点:一个ros默认的节点

查看节点turtlesim具体信息

发布的信息,订阅的话题,提供的服务,pid,主机号都有显示。

rosparam

rosmsg

rosmsg show 具体展示数据结构(tab补全)

rossrv

 

example 小海龟

roscore                                                  //启动ros master

rosrun turtlesim turtlesim_node           //启动小海龟仿真器

rosrun turtlesim turtle_teleop_key       //启动海龟控制节点   (光标在这个终端里才能动)

(输入后按tab看包含哪些功能)

 

rqt_graph(看到系统全貌)

用于显示系统的计算图

通信机制的核心就是一张计算图

左边是键盘控制节点,右边是仿真器节点

中间的是一个话题,名字叫/turtle1/cmd_vel

构成了一个系统

 

rosbag

话题记录+话题复现

比如无人机试飞啥的,可以记录每次的飞行数据,方便调用

操作方式(以海龟为例):

roscore

终端+ 启动海龟仿真运动节点 rosrun turtlesim turtlesim_node

终端+ 启动海龟键盘控制节点  rosrun turtlesim turtle_teleop_key

终端+ 开始记录 rosbag record -a -O cmd_recordd (-O后面接的是生成的记录压缩包的名字,可在主目录中找到)

从回车的那一刻开始记录,键盘控制运动,然后Ctrl+c退出,记录结束

关闭roscore,键盘控制终端,重启roscore,然后rosbag play cmd_record.bag 可以看见海龟将复现刚刚记录的运动过程。

 

闭坑时间:

2023-08-03  16:00:55

28号来姨妈了然后一蹶不振。

 

posted @ 2023-08-03 16:02  setiko  阅读(121)  评论(0)    收藏  举报