Bubble模块 ========================= :Authors: Ligcox :Maintainers: Ligcox, HarryWen :Contact: ligcox@birdiebot.top, 858601365@qq.com :Last edit date: 2022/08/25 :Copyright: This document has been placed in the public domain. .. contents:: 目录 :depth: 2 :local: 在Bubble中不同的任务和功能在不同仓库和功能包中维护,通过RMW实现机器人在RMU赛场中的不同功能。 通过改变特定模块中的内容,能够最大程度不改变其他模块和系统框架的前提下,添加或实现新的功能。 在该文档中,列出了不同任务模块所维护的内容,并简要介绍功能包实现的任务,对于功能包详细实现可以参阅 API doc。 .. note:: 随着功能包的维护,模块可能会发生小规模的变动。 Bringup模块 ------------------------------ Bringup模块提供了Bubble系统最顶级的launch文件,通过该模块中的launch文件启动机器人需要的全部功能。 该模块在 `bubble_bringup <https://github.com/Birdiebot/bubble_bringup>`__ 仓库中维护。 接口模块 -------------------------- 包含了Bubble中通过RMW实现Node间的数据交互接口。在 `bubble_interface <https://github.com/Birdiebot/bubble_interface>`__ 仓库中维护。 接口模块包含了以下三个功能包: * 比赛裁判系统数据 - 由 ``bubble_interface/game_msgs`` 功能包实现 - 定义上位机需要使用裁判系统的ROS数据类型 - 原则上变量命名与 `RoboMaster裁判系统串口协议 <https://rm-static.djicdn.com/tem/17348/RoboMaster%202021%20%E8%A3%81%E5%88%A4%E7%B3%BB%E7%BB%9F%E4%B8%B2%E5%8F%A3%E5%8D%8F%E8%AE%AE%E9%99%84%E5%BD%95%20V1.0%EF%BC%8820210203%EF%BC%89.pdf>`__ 相同 * 控制数据 - 由 ``bubble_interface/rmctrl_msgs`` 功能包实现 - 定义了下位机执行控制指令的ROS数据类型 * 目标识别数据 - 由 ``bubble_interface/bboxes_ex_msgs`` 功能包实现 - 定义了目标识别器识别对象的ROS数据类型 - 关于 ``bboxes_ex_msgs`` 功能包的更多信息,您可以参阅 ``相关项目`` 和 ``bboxes_ex_msgs的REAMDE文件`` 图像流输入模块 -------------------------- 包含了Bubble中使用的图像传感器数据。在 `bubble_camera <https://github.com/Birdiebot/bubble_camera>`__ 仓库中维护。 * 视频流 - 由 ``main`` 分支维护 - 通过预先录制的视频,在测试环境中实现功能开发 * 海康工业相机 - 由 ``hikrobot_camera`` 分支维护 - 提供了海康机器人工业相机的ROS功能包 - 通过ROS的参数对相机参数进行调整 * 大恒图像工业相机 - 由 ``gxusb_camera`` 分支维护 - 提供了海康机器人工业相机的ROS功能包 MUC接口模块 -------------------------- 包含了BCP相关功能实现。在 `bubble_core <https://github.com/Birdiebot/bubble_core>`__ 仓库中维护。该模块信息请参阅 `木鸢通讯协议 <../guide/木鸢通讯协议.html>`__。 * BCP的ROS封装 - 由 ``bubble_protocol`` 功能包维护 - BCP的ROS封装 * BCP的python封装 - 由 ``bubble_protocol_py`` 维护 - 提供了BCP的绝大部分功能,不在依赖ROS环境,可嵌入至其他程序中使用 识别器模块 -------------------------- 对图像数据进行目标检测任务,该任务单独分维护。在 `bubble_detector <https://github.com/Birdiebot/bubble_detector>`__ 仓库中维护。 * BTP_DM项目装甲板识别器 - 由 ``bubble_visual`` 功能包维护 - 通过传统视觉方式对装甲板识别 - 对BTP_DM的cpp实现,并进行了ROS封装 * CVRM装甲板识别器 - 由 ``bubble_visual_SJTU`` 功能包维护 - 通过神经网络的方式对装甲板识别 - 对2021年上海交通大学哨兵机器人开源项目 `CVRM <https://github.com/Harry-hhj/CVRM2021-sjtu>`__ 进行的ROS封装 - 需要TensorRT环境依赖 * RMUC2019-2022能量机关识别器 - 由 ``bubble_rune`` 功能包维护 - 通过传统视觉的方式对RMUC2019-2022能量机关进行识别 功能模块 ------------------------------ 功能模块实现了RMU赛场上的主要任务,在 `bubble_contrib <https://github.com/Birdiebot/bubble_contrib>`__ 仓库中维护。 * 攻击模块 - 由 ``bubble_aiming`` 功能包维护 - 对RoboMaster机器人的发射机构自动控制 - 机器人装甲板自动瞄准及预测 - 机器人反小陀螺 - 英雄机器人击打旋转装甲板 * 调试模块 - 由 ``bubble_debuger`` 功能包维护 - 通过rqt和rviz对调试信息进行可视化展示 * 决策模块 - 由 ``bubble_decision`` 功能包维护 - 通过简单的FSM对机器人数据进行决策 - 该模块暂时放置在 ``bubble_contrib`` 模块中,后续单独分仓库维护 导航模块 ------------------------------ 导航模块实现了机器人SLAM的主要功能,在 `bubble_navigation <https://github.com/Birdiebot/bubble_navigation>`__ 仓库中维护。 .. note:: 由于该模块大量功能未实际测试,该版本Bubble中删除了绝大部分该模块的内容,仅保留客机器人模型定义相关的部分。模块主体部分在后续版本中更新。 * 机器人状态发布 - 由 ``bubble_state_publisher`` 功能包维护 - 提供机器人模型urdf定义 - 提供由BCP到TF Tree的转换