IT之家 2 月 12 日消息,今年 1 月份,小米仿生四足机器人 CyberDog—— 铁蛋,进行了一次 OTA 升级,本次铁蛋升级都解锁了哪些新功能?今天小米官方带来了详细介绍。
下面是视频:
App 快速连接
新增快速连接功能。当首次通过蓝牙连接铁蛋后,铁蛋在后续开机时会自动连上之前使用的 Wi-Fi,若此时手机也连接上了该 Wi-Fi,App 可直接通过快速连接功能搜索到已连接到该 Wi-Fi 的铁蛋,无需再连接蓝牙,连接速度可提高到 5 秒左右。
遛狗步态
步态中增加遛狗模式,可通过狗绳牵引操作机器人运动,在 App 中点击遛狗即进入该模式。
狗绳推荐安装于机器人颈部。
进入遛狗模式后,铁蛋会跟随牵引力的方向执行前进、后退、转弯等动作。
前向或者侧向牵引时,机器人头部沿着牵引力方向运动,后向牵引时,机器人尾部沿着牵引方向运动。
牵引力为零,机器人原地踏步,牵引力越大,运动速度越快。
当牵引前进速度大于一定值后,机器人会自主前进,可通过狗绳调整方向和减速。
遛狗模式下,请保持狗绳处于可控范围。
运动控制 SDK 接口
开放运动控制层 12 个关节电机的伺服控制接口,支持用户基于 lcm 通信协议适配和开发新的控制算法。
SDK 代码见:https://github.com/ MiRoboticsLab。
用户可参考 sdk 中 Example_MotorCtrl.cpp 编写自己的控制代码后,按如下步骤在实际机器人上部署运行。
一、安装依赖
1)安装 lcm (本地部署时需要)
$ git clone https://github.com/lcm-proj/lcm.git $ cd lcm $ mkdir build $ cd build $ cmake ../ $ make $ sudo make install
2)安装 docker (运控部署时需要)
按照链接所附步骤进行安装:https://docs.docker.com/ engine / install / ubuntu/
# 给docker设置root权限: sudo groupadd docker sudo usermod -aG docker $USER
3)下载交叉编译所需 docker 镜像
$ wget https://cdn.cnbj2m.fds.api.mi-img.com/os-temp/loco/loco_arm64_20220118.tar $ docker load --input loco_arm64_20220118.tar $ docker images
二、登录机器人
将本地 PC 连接至铁蛋的 USB download type-c 接口 (位于中间),等待出现”L4T-README”弹窗
$ ping 192.168.55.100 #本地PC被分配的ip $ ssh mi@192.168.55.1 #登录nx应用板 ,密码123 $ ssh root@192.168.55.233 #登录运动控制板
三、修改模式
修改配置开关,激活用户控制模式,运行用户自己的控制器:
$ cd /robot #登录运动控制板后 $ ./initialize.sh #拷贝出厂代码到可读写的开发区(/mnt/UDISK/robot-software),切换到开发者模式,仅需执行一次 $ #切换mode:1(0:默认模式,1用户代码控制电机模式),重启机器人生效 $ vi /mnt/UDISK/robot-software/config/user_code_ctrl_mod.txt
1)本地部署
运行在 pc 端 (linux) 难以保证实时 lcm 通信,仅推荐编译验证和简单位控测试。
注:通信失败时无法正常激活电机控制模式 Motor control mode has not been activated successfully
$ 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 #进入sdk代码仓后 $ cd build $ cmake .. $ make -j4 $ ./Example_MotorCtrl
2)NX 应用板部署
因非实时系统,仅推荐编译验证和简单位控测试。
$ scp -r cyberdog_motor_sdk mi@192.168.55.1:/home/mi/ #源码入应用板,密码123 $ ssh mi@192.168.55.1 $ cd ~/代码文件夹 $ mkdir build $ cd build $ cmake .. $ make -j2 $ ping 192.168.55.233 #测试通信 $ ./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 $ cd /work/build_farm/workspace/cyberdog/ $ mkdir onboard-build $ cd onboard-build $ cmake -DCMAKE_TOOLCHAIN_FILE=/usr/xcc/aarch64-openwrt-linux-gnu/Toolchain.cmake .. $ make -j4 $ exit
编译成功后, 将生成的.so 文件 libcyber_dog_sdk.so 和可执行文件 Example_MotorCtrl 拷贝到运控 / mnt / UDISK 目录下。
$ ssh root@192.168.55.233 "mkdir /mnt/UDISK/cyberdog_motor_sdk" $ cd ~/{sdk_path}/onboard-build $ scp libcyber_dog_motor_sdk.so Example_MotorCtrl root@192.168.55.233:/mnt/UDISK/cyberdog_motor_sdk $ ssh root@192.168.55.233 $ cd /mnt/UDISK/cyberdog_motor_sdk $ export LD_LIBRARY_PATH=/mnt/UDISK/cyberdog_motor_sdk #设置so库路径变量 $ ./Example_MotorCtrl
如何添加开机自启动:
将此配置文件 (注意结尾逗号) 修改重启运控程序 / mnt / UDISK / manager_config / fork_para_conf_lists.json
例:"600003": {"fork_config":{"name": "Example_MotorCtrl", "object_path": "/cyberdog_motor_sdk/", "log_path": "","paraValues": ["", "",""] }}
注:电机无 CAN 总线超时失能,故结束时需先暂停 MotorCtrl 进程,超时后自动趴下。
四、错误标志位含义
//bit0:lost control over 10ms warn, the tau and qd_des will be divided by (over_time/10.0) //bit1:lost control over 500ms err, enter high damping mode, kp=0,kd=10,tau=0; //bit2:abad motor diff angle over 8 degrees, and limit to it //bit3:hip motor diff angle over 10 degrees, and limit to it //bit4:knee motor diff angle over 12 degrees, and limit to it
注:为了避免通信超时导致危险,报 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 \$1}' | xargs kill -9" #需先于主进程暂停,避免急停 ssh root@192.168.55.233 "ps | grep -E 'manager|ctrl|imu_online' | grep -v grep | awk '{print \$1}' | xargs kill -9" 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 &" # 重启运控板系统: ssh root@192.168.55.233 "reboot"
04 低功耗模式
机器在趴下后 passive 模式,电机检测控制指令,在没有电机位置速度力矩的控制情况下连续检测 15 秒后,电机进入低功耗模式,此时功耗降低,且无电机噪音,在收到控制指令后,电机自动恢复到正常模式。
05 图传延迟
修改 App 端播放参数,通过减小图传图像的出队时间并使用软解码的方式来降低图传延迟时间,同等网络情况下减小图传延迟 500ms 左右。
06 拎狗保护
由于机器人在行走和姿态展示过程中提起会进入急停,为了提高用户体验,本次升级提供了了提起保护功能;
提起保护仅在姿态展示、缓跑、小跑、奔跑、跳跑、跳跃、遛狗和转圈功能中起作用,其他功能不会触发提起保护;
若要使用这项功能,请将机器人高度设置为 0.30m;
在上述功能执行过程中,用户可以通过背部的把手将机器人提起,提起后机器人会打断当前功能并进入高阻尼模式;
进入高阻尼模式后 App 上不会有提示,但是可以明显感觉到机器人腿部各个关节已经锁定,并有较大阻尼;
进入高阻尼模式后,用户可以任意将机器人移动,待需要继续使用时,将机器人放置在地面上,机器人会自动恢复被打断的功能;
注意事项
舞蹈功能没有开放提起保护功能,在舞蹈中提起机器人,机器人仍然会进入急停;
尽量不要在快速运动过程中提起机器人,此情况可能进入急停;
在姿态展示过程中机器人足底有可能在地面滑移,滑移幅度过大的情况可能触发提起保护;
在切换功能后或机器人站定后,提起保护有 1 秒延时,请在延时后使用提起保护功能;
在机器人行走过程中让机器人抬头或低头会关闭提起保护功能;
进入高阻尼模式后,尽量平稳将机器人放置在地面上使其恢复原有功能;
在高阻尼模式下不要切换功能或推动摇杆。
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。