RBQ API Overview
The RBQ API provides a comprehensive C++ interface for developers to control and interact with the RBQ quadruped robot. It is designed to support both low-level real-time control and high-level behavioral commands in a multi-process environment.
Process ID (Motion Ownership)
When creating an RBQ_API instance, a process ID must be provided:
RBQ_API api(20); // Process ID between 20 and 39 for user applicationsThis ID ensures safe multi-process control using a motion ownership mechanism, where each joint can only be controlled by its owner process.
CAUTION
Always call setMotionOwner() before sending joint commands. Joints without an owner process will not respond to control commands.
API Structure Summary
| Category | Component | Description |
|---|---|---|
| Control | Joint | Low-level joint control: position, torque, gains (Kp/Kd) |
startMoveJoint() / stopMoveJoint() | Start/stop jog motion per joint | |
lockUnlockJoint() | Locks/unlocks joints for manual manipulation | |
| Sensor | IMU | Access to orientation (quaternion/RPY), gyro, and acceleration |
getBatteryVoltage() | Reads battery voltage (internal only) | |
| Gamepad | Gamepad | Access Logitech F710 gamepad inputs: jogs, triggers, buttons |
| High-level Motion | motionStaticReady() / motionDynamicWalk() etc. | Predefined robot behaviors |
Joint Control API (RBQ_API::Joint)
Reading Sensor Values
| Function | Description |
|---|---|
getPos() | Read joint position (rad) |
getVel() | Read joint velocity (rad/s) |
getTorque() | Read joint torque (Nm) |
getGainKp() / getGainKd() | Read current Kp/Kd gains |
Sending Commands
| Function | Description |
|---|---|
setMotionOwner() | Take control of a joint |
setPosRef() | Set joint position target |
setTorqueRef() | Set torque target (Nm) |
setGainKp() / setGainKd() | Set control gains with quantization |
NOTE
Each joint must have an owner process assigned via setMotionOwner() before it can receive control commands.
IMU Sensor API (RBQ_API::IMU)
Provides access to robot orientation and motion state.
| Function | Output |
|---|---|
getQuaternion() | Orientation as Eigen quaternion (w, x, y, z) |
getRPY() | Roll, Pitch, Yaw (ZYX Euler angles, radians) |
getGyro() | Angular velocity in rad/s (X, Y, Z) |
getAcc() | Linear acceleration in m/s² (X, Y, Z) |
Gamepad API (RBQ_API::Gamepad)
Supports Logitech F710 (X mode) for teleoperation.
| Type | Function | Description |
|---|---|---|
| Joystick | getLeftJogX/Y(), getRightJogX/Y() | Range: [-1.0, 1.0] |
| Trigger | getLeftTrigger(), getRightTrigger() | Range: [0.0, 1.0] |
| Button | getButtonState(Button::X) | Returns true if pressed |
Built-in Motion Programs
Easily trigger predefined robot behaviors:
| Function | Description |
|---|---|
motionStaticReady() | Move to ready pose |
motionStaticGround() | Lie down to ground pose |
motionDynamicWalk() | Start dynamic walking |
motionDynamicRun() | Start dynamic running |
motionDynamicAim() | Aim pose for manipulation/vision |
motionDynamicStairs() | Stair climbing motion |
motionDynamicHealthCheck() | Diagnostic motion |
