RobotFlow工程track半年度总结(2020.7~2021.1)
RobotFlow项目从7月份正式启动到现在也有半年了,中间经历了招工程师,CVPR投稿等拖延进度的事情,还是完成了一些事情。 在大方向不变的情况下,现在的robotflow项目已经和最开始的想法有了不少结构性的调整。现对该方向做一个总结,并对未来做一个简单的规划。
多级结构
rflib -> rflearner -> perception -> rfplanner -> task env controller
以上用rf开头的库,之后都会考虑往独立的库发展。特别是rflib。
- rflib:
- 放各种需编译的代码,其代码编译好后通过pybind被python调用。
- 放逻辑上偏底层的代码
- rflearner:所有learning相关的代码,算法逻辑层
- perception:
- detector:含目标检测和实例分割
- pose estimator:6DoF估计算法
- human analyzer:人体/手检测,重建算法;intent modeling相关算法
- action preprocessor:视觉驱动的robot learning算法的前端(这一部分的网络末尾通常是没有loss的,是通过RL的部分来优化的),这部分视具体任务会拆分,不会用这个名字总包所有的模型。
- rfplanner
- TAMP规划器Rogic
- MP规划器RFMove
- task
- 分层结构,从单primitive到复合任务,都统归到task里
- 单primitive时,地位和perception相同
- 复合任务时,单primitive和perception算法可能都是其子任务
- env
- 提供真实场景的可视化,模拟规划
- 提供仿真场景的可视化,模拟规划,交互
- controller:
- 提供各种硬件控制器的上层封装:位置控制,速度控制,力控
举个例子:
- 视觉的人视角:pytorch提供基本的conv2d实现;rflib提供注入roialign这样的ops的实现;rflearner提供resnet的实现;detector描述(config)怎么搭一个yolov3的pipeline
- Robot的人视角:rflib提供各种硬件接口,c++功能代码;env,controller,rfplanner等提供对应功能的上层封装;task描述一个完整的机器人任务(可以无视觉)
- Robot Learning的人视角:pytorch功能同上;rflib功能同上;rflearner提供ppo等算法逻辑;perception部分描述(config)robot learning的视觉前端,task部分描述(config)各机器人技能(primitive),并描述(config)视觉前端和各机器人技能该如何串联。模型保存的方式有两种,视觉前端和机器人操作后端分别保存/统一保持。
去ROS化进程
去ROS化是一直以来的大方针,ROS生态中有很多重要的软件都是基于ROS的通信机制来写的,而且往往是独占。那么在去ROS化的过程中,很重要的一步就是要对这些功能进行替换,这中间会涉及到大量的代码重写和重构。
去ROS化的定义是:RobotFlow的主要功能不需要ROS即可运行(简单来说就是installation requirement里没有install ROS这一项)。但有一些前置准备可能还是需要ROS的,比如用moveit生成plan group(所以其实电脑上还是得安装ROS)。若想达到电脑里不需要装ROS就能完全使用RobotFlow,我觉得这不是这两年的任务。
目前有三个很重要的库需要剥离ROS存在。
- Gazebo -> rFUniverse
- 替换方案:直接替换
- 原因:实际上现在Gazebo本身就可以独立使用,不过Unity生态更好,可扩展性更强。Unity官方也在大力支持Robot AI的发展,我们可以和官方共同进步。
- 隐患:unity不是开源;自带的physx不是最新(锅在Nvidia);ubuntu下的某些插件有兼容性问题
- RViz -> RFViz
- 替换方案:去掉ROS外壳,核心功能里的ROS部分需用同等功能的code替换
- 原因:接通真实世界的接口
- 隐患:工程量比较大,实现是肯定能实现的
- 需要修改tf库(这个库只需要去掉ROS外壳,重新封装接口)
- MoveIt -> RFMove
- 替换方案:去掉ROS外壳,封装接口。
- 原因:需接通rFUniverse和RFViz,这样虚拟和真实场景均可实现可视化规划。
- 隐患:暂无,前人已有过嫁接到其他框架的经验
- 其他软件/sdk
- realsense
- calibration
- 各硬件sdk
2021年规划
- rflib独立化
- rflearner, perception, controller进入常态维护
- rogic(inside rfplanner), task完成初始化
- env尽快完成rFUniverse和RFViz的开发
- 全框架在2021年内完成去ROS化进程