FAQ
Motion SDK FAQ
Section titled “Motion SDK FAQ”Why is the command sending code commented out in the original source?
Section titled “Why is the command sending code commented out in the original source?”For safety reasons. Developers must first confirm that the SDK communicates correctly with the robot and that control commands are correct before uncommenting send_cmd->SendCmd(robot_joint_cmd).
How to check if the SDK is receiving robot data?
Section titled “How to check if the SDK is receiving robot data?”- Observe whether the terminal prints
No data from the robot was received!!!!!! - Uncomment
cout << robot_data->imu.acc_x << endl;to check for IMU data output - Register a callback function and check whether
is_message_updated_is set totrue
What to do after the SDK loses control?
Section titled “What to do after the SDK loses control?”If no valid command is sent for more than 50ms, the low-level controller will take back control. You need to call send_cmd->ControlGet(SDK) again to regain control, and call send_cmd->RobotStateInit() to reinitialize.
How to compile and run on the motion host?
Section titled “How to compile and run on the motion host?”Use ARM compilation:
cmake .. -DBUILD_PLATFORM=armmake -jCopy the generated Lite_motion executable along with libdeeprobotics_legged_sdk_aarch64.so to the motion host to run.
How to switch between position control and torque control?
Section titled “How to switch between position control and torque control?”In the SwingToAngle function of motionexample.cpp, change if(true) to if(false) to switch to torque control mode.
RL SDK FAQ
Section titled “RL SDK FAQ”Why is gamepad mode the default?
Section titled “Why is gamepad mode the default?”Because main.cpp currently defaults to:
RemoteCommandType::kRetroidGamepadHow to switch to keyboard mode?
Section titled “How to switch to keyboard mode?”Change RemoteCommandType::kRetroidGamepad to RemoteCommandType::kKeyBoard in main.cpp.
Why can’t gamepad data be received?
Section titled “Why can’t gamepad data be received?”Gamepad data is received by RetroidGamepadPublisher in lite3_transfer via UDP port 12121 and published to /GAMEPAD_DATA. Ensure lite3_transfer is running and the gamepad is connected.
Why use ARM for real robot compilation?
Section titled “Why use ARM for real robot compilation?”Because BUILD_PLATFORM in CMakeLists.txt determines the onnxruntime directory and toolchain:
set(BUILD_PLATFORM "x86" CACHE STRING "Target platform (x86 or arm)")Why distinguish between /JOINTS_CMD and /JOINTS_DATA?
Section titled “Why distinguish between /JOINTS_CMD and /JOINTS_DATA?”/JOINTS_CMD is for control output, /JOINTS_DATA is for robot feedback. The simulation node and control node use these two topics for closed-loop control.
What is the relationship between lite3_transfer and lite3_sdk_service?
Section titled “What is the relationship between lite3_transfer and lite3_sdk_service?”lite3_sdk_service is the management layer that remotely controls the start/stop of lite3_transfer (hardware layer) via UDP. lite3_transfer is not registered as a standalone systemd service; it is started and stopped on demand by lite3_sdk_service.
What to do if emergency stop doesn’t work?
Section titled “What to do if emergency stop doesn’t work?”- Ensure
lite3_transferis running - Check if the
/EMERGENCY_STOPservice exists:ros2 service list | grep EMERGENCY_STOP - Confirm
/EMERGENCY_STOP_SIGNALhas active subscribers (i.e.,Lite3_sdk_deployhas calledInitEmergencyStopListener())
How to modify the topic publish frequency?
Section titled “How to modify the topic publish frequency?”- Adjust via the Retroid gamepad App interface
- Or via UDP command:
echo "50" | nc -u 127.0.0.1 12122
What to do if a port is occupied?
Section titled “What to do if a port is occupied?”sudo lsof -i:12122sudo kill <pid>Android SDK FAQ
Section titled “Android SDK FAQ”App crashes?
Section titled “App crashes?”Check if minSdkVersion meets the requirement (minimum 24).
Gamepad cannot connect?
Section titled “Gamepad cannot connect?”Ensure the gamepad is paired and supports the HID protocol.