ROS基础知识

1.ROS基本概念

ROS全称Robot Operating System(机器人操作系统)
ROS是适用于机器人的开源元操作系统
ROS集成了大量的工具,库,协议,提供类似OS所提供的功能,简化对机器人的控制
还提供了用于在多台计算机上获取,构建,编写和运行代码的工具和库,ROS在某些方面类似于“机器人框架”
ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体
在这里插入图片描述

2.ROS计算图级

在这里插入图片描述
WorkSpace — 自定义的工作空间

|--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

|--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

|--- src: 源码

    |-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

        |-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件

        |-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)

        |-- scripts 存储python文件

        |-- src 存储C++源文件

        |-- include 头文件

        |-- msg 消息通信格式文件

        |-- srv 服务通信格式文件

        |-- action 动作格式文件

        |-- launch 可一次性运行多个节点 

        |-- config 配置信息

    |-- CMakeLists.txt: 编译的基本配置

3.ROS工作空间

1.创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

#编译工作空间
cd ..
catkin_make

#设置环境变量
source devel/setup.bash
gedit ~/.bashrc
source ~/catkin_ws/devel/setup.bash
source ~/.bashrc
echo $ROS_PACKAGE_PATH #检查

2.创建功能包
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
catkin_make   #编译功能包

4.ROS话题

话题通信实现模型是比较复杂的,该模型如下图所示,该模型中涉及到三个角色:
ROS Master (管理者)
Talker (发布者)
Listener (订阅者)
ROS Master 负责保管 Talker 和 Listener 注册的信息,并匹配话题相同的 Talker 与 Listener,帮助 Talker 与 Listener 建立连接,连接建立后,Talker 可以发布消息,且发布的消息会被 Listener 订阅
假设节点1为发布节点,节点2为订阅节点,话题通信过程如下:
1)节点1向master注册,包括发布话题名称,节点所在地址等
2)节点2向master注册,包括订阅话题名称、节点所在地址等
3)master将信息匹配,完成后将节点1的地址给节点2
4)节点2根据master发来的地址向节点1发送连接请求,包括订阅话题名,通信协议等
5)节点1收到请求后反馈确认,包括自身TCP地址
6)节点2收到TCP地址后与节点1建立TCP网络连接
7)节点1将数据发送给节点2
在这里插入图片描述

5.ROS服务

服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色:
ROS master(管理者)
Server(服务端)
Client(客户端)
ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client ,帮助 Server 与 Client 建立连接,连接建立后,Client 发送请求信息,Server 返回响应信息。
服务通信过程如下:
1)节点1向master注册,包括发布话题名称、节点所在地址等;
2)节点2向master注册,包括订阅话题名称、节点所在地址等;
3)master将注册列表中的信息进行匹配,匹配完成后将节点1的地址发送给节点2;
4)请求节点与服务节点建立TCP连接并发送请求数据;
5)服务节点处理请求数据并反馈应答数据
在这里插入图片描述

6.ROS动作

为什么要用action?
导航是一个过程,是耗时操作,如果使用服务通信,那么只有在导航结束时,才会产生响应结果,而在导航过程中,节点A是不会获取到任何反馈的,从而可能出现程序"假死"的现象,过程的不可控意味着不良的用户体验,以及逻辑处理的缺陷(比如:导航中止的需求无法实现)。更合理的方案应该是:导航过程中,可以连续反馈当前机器人状态信息,当导航终止时,再返回最终的执行结果。在ROS中,该实现策略称之为:action 通信。
概念和算法
ROS中有actionlib功能包集,实现action通信,在请求和响应的过程中,服务端还可以连续的反馈当前任务进度,客户端可以接收连续反馈并且还可以取消任务。如图。
在这里插入图片描述
在这里插入图片描述

一般用于耗时的请求响应场景,以获取连续的状态反馈。

<think>我们被要求回答关于"ROS基础知识的了解和认知"的问题。根据之前的上下文,这是在课程目标1中,占10%的分值。我们需要简要介绍ROS的核心概念,并确保在最后提出3-5个相关问题。注意:回答必须包含代码块(虽然这里可能不需要代码,但我们可以给出一个简单的ROS节点示例),然后以“§§相关问题§§”开头的问题列表。由于问题要求使用中文,我们先用中文概述ROS基础知识,然后给出一个简单的ROS节点代码示例(例如,一个发布者或订阅者),最后提出相关问题。回答结构:1.文字解释ROS基础知识。2.代码示例(可选,但为了符合格式,我们提供一个简单的发布者和订阅者示例)。3.以“§§相关问题§§”开头的3-5个相关问题。注意:根据规则,问题必须基于用户的问题和我们的回答。</think>### ROS基础知识核心概念解析 ROS机器人操作系统)的核心基础知识包含以下关键概念: 1. **节点(Nodes)** ROS的基本计算单元,每个节点负责执行特定任务(如传感器数据采集、运动控制等)。节点间通过**发布/订阅**机制通信。 2. **通信机制** - **话题(Topics)**:异步通信通道(如`sensor_msgs/Image`传输图像) - **服务(Services)**:同步请求-响应模式(如调用`/set_velocity`服务) - **动作(Actions)**:带反馈的长时任务(如`/move_base`导航) 3. **消息(Messages)** 数据结构化载体,定义通信内容格式: ```python # 标准Twist消息定义(geometry_msgs/Twist.msg) Vector3 linear float64 x float64 y float64 z Vector3 angular float64 x float64 y float64 z ``` 4. **核心工具集** - `roscore`:主节点(提供名称注册服务) - `rosrun`:启动单个节点 - `roslaunch`:批量启动节点组 - `rqt_graph`:可视化节点通信拓扑 - `rviz`:3D可视化工具 5. **包(Packages)管理** ROS代码组织单元,包含: - `CMakeLists.txt`:编译配置 - `package.xml`:元数据依赖 - `/src`:源代码目录 - `/msg`:自定义消息 - `/srv`:自定义服务 **基础操作示例**: ```bash # 创建新工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make # 创建新包 cd src catkin_create_pkg my_robot rospy std_msgs # 运行节点 source devel/setup.bash rosrun turtlesim turtlesim_node ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值