FAQ
Motion SDK 常见问题
Section titled “Motion SDK 常见问题”为什么原始代码中发送指令被注释掉了?
Section titled “为什么原始代码中发送指令被注释掉了?”为确保安全。开发者必须先确认 SDK 与机器人通讯正常、控制指令正确后,才能取消注释 send_cmd->SendCmd(robot_joint_cmd)。
如何判断 SDK 是否收到了机器人数据?
Section titled “如何判断 SDK 是否收到了机器人数据?”- 观察终端是否打印
No data from the robot was received!!!!!! - 取消注释
cout << robot_data->imu.acc_x << endl;,查看是否有 IMU 数据输出 - 注册回调函数,检查
is_message_updated_是否被置为true
SDK 丢失控制权后怎么办?
Section titled “SDK 丢失控制权后怎么办?”超过 50ms 未发送有效指令,底层控制器将拿回控制权。需重新调用 send_cmd->ControlGet(SDK) 获取控制权,并调用 send_cmd->RobotStateInit() 重新初始化。
如何在运动主机上编译运行?
Section titled “如何在运动主机上编译运行?”使用 ARM 编译:
cmake .. -DBUILD_PLATFORM=armmake -j将生成的 Lite_motion 可执行文件和 libdeeprobotics_legged_sdk_aarch64.so 一起拷贝到运动主机上运行。
如何切换位置控制和力矩控制?
Section titled “如何切换位置控制和力矩控制?”在 motionexample.cpp 的 SwingToAngle 函数中,修改 if(true) 为 if(false) 即可切换到力矩控制模式。
RL SDK 常见问题
Section titled “RL SDK 常见问题”为什么默认是手柄模式?
Section titled “为什么默认是手柄模式?”因为 main.cpp 当前默认选择的是:
RemoteCommandType::kRetroidGamepad如何切换到键盘模式?
Section titled “如何切换到键盘模式?”把 main.cpp 中的 RemoteCommandType::kRetroidGamepad 改为 RemoteCommandType::kKeyBoard。
为什么手柄数据收不到?
Section titled “为什么手柄数据收不到?”手柄数据由 lite3_transfer 中的 RetroidGamepadPublisher 通过 UDP 端口 12121 接收并发布到 /GAMEPAD_DATA。确保 lite3_transfer 已启动且手柄已连接。
为什么真机编译要用 arm?
Section titled “为什么真机编译要用 arm?”因为 CMakeLists.txt 里 BUILD_PLATFORM 会决定 onnxruntime 目录和工具链:
set(BUILD_PLATFORM "x86" CACHE STRING "Target platform (x86 or arm)")为什么要区分 /JOINTS_CMD 和 /JOINTS_DATA?
Section titled “为什么要区分 /JOINTS_CMD 和 /JOINTS_DATA?”/JOINTS_CMD 是控制输出,/JOINTS_DATA 是机器人反馈。仿真节点和控制节点用这两个话题做闭环。
lite3_transfer 和 lite3_sdk_service 是什么关系?
Section titled “lite3_transfer 和 lite3_sdk_service 是什么关系?”lite3_sdk_service 是管理层,通过 UDP 远程控制 lite3_transfer(硬件层)的启停和频率。lite3_transfer 不单独注册为 systemd 服务,由 lite3_sdk_service 按需启停。
急停不生效怎么办?
Section titled “急停不生效怎么办?”- 确保
lite3_transfer已在运行 - 检查
/EMERGENCY_STOP服务是否存在:ros2 service list | grep EMERGENCY_STOP - 确认
/EMERGENCY_STOP_SIGNAL有活跃订阅者(即Lite3_sdk_deploy已调用InitEmergencyStopListener())
如何修改话题发布频率?
Section titled “如何修改话题发布频率?”- 通过 Retroid 手柄 App 界面调节
- 或通过 UDP 命令:
echo "50" | nc -u 127.0.0.1 12122
端口被占用怎么办?
Section titled “端口被占用怎么办?”sudo lsof -i:12122sudo kill <pid>Android SDK 常见问题
Section titled “Android SDK 常见问题”App 闪退?
Section titled “App 闪退?”检查 minSdkVersion 是否满足要求(最低 24)。
手柄无法连接?
Section titled “手柄无法连接?”确认手柄已配对,且支持 HID 协议。