Apollo ROS原理(一)

2023-05-16

一、背景介绍

为什么选择ROS

高效的开发支持

1、具有完整的包管理和工程结构
2、庞大的基础库
3、多语言接口支持

模块灵活配置

1、消息驱动的异步运行模型
2、抽象的P2P通信接口
3、自定义的消息格式

丰富的调试工具

1、具有可视化的调试工具
2、消息查看、存储、回放功能

二、 ROS概述

ROS历史

ROS是2007年在斯坦福大学的一个实验室,由学生开发出来的一套通用的机器人通用框架,2013年被纳入OSRF(Open Source Robotics Fundation)机构统一管理,如今也被一些大学和研究所广泛的使用到项目研究中。
在这里插入图片描述

ROS基本特征

1、点对点

两个node进行消息通讯的时候是一个点对点的行为。

2、分布式

在部署多级通讯时,ROS提供了一个天然支持‘

3、跨语言

ROS不关注各个节点是用什么语言来写的,只需要按照ROS提供的一些接口完成消息的订阅和分发,就可以完成一个消息的通信

4、轻量级ROS程序

用户只需关注自己核心模块的算法逻辑,不需要关注底层的一些操作,如如何通信以及断开通信。

5、开源框架

大家可以往里面提供自己的想法。

ROS工作环境

ROS master(节点管理器)用于管理节点之间的通讯,
打开节点管理器(在所有节点运行之前运行)roscore
node (节点):可以理解为一个算法模块,比如自动驾驶里的感知模块、或定位模块。节点相互之间是独立的,同时节点之间又要相互通信,节点之间如何发现对方,如何在发现对方后建立连接以及通信,都是通过节点管理器所起到的作用。
运行一个节点:rosrun packages_name node_name
列出正在运行的节点:rosnode list
查看某一个节点的具体信息(topic 名字,流向谁,类型):rosnode info node_name

topic(话题)两个节点通信的一个主题。内部所使用的消息格式为msg
列出所使用的topicrostopic list
查看topic内容rostopic info /topic
订阅并打印topic内容rostopic echo /topic(/表示该topic的作用域是全局作用域)
查看topic类型rostopic type /topic
发布一个topic的消息rostopic pub /topic type args

roslaunch 把所有启动节点放到一个描述文件里,启动这个描述文件时,这个描述文件会做两件事,一是找到你在这个描述文件里所定义的各个节点的位置,二是去启动这些节点。运行roslaunch时,会先检测系统里有没有ROScore,如果ROScore已经启动,就直接启动节点;否则先启动ROScore,再启动节点。

工作流程如下图: 两个节点perception和planning,话题obstacle
(1)perception节点要启动时,要向ROScore发送一个注册信息,告诉ROScore我现在启动一个节点并告诉ROScore我要发送的话题为obstacle;
(2)同时,planning节点在启动时,也会向ROScore发送一个注册信息,并说明自己要订阅一个名为obstacle的话题;
(3)当ROScore发现两者匹配的时候,会向planning 节点发送一个消息,告诉他你所订阅的话题是由已经存在的perception发布的;
(4)planning 节点接收到ROScore的信息后,就会向perception请求一个通信连接,perception在收到planning请求后会建立一个通信链路;
(5)当通信链路建立起来后ROScore的任务暂时完成。
在这里插入图片描述

松耦合概念体现

1、两个节点启动没有先后关系
2、通信链路建立起来后 ,ROScore所起作用微乎其微

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apollo ROS原理(一) 的相关文章

