前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小米机器狗铁蛋资料整理 cyberdog ros2

小米机器狗铁蛋资料整理 cyberdog ros2

作者头像
zhangrelay
发布2022-05-01 10:58:28
2.9K0
发布2022-05-01 10:58:28
举报

ROS2机器狗平台中,开源做得很好的平台。

注意:

main 18.04

devel 20.04

其中,devel使用ros2 galactic!非常赞!

Xiaomi CyberDog ROS 2 License

CyberDogDog

English

简介 本项目包含小米铁蛋®的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的环境变量)

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

下载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的环境变量)

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

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

重启服务的方式:

To restart the service:

$ sudo systemctl restart cyberdog_ros2.service 相关项目 CyberDog_Ctrl:使用GRPC控制铁蛋 相关资源 CyberDogAPP下载链接 铁蛋躯干Step文件 向铁蛋贡献力量! 浏览页面CONTRIBUTING.md了解如何向铁蛋贡献力量!

内核部分:

github.com/MiRoboticsLab/cyberdog_tegra_kernel

Tegra Linux Kernel for CyberDog

[简介] 本项目为L4T的内核代码项目(适用于小米定制的英伟达应用板)。目前版本为Jetpack 4.5,内核版本为4.9.201。

[编译方法] cd到内核代码所在目录后并执行以下命令:

git clone https://github.com/MiRoboticsLab/cyberdog_tegra_kernel.git cd cyberdog_tegra_kernel/kernel/kernel-4.9 ./build.sh

build.sh中make的jobs数量(-jn)可根据个人电脑实际情况进行修改。

github.com/MiRoboticsLab/cyberdog_motor_sdk

电机和惯导部分:

CYBERDOG MOTOR SDK 此SDK开放了电机驱动器和机身IMU传感器接口,配合cyberdog 1.0.0.94及以上版本使用,方便用户进行运动控制的二次开发。具体接口使用可参照Example_MotorCtrl.cpp,按如下步骤在实际机器人上部署运行。

准备工作 安装依赖 安装lcm(本地部署时需要)

git clone https://github.com/lcm-proj/lcm.git cd lcm mkdir build && cd build

按照链接所附步骤进行安装:https://docs.docker.com/engine/install/ubuntu/

# 给docker设置root权限: sudo groupadd docker sudo usermod -aG docker

wget https://cdn.cnbj2m.fds.api.mi-img.com/os-temp/loco/loco_arm64_20220118.tar docker load --input loco_arm64_20220118.tar

ping 192.168.55.100     #本地PC被分配的ip ssh mi@192.168.55.1     #登录nx应用板 ,密码123 mi@lubuntu:~ athena_version -v #核对当前版本>=1.0.0.94

$ ssh root@192.168.55.233 #登录运动控制板 root@TinaLinux:~# cd /robot root@TinaLinux:~# ./initialize.sh #拷贝出厂代码到可读写的开发区(/mnt/UDISK/robot-software),切换到开发者模式,仅需执行一次 root@TinaLinux:~# vi /mnt/UDISK/robot-software/config/user_code_ctrl_mode.txt #切换mode:1(0:默认模式,1用户代码控制电机模式),重启机器人生效 编译及部署 1、用户电脑侧部署 运行在用户pc侧(linux)难以保证实时lcm通信,仅推荐编译验证和简单的位控测试

ping 192.168.55.233 #通过type c线连接Cyberdog的Download接口后,确认通信正常 ifconfig | grep -B 1 192.168.55.100 | grep "flags"| cut -d ':' -f1 #获取该ip对应网络设备,一般为usb0 sudo ifconfig usb0 multicast #usb0替换为上文获取的168.55.100对应网络设备,并配为多播 sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev usb0 #添加路由表,usb0对应替换 mkdir build && cd build #进入sdk代码仓后 make -j4 ./Example_MotorCtrl 注:lcm通信若不成功,无法正常激活电机控制模式,log提示:Motor control mode has not been activated successfully

2、铁蛋NX应用板部署 因非实时系统,仅推荐编译验证和简单位控测试

