1 Star 2 Fork 1

tjrong / athena_cyberdog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

Xiaomi CyberDog ROS 2(Athena)

License pipeline status

简介

本项目是铁蛋的ROS 2应用程序的主仓,支持单独构建和与其他辅仓库共同构建。辅仓库可参考相关项目了解更多。

软件架构

我们基于ROS 2实现了大部分的机器人应用,如架构图所示,包括多设备链接、多模态感知、多模态人机交互、自主决策、空间定位、导航和目标追踪等功能。目前使用的DDS中间件是Cyclone DDS,ROS 2的版本为Foxy

graph LR
	AndroidAPP---|Bluetooth|ROS2_Bluetooth_Bridge
	AndroidAPP---|WiFi&GRPC|ROS2_GRPC_Bridge
	AndroidAPP---|WiFi&RTPS|ROS2_Live_Stream
	
	ROS2_GRPC_Bridge---DDS
	ROS2_Live_Stream---|SHM|ROS2_Camera
	ROS2_Camera---|SHM|ROS2_Vision
	ROS2_Camera---DDS
	ROS2_Vision---DDS
	MCU_Driver_LED---|CAN|ROS2_LEDServer---DDS
	MCU_Driver_Ultrasonic---|CAN|ROS2_ObstacleDetection---DDS
	MCU_Driver_TOF---|CAN|ROS2_BodyStateDetection
	MCU_Driver_Mag_AK---|CAN|ROS2_BodyStateDetection
	MCU_Driver_Gyro&Acc_LSM---|CAN|ROS2_BodyStateDetection---DDS
	MCU_Driver_OpticalFlow---|CAN|ROS2_BodyStateDetection
	MCU_Driver_LightSensor---|CAN|ROS2_LightSensor---DDS
	ROS2_AudioAssitant---DDS
	ROS2_TouchDetection---DDS
	ROS2_Realsense---DDS
	
	DDS---ROS2_BatteryManager
	DDS---ROS2_VoiceCMD
	DDS---ROS2_RemoteCMD
	DDS---ROS2_DecisionMaker
	DDS---ROS2_Localization
	DDS---ROS2_Mapping
	DDS---ROS2_Navigation
	DDS---ROS2_Tracking
	
	ROS2_DecisionMaker---|Ethernet&LCM|MIT_Ctrl
	ROS2_BatteryManager---|Ethernet&LCM|Manager

由于NVIDIA对Jetson系列截至目前(202109)只提供了Ubuntu 18.04的支持,故我们对Ubuntu 18.04进行了ROS 2的适配和修改。具体的修改内容可以通过ros2_fork/mini.repos进行拉取,我们去除了部分没必要的仓,并添加了一些需要使用的仓库(文件是Galcatic版本的,我们会在后续适配到该版本)。

本项目的详细文档都在各个子模块的根目录里,如有需要可以直接点击进行了解:

  • 通用类:

    • athena_bringup:启动系统相关,我们在ROS 2的Launch启动系统上设计了更简约的启动项管理,对启动脚本(Python3)和启动内容进行了隔离。通过简单的参数配置,新的节点或新的进程便可被添加到启动项,而无需修改脚本内容。同时也支持参数管理、调试和开关等功能。
    • athena_grpc:机器人与外部通讯的媒介,目前与手机App进行连接是基于GRPC的。在未来将支持多机识别和多机通讯。
    • athena_utils:本项目的通用功能仓,包括基于cascade_lifecycle修改的LifecycleNode基类,和传感器相关节点共用的基类等。
    • media_vendor:多媒体相关应用需要使用的CMake配置项。
    • toml11_vendortoml11的桥接包。
  • 感知类

    • athena_bms:CyberDog上的电池管理模块,主要负责电池信息的接收与分发。
    • athena_body_state:该模块实现了整机运动状态的感知功能,并通过BodyState上报posequat和speed_vector两种message的数据(posequat表示整机姿态四元数;speed_vector表示整机运动的瞬时速度,单位:m/s)。
    • athena_lightsensor:该模块创建了机器人感知系统中Light Sensor的service和publisher,当机器人需要感知周围环境光的强度时,可通过上层决策层启动该service和publisher,获取环境光照度信息。
    • athena_obstacledetection:该模块创建了机器人感知系统中Ultrasonic Sensor的service和publisher。
    • athena_scenedetection:该模块为机器人提供场景检测功能,通过定位芯片获取当前位置信息,同时通过卫星信号质量判断机器人当前处于室内或室外。
  • 交互类:

    • athena_audio
      • audio_base:该模块用于播放多段或单段不定长PCM音频数据、wav格式音频文件,其底层实现为SDL2与SDL_mixer。
      • audio_interaction:该模块用于实现整个音频模块的交互部分,主要包括与其它模块之间关于通用播放的交互、语音助手相关控制与交互功能和与APP(grpc)之间关于音量调解的交互功能。
    • athena_camera:该模块基于NVIDIA Argus和ROS 2实现了相机的基础功能,包括拍照和录像等,并为其他模块(视觉SDK、图传等)提供调用接口。
    • athena_led:该模块用于统一决策系统所有的LED灯效请求,基于ROS2 Service以及sensor_utils类实现,通过定义不同client的LED消息优先级以及timeout来实现对CyberDog头灯和尾灯的控制显示功能。
    • athena_livestream
    • athena_touch:该模块提供了topic为TouchState的publisher, 继承于athena_utils::LifecycleNode. 目前支持单指单击报LPWG_SINGLETAP_DETECTED 和单指长按3s报LPWG_TOUCHANDHOLD_DETECTED事件。
    • athena_wireless
      • bluetooth:该模块实现了:注册蓝牙GATT service,发送BLE广播,等待手机APP连接成功后,接收APP发送的Wifi信息,实现Wifi的联网操作,并返回联网结果,以及通过APP提供的命令,实现蓝牙手柄的扫描,连接,达到通过手柄控制CyberDog的目的。
      • wifirssi:该模块的主要功能是创建定时任务,实时查询当前已连接Wifi的信号强度,并通过ros2的topic通讯进行传输。
  • 决策类:

    • athena_decisionmaker:面向业务层,负责实现具体业务功能。目前提供了automation_managerception_managerinteraction_managermotion_manager。分别用于自动化功能、感知功能、人机交互功能和运动功能的管理和决策。该四个模块均继承cascade_manager,并在基础上根据业务功能稍作改动。
    • athena_decisionutils:决策相关功能的基类和工具类集合,负责实现通用功能。目前提供了cascade_manager,该模块继承于athena_utils::LifecycleNode,具备级联/并联和单点控制的功能,可以快速管控其作用域下的节点的启动和关闭。
  • 接口类:

