本篇文章转载自:https://zhuanlan.zhihu.com/p/909614697
一、什么是ROS
清晰的记得,在18年上大二时,自己想要diy一个机器人玩玩。于是开始自己攒硬件,写代码,但是折腾了两三个月,进度缓慢。直到某一天网上搜索资料时,看到了ROS(Robot Operating System)这个词汇,于是再次搜索了下ROS机器人关键字,便打开了新世界的大门…
ROS是一个开源的机器人开发框架,旨在为机器人系统提供标准化的消息传递、硬件抽象和软件包管理,它通过分布式节点架构支持模块化开发,允许开发者在多个进程间通信。
直到现在,ROS越来越火热,不像之前,搜索ROS时还能搜索出来软路由(RouterOS)。并且在谈起机器人时,已经难免绕不开ROS。关于ROS这里也就不占用过多的篇幅去介绍
二、ROS的缺陷
ROS在机器人各行各业的应用已经非常广泛,借助ROS以及它的一些开源生态,能够快速搭建起一个机器人
但是功能方便与丰富的同时也就带来了一些其他问题:
- 体积过大: 由于ROS想要做到通用性,难免使得自己的体积过于庞大,工具链的丰富就导致依赖过多,并且强依赖Ubuntu环境,想要进行迁移到其他系统比较麻烦
- 性能开销: 消息传递和服务调用的开销较大,可能会影响系统的整体性能,特别是在资源受限的嵌入式系统中
- 配置复杂: 在实际生产环境中,ROS复杂的配置增加了不稳定性,影响产品的稳定
- 系统强依赖: 不同版本的ROS可能存在兼容性问题,升级或维护系统时需要处理依赖和版本冲突
不可否认的是,ROS在机器人产品验证阶段会起到很大的作用,可以快速搭建起一个机器人系统。
但是介于上面说到的ROS的一些缺点,在一些成熟的机器人公司,因为想要降低产品的成本,增加产品稳定、易于部署性,一般均不会直接使用ROS去做产品,而是选择去自研更轻量级的通讯中间件。
在产品、算法验证阶段使用ROS,等到真正做量产时,再将已验证的功能迁移至自研中间件实现。
三、AimRT是什么
在刚毕业工作时,进入了一家AGV公司,结果发现,这里也是用的ROS1做中间件,依稀记得,由于ROS配置太繁琐,现场的车子经常遇到各种奇怪的问题,当时由于刚接手项目,也不熟悉,就单单环境变量的一些问题就让我查的抓耳挠腮。
当时就一直在想:“为什么市面上只有ROS一个机器人中间件”(其实在互联网领域有很多开源通讯中间件,只是不是专门针对机器人),由于当时工作经验不多,还单纯的认为:如果没有ROS,是不是就没法做一个机器人了。
后来公司产品升级迭代,团队自研了一套通讯中间件,也就没有了ROS的烦恼,现场出问题就很快能够定位出来,产品稳定性也提高了不少,这时我才知道:哦~~原来离了ROS也能做出一台机器人,只不过相对于ROS,需要先有团队,能自研出一个通讯中间件
稚晖君是我一直关注的一位B站大佬,他从2023年宣布从华为出来创业,前不久在发布会上宣布要将其团队自研的一套通信中间件 AimRT 进行开源,这立刻吸引了我很大的兴趣。
等了一个多月,AimRT终于开源了:
- 官网链接:https://aimrt.org/
- 文档链接:https://docs.aimrt.org/v0.10.0-rc1/
- Github 链接:https://github.com/AimRT/AimRT
根据其官方介绍特点如下:
简洁轻量无依赖:基于C++20标准开发,吸取大量现代设计思想,具备高可维护性,高效稳定,为开发者提供一个轻量化的ROS2替代中间件;
强大的兼容性:支持ROS2、Grpc、Http、Mqtt等通信协议,统一接口,原生AI亲和,整合了机器人端侧、边缘端、云端等多种部署场合的研发,支持渐进式升级存量系统;
高扩展性:AimRT提供了全面的插件开发接口,支持二次开发以满足各种特殊场景的需求
经过了我一段时间的研究,发现AimRT非常强大,因此想做一个专栏来介绍这个中间件
本系列专栏将记录我学习AimRT过程中的一些笔记,并尽量将官方文档的一些内容做精简,方便大家一起快速上手 AimRT
本系列专栏源码下载地址:
下一篇开始搭建 AimRT 基础开发环境