栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

【机器人载体系统设计】数据接口及通讯代理系统架构介绍

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【机器人载体系统设计】数据接口及通讯代理系统架构介绍

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理

文章目录
  • 系列文章目录
  • 前言
  • 为什么需要数据接口及通讯代理系统架构
  • 解决这种数据接口问题和一对一通讯,一对多通讯问题的方法我总结了几个:
  • 一、机器人各个模块获取数据的方法
    • 1.数据直通的方法
    • 2.数据代理的方法
  • 二、系统数据类型接口管理的方法
    • 1.用protobuf的方式定义数据接口
      • protobuf的使用方法与步骤
    • 2.用.h定义接口
    • 3.Ros用.msg、.srv、.action的方式定义接口
  • 消息类型使用的方法


前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

本文先对数据接口及通讯代理系统架构介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

为什么需要数据接口及通讯代理系统架构

系统中的各个模块都有各自的输入输出数据,多模块配合的时候就需要通讯了

如:在一个ROS系统中感知系统读取传感器数据、规划系统读取地图系统的地图数据、控制系统读取规划系统的路径数据,地图系统读取控制系统的里程计数据等等,这些数据错综复杂有时候还服用耦合,发布被重复订阅回调消耗算力,更要命的是每个模块使用相同意义数据的的数据类型、格式单位不统一,造成数据很乱
.
.

解决这种数据接口问题和一对一通讯,一对多通讯问题的方法我总结了几个:

1、使用代理的方式,统一通过各自模块的代理按照一定频率订阅发布自身模块的数据,进而把模块看成一个小黑盒子
2、通用的数据接口,如每个模块都要用到的数据要按照一定规范写,统一数据类型、单位和接口内容,并用protobuf的形式定义接口
3、私有的数据接口,仅仅是该模块内部使用的数据(因为模块内部和会划分层),可以用.h的结构体stuct定义数据接口

经过简单的上面规范,我们在debug的时候,可以通过可视化每个模块输入输出的数据,在数据层面更加容易定位到问题,有时候仅仅通过逻辑是很难debug出问题的
.
.

一、机器人各个模块获取数据的方法 1.数据直通的方法

通过自己写驱动用厂家的api读取出来!
.
.

2.数据代理的方法

读传感器数据可以通过系统代理(二级)

系统中的各个模块的数据通讯可以通过代理的方式,这样接口更加明确!系统内的模块用共享内存进行通讯,系统外的模块和传感器通讯(串口等等)用代理进行通讯
.
.

二、系统数据类型接口管理的方法

数据接口,模块对外用protobuf ,模块对内用.h的stuct

1.用protobuf的方式定义数据接口 protobuf的使用方法与步骤
(1)源码编译二进制安装protobuf功能包
(2)定义.proto数据接口文件
(3)在cmakelists中加入.proto数据接口文件路径并编译成对应的.h文件
(4)在源码编程的时候include进来.h文件,并根据.h文件语法使用数据类型接口!

protobuf接口类型API:

1)创建一个对象
2)复制一个对象
3)合并一个对象
4)获取对象的size
5)获取一个对象
6)赋值一个对象
7)清除一个对象内存
2.用.h定义接口 3.Ros用.msg、.srv、.action的方式定义接口

这个仅仅限于用ROS系统

消息类型使用的方法

(1)数据类型结构看左边
(2)对象名称看右边

用对象和对象的成员理解就行了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号