前置条件

如在交叉环境进行编译,可参考交叉编译铁蛋源码进行了解环境的配置。

如在目标设备上直接编译,需要保证已连接互联网。首选环境是铁蛋,次选环境是NVIDIA Jetson系列的开发环境。

如是后者,需要保证安装:

  • ROS 2(Foxy):最小必须。并且需要至少包含mini.repos中的功能包。
  • LCM:最小必须。可通过下载源码编译安装。
  • mpg123,SDL2和SDL2_Mixer:基础必须。最好通过源码安装,并确保按照前面所写的顺序编译安装。
  • NV相关库:基础必须。可nvidia-l4t-jetson-multimedia-apicuda-compiler-10-2
  • OpenCV、VTK、PCL和相关的ROS 2桥接包等,参考extend.reposcustom.repos

构建 & 部署

本项目支持三种构建策略:

  1. 最小功能包:只编译影响整机启动和运动的相关功能包。
  2. +=基础功能包:编译本仓(athena_cyberdog)的全部功能包。
  3. +=扩展功能包:编译本仓与相关扩展仓的全部功能包。

最小功能包的构建

编译方法:

  1. 下载athena_cyberdogathena_lcm_type
$ mkdir -p ros_apps/src
$ cd ros_apps/src
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_cyberdog.git
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_lcm_type.git
$ cd ..
  1. 使用--packages-up-to编译(确保source过ROS 2的环境变量
$ colcon build --merge--install --packages-up-to athena_bringup

或者,编译到指定目录,注意:如有需要请替换/opt/ros2/cyberdog的值为其他。

$ export OUTPUT_DIR=/opt/ros2/cyberdog
$ colcon build --merge--install --install-base $OUTPUT_DIR --packages-up-to athena_bringup

+=基础功能包

编译方法:

  1. 下载athena_cyberdogathena_lcm_type
$ mkdir -p ros_apps/src
$ cd ros_apps/src
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_cyberdog.git
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_lcm_type.git
$ cd ..
  1. 直接编译所有的包(确保source过ROS 2的环境变量
$ colcon build --merge--install

或者,编译到指定目录,注意:如有需要请替换/opt/ros2/cyberdog的值为其他。

$ export OUTPUT_DIR=/opt/ros2/cyberdog
$ colcon build --merge--install --install-base $OUTPUT_DIR

+=扩展功能包

  1. 下载athena_cyberdogathena_lcm_typeathena_assitantathena_automationathena_vision
$ mkdir -p ros_apps/src
$ cd ros_apps/src
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_cyberdog.git
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_lcm_type.git
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_assistant.git
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_automation.git
$ git clone https://partner-gitlab.mioffice.cn/cyberdog/athena_vision.git
$ cd ..
  1. 直接编译所有的包(确保source过ROS 2的环境变量
$ colcon build --merge--install

或者,编译到指定目录,注意:如有需要请替换/opt/ros2/cyberdog的值为其他。

$ export OUTPUT_DIR=/opt/ros2/cyberdog
$ colcon build --merge--install --install-base $OUTPUT_DIR

通用的部署方式

如果使用的是/opt/ros2/cyberdog路径进行编译,且环境是铁蛋,重启机器或服务即可部署完毕。

重启服务的方式:

$ sudo systemctl restart cyberdog_ros2.service

补充:如果编译了扩展功能包,还需要执行

$ sudo systemctl restart cyberdog_automation.service

相关项目

  • 语音助手:基于小米小爱同学的语音助手的ROS 2桥接包。
  • 视觉检测&识别:基于小米AI计算机视觉的人脸、手势和人体检测和识别的ROS 2桥接包。
  • 定位&导航&跟踪:基于ROS 2的自动化功能包,包括定位、导航和跟踪等功能包。

相关资源

向铁蛋贡献力量!

浏览页面CONTRIBUTING.md了解如何向铁蛋贡献力量!

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright (c) 2021 Beijing Xiaomi Mobile Software Co., Ltd. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

小米机械狗 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/tjrong/athena_cyberdog.git
git@gitee.com:tjrong/athena_cyberdog.git
tjrong
athena_cyberdog
athena_cyberdog
master

搜索帮助