随机推荐

  • gazebo教程---使用gazebo插件

    一 添加传感器插件 xff08 1 xff09 在rrbot xacro中添加 lt link gt 和 lt joint gt xff0c 内容如下 xff1a lt joint name 61 span class token stri
  • 基于加速度计与磁力计的姿态解算方法(加计补偿偏航)

    附上转载文章链接 加速度计实时输出机体坐标系下的三轴线加速度 xff0c 磁力计实时输出机体坐标系下的三轴地磁强度 xff0c 加速度计能解算出俯仰角与横滚角 xff0c 由磁力计计算出航向角 xff0c 两者相互配合可以解算三个姿态角信息
  • Xavier踩坑之-GPIO做外触发

    Xavier入门踩坑 PWM问题解决方法 GPIO问题解决方法 PWM问题 由于需要做外部传感器的触发同步 xff0c 所以需要一个方波 xff0c 考虑用Xavier的PWM xff0c 结果折腾了好久发现需要配置内部硬件 xff0c 折
  • Kalibr进行相机-IMU联合标定踩坑记录RuntimeError: Optimization failed!

    1 具体标定步骤 xff0c 跟网上别的一模一样 xff0c 此处就不列举 2 记录踩坑过程 xff1a RuntimeError Optimization failed 当执行到开始联合标定时 xff0c 也就是如下指令 xff1a ka
  • “GPG 错误导致没有公钥,无法验证签名”的问题解决

    W GPG 错误 xff1a http packages ros org ros ubuntu xenial InRelease 由于没有公钥 xff0c 无法验证下列签名 xff1a NO PUBKEY F42ED6FBAB17C654
  • 加快从github的git clone速度

    对于国内用户来说遇到clone Github速度十分缓慢的问题实在是一个令人头疼崩溃的问题 下面介绍一个简单的方法解决这个问题 xff0c 也就是先从github拉取到自己的码云帐号 xff0c 然后再从自己的帐号git clone 方法
  • 快速了解机器人操作系统ROS

    ROS xff08 Robot Operating System xff09 机器人操作系统 xff0c 由斯坦福大学人工智能实验室开发的一套提供类似操作系统服务的机器人专用开源系统 ROS包括一个类似于硬件系统的硬件抽象 xff0c 但它
  • 《大话数据结构》C++实现哈希表的创建、查找和插入

    include lt iostream gt using namespace std typedef int status constexpr auto SUCCESS 61 1 constexpr auto UNSUCCESS 61 0
  • 一文理解UART通信

    还记得当年的打印机 xff0c 鼠标和调制解调器吗 他们都有巨大笨重的连接器和粗电缆 xff0c 并且必须拧到你的电脑上 这些设备正是使用UART协议与计算机进行通信 虽然USB几乎完全取代了旧的电缆和连接器 xff0c 但UART绝对没有
  • UART串口通信协议概述

    1 UART协议介绍 UART是一种通用串行数据总线 xff0c 用于异步通信 UART能实现双向通信 xff0c 在嵌入式设计中 xff0c 常用于主机与辅助设备通信 UART包括RS232 RS449 RS423等接口标准规范和总线标准
  • 深入浅出C语言:(十)C预处理

    目录 一 C 语言 include 的用法 xff08 文件包含命令 xff09 二 C 语言宏定义 xff08 define 的用法 xff09 1 define 的基础用法 2 C 语言带参数的宏定义 3 对带参宏定义的说明 4 用宏参
  • STM32串口——5个串口的使用方法

    串口是我们常用的一个数据传输接口 xff0c STM32F103系列单片机共有5个串口 xff0c 其中1 3是 通用同步 异步串行接口 USART Universal Synchronous Asynchronous Receiver T
  • Ubuntu18.04 —— 安装环境及运行Vins_mono(2022年)

    Ubuntu18 04 安装环境及运行Vins mono 一 环境安装1 检查安装版本openCVEigenPangolin 二 ubunt18 04使用国内源安装ros及问题解决1 添加国内中科大源2 软件库更新3 安装全功能版本的ROS
  • Ubuntu 18.04 ———(Intel RealSense D435i)运行VINS-Mono

    Intel RealSense D435i 一 准备工作二 修改参数rs camera launchrealsense color config yaml 参考文献 一 准备工作 1 Intel Realsense D435i Ubuntu
  • RPLIDAR全面兼容ROS系统,赋能Mini款无人驾驶汽车

    从技术角度来说 xff0c 无人驾驶系统可分为环境感知 智能规划和决策 自适应控制和车辆底层线控四部分 感知系统主要是通过激光雷达 视觉 惯导等传感器获取 xff0c 并通过数据处理 xff0c 形成决策 目前 xff0c 单线激光雷达用在
  • 激光雷达在机器人中的避障方案

    如今 xff0c 在各种商用场景中服务机器人已屡见不鲜 xff0c 对于一些在餐厅 酒店等地的服务机器人来说 xff0c 往往会面临应用环境复杂多变的情况 xff0c 这就对机器人的避障能力提出了很大的挑战 xff0c 避障是指移动机器人根
  • 单片机的查询和中断两种方式怎么从程序里面看出来

    查询方式就是对某一标志位的不停检测 xff0c 直到发生变化 xff0c 例如 xff0c 汇编 xff1a LOOP JBC TF1 L 查询计数器是否溢出 xff0c 若溢出转L SJMP LOOP xff1b 无溢出转LOOP xff
  • 【STM32】SPI的基本原理、库函数(SPI一般步骤)

    STM32F1xx官方资料 xff1a STM32中文参考手册V10 第23章 串行外设接口SPI SPI的基本介绍 SPI的简介 SPI xff0c 是英语Serial Peripheral interface的缩写 xff0c 顾名思义
  • win10下安装emqx

    下载 进入官网EMQ 点击下载 xff08 这是我所选择的一个版本 xff09 装解压EMQ 1 把下载的EMQ解压到D盘 xff0c 得到一个emqx文件夹 2 启动EMQ step1 Win10 系统的 开始 右键 进入win10 系统
  • Apollo ROS原理(一)

    一 背景介绍 为什么选择ROS 高效的开发支持 1 具有完整的包管理和工程结构 2 庞大的基础库 3 多语言接口支持 模块灵活配置 1 消息驱动的异步运行模型 2 抽象的P2P通信接口 3 自定义的消息格式 丰富的调试工具 1 具有可视化的