Ros 系统架构

2021-06-23  本文已影响0人  一钱科技

系统架构

  1. os层:操作系统。ros是元操作系统,需要依托真正意义的操作系统。目前兼容较好的是Linux的Ubuntu,Mac
  2. 中间层:ros封装的关于机器人开发的中间件
    2.1 基于tcp/udp封装的tcpros/udpros通信系统
    2.2 用于进程间通讯Nodelet,为数据的实时行传输提供支持
    2.3 机器人开发实现库,如数据类型,坐标变化,运动控制...
  3. 应用层:功能包,以及功能包内的节点

文件架构

image.png
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: 编译的基本配置
相关命令:
  1. 增:
    catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包
    sudo apt install xxx === 安装 ROS功能包
  2. 删:
    sudo apt purge xxx ==== 删除某个功能包
  3. 查:
    rospack list === 列出所有功能包
    rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径
    roscd 包名 === 进入某个功能包
    rosls 包名 === 列出某个包下的文件
    apt search xxx === 搜索某个功能包
  4. 改:
    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
上一篇下一篇

猜你喜欢

热点阅读