Ros 系统架构
2021-06-23 本文已影响0人
一钱科技
系统架构
- os层:操作系统。ros是元操作系统,需要依托真正意义的操作系统。目前兼容较好的是Linux的Ubuntu,Mac
- 中间层:ros封装的关于机器人开发的中间件
2.1 基于tcp/udp封装的tcpros/udpros通信系统
2.2 用于进程间通讯Nodelet,为数据的实时行传输提供支持
2.3 机器人开发实现库,如数据类型,坐标变化,运动控制... - 应用层:功能包,以及功能包内的节点
文件架构
image.pngWorkSpace --- 自定义的工作空间
|--- 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: 编译的基本配置
相关命令:
- 增:
catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包
sudo apt install xxx === 安装 ROS功能包 - 删:
sudo apt purge xxx ==== 删除某个功能包 - 查:
rospack list === 列出所有功能包
rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径
roscd 包名 === 进入某个功能包
rosls 包名 === 列出某个包下的文件
apt search xxx === 搜索某个功能包 - 改:
rosed 包名 文件名 === 修改功能包文件
需要安装 vim
比如:rosed turtlesim Color.msg
5: 执行:
5.1 roscore === 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信。
用法: roscore 或 roscore -p xxxx (指定端口号)
5.2 rosrun 包名 可执行文件名 === 运行指定的ROS节点
5.3 roslaunch 包名 launch文件名 === 执行某个包下的 launch 文件
通讯机制
ROS是进程(也成为Nodes)的分布式框架。为了解耦合,在ROS中每个功能点都是一个单独的进程,每个进程都是独立运行的。
Ros的通讯机制有话题通讯(发布订阅模式)、服务通信(请求相应模式)、参数服务器(参数共享模式)。
机器人仿真系统
URDF:对机器人建模
Gazebo:创建仿真环境
Rviz:感知环境
导航
// 安装 gmapping 包(用于构建地图)
sudo apt install ros-melodic-gmapping
// 安装地图服务包(用于保存与读取地图)
sudo apt install ros-melodic-map-server
// 安装 navigation 包(用于定位以及路径规划)
sudo apt install ros-melodic-navigation