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号来姨妈了然后一蹶不振。

浙公网安备 33010602011771号