1.写在前面
本人18年参赛者,视觉组一员,那时候RM圈还不是很成熟,因此也走了很多弯路,说起一年来到底学到多少技术,很惭愧的说很少,当然RM比赛不只是技术,技术之外更教会自己如何去考虑团队,以及备赛过程中的苦中作乐,都是不可多得的体验。
废话不多说,由于本人目前在搞机械臂视觉控制相关工作,用到了ROS和Gazebo仿真,对于ROS,搞机器人软件开发的应该都不陌生,机器人软件开发中的大哥。想着用ROS开发RoboMaster视觉算法是不是可以提高开发效率,同时也降低入门门槛,于是打算搞一个基于ROS2的RoboMaster开源软件栈:
- 为RM开发提供技术积累,避免重复造轮子,提高开发效率
- 同时也为RM新入门的小伙伴提供入门教程,让RM的小伙伴可以学到更多的技术。
- 当然另一个希望就是通过Ignition Gazebo仿真项目,让没有机会参与RoboMaster比赛项目的同学,也有机会通过RoboMaster开源栈学习技术。
2.RoboMaster开源软件栈项目简介
RoboMaster OSS(RoboMaster Open Software Stack,RMOSS)是为RoboMaster高性能计算平台软件开发提供快速开发工具的一个通用统一的开源软件栈。
RoboMaster OSS目前包含三个核心项目:rmoss_core, rmoss_contrib, rmoss_ign。
-
rmoss_core
:为RoboMaster提供通用基础功能模块包,如相机模块,弹道运动模块等。 -
rmoss_contrib
: 为RoboMaster提供任务级功能模块包,如自动瞄准模块,能量机关模块等。 -
rmoss_ign
: 为RoboMaster提供Ignition Gazebo仿真支持,如相关机器人模型,Ignition插件等。
其中的各个模块均基于ROS2开发,入手难度低,且可以与ROS2社区中其他项目结合,开发出更好玩的应用。
rmoss_core
模块 | 功能说明 |
---|---|
rm_common |
公共工具包,包括调试,图像处理等公共基础工具。 |
rm_interfaces |
RM相关的ROS interface包,包含相关msg,srv,action定义文件。 |
rm_base |
基本通信工具包,包含PC与嵌入式系统(stm32)通信相关工具。 |
rm_cam |
相机工具包,实现usb相机驱动,以及图片视频虚拟相机。 |
rm_task |
任务相关工具,提供了一个图像相关任务基类。 |
rm_projectile_motion |
通用弹道模型工具包,可以修正子弹飞行过程中重力因素的影响。 |
rmoss_contrib
模块 | 功能说明 |
---|---|
rm_auto_aim |
RoboMaster基础自瞄任务的简单算法实现 |
rm_power_rune2019 |
RoboMaster2019能量机关任务的简单算法实现 |
rmoss_ign
模块 | 功能说明 |
---|---|
rmoss_ign_resources |
提供Ignition models worlds等资源,如RoboMaster机器人常用的传感器模型,机器人组件模型,场地模型等。 |
rmoss_ign_plugins |
为RoboMaster Ignition仿真提供插件支持。 |
除此之外,还有一些应用项目,如RoboMaster University AI Challenge 2019仿真环境项目
rmua19_ignition_simulator
等。
3.RoboMaster开源栈项目展示
3.1 自动瞄准功能包
- GitHub链接: rm_auto_aim
RoboMaster自瞄功能的一个简单实现,根据颜色识别灯条,然后灯条两两匹配,得到识别结果。
演示效果如下:
3.2 能量机关功能包
- GitHub链接:rm_power_rune2019
RoboMaster2019赛季的能量机关任务实现了一个简单的算法实现(仅支持大能量机关) 其中相机固定在底盘上, 只识别装甲板,依据时间状态机选择打击目标。
演示效果如下:
3.3 RoboMaster University AI Challenge 2019仿真
- GitHub链接: rmua19_ignition_simulator
rmua19_ignition_simulator是基于Ignition Gazebo的仿真环境,为RoboMaster University AI Challenge 2019中的机器人算法开发提供仿真环境,加快开发效率。目前rmua19_ignition_simulator还不完善,仅提供以下功能:
- RoboMaster University AI Challenge 2019简易场地:只有围墙
- RoboMaster University AI Challenge 2019 标准机器人模型:
- 使用xacro4sdf进行SDF建模,模型图纸来自RoboRTS 中的 RoboMaster AI机器人机械图纸
- 支持麦克拉姆轮地盘,使用rmoss_ign中的麦克拉姆轮插件,支持里程计(模拟里程计,无nosie)
- 支持云台(pitch,yaw)角度控制,使用Ignition官方插件JointPositionController
- 搭载云台相机,激光雷达等传感器,可进行开发slam等应用开发。
- 具有装甲板灯条发光效果,可测试自瞄等识别算法。
- ros2接口:robot_base模块
- 可使用通用的ros2 msg控制机器人移动
注:不支持发射子弹。
效果图如下:
4. 写在最后
RoboMaster OSS项目在算法实现层面,并没有做到最好,甚至只是最简单的实现,比如自动瞄准算法的实现和能量机关算法实现,相比目前网上各个高校的开源项目,可谓是小巫见大巫。但是RoboMaster OSS依然有其令人振奋的地方:
- 基于ROS2开发,使用ROS规范,可以让RoboMaster软件开发可以更加规范。同时拥抱ROS社区,可以直接使用许多ROS社区中的高级功能包,避免重复造轮子,提高开发效率。
- RoboMaster Ignition仿真项目
rmoss_ign
是令人兴奋的另一个点,基于仿真环境,可以快速的测试一些算法应用,同时也为没有RM机器人,但对RM感兴趣的同学也能使用仿真环境开发RoboMaster软件应用。
RoboMaster OSS是一个开源项目,也是一个开源社区,如果有志同道合的同学也想要参与RoboMaster OSS的开发,欢迎联系一起交流讨论。
(本文遵循开源协议:CC-BY-SA 4.0。首发于RoboMaster论坛 )