Overview#
Choose an integration, simulation, or client entry point according to your development goal.
Minimal Integration Examples#
Choose read-only checks, communication initialization, or motion examples according to your goal. Before running a script, confirm the devices and configuration it operates on.
Parameterized IMU reading#
After building the SDK and loading the terminal environment, use the following example to read the HIPNUC cache. Supply the actual IMU ID, interface, and bit rate or baud rate.
import argparse
import imu_py
parser = argparse.ArgumentParser()
parser.add_argument("--imu-id", type=int, required=True)
parser.add_argument("--interface-type", choices=("serial", "can"), required=True)
parser.add_argument("--interface", required=True)
parser.add_argument("--baudrate", type=int, required=True)
args = parser.parse_args()
imu = imu_py.IMUDriver.create_imu(
args.imu_id, args.interface_type, args.interface, "HIPNUC", args.baudrate
)
print("quat wxyz:", imu.get_quat())
print("angular velocity:", imu.get_ang_vel())
print("linear acceleration:", imu.get_lin_acc())The example opens the communication interface and prints cached data; valid feedback may not yet be available immediately after creation. Determine online state from communication and continuous feedback updates. See IMU interface for body-frame transformations.
The complete repository example, scripts/imu_py_example.py, uses can4 and mounting extrinsics, and depends on SciPy. Replace these with the actual interface and mounting extrinsics before use.
Motor motion example#
scripts/motors_py_example.py creates and enables a DM driver, sends target positions in MIT mode, and finally deinitializes it. Target positions and gains must match the actual motor, load, and operating conditions.
Before running it, verify the motion conditions against the operating requirements for the applicable actuator and delivered version. See Motors API for command parameters.
Scope of the Robot example#
The minimal Robot example in the upstream README reads robots/rpo/robot.yaml, then calls initialization, refresh, read, and apply_action. Before using RP1, verify the robot configuration, joint mapping, and action input.
See Robot interface for the cache and vector conventions of RobotInterface.
RP Hand communication initialization#
The call sequence in the RP Hand quick start is: create an object with RP_Hand / canfd / RP_HAND_6DOF; call init_hand(False, False, 0.0); check health and degrees of freedom; finally call deinit_hand().
This path sends initialization configuration without requesting enable or homing. Check feedback updates and motion prerequisites separately afterward. See RP Hand for interface names and units.
Integration and simulation#
| Goal | Documentation | Prerequisites |
|---|---|---|
| Verify the SDK environment | Source checkout and build | Matching ROS 2 and build dependencies |
| Read the IMU cache | Minimal integration | Correct device, interface, and coordinate orientation |
| Understand single-motor commands | Motors | Matching driver/model, plus the separate motion-operation requirements |
| Train an RP1.3 policy | Training and resuming | A 24-action task and a complete Isaac Lab environment |
| Playback and export | Evaluation and export | Matching task and checkpoint |
| Check transfer to MuJoCo | Sim2Sim | A matching 24-action TorchScript policy |
| Integrate ROS messages | ROS 2 interfaces | The corresponding node and policy configuration |
The repository also contains a motion player, an arm keyframe player, and data collection scripts. Verify each tool's devices, configuration, and dependencies before use.
Android client#
roboparty_joystick is an Android control client. It primarily sends authentication, control, skill-action, and stop requests over UDP/BLE, and displays telemetry. Joint position and torque control use the corresponding SDK interfaces.
| Source interface | Purpose |
|---|---|
ControlChannel |
Connect, disconnect, control, stop, and destroy |
AuthPacket |
Request, challenge, signed response, and token result |
ControlPacket |
Normalized axis values, buttons, sequence number, and timestamp |
SkillActionPacket |
action_id, request_id, and action acknowledgments |
StopPacket |
Software stop request and acknowledgment |
After successful authentication, control packets carry a token. The action protocol distinguishes ACK1 (received) from ACK2 (completed). Check software stop acknowledgments and hardware stop state separately. Confirm the server version and control-command mappings before connecting.
BLE uses the dedicated connectBle(BluetoothDevice) method; the generic connect(host, port) does not apply to the BLE implementation. Integrate UDP and BLE according to their respective lifecycle and heartbeat implementations.
The toolchain files specify JDK 17, Android minSdk 28, and compile/target 34. The versionName on main is 1.0.1, but its commit differs from the v1.0.1 tag; record the actual APK version and corresponding commit when deploying.