Repository Summary
Description | ROS 2 packages for CyberDog |
Checkout URI | https://github.com/miroboticslab/cyberdog_ros2.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2021-10-15 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | robotics ros ros2 cyberdog |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
cyberdog_bringup | 1.0.0 |
cyberdog_bms | 1.0.0 |
cyberdog_body_state | 1.0.0 |
cyberdog_lightsensor | 1.0.0 |
cyberdog_obstacle_detection | 1.0.0 |
cyberdog_scene_detection | 1.0.0 |
behaviortreecppv3_vendor | 1.0.0 |
cyberdog_grpc | 1.0.0 |
cyberdog_utils | 1.0.0 |
grpc_vendor | 1.0.0 |
lcm_vendor | 1.0.0 |
mpg123_vendor | 1.0.0 |
sdl2_vendor | 1.0.0 |
toml11_vendor | 1.0.0 |
cyberdog_decisionmaker | 1.0.0 |
cyberdog_decisionutils | 1.0.0 |
audio_assistant | 0.0.0 |
audio_base | 1.0.0 |
audio_interaction | 1.0.0 |
cyberdog_audio | 1.0.0 |
xiaoai_sdk_vendor | 0.0.0 |
cyberdog_camera | 1.0.0 |
cyberdog_led | 1.0.0 |
live_stream | 1.0.0 |
cyberdog_touch | 1.0.0 |
automation_msgs | 1.0.0 |
cascade_lifecycle_msgs | 0.0.5 |
ception_msgs | 1.0.0 |
cyberdog_interfaces | 1.0.0 |
interaction_msgs | 1.0.0 |
lcm_translate_msgs | 0.0.1 |
motion_msgs | 1.0.0 |
README
Xiaomi CyberDog ROS 2
简介
本项目包含小米铁蛋®的ROS 2主要功能包.
基本信息
- 铁蛋默认用户是
mi
, 密码为123
- 使用USB线连接
Download
接口, 可通过ssh mi@192.168.55.1
连接铁蛋进行内部操作
软件架构
我们基于ROS 2实现了大部分的机器人应用, 如架构图所示, 包括多设备链接、多模态感知、多模态人机交互、自主决策、空间定位、导航和目标追踪等功能. 目前使用的DDS中间件是Cyclone DDS
, ROS 2的版本为Galactic
.
由于NVIDIA对Jetson系列截至目前(202109)只提供了Ubuntu 18.04的支持, 故我们对Ubuntu 18.04进行了ROS 2的适配和修改. 具体的修改内容可以通过mini.repos进行拉取, 我们去除了部分没必要的仓, 并添加了一些需要使用的仓库.
本项目的详细文档都在各个子模块的根目录里, 如有需要可以直接点击进行了解
前置条件
如在目标设备上直接编译, 需要保证已连接互联网. 首选环境是铁蛋, 次选环境是Docker开发环境.
如是前者,需要保证执行如下指令:
$ apt-get update
$ apt-get install nvidia-l4t-jetson-multimedia-api cuda-compiler-10-2
如是后者, 可以考虑使用arm64的Docker. 我们在未来会支持交叉编译。
大陆地区加速
如果您在中华人民共和国大陆地区, 可以使用我们提供的Docker的构建加速和colcon的编译加速
构建Docker时, 可使用
docker build -t arm_docker:1.0 . --build-arg gfw=1
进行构建镜像, 以提高速度.
使用colcon编译包时, 可在colcon编译的语句最后添加
--cmake-args -DBUILD_INSIDE_GFW=ON
以获取加速, 如colcon build --merge-install --packages-select sdl2_vendor lcm_vendor mpg123_vendor toml11_vendor --cmake-args -DBUILD_INSIDE_GFW=ON
.
构建 & 部署
本项目支持两种构建策略:
- 最小功能包: 只编译影响整机启动和运动的相关功能包.
- 基础功能包: 编译本仓(cyberdog_ros2)的全部功能包.
最小功能包
编译方法:
- 下载
cyberdog_ros2
.
$ mkdir -p ros_apps/src
$ cd ros_apps/src
$ git clone https://github.com/MiRoboticsLab/cyberdog_ros2.git
$ cd ..
- 使用
--packages-up-to
编译(确保source过ROS 2的环境变量)
$ colcon build --merge-install --packages-up-to cyberdog_bringup
或者, 编译到指定目录, 注意: 如有需要请替换/opt/ros2/cyberdog
的值为其他.
$ export OUTPUT_DIR=/opt/ros2/cyberdog
$ colcon build --merge-install --install-base $OUTPUT_DIR --packages-up-to cyberdog_bringup
基础功能包
编译方法:
- 下载
cyberdog_ros2
. - Download
cyberdog_ros2
.
$ mkdir -p ros_apps/src
$ cd ros_apps/src
$ git clone https://github.com/MiRoboticsLab/cyberdog_ros2.git
$ cd ..
- 直接编译所有的包(确保source过ROS 2的环境变量)
$ colcon build --merge-install
或者, 编译到指定目录, 注意:如有需要请替换/opt/ros2/cyberdog
的值为其他.
File truncated at 100 lines see the full file
CONTRIBUTING
向小米铁蛋贡献力量!
感谢您关注我们的项目。
About license
本项目遵守Apache 2.0开源协议。
成为开发者前
确保您已经签署个人独立贡献者许可协议(CLA)。如果已签署,请直接阅读开发者签名认证,如未签署,请继续往下读。
为环保和效率起见,目前只支持电子签署
。
电子签署方式
- 下载个人独立贡献者许可协议
- 使用PDF软件签署协议,注意签名部分需要手写(电子签名即可)。
- 将签署完毕的协议文件发送至邮箱mi-cyberdog@xiaomi.com
开发者签名认证
开发者需要使用签署CLA的邮箱对所提交修改进行签名,即使用git commit -s
进行递交commit信息。
代码审查
所有递交都按照合入请求(Merge Requst)的方式进行,并只接收GitHub的拉取请求(Pull Request)的流程方式。
代码格式
所有ROS 2相关代码均遵从ROS 2
的标准代码规范。可阅读Code style and language versions进行了解。建议在提交代码前,使用ament_lint 工具或借助colcon test
进行快速审查。
分支管理
我们所有的仓库均分为两条分支进行开发,分别是devel
和main
。
-
devel
分支用于日常的合入请求和每日版本的打包,属于开发分支。 -
main
分支用于存放稳定版本,当且仅当需要发行新版本时,冻结devel
分支,并从devel
分支创建合入请求,并经过:- 撰写改动记录,梳理预发行的新功能和预修复的问题,确定版本号。
- CI完全通过,包括构建和测试部分。
- 测试工程师介入,并按照1中的新功能和预修复的问题进行摸底测试。如有问题,需要相关开发者按照修复问题的方式及时向
devel
分支递交修复代码。 - 如测试通过,则对项目的代码和二进制包进行打包和封装。
- 在
Release
界面进行发布。