scp -r {sdk_path}/cyberdog_motor_sdk mi@192.168.55.1:/home/mi/ #sdk源码拷入应用板,密码123 ssh mi@192.168.55.1 #登录应用板 mi@lubuntu:~ cd /home/mi/cyberdog_motor_sdk mi@lubuntu:~ mkdir build && cd build mi@lubuntu:~ cmake .. mi@lubuntu:~ make -j2 mi@lubuntu:~ ping 192.168.55.233 #测试和运控板的通信 mi@lubuntu:~ ./Example_MotorCtrl 3、铁蛋运控板交叉编译部署 为了能使编译的文件可以直接在机器人上运行,需要在部署交叉编译工具链的docker镜像环境下编译,具体步骤如下:

$ docker run -it --rm --name cyberdog_motor_sdk -v /home/xxx/{sdk_path}:/work/build_farm/workspace/cyberdog cr.d.xiaomi.net/athena/athena_cheetah_arm64:2.0 /bin/bash [root:/work] # cd /work/build_farm/workspace/cyberdog/ #进入docker系统的代码仓 [root:/work/build_farm/workspace/cyberdog] # mkdir onboard-build && cd onboard-build [root:/work/build_farm/workspace/cyberdog] # cmake -DCMAKE_TOOLCHAIN_FILE=/usr/xcc/aarch64-openwrt-linux-gnu/Toolchain.cmake .. [root:/work/build_farm/workspace/cyberdog] # make -j4 #指定交叉编译工具链并编译 [root:/work/build_farm/workspace/cyberdog] # exit 编译成功后, 将生成的.so文件libcyber_dog_sdk.so和可执行文件Example_MotorCtrl拷贝到运控/mnt/UDISK目录下

cd ~/{sdk_path}/onboard-build ssh root@192.168.55.233 "mkdir /mnt/UDISK/cyberdog_motor_sdk" #在运控板内创建文件夹 scp libcyber_dog_motor_sdk.so  Example_MotorCtrl root@192.168.55.233:/mnt/UDISK/cyberdog_motor_sdk ssh root@192.168.55.233 root@TinaLinux:~# cd /mnt/UDISK/cyberdog_motor_sdk root@TinaLinux:~# export LD_LIBRARY_PATH=/mnt/UDISK/cyberdog_motor_sdk #设置so库路径变量 root@TinaLinux:~# ./Example_MotorCtrl  #通过“nohup ./Example_MotorCtrl &”可后台运行,退出ssh连接不受影响 如何添加开机自启动: 配置/mnt/UDISK/manager_config/fork_para_conf_lists.json 进程管理文件(注意结尾逗号)后重启运控程序 例: "600003": {"fork_config":{"name": "Example_MotorCtrl", "object_path": "/cyberdog_motor_sdk/", "log_path": "", "paraValues": ["", "", ""] }} 注:手动关闭程序时,请先关闭用户程序Example_MotorCtrl,触发主程序(ctrl)超时保护趴下,再关闭或重启主程序。同时关闭主程序和用户程序,电机会因CAN总线超时位置锁定,再次启动易发生危险。

错误标志位含义 //bit0: warning flag, lost communication between user code and robot over 10[ms]. For safety, commanded tau and qd_des will be forced to divide by (over_time[ms]/10.0); //bit1: error flag, lost communication between user code and robot over 500[ms]. Robot will enter high-damping mode by setting joint gains kp=0, kd=10, tau=0; //bit2: warning flag, position command of any abaduction joint changing more than 8 degrees from its previous will be truncated; //bit3: warning flag, position command of any hip joint changing more than 10 degrees from its previous will be truncated; //bit4: warning flag, position command of any knee joint changing more than 12 degrees from its previous will be truncated; 注:为了避免通信超时导致危险,报err_flag: 0x02 communicate lost over 500ms后先排除故障,关闭Example_MotorCtrl例程进程,再重启运控程序或者直接重启运控板才能清除错误.

# 重启运控程序: ssh root@192.168.55.233 "ps | grep -E 'Example_MotorCtrl' | grep -v grep | awk '{print \ ssh root@192.168.55.233 "ps | grep -E 'manager|ctrl|imu_online' | grep -v grep | awk '{print \ ssh root@192.168.55.233 "export LD_LIBRARY_PATH=/mnt/UDISK/robot-software/build;/mnt/UDISK/manager /mnt/UDISK/ >> /mnt/UDISK/manager_log/manager.log 2>&1 &" # 重启运控板系统:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档