CPP API Reference - S1 Machine
- GalbotRobot: Core robot control module. Use this for robot connection, lifecycle management, joint control, sensor data queries, and hardware state monitoring.
- GalbotMotion: Motion planning and execution module. Use this for Cartesian/joint space movements, trajectory planning, inverse kinematics, and whole-body control.
- GalbotNavigation: Mobile navigation module. Use this for mobile base localization, mapping, path planning, and autonomous movement.
- Types & Enums: Data structures, enums, and status types. Use this section to look up type definitions, sensor types, error codes, and state structures used by other modules.
GalbotRobot
Main robot control interface for Galbot humanoid robot.
This class provides a singleton interface for controlling the Galbot robot. It supports: Joint position and trajectory control End-effector control (grippers and suction cups) Mobile base velocity control Sensor data acquisition (IMU, cameras, LiDAR, ultrasonic) Coordinate frame transformations System lifecycle management Use GalbotRobot::get_instance(MachineType) to obtain a reference for a specific platform (G1/S1). All angles are in radians unless otherwise specified. All linear distances are in meters unless otherwise specified. All timestamps are in nanoseconds unless otherwise specified.
~GalbotRobot
init
virtual bool galbot::sdk::GalbotRobot::init(const std::unordered_set< SensorType > &enable_sensor_set={})=0
Initialize the robot control system.
Initializes the robot hardware communication, middleware, and sensor interfaces. To optimize resource usage, only sensors specified in the enable_sensor_set will be initialized and available for data reading.
This method should only be called once at program startup. Calling it multiple times without calling destroy() will not error, but only the first call has effect.
Parameters
| Name | Type | Description |
|---|---|---|
enable_sensor_set |
const std::unordered_set< SensorType > & | Set of sensors to enable. If empty, a default set of sensors will be enabled. Specify only required sensors to reduce computational overhead and memory consumption. |
Returns
| Type | Description |
|---|---|
| bool | true if initialization succeeded |
PublishTarget
Publish a raw target without waiting for a service response.
This is the lightweight high-frequency path for advanced users who want to construct a SingoriXTarget directly and send it through the WBC publish channel. The SDK performs only basic structural validation before publishing.
Parameters
| Name | Type | Description |
|---|---|---|
target |
const SingoriXTarget & | SDK mirror of singorix target data |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating local validation / publish result |
RequestTarget
virtual std::shared_ptr<ErrorInfo> galbot::sdk::GalbotRobot::RequestTarget(const SingoriXTarget &target)=0
Request execution of a raw target and receive the service response.
This is the request/service path for advanced users who want direct target control with request-side error screening and a returned error payload. The SDK uses the middleware default timeout configured by the underlying client.
Parameters
| Name | Type | Description |
|---|---|---|
target |
const SingoriXTarget & | SDK mirror of singorix target data |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< ErrorInfo > | Shared pointer to on local pre-check failure or service response. Returns nullptr when the client is unavailable, disconnected, times out, or returns an empty response. |
set_joint_commands
virtual ControlStatus galbot::sdk::GalbotRobot::set_joint_commands(
const std::vector< JointCommand > &joint_commands,
const std::vector< std::string > &joint_groups={},
const std::vector< std::string > &joint_names={},
const double time_from_start_s=10
) =0
Set low-level joint commands for high-frequency streaming control.
Suitable for high-frequency command streaming (for example, per-frame model inference output).
This API does not interpolate from the current/start position to the first target. The controller drives joints toward each commanded target as quickly as possible to satisfy time_from_start_s (expected arrival time).
For standard joints (head, legs, arms), only JointCommand::position is effective in current versions; velocity, acceleration, and effort are currently ignored.
For gripper joints, the position field represents gripper width and both velocity and effort fields are supported and effective. Gripper motion uses whichever is slower between the specified velocity and time_from_start_s. Therefore, when setting the gripper velocity, time_from_start_s can be set to 0 (fastest arrival), and the gripper will be controlled directly by the specified velocity.
Parameters
| Name | Type | Description |
|---|---|---|
joint_commands |
const std::vector< JointCommand > & | Vector of low-level joint commands. |
joint_groups |
const std::vector< std::string > & | Joint groups to control. Supported groups: legs, head, left_arm, right_arm, gripper, suction_cup. Empty vector defaults to all body joints (legs, head, left_arm, right_arm). |
joint_names |
const std::vector< std::string > & | Specific joint names to control. This parameter takes precedence over joint_groups. When provided, joint_groups is ignored. |
time_from_start_s |
const double | Expected arrival time (seconds) for the target command. |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission. |
Warning
Especially on the first command, avoid a large gap between current and target joint angles. Large jumps may cause excessively fast motion and safety risk.
set_joint_positions
virtual ControlStatus galbot::sdk::GalbotRobot::set_joint_positions(
const std::vector< double > &joint_positions,
const std::vector< std::string > &joint_groups={},
const std::vector< std::string > &joint_names={},
const bool is_blocking=true,
const double speed_rad_s=0.2,
const double timeout_s=15
) =0
Set target joint positions for specified joint groups by name (for low-frequency keyframe/posture transitions)
Commands the robot to move specified joints to target positions. The motion is executed as a smooth trajectory with configurable speed limits.
Parameters
| Name | Type | Description |
|---|---|---|
joint_positions |
const std::vector< double > & | Vector of target joint angles in radians. The order must match the joint ordering returned by get_joint_names() for the specified joint_groups or joint_names. |
joint_groups |
const std::vector< std::string > & | Joint group names to control. Supported groups: "legs", "head", "left_arm", "right_arm". Empty vector defaults to all body joints (legs, head, left_arm, right_arm). |
joint_names |
const std::vector< std::string > & | Specific joint names to control. This parameter takes precedence over joint_groups. When provided, joint_groups is ignored. |
is_blocking |
const bool | If true, blocks until motion completes or timeout occurs. If false, returns immediately after command is sent. |
speed_rad_s |
const double | Maximum joint angular velocity in radians per second (rad/s). Default: 0.2 rad/s. |
timeout_s |
const double | Maximum blocking wait time in seconds. Returns immediately upon timeout regardless of execution completion. Default: 15 seconds. |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the motion command |
Warning
This API is not suitable for high-frequency frame-by-frame model inference control. Each call creates a new interpolation goal, and continuous calls can cause lag or discontinuous motion. If your task is model-inference command streaming, use set_joint_commands or set_joint_commands_batch instead.
check_trajectory_execution_status
virtual std::vector<TrajectoryControlStatus> galbot::sdk::GalbotRobot::check_trajectory_execution_status(
std::vector< std::string > joint_groups
) =0
Get trajectory execution status for specified joint groups.
Queries the current execution status of trajectories for the specified joint groups. This is useful for monitoring trajectory progress in non-blocking execution mode.
Parameters
| Name | Type | Description |
|---|---|---|
joint_groups |
std::vector< std::string > | Vector of joint group names to query |
Returns
| Type | Description |
|---|---|
| std::vector< TrajectoryControlStatus > | Vector of TrajectoryControlStatus indicating execution state for each group |
execute_joint_trajectory
virtual ControlStatus galbot::sdk::GalbotRobot::execute_joint_trajectory(
Trajectory trajectory,
bool is_blocking=true
) =0
Execute a pre-planned joint trajectory.
Executes a trajectory consisting of waypoints with associated joint positions, velocities, and timing information. The trajectory controller interpolates between waypoints to generate smooth motion.
Parameters
| Name | Type | Description |
|---|---|---|
trajectory |
Trajectory | Trajectory data structure containing waypoints and timing |
is_blocking |
bool | If true, blocks until trajectory execution completes. If false, returns immediately after trajectory is submitted. |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of trajectory execution/submission |
Warning
For per-frame model inference output, prefer command streaming interfaces (set_joint_commands / set_joint_commands_batch) rather than repeatedly re-submitting full trajectories.
set_joint_commands_batch
virtual ControlStatus galbot::sdk::GalbotRobot::set_joint_commands_batch(const Trajectory &trajectory)=0
Set joint commands in batch mode (non-blocking)
Sets multiple joint command trajectory points in real-time control mode, supporting one-time submission of trajectory control commands for multiple time points. Provides a non-blocking high-frequency trajectory execution interface. Similar to set_joint_commands but supports batch trajectory control, suitable for scenarios such as VLA inference batch output.
Parameters
| Name | Type | Description |
|---|---|---|
trajectory |
const Trajectory & | Trajectory data structure containing waypoints with joint commands. Each TrajectoryPoint contains time_from_start and a list of JointCommand. JointCommand includes position (rad), velocity (rad/s), acceleration (rad/s²), effort (N·m), Kp (position gain), and Kd (velocity gain). |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command submission. Returns immediately without waiting for execution completion (non-blocking). |
set_gripper_command
virtual ControlStatus galbot::sdk::GalbotRobot::set_gripper_command(
const std::string &end_effector,
double width_m,
double velocity_mps=0.03,
double effort=30,
bool is_blocking=true
) =0
Control gripper opening width and force.
Commands the gripper to move to a specified opening width with controlled velocity and maximum gripping force.
Parameters
| Name | Type | Description |
|---|---|---|
end_effector |
const std::string & | Joint group name specifying which gripper to control (e.g., "left_gripper", "right_gripper") |
width_m |
double | Target gripper opening width in meters (m), measured between the inner surfaces of the gripper fingers. |
velocity_mps |
double | Gripper closing/opening velocity in meters per second (m/s). Default: 0.03 m/s. |
effort |
double | Maximum gripping force in Newton-meters (N·m). This limits the torque applied to prevent damage to grasped objects. Default: 30 N·m. |
is_blocking |
bool | If true, blocks until gripper reaches target position or times out. If false, returns immediately after command is sent. |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of gripper command |
get_gripper_state
virtual std::shared_ptr<GripperState> galbot::sdk::GalbotRobot::get_gripper_state(
const std::string &end_effector
) =0
Get current gripper state.
Retrieves the current state of the specified gripper, including position, velocity, force, and motion-state estimation.
GripperState::is_moving is window-based: if no effective width change is detected within the internal time window, is_moving becomes false.
Parameters
| Name | Type | Description |
|---|---|---|
end_effector |
const std::string & | Joint group name specifying which gripper to query (e.g., "left_gripper", "right_gripper") |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< GripperState > | Shared pointer to , or nullptr if retrieval fails |
get_dexhand_state
virtual ControlStatus galbot::sdk::GalbotRobot::get_dexhand_state(
const std::string &end_effector,
DexhandState &dexhand_state,
DexHandType dexhand_type=DexHandType::INSPIRE
) =0
Get current dexterous hand (dexhand) state.
Retrieves dexhand feedback into dexhand_state. For INSPIRE and BRAINCO, only dexhand_state.joint_state is filled and force_sensor_map is empty. For SHARPA, fills full joint state plus named force sensor data when available.
Parameters
| Name | Type | Description |
|---|---|---|
end_effector |
const std::string & | Joint group name specifying which dexhand to query (e.g., "left_dexhand", "right_dexhand") |
dexhand_state |
DexhandState & | Output dexhand state (joint_state and optional force_sensor_map) |
dexhand_type |
DexHandType | Dexterous hand model type (INSPIRE, BRAINCO, or SHARPA) |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure |
set_dexhand_command
virtual ControlStatus galbot::sdk::GalbotRobot::set_dexhand_command(
const std::string &end_effector,
const std::vector< JointCommand > &dexhand_command,
DexHandType dexhand_type=DexHandType::INSPIRE,
bool is_blocking=true
) =0
Control dexhand with joint commands.
Commands the dexhand with a vector of joint commands (position, velocity, effort, etc.).
Parameters
| Name | Type | Description |
|---|---|---|
end_effector |
const std::string & | Joint group name specifying which dexhand to control (e.g., "left_dexhand", "right_dexhand") |
dexhand_command |
const std::vector< JointCommand > & | Vector of joint commands for each dexhand joint inspire: [position, velocity, acceleration, effort] range [0-1000, 0-1000, , 0-1000] brainco: [position, velocity, acceleration, effort] range [0-100, -100-100, , ] sharpa: 22 joint commands, [position, velocity, acceleration, effort] |
dexhand_type |
DexHandType | Dexterous hand model type. |
is_blocking |
bool | If true, blocks until the hand reaches target position or times out. |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
get_joint_positions
virtual std::vector<double> galbot::sdk::GalbotRobot::get_joint_positions(
const std::vector< std::string > &joint_groups,
const std::vector< std::string > &joint_names
) =0
Get current joint positions by group name.
Retrieves the current angular positions of joints in the specified groups. The returned vector order matches the joint ordering from get_joint_names().
Parameters
| Name | Type | Description |
|---|---|---|
joint_groups |
const std::vector< std::string > & | Joint group names to query. Empty vector retrieves all body joints. |
joint_names |
const std::vector< std::string > & | Specific joint names to query. This parameter takes precedence over joint_groups. When provided, joint_groups is ignored. |
Returns
| Type | Description |
|---|---|
| std::vector< double > | Vector of current joint angles in radians |
get_joint_group_names
Get available joint group names for the robot.
Retrieves all joint group names defined in the robot's kinematic configuration. This is useful for discovering available control groups at runtime.
Returns
| Type | Description |
|---|---|
| std::vector< std::string > | Vector of joint group names, or empty vector if retrieval fails |
get_joint_names
virtual std::vector<std::string> galbot::sdk::GalbotRobot::get_joint_names(
bool only_active_joint=true,
const std::vector< std::string > &joint_groups={}
) =0
Get robot joint names by group name.
Retrieves the names of joints belonging to specified joint groups. This is useful for determining the correct ordering when setting joint positions.
Parameters
| Name | Type | Description |
|---|---|---|
only_active_joint |
bool | If true, returns only actuated joints (excludes passive/fixed joints). If false, returns all joints including passive ones. |
joint_groups |
const std::vector< std::string > & | Joint group names to query. Empty vector retrieves joints from all groups. |
Returns
| Type | Description |
|---|---|
| std::vector< std::string > | Vector of joint names in kinematic chain order |
get_joint_states
virtual std::vector<JointState> galbot::sdk::GalbotRobot::get_joint_states(
const std::vector< std::string > &joint_group_vec,
const std::vector< std::string > &joint_names_vec={}
) =0
Get real-time joint states by group name.
Retrieves comprehensive state information for specified joints, including position, velocity, acceleration, effort (torque), and other feedback data.
Parameters
| Name | Type | Description |
|---|---|---|
joint_group_vec |
const std::vector< std::string > & | Joint group names to query. Empty vector defaults to all body joints. |
joint_names_vec |
const std::vector< std::string > & | Specific joint names to query. This parameter takes precedence over joint_group_vec. When provided, joint_group_vec is ignored. |
Returns
| Type | Description |
|---|---|
| std::vector< JointState > | Vector of structures containing current state for each joint |
set_base_velocity
virtual ControlStatus galbot::sdk::GalbotRobot::set_base_velocity(
const std::array< double, 3 > &linear_velocity,
const std::array< double, 3 > &angular_velocity,
double duration_s=0.0
) =0
Set mobile base velocity command.
Commands the robot's mobile base to move with specified linear and angular velocities. Velocities are expressed in the robot's base frame coordinate system.
Parameters
| Name | Type | Description |
|---|---|---|
linear_velocity |
const std::array< double, 3 > & | Linear velocity in meters per second (m/s), expressed in base frame. Order: {vx, vy, vz} where: vx: forward/backward velocity (positive forward) vy: left/right velocity (positive left) vz: up/down velocity (typically 0 for ground robots) |
angular_velocity |
const std::array< double, 3 > & | Angular velocity in radians per second (rad/s), expressed in base frame. Order: {wx, wy, wz} where: wx: roll rate (rotation about x-axis) wy: pitch rate (rotation about y-axis) wz: yaw rate (rotation about z-axis, positive counter-clockwise) |
duration_s |
double | Duration in seconds to maintain the velocity command before auto-stop. If <= 0, the command behaves as legacy mode (no automatic stop). |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
set_base_pose
virtual ControlStatus galbot::sdk::GalbotRobot::set_base_pose(
const Pose &base_pose,
bool is_blocking=true,
double timeout_s=15.0
) =0
Set mobile base pose command.
Commands the robot's mobile base to move to a specified pose in its reference frame. This uses the chassis pose controller (CHASSIS_POSE_CTRL). Use this overload when a full 3D pose (position + quaternion orientation) is already available.
Parameters
| Name | Type | Description |
|---|---|---|
base_pose |
const Pose & | Target base pose [x, y, z, qx, qy, qz, qw] |
is_blocking |
bool | If true, waits for controller response; if false, returns immediately after request |
timeout_s |
double | Timeout for blocking request (seconds) |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
set_base_pose
virtual ControlStatus galbot::sdk::GalbotRobot::set_base_pose(
double x,
double y,
double yaw,
const std::string &frame_id="odom",
const std::string &reference_frame_id="odom",
bool is_blocking=true,
double timeout_s=15.0
) =0
Set mobile base pose (x, y, yaw) with selectable frames.
Use this overload for planar 2D goal commands defined by x/y/yaw in the selected frame.
Parameters
| Name | Type | Description |
|---|---|---|
x |
double | Target x position (meters) |
y |
double | Target y position (meters) |
yaw |
double | Target yaw (radians) |
frame_id |
const std::string & | Frame id of target. Options: "base_link" / "odom" / "map". Default: "odom" |
reference_frame_id |
const std::string & | Reference frame id. Options: "odom" / "map" |
is_blocking |
bool | If true, waits for controller response; if false, returns immediately after request |
timeout_s |
double | Timeout for blocking request (seconds) |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
set_base_pose
virtual ControlStatus galbot::sdk::GalbotRobot::set_base_pose(
double x,
double y,
double yaw,
const std::string &frame_id,
const std::string &reference_frame_id,
double time_from_start_s,
bool is_blocking=true,
double timeout_s=15.0
) =0
Set mobile base pose (x, y, yaw) with explicit interpolation time.
Use this overload when arrival timing must be coordinated through time_from_start_s.
Parameters
| Name | Type | Description |
|---|---|---|
x |
double | Target x position (meters) |
y |
double | Target y position (meters) |
yaw |
double | Target yaw (radians) |
frame_id |
const std::string & | Frame id of target. Options: "base_link" / "odom" / "map". |
reference_frame_id |
const std::string & | Reference frame id. Options: "odom" / "map" |
time_from_start_s |
double | Chassis pose interpolation time (seconds) |
is_blocking |
bool | If true, waits for controller response; if false, returns immediately after request |
timeout_s |
double | Request timeout (seconds) |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
set_end_effector_command
virtual ControlStatus galbot::sdk::GalbotRobot::set_end_effector_command(
const std::vector< std::vector< double >> &poses,
const std::vector< std::string > &end_effector_frames,
const std::vector< std::string > &reference_frames={},
double time_from_start_s=0.0
) =0
Set WBC end-effector pose commands (task trajectory publish).
Each row of poses is [x, y, z, qx, qy, qz, qw] (meters, quaternion xyzw). poses and end_effector_frames must have equal length.
Parameters
| Name | Type | Description |
|---|---|---|
poses |
const std::vector< std::vector< double >> & | Row-major poses: one vector per end effector, seven values each. |
end_effector_frames |
const std::vector< std::string > & | Target frame names (e.g. link names). |
reference_frames |
const std::vector< std::string > & | Optional; per-pose reference frame id. If omitted or empty, every pose uses "world". Typical values: "world" (default). Length must match poses when non-empty. |
time_from_start_s |
double | Time from trajectory start (seconds); default 0.0. |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
clear_end_effector_command
Clear WBC end-effector task commands.
Clears published end-effector task trajectory commands for the WBC channel.
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
get_wbc_end_effector_poses
virtual std::unordered_map<std::string, std::vector<double> > galbot::sdk::GalbotRobot::get_wbc_end_effector_poses() =0
Get WBC end effector poses.
Retrieves the current poses of WBC end effectors (left arm, right arm, head).
Returns
| Type | Description |
|---|---|
| std::unordered_map< std::string, std::vector< double > > | Dictionary-style map containing: - "lee_pose": [x, y, z, qx, qy, qz, qw] for left arm end effector - "ree_pose": [x, y, z, qx, qy, qz, qw] for right arm end effector - "head_pose": [x, y, z, qx, qy, qz, qw] for head Returns empty entries or partial data on failure or missing keys. |
stop_base
Emergency stop mobile base movement.
Immediately commands the mobile base to stop all motion. This is a safety function that should be used when immediate cessation of base motion is required.
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
zero_whole_body_and_base
virtual std::pair<MotionStatus, ControlStatus> galbot::sdk::GalbotRobot::zero_whole_body_and_base(
const Pose &base_zero_pose,
bool is_blocking=true,
double leg_head_speed_rad_s=0.2,
double leg_head_timeout_s=15.0,
std::shared_ptr< Parameter > params=nullptr
) =0
One-key zero: move whole-body joints to zero and base to zero pose.
This calls move_whole_body_joint_zero for joint zeroing, and commands the base pose to zero. If params is nullptr, default_param is used.
Parameters
| Name | Type | Description |
|---|---|---|
base_zero_pose |
const Pose & | Target base zero pose [x, y, z, qx, qy, qz, qw] |
is_blocking |
bool | Whether to block on joint zeroing |
leg_head_speed_rad_s |
double | Max joint speed for leg/head direct control (rad/s) |
leg_head_timeout_s |
double | Timeout for leg/head direct control (seconds) |
params |
std::shared_ptr< Parameter > | Motion planning parameters (nullptr uses default_param) |
Returns
| Type | Description |
|---|---|
| std::pair< MotionStatus, ControlStatus > | Pair of (MotionStatus for joints, ControlStatus for base) |
zero_whole_body_and_base
virtual std::pair<MotionStatus, ControlStatus> galbot::sdk::GalbotRobot::zero_whole_body_and_base(
const std::string &frame_id="odom",
const std::string &reference_frame_id="odom",
bool is_blocking=true,
double leg_head_speed_rad_s=0.2,
double leg_head_timeout_s=15.0,
std::shared_ptr< Parameter > params=nullptr
) =0
One-key zero: move whole-body joints to zero and base (x,y,yaw) to zero with selectable frames.
Parameters
| Name | Type | Description |
|---|---|---|
frame_id |
const std::string & | Frame id of target. Options: "base_link" / "odom" / "map". Default "odom". |
reference_frame_id |
const std::string & | Reference frame id. Options: "odom" / "map" |
is_blocking |
bool | Whether to block on joint zeroing |
leg_head_speed_rad_s |
double | Max joint speed for leg/head direct control (rad/s) |
leg_head_timeout_s |
double | Timeout for leg/head direct control (seconds) |
params |
std::shared_ptr< Parameter > | Motion planning parameters (nullptr uses default_param) |
Returns
| Type | Description |
|---|---|
| std::pair< MotionStatus, ControlStatus > | Pair of (MotionStatus for joints, ControlStatus for base) |
stop_trajectory_execution
Stop all currently executing joint trajectories.
Immediately halts execution of all active joint trajectories across all joint groups. Joints will maintain their current positions after stopping.
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of command transmission |
reload_controller
virtual ControlStatus galbot::sdk::GalbotRobot::reload_controller(const std::string &group_name="all")=0
Reload a controller.
Reinitializes the controller. Equivalent to a full restart cycle: stop -> reset -> start. Useful for error recovery or applying configuration changes.
Parameters
| Name | Type | Description |
|---|---|---|
group_name |
const std::string & | Name of the joint group to reload. Supported groups: chassis, legs, head, left_arm, right_arm, gripper, or "all" to reload all controllers (default). |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the reload operation |
switch_controller
virtual ControlStatus galbot::sdk::GalbotRobot::switch_controller(const std::string &controller_name)=0
Switch active controller strategy.
Transitions hardware control to a new strategy. Operation sequence: stop(old) -> release(old) -> acquire(new) -> start(new).
Parameters
| Name | Type | Description |
|---|---|---|
controller_name |
const std::string & | Controller name string, for example "CHASSIS_POSE_CTRL". |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the switch operation. |
get_active_controller
virtual std::string galbot::sdk::GalbotRobot::get_active_controller(const std::string &group_name)=0
Get active controller name for specified joint group.
Parameters
| Name | Type | Description |
|---|---|---|
group_name |
const std::string & | Name of the joint group to query. |
Returns
| Type | Description |
|---|---|
| std::string | std::string Name of the active controller. |
acquire_controller
virtual ControlStatus galbot::sdk::GalbotRobot::acquire_controller(const std::string &controller_name)=0
Acquire hardware authority.
Designates the controller to take ownership of the hardware. Opposite of release_controller. Controller must still be started to begin execution.
Parameters
| Name | Type | Description |
|---|---|---|
controller_name |
const std::string & | Controller name string, for example "LEFT_ARM_PVT_CTRL". |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the acquire operation. |
release_controller
virtual ControlStatus galbot::sdk::GalbotRobot::release_controller(const std::string &group_name="all")=0
Release hardware authority.
Yields control of the hardware, freeing the joints. Opposite of acquire_controller. Implicitly stops execution if running.
Parameters
| Name | Type | Description |
|---|---|---|
group_name |
const std::string & | Name of the joint group to release. Supported groups: chassis, legs, head, left_arm, right_arm, gripper, or "all" to release all controllers (default). |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the release operation |
start_controller
virtual ControlStatus galbot::sdk::GalbotRobot::start_controller(const std::string &group_name="all")=0
Start controller execution.
Activates the controller to begin sending commands. Opposite of stop_controller. Requires prior hardware authority (acquire).
Parameters
| Name | Type | Description |
|---|---|---|
group_name |
const std::string & | Name of the joint group to start. Supported groups: chassis, legs, head, left_arm, right_arm, gripper, or "all" to start all controllers (default). |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the start operation |
stop_controller
virtual ControlStatus galbot::sdk::GalbotRobot::stop_controller(const std::string &group_name="all")=0
Stop controller execution.
Halts command execution but retains hardware authority. Opposite of start_controller.
Parameters
| Name | Type | Description |
|---|---|---|
group_name |
const std::string & | Name of the joint group to stop. Supported groups: chassis, legs, head, left_arm, right_arm, gripper, or "all" to stop all controllers (default). |
Returns
| Type | Description |
|---|---|
| ControlStatus | ControlStatus indicating success or failure of the stop operation |
get_imu_data
Get IMU (Inertial Measurement Unit) sensor data.
Retrieves the latest IMU measurements including linear acceleration, angular velocity, and orientation estimation.
Parameters
| Name | Type | Description |
|---|---|---|
imu_type |
SensorType | SensorType enumeration specifying which IMU to query |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< ImuData > | Shared pointer to structure, or nullptr if sensor is not enabled or data retrieval fails |
Note
The IMU sensor must be enabled during initialization via enable_sensor_set
Note
Acceleration is in meters per second squared (m/s²)
Note
Angular velocity is in radians per second (rad/s)
get_odom
Get robot odometry information.
Retrieves the robot's current pose and velocity estimates from the odometry system. Odometry typically fuses wheel encoders, IMU, and other proprioceptive sensors.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< OdomData > | Shared pointer to containing: - Position in meters (m) relative to odometry frame origin - Orientation as quaternion - Linear velocity in meters per second (m/s) - Angular velocity in radians per second (rad/s) - Timestamp in nanoseconds Returns nullptr if odometry is unavailable. |
get_device_information
Get device information.
Retrieves basic device information including device model, serial number, firmware version, hardware version, and manufacturer. This information is used for device management, version control, system diagnostics, and device identification.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< DeviceInfo > | Shared pointer to structure containing: - model: Device model name or identifier - serial_number: Unique serial number for device identification - firmware_version: System firmware version string - hardware_version: Hardware version or revision number - manufacturer: Manufacturer name or company identifier Returns nullptr if device information retrieval fails. |
get_rgb_data
virtual std::shared_ptr<RgbData> galbot::sdk::GalbotRobot::get_rgb_data(const SensorType rgb_camera)=0
Get latest RGB image from specified camera.
Retrieves the most recent color image captured by the specified RGB camera.
Parameters
| Name | Type | Description |
|---|---|---|
rgb_camera |
const SensorType | SensorType enumeration specifying which RGB camera to query |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< RgbData > | Shared pointer to containing image buffer, dimensions, encoding, and timestamp. Returns nullptr if camera is not enabled or data retrieval fails. |
Note
The camera sensor must be enabled during initialization via enable_sensor_set
get_depth_data
virtual std::shared_ptr<DepthData> galbot::sdk::GalbotRobot::get_depth_data(const SensorType depth_camera)=0
Get latest depth image from specified camera.
Retrieves the most recent depth image captured by the specified depth camera. Depth values typically represent distance from the camera sensor.
Parameters
| Name | Type | Description |
|---|---|---|
depth_camera |
const SensorType | SensorType enumeration specifying which depth camera to query |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< DepthData > | Shared pointer to containing depth image buffer, dimensions, encoding, and timestamp. Returns nullptr if camera is not enabled or data retrieval fails. |
Note
The camera sensor must be enabled during initialization via enable_sensor_set
Note
Depth values are typically in millimeters (mm) or meters (m) depending on sensor
get_lidar_data
virtual std::shared_ptr<LidarData> galbot::sdk::GalbotRobot::get_lidar_data(const SensorType lidar)=0
Get latest LiDAR point cloud data.
Retrieves the most recent 3D point cloud captured by the specified LiDAR sensor. Each point typically contains (x, y, z) coordinates and optional intensity values.
Parameters
| Name | Type | Description |
|---|---|---|
lidar |
const SensorType | SensorType enumeration specifying which LiDAR to query |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< LidarData > | Shared pointer to (PointCloud2 format) containing point cloud with coordinates in meters (m) relative to the LiDAR frame. Returns nullptr if LiDAR is not enabled or data retrieval fails. |
Note
The LiDAR sensor must be enabled during initialization via enable_sensor_set
get_camera_intrinsic
virtual std::shared_ptr<CameraInfo> galbot::sdk::GalbotRobot::get_camera_intrinsic(const SensorType camera)=0
Get camera intrinsic parameters.
Retrieves the intrinsic parameters of the specified camera, including focal lengths, principal points, and distortion coefficients, etc.
Parameters
| Name | Type | Description |
|---|---|---|
camera |
const SensorType | SensorType enumeration specifying which camera to query |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< CameraInfo > | Shared pointer to containing: - focal_length_x, focal_length_y: Focal lengths in pixels - principal_point_x, principal_point_y: Principal point coordinates in pixels - distortion_coeffs: Vector of distortion coefficients (e.g., k1, k2, p1, p2, k3) - more camera-specific parameters as needed Returns nullptr if camera is not enabled or data retrieval fails. |
Note
The camera sensor must be enabled during initialization via enable_sensor_set
get_transform
virtual std::pair<std::vector<double>, int64_t> galbot::sdk::GalbotRobot::get_transform(
const std::string &target_frame,
const std::string &source_frame,
int64_t timestamp_ns=0,
int64_t timeout_ms=100
) =0
Query coordinate frame transformation (TF)
Queries the transformation between two coordinate frames in the robot's TF tree. This is used for converting poses and positions between different reference frames (e.g., from camera frame to base frame, from end-effector to world frame).
Parameters
| Name | Type | Description |
|---|---|---|
target_frame |
const std::string & | Name of the target coordinate frame (frame to transform into) |
source_frame |
const std::string & | Name of the source coordinate frame (frame to transform from) |
timestamp_ns |
int64_t | Desired transform timestamp in nanoseconds. Pass 0 to get the most recent available transformation. |
timeout_ms |
int64_t | Maximum time to wait for the transform in milliseconds. Default: 100 milliseconds. |
Returns
| Type | Description |
|---|---|
| std::pair< std::vector< double >, int64_t > | Pair containing: - Vector of 7 doubles representing the transform [x, y, z, qx, qy, qz, qw] where (x, y, z) is translation in meters and (qx, qy, qz, qw) is orientation quaternion - Timestamp in nanoseconds when the transform was valid Returns empty vector and timestamp 0 if retrieval fails or times out. |
get_frame_names
Get all available coordinate frame names in the TF tree.
Returns
| Type | Description |
|---|---|
| std::vector< std::string > | std::vector |
get_sensor_extrinsic
virtual std::pair<std::vector<double>, int64_t> galbot::sdk::GalbotRobot::get_sensor_extrinsic(
const SensorType sensor_id,
const std::string &reference_frame="base_link"
) =0
Get sensor extrinsic parameters.
Retrieves the extrinsic parameters of the specified sensor, including rotation and translation vectors relative to the robot's base frame.
Parameters
| Name | Type | Description |
|---|---|---|
sensor_id |
const SensorType | SensorType enumeration specifying which sensor to query |
reference_frame |
const std::string & | Name of the reference coordinate frame (frame to transform from). Default is "base_link". |
Returns
| Type | Description |
|---|---|
| std::pair< std::vector< double >, int64_t > | Pair containing: - Vector of 7 doubles representing the transform [x, y, z, qx, qy, qz, qw] where (x, y, z) is translation in meters and (qx, qy, qz, qw) is orientation quaternion - Timestamp in nanoseconds when the transform was valid Returns empty vector and timestamp 0 if retrieval fails. |
Note
The sensor must be enabled during initialization via enable_sensor_set
is_running
Check if the robot control system is running.
Queries whether the robot control system is still active or if a shutdown signal (e.g., SIGINT, SIGTERM) has been received.
Returns
| Type | Description |
|---|---|
| bool | true if system is running normally |
request_shutdown
Request system shutdown.
Sends a shutdown signal to initiate graceful system shutdown. This triggers registered exit callbacks and begins resource cleanup. Call this as the first step of the shutdown sequence: request_shutdown() -> wait_for_shutdown() -> destroy().
wait_for_shutdown
Block until shutdown is complete.
Blocks the calling thread until all modules have finished shutting down gracefully. This is the second step of the shutdown sequence, after request_shutdown() and before destroy().
Note
This function will return when is_running() becomes false
destroy
Clean up system resources.
Performs final cleanup of robot control system resources including middleware connections, sensor interfaces, and communication channels. This is the last step of the shutdown sequence: request_shutdown() -> wait_for_shutdown() -> destroy().
This method should only be called once at program exit. After destroy(), the SDK enters a terminal state and cannot be re-initialized in the same process. To use the SDK again, exit the current process and launch a new one.
register_exit_callback
virtual void galbot::sdk::GalbotRobot::register_exit_callback(std::function< void()> exit_function)=0
Register callback function for shutdown event.
Registers a user-defined callback function that will be invoked when a shutdown signal is received. Multiple callbacks can be registered and will be executed in registration order.
Parameters
| Name | Type | Description |
|---|---|---|
exit_function |
std::function< void()> | Callback function with signature void() to be executed during shutdown. Use this to perform application-specific cleanup (e.g., saving data, stopping threads). |
Note
Callbacks should complete quickly to avoid delaying shutdown
get_log_information
virtual std::shared_ptr<LogInfo> galbot::sdk::GalbotRobot::get_log_information(
uint64 timewindow_s,
LogLevel log_level
) =0
Get log information.
Parameters
| Name | Type | Description |
|---|---|---|
timewindow_s |
uint64 | |
log_level |
LogLevel |
Returns
| Type | Description |
|---|---|
| std::shared_ptr< LogInfo > | Shared pointer to containing log information |
get_instance
Runtime factory for selecting a concrete robot singleton.
Parameters
| Name | Type | Description |
|---|---|---|
m |
MachineType | Machine type identifier (e.g. MachineType::G1, MachineType::S1). |
Returns
| Type | Description |
|---|---|
| GalbotRobot & | Reference to the singleton robot interface for the specified machine type. |
GalbotMotion
Unified motion planning and control interface for Galbot robots.
This interface provides a comprehensive API for robot motion control, including: Forward and inverse kinematics computation Single-chain and multi-chain trajectory planning Collision detection (self-collision and environment) Tool and obstacle management Whole-body coordinated motion planning Use GalbotMotion::get_instance(MachineType) to obtain a reference for a specific platform (G1/S1). All angular units are radians, linear units are meters (SI standard). Quaternions must be unit-normalized: sqrt(x² + y² + z² + w²) = 1.
~GalbotMotion
init
Initialize motion planning system and communication interfaces.
Must be called before any other API functions. Initializes internal communication middleware, loads robot kinematic models, and establishes connections to control services.
Returns
| Type | Description |
|---|---|
| bool | true if initialization succeeds |
Note
Safe to call multiple times; subsequent calls after successful init are no-ops.
Warning
All other API calls will fail if init() returns false.
is_valid
Check if the motion interface is properly initialized and operational.
Returns
| Type | Description |
|---|---|
| bool | true if object is valid and ready for use |
Note
Should be checked before critical operations if init status is uncertain.
forward_kinematics
virtual std::tuple<MotionStatus, std::vector<double> > galbot::sdk::GalbotMotion::forward_kinematics(
const std::string &target_frame,
const std::string &reference_frame="base_link",
const std::unordered_map< std::string, std::vector< double >> &joint_state={},
std::shared_ptr< Parameter > params=default_param
) =0
Compute forward kinematics for a target link.
Calculates the Cartesian pose of a specified link given joint configurations. Useful for determining end-effector positions, validating configurations, or computing intermediate link poses.
Parameters
| Name | Type | Description |
|---|---|---|
target_frame |
const std::string & | Name of the link whose pose is to be computed (e.g., "left_ee_link", "camera_link") |
reference_frame |
const std::string & | Coordinate frame for pose expression (default: "base_link") |
joint_state |
const std::unordered_map< std::string, std::vector< double >> & | Joint configurations by chain: {chain_name -> joint_angles}. Empty map uses current robot joint state. |
params |
std::shared_ptr< Parameter > | Planning parameters (collision checking, timeout, etc.) |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::vector< double > > | Tuple of (status, pose_vector): - status: MotionStatus::SUCCESS on success, error code otherwise - pose_vector: [x, y, z, qx, qy, qz, qw] (meters, quaternion) or empty on failure |
Note
Joint angles in radians, output pose in meters with unit quaternion.
Warning
target_frame must be a valid link in the URDF model.
forward_kinematics_by_state
virtual std::tuple<MotionStatus, std::vector<double> > galbot::sdk::GalbotMotion::forward_kinematics_by_state(
const std::string &target_frame,
const std::shared_ptr< RobotStates > &reference_robot_states=nullptr,
const std::string &reference_frame="base_link",
std::shared_ptr< Parameter > params=default_param
) =0
Compute forward kinematics using complete robot state.
Similar to forward_kinematics(), but accepts a RobotStates object for specifying the complete robot configuration (whole-body joints + base pose).
Parameters
| Name | Type | Description |
|---|---|---|
target_frame |
const std::string & | Link name for pose computation |
reference_robot_states |
const std::shared_ptr< RobotStates > & | Complete robot state; nullptr uses current robot state |
reference_frame |
const std::string & | Coordinate frame for pose expression (default: "base_link") |
params |
std::shared_ptr< Parameter > | Planning parameters |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::vector< double > > | Tuple of (status, pose_vector): - status: MotionStatus::SUCCESS on success, error code otherwise - pose_vector: [x, y, z, qx, qy, qz, qw] (meters, quaternion) or empty on failure |
Note
Useful when computing FK for hypothetical states without modifying current robot state.
inverse_kinematics
virtual std::tuple<MotionStatus, std::unordered_map<std::string, std::vector<double> > > galbot::sdk::GalbotMotion::inverse_kinematics(
const std::vector< double > &target_pose,
const std::vector< std::string > &chain_names,
const std::string &target_frame="EndEffector",
const std::string &reference_frame="base_link",
const std::unordered_map< std::string, std::vector< double >> &initial_joint_positions={},
const bool &enable_collision_check=true,
std::shared_ptr< Parameter > params=default_param
) =0
Compute inverse kinematics for target Cartesian pose.
Solves for joint configurations that achieve the specified end-effector pose. Supports single-chain IK (arm only) or coordinated multi-chain IK (arm + torso/legs).
Parameters
| Name | Type | Description |
|---|---|---|
target_pose |
const std::vector< double > & | Target Cartesian pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) |
chain_names |
const std::vector< std::string > & | Kinematic chains to coordinate (e.g., {"left_arm"}, {"right_arm", "torso"}) |
target_frame |
const std::string & | Frame on chain for pose target (e.g., "EndEffector", "Tool") |
reference_frame |
const std::string & | Coordinate frame for pose specification (default: "base_link") |
initial_joint_positions |
const std::unordered_map< std::string, std::vector< double >> & | Seed configurations by chain: {chain_name -> joint_angles}. Empty map uses current robot state as seed. |
enable_collision_check |
const bool & | If true, only returns collision-free solutions |
params |
std::shared_ptr< Parameter > | Planning parameters (timeout, actuation type, etc.) |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::unordered_map< std::string, std::vector< double > > > | Tuple of (status, solution_map): - status: MotionStatus::SUCCESS if solvable, error code otherwise - solution_map: {chain_name -> joint_angles} (radians) for each chain, empty on failure |
Note
IK may have multiple solutions; returns first valid solution found.
Note
Seed configuration affects convergence speed and which solution is returned.
Warning
No solution guaranteed if target is outside workspace or in singular configuration.
inverse_kinematics_by_state
virtual std::tuple<MotionStatus, std::unordered_map<std::string, std::vector<double> > > galbot::sdk::GalbotMotion::inverse_kinematics_by_state(
const std::vector< double > &target_pose,
const std::vector< std::string > &chain_names,
const std::string &target_frame="EndEffector",
const std::string &reference_frame="base_link",
const std::shared_ptr< RobotStates > &reference_robot_states=nullptr,
const bool &enable_collision_check=true,
std::shared_ptr< Parameter > params=default_param
) =0
Compute inverse kinematics using complete robot state as seed.
Similar to inverse_kinematics(), but accepts RobotStates for specifying the seed configuration, allowing precise control over the entire robot state.
Parameters
| Name | Type | Description |
|---|---|---|
target_pose |
const std::vector< double > & | Target Cartesian pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) |
chain_names |
const std::vector< std::string > & | Kinematic chains to coordinate |
target_frame |
const std::string & | Frame on chain for pose target (e.g., "EndEffector", "Tool") |
reference_frame |
const std::string & | Coordinate frame for pose specification (default: "base_link") |
reference_robot_states |
const std::shared_ptr< RobotStates > & | Complete robot state as IK seed; nullptr uses current state |
enable_collision_check |
const bool & | If true, only returns collision-free solutions |
params |
std::shared_ptr< Parameter > | Planning parameters |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::unordered_map< std::string, std::vector< double > > > | Tuple of (status, solution_map): - status: MotionStatus::SUCCESS if solvable, error code otherwise - solution_map: {chain_name -> joint_angles} (radians), empty on failure |
Note
Useful for offline planning with hypothetical robot states.
get_end_effector_pose
virtual std::tuple<MotionStatus, std::vector<double> > galbot::sdk::GalbotMotion::get_end_effector_pose(
const std::string &end_effector_frame,
const std::string &reference_frame="base_link"
) =0
Get current end-effector pose from robot state.
Queries the TF (Transform) tree to retrieve the current Cartesian pose of a specified end-effector link. Requires the link to be defined in the robot's URDF model.
Parameters
| Name | Type | Description |
|---|---|---|
end_effector_frame |
const std::string & | Name of end-effector link (must exist in URDF, e.g., "left_ee_link") |
reference_frame |
const std::string & | Coordinate frame for pose expression (default: "base_link") |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::vector< double > > | Tuple of (status, pose_vector): - status: MotionStatus::SUCCESS on success, error codes: DATA_FETCH_FAILED: TF lookup failed INVALID_INPUT: Invalid frame names - pose_vector: [x, y, z, qx, qy, qz, qw] (meters, quaternion) or empty on failure - DATA_FETCH_FAILED: TF lookup failed - INVALID_INPUT: Invalid frame names |
Note
Reflects the current actual robot state (not planned state).
Warning
Requires TF tree to be properly published and up-to-date.
get_end_effector_pose_on_chain
virtual std::tuple<MotionStatus, std::vector<double> > galbot::sdk::GalbotMotion::get_end_effector_pose_on_chain(
const std::string &chain_name,
const std::string frame_id="EndEffector",
const std::string &reference_frame="base_link"
) =0
Get current end-effector pose for a specific kinematic chain.
Convenience method for retrieving end-effector pose by chain name and frame type, without needing to know the exact link name in URDF.
Parameters
| Name | Type | Description |
|---|---|---|
chain_name |
const std::string & | Kinematic chain identifier (e.g., "left_arm", "right_arm") |
frame_id |
const std::string | End-effector frame type: "EndEffector" (flange), "Camera", etc. |
reference_frame |
const std::string & | Coordinate frame for pose expression (default: "base_link") |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::vector< double > > | Tuple of (status, pose_vector): - status: MotionStatus::SUCCESS on success, error code otherwise - pose_vector: [x, y, z, qx, qy, qz, qw] (meters, quaternion) or empty on failure |
Note
Internally maps chain_name + frame_id to actual URDF link name.
set_end_effector_pose
virtual MotionStatus galbot::sdk::GalbotMotion::set_end_effector_pose(
const std::vector< double > &target_pose,
const std::string &end_effector_frame,
const std::string &reference_frame="base_link",
std::shared_ptr< RobotStates > reference_robot_states=nullptr,
const bool &enable_collision_check=true,
const bool &is_blocking=true,
const double &timeout=-1.0,
std::shared_ptr< Parameter > params=default_param
) =0
Command end-effector to move to target Cartesian pose.
High-level interface for Cartesian motion commands. Internally performs IK, plans trajectory, and optionally executes the motion. Supports both blocking (wait for completion) and non-blocking (return immediately) modes.
Parameters
| Name | Type | Description |
|---|---|---|
target_pose |
const std::vector< double > & | Target Cartesian pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) |
end_effector_frame |
const std::string & | Kinematic chain identifier (e.g., "left_arm", "right_arm") |
reference_frame |
const std::string & | Coordinate frame for pose specification (default: "base_link") |
reference_robot_states |
std::shared_ptr< RobotStates > | Planning seed state; nullptr uses current state. Warning: For direct execution, typically leave as nullptr to avoid conflicts between seed and actual robot state. |
enable_collision_check |
const bool & | If true, only executes collision-free trajectories |
is_blocking |
const bool & | If true, blocks until motion completes or times out; if false, returns immediately |
timeout |
const double & | Blocking timeout (seconds). If < 0 and is_blocking=true, uses params->timeout_second |
params |
std::shared_ptr< Parameter > | Motion planning parameters (linear motion, actuation type, etc.) |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: - SUCCESS: Motion completed successfully (blocking) or command sent (non-blocking) - TIMEOUT: Motion exceeded timeout duration - INVALID_INPUT: Invalid pose or parameters - FAULT: Planning or execution failure |
Note
Motion type (linear/joint-space) controlled by params->move_line flag.
Note
For direct execution (params->is_direct_execute=true), avoid passing reference_robot_states.
Warning
Blocking calls will halt execution until motion completes; use with caution in real-time contexts.
motion_plan
virtual std::tuple<MotionStatus, std::unordered_map<std::string, std::vector<std::vector<double> > > > galbot::sdk::GalbotMotion::motion_plan(
std::shared_ptr< RobotStates > target,
std::shared_ptr< RobotStates > start=nullptr,
std::shared_ptr< RobotStates > reference_robot_states=nullptr,
bool enable_collision_check=true,
std::shared_ptr< Parameter > params=default_param
) =0
Plan trajectory for a single kinematic chain.
Parameters
| Name | Type | Description |
|---|---|---|
target |
std::shared_ptr< RobotStates > | Target state (must be PoseState or JointStates, not base RobotStates). Specifies the goal configuration for planning. |
start |
std::shared_ptr< RobotStates > | Optional start state (typically JointStates). nullptr uses current robot state as start. Warning: For direct execution, leave as nullptr to avoid conflicts. |
reference_robot_states |
std::shared_ptr< RobotStates > | Whole-body reference state for planning context. nullptr uses current robot state. If start is provided, its joint values overwrite the corresponding chain in reference_robot_states. Warning: For direct execution, leave as nullptr. |
enable_collision_check |
bool | If true, only returns collision-free trajectories |
params |
std::shared_ptr< Parameter > | Planning parameters (timeout, actuation type, linear motion, etc.) |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::unordered_map< std::string, std::vector< std::vector< double > > > > | Tuple of (status, trajectory_map): - status: MotionStatus::SUCCESS if planning succeeds, error code otherwise - trajectory_map: {chain_name -> waypoint_list}, where waypoint_list is a sequence of joint configurations (radians) along the trajectory. Empty on failure. |
Note
Collision semantics: galbotMotion does not have real-time obstacle perception. When enable_collision_check=true, collision checking is evaluated against self-collision and the Motion-side environment objects that the user loads manually via add_obstacle() / attach_target_object().
Note
Trajectory is time-parameterized with velocity/acceleration limits respected.
Note
For direct execution (params->is_direct_execute=true), trajectory is automatically sent to robot.
Warning
target must be PoseState or JointStates; passing base RobotStates will cause INVALID_INPUT error.
motion_plan_multi_waypoints
virtual std::tuple<MotionStatus, std::unordered_map<std::string, std::vector<std::vector<double> > > > galbot::sdk::GalbotMotion::motion_plan_multi_waypoints(
std::shared_ptr< RobotStates > target,
std::vector< std::vector< double >> targets,
std::shared_ptr< RobotStates > start=nullptr,
std::shared_ptr< RobotStates > reference_robot_states=nullptr,
bool enable_collision_check=true,
std::shared_ptr< Parameter > params=default_param
) =0
Plan trajectory through multiple waypoints for a single chain.
Parameters
| Name | Type | Description |
|---|---|---|
target |
std::shared_ptr< RobotStates > | Template state defining waypoint type (PoseState or JointStates) and specifying chain_name. The state values in target are not used; only the type and chain_name are referenced. |
targets |
std::vector< std::vector< double >> | Sequence of waypoint values. Format depends on target type: PoseState: each waypoint is [x, y, z, qx, qy, qz, qw] (meters, quaternion) JointStates: each waypoint is joint configuration (radians) |
start |
std::shared_ptr< RobotStates > | Optional start state (JointStates). nullptr uses current robot state. Warning: For direct execution, leave as nullptr. |
reference_robot_states |
std::shared_ptr< RobotStates > | Whole-body reference state for planning context. nullptr uses current state. Warning: For direct execution, leave as nullptr. |
enable_collision_check |
bool | If true, only returns collision-free trajectories |
params |
std::shared_ptr< Parameter > | Planning parameters |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::unordered_map< std::string, std::vector< std::vector< double > > > > | Tuple of (status, trajectory_map): - status: MotionStatus::SUCCESS if planning succeeds, error code otherwise - trajectory_map: {chain_name -> waypoint_list}, smooth trajectory through all waypoints |
Note
Collision semantics: same as motion_plan(). The collision world for Motion planning is built from user-loaded objects and is not updated by real-time perception automatically.
Note
Planner ensures C1 continuity (continuous velocity) at waypoints.
Note
Intermediate waypoints may not be exactly reached (blending); use multiple plans for exact passing.
motion_plan_multi_waypoints
virtual std::tuple<MotionStatus, std::unordered_map<std::string, std::vector<std::vector<double> > > > galbot::sdk::GalbotMotion::motion_plan_multi_waypoints(
std::unordered_map< std::shared_ptr< RobotStates >, std::vector< std::vector< double >>> targets,
std::vector< std::shared_ptr< RobotStates >> start={},
std::shared_ptr< RobotStates > reference_robot_states=nullptr,
bool enable_collision_check=true,
std::shared_ptr< Parameter > params=default_param
) =0
Plan coordinated trajectories through waypoints for multiple chains.
Enables coordinated multi-arm or whole-body motion through waypoint sequences. Each chain can have its own waypoint sequence, executed in synchronized fashion.
Parameters
| Name | Type | Description |
|---|---|---|
targets |
std::unordered_map< std::shared_ptr< RobotStates >, std::vector< std::vector< double >>> | Map of {state_template -> waypoint_list} for each chain. Keys are RobotStates (with chain_name set) defining waypoint type; values are waypoint sequences in same format as single-chain version. |
start |
std::vector< std::shared_ptr< RobotStates >> | Optional start states (JointStates) for each chain. Empty uses current state. Warning: For direct execution, leave empty. |
reference_robot_states |
std::shared_ptr< RobotStates > | Whole-body reference state for planning context. nullptr uses current state. Warning: For direct execution, leave as nullptr. |
enable_collision_check |
bool | If true, only returns collision-free trajectories |
params |
std::shared_ptr< Parameter > | Planning parameters |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::unordered_map< std::string, std::vector< std::vector< double > > > > | Tuple of (status, trajectory_map): - status: MotionStatus::SUCCESS if planning succeeds, error code otherwise - trajectory_map: {chain_name -> waypoint_list} for all chains |
Note
All chain trajectories are time-synchronized for coordinated execution.
Note
Useful for bimanual manipulation or mobile manipulation tasks.
move_whole_body_joint_zero
virtual MotionStatus galbot::sdk::GalbotMotion::move_whole_body_joint_zero(
bool is_blocking=true,
double leg_head_speed_rad_s=0.2,
double leg_head_timeout_s=15.0,
std::shared_ptr< Parameter > params=default_param
) =0
Move the whole-body joints to the predefined zero (home) configuration.
The leg and head joints are commanded via GalbotRobot (direct joint control), while the left/right arms are planned via the motion planner with collision checking enabled.
Joint order of the zero configuration follows the SDK convention: leg(5) + head(2) + left_arm(7) + right_arm(7).
Parameters
| Name | Type | Description |
|---|---|---|
is_blocking |
bool | Whether to block on leg/head execution and arm planning/execution. |
leg_head_speed_rad_s |
double | Max joint speed for leg/head direct control (rad/s). |
leg_head_timeout_s |
double | Timeout for leg/head direct control (seconds). |
params |
std::shared_ptr< Parameter > | Motion planning parameters for arm planning (collision is forced enabled). |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus Overall execution status. |
check_collision
virtual std::tuple<MotionStatus, std::vector<bool> > galbot::sdk::GalbotMotion::check_collision(
const std::vector< std::shared_ptr< RobotStates >> &start,
bool enable_collision_check=true,
std::shared_ptr< Parameter > params=default_param
) =0
Check robot states for collisions.
Therefore, if you need Motion to consider environmental obstacles (including point clouds), you must load the obstacle map/objects explicitly (e.g., obstacle_type = point_cloud with a file path in key).
Note: integrating real-time perception (navigation-style obstacle updates / point-cloud map) into galbotMotion is a planned future feature and has limited internal validation at the moment. Validates whether given robot configurations are collision-free. Checks both self-collisions (robot links with each other) and environment collisions (robot with scene obstacles). Batch processing supported for efficiency.
Parameters
| Name | Type | Description |
|---|---|---|
start |
const std::vector< std::shared_ptr< RobotStates >> & | Vector of robot states to check. Each state can be: RobotStates: complete whole-body configuration JointStates: single-chain configuration (other joints use current state) |
enable_collision_check |
bool | If true, checks both self and environment collisions; if false, only checks self-collisions |
params |
std::shared_ptr< Parameter > | Optional parameters |
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, std::vector< bool > > | Tuple of (status, collision_results): - status: MotionStatus::SUCCESS if check completes, error code otherwise - collision_results: Boolean vector (same size as start): true = collision detected, false = collision-free |
Note
[Obstacle perception & point-cloud usage: galbotNav vs galbotMotion]
Note
Useful for validating planned trajectories or sampling-based planners.
Note
Respects safe_margin settings in previously added obstacles.
attach_tool
virtual MotionStatus galbot::sdk::GalbotMotion::attach_tool(
const std::string &chain,
const std::string &tool
) =0
Attach a tool to an end-effector.
Loads a tool (gripper, camera, custom end-effector) onto a kinematic chain. Updates the kinematic model and collision geometry to include the tool.
Parameters
| Name | Type | Description |
|---|---|---|
chain |
const std::string & | Kinematic chain for tool attachment (e.g., "left_arm", "right_arm") |
tool |
const std::string & | Tool identifier (must be predefined in tool library, see get_support_tool_list()) |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: - SUCCESS: Tool attached successfully - INVALID_INPUT: Invalid chain or tool name - FAULT: Tool attachment failed |
Note
Tool transform and collision geometry must be pre-configured in robot description.
Note
Attaching a new tool automatically detaches any previously attached tool on that chain.
Warning
Kinematics and collision checking will reflect the attached tool; update plans accordingly.
detach_tool
Detach the current tool from an end-effector.
Removes the attached tool from a kinematic chain, reverting to the base end-effector. Updates kinematic model and collision geometry accordingly.
Parameters
| Name | Type | Description |
|---|---|---|
chain |
const std::string & | Kinematic chain to detach tool from (e.g., "left_arm", "right_arm") |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: - SUCCESS: Tool detached successfully - INVALID_INPUT: Invalid chain name or no tool attached - FAULT: Tool detachment failed |
Note
If no tool is attached, operation succeeds as a no-op.
add_obstacle
virtual MotionStatus galbot::sdk::GalbotMotion::add_obstacle(
const std::string &obstacle_id,
const std::string &obstacle_type,
const std::vector< double > &pose,
const std::array< double, 3 > &scale={},
const std::string &key="",
const std::string &target_frame="world",
const std::string &ee_frame="ee_base",
const std::vector< double > &reference_joint_positions={},
const std::vector< double > &reference_base_pose={},
const std::vector< std::string > &ignore_collision_link_names={},
const double &safe_margin=0,
const double &resolution=0.01
) =0
Load collision object into environment.
Inserts a geometric or mesh-based obstacle into the environment for collision avoidance. Obstacles can be static (world-fixed) or robot-relative. Supports primitive shapes, meshes, point clouds, and depth images.
Parameters
| Name | Type | Description |
|---|---|---|
obstacle_id |
const std::string & | Unique obstacle identifier (must not exist in scene). Used for later removal/updates. |
obstacle_type |
const std::string & | Obstacle geometry type (e.g., "box", "sphere", "cylinder", "mesh", "point_cloud", "depth_image"). See get_support_obstacle_type() for valid types. |
pose |
const std::vector< double > & | Obstacle pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) relative to target_frame. |
scale |
const std::array< double, 3 > & | Geometry dimensions (meters): box: [length, width, height] sphere: [radius, -, -] cylinder: [radius, height, -] mesh/point_cloud: scaling factors [sx, sy, sz] |
key |
const std::string & | Type-specific data: mesh/point_cloud: file path (e.g., "/path/to/model.stl") depth_image: camera source ("front_head", "left_arm", "right_arm") primitives: unused, leave empty |
target_frame |
const std::string & | Reference frame for pose (default: "world"). Can be "world", "base_link", or chain name (e.g., "left_arm"). |
ee_frame |
const std::string & | If target_frame is a chain, specifies frame on chain: "ee_base" (end-effector), "camera_base", "camera_object". |
reference_joint_positions |
const std::vector< double > & | Robot joint state for computing frame transforms (radians). Empty uses current robot state. |
reference_base_pose |
const std::vector< double > & | Robot base pose in map frame: [x, y, z, qx, qy, qz, qw]. Empty uses current localization. |
ignore_collision_link_names |
const std::vector< std::string > & | Robot links to exclude from collision with this obstacle. Useful for carried objects or mounting surfaces. |
safe_margin |
const double & | Safety distance buffer (meters). Collision reported if distance < safe_margin. Default: 0 (contact-based). |
resolution |
const double & | Discretization resolution (meters) for complex geometries (mesh, point cloud, depth image). Default: 0.01m. |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: - SUCCESS: Obstacle added successfully - INVALID_INPUT: Invalid obstacle_id (duplicate), type, or parameters - FAULT: Failed to process geometry or add to scene |
Note
Point-cloud note: point_cloud here refers to a point-cloud obstacle explicitly loaded via this API (typically from a file/offline data). It is NOT the same as a navigation-maintained point-cloud map. galbotMotion does not automatically subscribe to or synchronize with galbotNav's point-cloud map for collision.
Note
Obstacles persist until explicitly removed or cleared.
Note
For moving obstacles, remove and re-add at new poses (no update method currently).
Warning
Large safe_margin values may over-constrain planning; use conservatively.
remove_obstacle
Remove a collision obstacle from the planning scene.
Parameters
| Name | Type | Description |
|---|---|---|
obstacle_id |
const std::string & | Unique identifier of obstacle to remove (must exist in scene) |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: SUCCESS, INVALID_INPUT (obstacle_id not found), or FAULT |
Note
Removing a non-existent obstacle returns INVALID_INPUT (not silently ignored).
clear_obstacle
Remove all collision obstacles from the planning scene.
Clears the entire obstacle set, resetting the planning scene to empty (except robot geometry).
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: SUCCESS or FAULT |
Note
Attached objects (see attach_target_object) are not affected.
Note
Safe to call even if scene is already empty.
attach_target_object
virtual MotionStatus galbot::sdk::GalbotMotion::attach_target_object(
const std::string &obstacle_id,
const std::string &obstacle_type,
const std::vector< double > &pose,
const std::array< double, 3 > &scale={},
const std::string &key="",
const std::string &target_frame="world",
const std::string &ee_frame="ee_base",
const std::vector< double > &reference_joint_positions={},
const std::vector< double > &reference_base_pose={},
const std::vector< std::string > &ignore_collision_link_names={},
const double &safe_margin=0,
const double &resolution=0.01
) =0
Attach a collision object to the robot (e.g., grasped object).
Similar to add_obstacle(), but the object moves with the robot (attached to a link/chain). Used for representing grasped objects, sensors, or payloads. The object's pose is maintained relative to the attachment frame during motion.
Parameters
| Name | Type | Description |
|---|---|---|
obstacle_id |
const std::string & | Unique object identifier (must not exist in scene). |
obstacle_type |
const std::string & | Object geometry type (e.g., "box", "sphere", "mesh"). See get_support_obstacle_type() for valid types. |
pose |
const std::vector< double > & | Object pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) relative to target_frame at attachment time. |
scale |
const std::array< double, 3 > & | Geometry dimensions (meters): box: [length, width, height] sphere: [radius, -, -] cylinder: [radius, height, -] |
key |
const std::string & | Type-specific data (e.g., mesh file path for "mesh" type). |
target_frame |
const std::string & | Attachment frame (default: "world"). Typically a chain name (e.g., "left_arm") for grasped objects. |
ee_frame |
const std::string & | If target_frame is a chain, specifies frame on chain ("ee_base", "camera_base", etc.). |
reference_joint_positions |
const std::vector< double > & | Robot joint state for computing attachment transform (radians). Empty uses current robot state. |
reference_base_pose |
const std::vector< double > & | Robot base pose in map: [x, y, z, qx, qy, qz, qw]. Empty uses current localization. |
ignore_collision_link_names |
const std::vector< std::string > & | Robot links to exclude from collision with this object. Typically includes the grasping end-effector links. |
safe_margin |
const double & | Safety distance buffer (meters). Default: 0. |
resolution |
const double & | Discretization resolution for complex geometries (meters). Default: 0.01m. |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: SUCCESS, INVALID_INPUT, or FAULT |
Note
Point-cloud note: same as add_obstacle(). point_cloud here is an explicitly loaded point-cloud object and will not be automatically synchronized with any navigation-side point-cloud map.
Note
Attached objects move with the robot; their collision geometry is updated automatically.
Note
Typically used in pick-and-place: attach_target_object after grasp, detach after release.
Warning
Ensure ignore_collision_link_names includes grasping links to avoid false collisions.
detach_target_object
virtual MotionStatus galbot::sdk::GalbotMotion::detach_target_object(const std::string &obstacle_id)=0
Detach an object from the robot (e.g., after release).
Removes an attached object from the robot. Typically called after releasing a grasped object. The object is removed from the planning scene entirely (not converted to a static obstacle).
Parameters
| Name | Type | Description |
|---|---|---|
obstacle_id |
const std::string & | Unique identifier of attached object to remove |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: SUCCESS, INVALID_INPUT (obstacle_id not found), or FAULT |
Note
To keep the object in the scene as a static obstacle after release, call detach_target_object() then add_obstacle() with the object's final pose.
set_motion_plan_config
virtual MotionStatus galbot::sdk::GalbotMotion::set_motion_plan_config(
std::shared_ptr< MotionPlanConfig > config
) =0
Set global motion planning configuration.
Updates planner settings such as velocity/acceleration limits, planning algorithm parameters, and optimization objectives. Affects all subsequent planning operations.
Parameters
| Name | Type | Description |
|---|---|---|
config |
std::shared_ptr< MotionPlanConfig > | Shared pointer to MotionPlanConfig with desired settings |
Returns
| Type | Description |
|---|---|
| MotionStatus | MotionStatus: - SUCCESS: Configuration applied successfully - INVALID_INPUT: Invalid configuration parameters - FAULT: Configuration update failed |
Note
Changes persist until explicitly reset or process restart.
Note
See MotionPlanConfig documentation for available parameters.
get_motion_plan_config
virtual std::tuple<MotionStatus, MotionPlanConfig> galbot::sdk::GalbotMotion::get_motion_plan_config()=0
Get current motion planning configuration.
Retrieves the active planner configuration, including velocity/acceleration limits and planning algorithm parameters.
Returns
| Type | Description |
|---|---|
| std::tuple< MotionStatus, MotionPlanConfig > | Tuple of (status, config): - status: MotionStatus::SUCCESS on success, error code otherwise - config: Current MotionPlanConfig object (default-constructed on failure) |
Note
Useful for inspecting current limits or saving/restoring configurations.
get_link_names
virtual std::vector<std::string> galbot::sdk::GalbotMotion::get_link_names(bool only_end_effector=false)=0
Get robot link names from kinematic model.
Retrieves the list of link names defined in the robot's URDF model. Can filter to only end-effector links or return all links.
Parameters
| Name | Type | Description |
|---|---|---|
only_end_effector |
bool | If true, returns only end-effector/tool links; if false, returns all links including base, intermediate, and end-effector links. Default: false (all links). |
Returns
| Type | Description |
|---|---|
| std::vector< std::string > | Vector of link name strings (empty if retrieval fails) |
Note
End-effector detection based on link having no child links in kinematic tree.
Note
Useful for forward kinematics queries or TF frame validation.
get_support_links
Get set of valid link names in robot model.
Returns all link names defined in the loaded URDF kinematic model. Useful for validating forward kinematics queries or TF lookups.
Returns
| Type | Description |
|---|---|
| const std::set< std::string > & | Const reference to set of supported link name strings |
Note
Set is populated during initialization from robot URDF.
get_support_chains
Get set of valid kinematic chain names.
Returns the names of all predefined kinematic chains (e.g., "left_arm", "right_arm", "torso", "left_leg", "right_leg"). Chains are groups of joints treated as a unit for planning and control.
Returns
| Type | Description |
|---|---|
| const std::set< std::string > & | Const reference to set of supported chain name strings |
Note
Chain definitions are specified in robot configuration files.
get_support_frame
Get set of valid reference frame names.
Returns standard reference frames supported for pose specifications (e.g., "base_link", "world", "odom").
Returns
| Type | Description |
|---|---|
| const std::set< std::string > & | Const reference to set of supported reference frame name strings |
Note
These are global/base frames; individual link frames accessed via TF.
get_support_ee_frame
Get set of valid end-effector frame types.
Returns frame identifiers that can be specified for end-effector poses (e.g., "EndEffector", "Camera", "TCP"). These are frame types, not specific link names.
Returns
| Type | Description |
|---|---|
| const std::set< std::string > & | Const reference to set of supported end-effector frame type strings |
Note
Actual link names derived by combining chain name + frame type.
get_support_tool_list
Get list of available tools that can be attached.
Returns names of predefined tools (grippers, sensors, custom end-effectors) that can be attached via attach_tool().
Returns
| Type | Description |
|---|---|
| const std::set< std::string > & | Const reference to set of tool name strings |
Note
Tools must be pre-configured with geometry and kinematic offsets.
get_support_obstacle_type
Get list of supported collision obstacle geometry types.
Returns geometry types supported by add_obstacle() and attach_target_object() (e.g., "box", "sphere", "cylinder", "mesh", "point_cloud", "depth_image").
Returns
| Type | Description |
|---|---|
| std::set< std::string > | Set of supported obstacle type strings |
Note
Different types require different scale/key parameter formats.
get_built_object_list
Get list of currently added obstacles in planning scene.
Returns the obstacle IDs of all obstacles currently present in the scene (both static obstacles and attached objects).
Returns
| Type | Description |
|---|---|
| std::vector< std::string > | Vector of obstacle ID strings (empty if no obstacles) |
Note
Useful for debugging scene state or preventing duplicate IDs.
get_attached_object_list
Get list of currently attached objects on the robot.
Returns the obstacle IDs of all objects currently attached to the robot (via attach_target_object()).
Returns
| Type | Description |
|---|---|
| std::vector< std::string > | Vector of attached object ID strings (empty if none attached) |
Note
Useful for tracking grasped objects or payloads.
is_link_name_valid
virtual bool galbot::sdk::GalbotMotion::is_link_name_valid(
const std::string &value,
bool throw_exception=false
) =0
Validate link name against robot model.
Checks if the provided link name exists in the loaded URDF model.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::string & | Link name to validate |
throw_exception |
bool | If true, throws std::invalid_argument on validation failure; if false, returns false silently. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if link name is valid, false otherwise |
Note
Use get_support_links() to retrieve valid link names.
is_chain_name_valid
virtual bool galbot::sdk::GalbotMotion::is_chain_name_valid(
const std::string &value,
bool throw_exception=false
) =0
Validate kinematic chain name.
Checks if the provided chain name is defined in robot configuration.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::string & | Chain name to validate (e.g., "left_arm", "right_arm") |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if chain name is valid, false otherwise |
Note
Use get_support_chains() to retrieve valid chain names.
is_frame_name_valid
virtual bool galbot::sdk::GalbotMotion::is_frame_name_valid(
const std::string &value,
bool throw_exception=false
) =0
Validate reference frame name.
Checks if the provided frame name is a valid reference frame for pose specifications.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::string & | Frame name to validate (e.g., "base_link", "world") |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if frame name is valid, false otherwise |
Note
Use get_support_frame() to retrieve valid frame names.
is_ee_frame_valid
virtual bool galbot::sdk::GalbotMotion::is_ee_frame_valid(
const std::string &value,
bool throw_exception=false
) =0
Validate end-effector frame type.
Checks if the provided frame type is valid for end-effector specifications.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::string & | Frame type to validate (e.g., "EndEffector", "Camera", "TCP") |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if frame type is valid, false otherwise |
Note
Use get_support_ee_frame() to retrieve valid frame types.
is_tool_name_valid
virtual bool galbot::sdk::GalbotMotion::is_tool_name_valid(
const std::string &value,
bool throw_exception=false
) =0
Validate tool name.
Checks if the provided tool name is available for attachment.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::string & | Tool name to validate |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if tool name is valid, false otherwise |
Note
Use get_support_tool_list() to retrieve available tools.
is_obstacle_type_valid
virtual bool galbot::sdk::GalbotMotion::is_obstacle_type_valid(
const std::string &value,
bool throw_exception=false
) =0
Validate obstacle geometry type.
Checks if the provided type is supported for obstacle creation.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::string & | Obstacle type to validate (e.g., "box", "sphere", "mesh") |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if obstacle type is valid, false otherwise |
Note
Use get_support_obstacle_type() to retrieve supported types.
is_whole_body_state_valid
virtual bool galbot::sdk::GalbotMotion::is_whole_body_state_valid(
const std::vector< double > &value,
bool throw_exception=false
) =0
Validate whole-body joint configuration vector.
Checks if the provided vector has the correct size (robot DOF) for whole-body state.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::vector< double > & | Joint configuration vector (radians) to validate |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if vector size matches robot DOF, false otherwise |
Note
Expected size: get_robot_dof() elements.
Note
Does not validate joint limit compliance, only vector dimensionality.
is_pose_7d_valid
virtual bool galbot::sdk::GalbotMotion::is_pose_7d_valid(
const std::vector< double > &value,
bool throw_exception=false
) =0
Validate 7D pose vector (position + quaternion).
Checks if the provided pose vector has exactly 7 elements: [x, y, z, qx, qy, qz, qw].
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::vector< double > & | Pose vector to validate |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if vector size is 7, false otherwise |
Note
Does not enforce quaternion normalization; only checks dimensionality.
Warning
Using non-normalized quaternions will cause undefined behavior in kinematics.
is_chain_joint_state_valid
virtual bool galbot::sdk::GalbotMotion::is_chain_joint_state_valid(
const std::unordered_map< std::string, std::vector< double >> &value,
bool throw_exception=false
) =0
Validate chain-indexed joint configuration map.
Checks if chain names are valid and joint vectors have correct dimensions for each chain.
Parameters
| Name | Type | Description |
|---|---|---|
value |
const std::unordered_map< std::string, std::vector< double >> & | Map of {chain_name -> joint_configuration} to validate |
throw_exception |
bool | If true, throws exception on failure. Default: false. |
Returns
| Type | Description |
|---|---|
| bool | true if all chain names and vector sizes are valid, false otherwise |
Note
Validates both chain name existence and joint vector dimensionality per chain.
get_robot_dof
Get robot total degrees of freedom (DOF).
Returns the number of actuated joints in the complete robot (whole-body). Used for validating joint state vector dimensions.
Returns
| Type | Description |
|---|---|
| int | Number of robot DOF (actuated joints) |
Note
Typical humanoid/mobile manipulator: 15-30 DOF.
get_robot_states
Get current complete robot state.
Retrieves the current whole-body joint configuration and mobile base pose. Represents the full kinematic state of the robot.
Returns
| Type | Description |
|---|---|
| RobotStates | object containing: - whole_body_joint: complete joint configuration (radians) - base_state: mobile base pose [x, y, z, qx, qy, qz, qw] (meters, quaternion) |
Note
Reflects actual robot state (from sensor feedback/state estimation).
Note
Useful as seed/reference for planning operations.
get_whole_body_state
Get current whole-body joint configuration.
Retrieves joint angles for all actuated joints in the robot.
Returns
| Type | Description |
|---|---|
| std::vector< double > | Vector of joint angles (radians), size = |
Note
Joint ordering defined by robot URDF/configuration.
get_chassis_state
Get current mobile base pose.
Retrieves the position and orientation of the robot's mobile base in the map frame.
Returns
| Type | Description |
|---|---|
| std::vector< double > | Base pose vector: [x, y, z, qx, qy, qz, qw] (meters, unit quaternion) |
Note
For non-mobile robots, typically returns identity pose.
Note
Pose obtained from localization/odometry system.
get_chain_joint_state
virtual std::unordered_map<std::string, std::vector<double> > galbot::sdk::GalbotMotion::get_chain_joint_state() =0
Get current joint configurations for all kinematic chains.
Retrieves per-chain joint states, decomposing the whole-body configuration into individual chain contributions.
Returns
| Type | Description |
|---|---|
| std::unordered_map< std::string, std::vector< double > > | Map of {chain_name -> joint_configuration} (radians) for each chain (e.g., {"left_arm" -> [7 joint angles], "right_arm" -> [7 joint angles]}) |
Note
Joint vector sizes vary by chain DOF.
get_chain_pose_state
virtual std::unordered_map<std::string, std::vector<double> > galbot::sdk::GalbotMotion::get_chain_pose_state(
const std::string &frame="base_link"
) =0
Get current Cartesian poses for all kinematic chains.
Computes forward kinematics for all chain end-effectors, returning their poses in the specified reference frame.
Parameters
| Name | Type | Description |
|---|---|---|
frame |
const std::string & | Reference frame for pose expression (default: "base_link") |
Returns
| Type | Description |
|---|---|
| std::unordered_map< std::string, std::vector< double > > | Map of {chain_name -> pose_vector}, where pose_vector is [x, y, z, qx, qy, qz, qw] (meters, quaternion) for each chain's end-effector |
Note
Computationally more expensive than get_chain_joint_state() (requires FK computation).
replace_joint_state
virtual bool galbot::sdk::GalbotMotion::replace_joint_state(
const std::string &chain_name,
const std::vector< double > &chain_joint,
std::vector< double > &whole_body_joint
) =0
Update a specific chain's joints in a whole-body configuration.
Utility function for modifying a chain's joint values within a complete whole-body joint vector, while preserving other chains' states.
Parameters
| Name | Type | Description |
|---|---|---|
chain_name |
const std::string & | Chain identifier whose joints to replace |
chain_joint |
const std::vector< double > & | New joint configuration for the chain (radians) |
whole_body_joint |
std::vector< double > & | Whole-body joint vector to modify (in/out parameter) |
Returns
| Type | Description |
|---|---|
| bool | true if replacement succeeds, false if chain_name invalid or size mismatch |
Note
whole_body_joint is modified in-place; ensure it has correct size (get_robot_dof()).
Note
Useful for offline state manipulation or custom planning seeds.
status_to_string
Convert MotionStatus enum to human-readable string.
Maps status codes to descriptive strings for logging, error reporting, or UI display.
Parameters
| Name | Type | Description |
|---|---|---|
status |
MotionStatus | MotionStatus enumeration value |
Returns
| Type | Description |
|---|---|
| std::string | Descriptive status string (e.g., "SUCCESS: Execution succeeded", "TIMEOUT: Execution timeout") |
Note
Uses status_string_map_ for lookup; returns "UNKNOWN" if status not found.
get_instance
Runtime factory for selecting a concrete motion planning singleton.
Parameters
| Name | Type | Description |
|---|---|---|
m |
MachineType | Machine type identifier (e.g. MachineType::G1, MachineType::S1). |
Returns
| Type | Description |
|---|---|
| GalbotMotion & | Reference to the singleton motion interface for the specified machine type. |
GalbotNavigation
Navigation interface for mobile robot chassis motion planning and localization.
This class provides a thread-safe singleton interface for controlling the mobile base navigation system. It supports 2D pose estimation, relocalization, goal-directed navigation with dynamic obstacle avoidance, and path planning capabilities. The navigation system operates in a global map frame and provides both blocking and non-blocking navigation modes. It supports both differential drive and omnidirectional motion planning strategies. This class uses the singleton pattern with thread-safe initialization. All pose coordinates are specified in the map frame unless explicitly stated otherwise. Typical usage: auto&nav=GalbotNavigation::get_instance(MachineType::G1); if(nav.init()){ Posegoal; goal.x=1.0;//meters goal.y=2.0;//meters goal.orientation.w=1.0;//identityquaternion(x,y,zdefault0) nav.navigate_to_goal(goal,true,false,30.0,true); }
~GalbotNavigation
init
Initialize the navigation subsystem and its dependencies.
This method must be called before using any other navigation functions. It initializes communication channels, loads the map, starts the localization module, and prepares the path planner.
Returns
| Type | Description |
|---|---|
| bool | true if initialization succeeded, false otherwise. |
Note
This method should only be called once after obtaining the singleton instance.
Note
Subsequent calls will return the result of the first initialization attempt.
Warning
Calling navigation methods before successful initialization will result in undefined behavior.
relocalize
Perform relocalization to re-estimate the robot's pose in the map frame.
This method resets the localization filter and provides an initial pose estimate to help the robot re-establish its position in the known map. This is useful when the robot has lost localization or when manually placing the robot at a known position.
Parameters
| Name | Type | Description |
|---|---|---|
init_pose |
const Pose & | Initial pose estimate in the map frame: position (x, y, z) in meters and orientation as unit quaternion (x, y, z, w). Serves as the starting point for the relocalization algorithm. |
Returns
| Type | Description |
|---|---|
| NavigationStatus | NavigationStatus indicating the result of the relocalization request. See NavigationStatus enumeration for possible values. |
Note
The robot should be stationary during relocalization for best results.
Note
After calling this method, use is_localized() to verify successful relocalization before proceeding with navigation tasks.
is_localized
Check whether the robot is currently localized in the map.
This method queries the localization system to determine if the robot has a valid pose estimate with sufficient confidence. A robot that is not localized should not perform navigation tasks.
Returns
| Type | Description |
|---|---|
| bool | true if the robot is localized with acceptable confidence, false if localization is lost or uncertain. |
Note
It is recommended to check localization status before issuing navigation commands.
Note
If this returns false, consider calling relocalize() with a known pose estimate.
get_current_pose
Get the current estimated pose of the robot chassis in the map frame.
This method returns the most recent pose estimate from the localization system. The pose represents the position and orientation of the robot's base_link frame relative to the map frame origin.
Returns
| Type | Description |
|---|---|
| Pose | : position (x, y, z) in meters and orientation as unit quaternion (x, y, z, w) in the map frame. |
Note
The returned pose is only valid if is_localized() returns true.
Note
The pose represents the center of the robot's base footprint.
navigate_to_goal
virtual NavigationStatus galbot::sdk::GalbotNavigation::navigate_to_goal(
const Pose &goal_pose,
bool enable_collision_check=true,
bool is_blocking=false,
float timeout=8,
bool omni_plan=true
) =0
Navigate the robot to a target goal pose in the map frame.
This method commands the mobile base to navigate to a specified goal pose using the global path planner and local trajectory controller. The planner will compute a collision-free path from the current pose to the goal, considering both static map obstacles and dynamic obstacles if collision checking is enabled.
Parameters
| Name | Type | Description |
|---|---|---|
goal_pose |
const Pose & | Target goal pose in the map frame: position (x, y, z) in meters and target orientation as unit quaternion (x, y, z, w). |
enable_collision_check |
bool | If true, enables dynamic obstacle detection and avoidance during navigation. If false, only static map obstacles are considered. Default: true. |
is_blocking |
bool | Execution mode flag. Default: false. false (non-blocking): Returns immediately after sending the navigation command. The return status indicates whether the command was successfully sent, not whether the goal was reached. true (blocking): Blocks until the goal is reached, navigation fails, or timeout occurs. The return status reflects the final navigation outcome. |
timeout |
float | Maximum wait time in seconds for blocking mode. Default: 8.0 seconds. Only relevant when is_blocking is true. If the goal is not reached within this time, the method returns with a timeout status. |
omni_plan |
bool | Motion planning mode flag. Default: true. true: Enables omnidirectional motion planning (holonomic drive), allowing the robot to move in any direction and rotate independently. false: Uses differential drive planning with kinematic constraints. |
Returns
| Type | Description |
|---|---|
| NavigationStatus | NavigationStatus indicating the result: - In non-blocking mode: Command acceptance status - In blocking mode: Final navigation outcome (success, failure, timeout) |
Note
The robot must be localized (is_localized() returns true) before calling this method.
Note
For blocking mode, the calling thread will be blocked until completion or timeout.
Note
The actual navigation time may exceed the timeout value in blocking mode before the method returns.
Warning
In non-blocking mode, monitor navigation progress separately to detect completion or failures.
move_straight_to
virtual NavigationStatus galbot::sdk::GalbotNavigation::move_straight_to(
const Pose &goal_pose,
bool is_blocking=true,
float timeout=8
) =0
Move the robot to a relative target pose in the odometry frame.
This method commands the robot to move to a pose specified relative to its current position in the odometry (odom) frame. This is useful for short, precise movements where map-based planning is not needed. Unlike navigate_to_goal(), this method does NOT perform dynamic obstacle detection or global path planning. It uses omnidirectional motion planning for direct movement to the target.
Parameters
| Name | Type | Description |
|---|---|---|
goal_pose |
const Pose & | Target pose relative to the current base_link frame: position (x, y, z) in meters (typically x forward, y left, z up) and relative orientation as unit quaternion (x, y, z, w). |
is_blocking |
bool | Execution mode flag. Default: true. true (blocking): Blocks until the motion is complete, fails, or timeout occurs. The return status reflects the final outcome. false (non-blocking): Returns immediately after sending the motion command. The return status indicates command acceptance. |
timeout |
float | Maximum wait time in seconds for blocking mode. Default: 8.0 seconds. Only relevant when is_blocking is true. |
Returns
| Type | Description |
|---|---|
| NavigationStatus | NavigationStatus indicating the result: - In non-blocking mode: Command acceptance status - In blocking mode: Final motion outcome (success, failure, timeout) |
Note
This method does NOT check for obstacles or collisions. Use only when the path is known to be clear.
Note
This method uses the odometry frame and does NOT require map localization.
Note
Suitable for small, precise adjustments such as final approach positioning or docking maneuvers.
Warning
Since collision checking is disabled, ensure the path is obstacle-free before calling this method to avoid collisions.
Warning
Odometry drift may affect accuracy over longer distances. For accurate long-distance navigation, use navigate_to_goal() instead.
stop_navigation
Stop the current navigation task and bring the robot to a halt.
This method immediately cancels any ongoing navigation command (from either navigate_to_goal() or move_straight_to()) and commands the robot to stop. The robot will decelerate according to its kinematic constraints and come to a safe stop.
Returns
| Type | Description |
|---|---|
| NavigationStatus | NavigationStatus indicating whether the stop command was successfully sent to the navigation system. |
Note
This method can be called at any time during navigation, including when using non-blocking navigation modes.
Note
After stopping, the robot's position may not match the original goal.
Note
The robot will attempt to stop smoothly following its acceleration limits.
check_path_reachability
virtual bool galbot::sdk::GalbotNavigation::check_path_reachability(
const Pose &goal_pose,
const Pose &start_pose
) =0
Check if a collision-free path exists from start to goal in the map.
This method queries the global path planner to determine if a valid, collision-free path exists between the specified start and goal poses. This is useful for validating goal poses before attempting navigation, or for multi-goal path planning.
Parameters
| Name | Type | Description |
|---|---|---|
goal_pose |
const Pose & | Goal pose in the map frame: position (x, y, z) in meters and orientation quaternion (x, y, z, w). |
start_pose |
const Pose & | Start pose in the map frame: position (x, y, z) in meters and orientation quaternion (x, y, z, w). |
Returns
| Type | Description |
|---|---|
| bool | true if a collision-free path exists from start to goal, false if no valid path can be found. |
Note
This method only checks for static obstacles based on the map data. Dynamic obstacles are not considered.
Note
The path computation may take some time depending on distance and map complexity.
Note
A return value of true does not guarantee successful navigation, as dynamic obstacles or localization errors may still cause failures.
check_goal_arrival
Check if the robot has successfully reached the current goal.
This method queries the navigation system to determine if the robot has arrived at the goal pose within acceptable position and orientation tolerances. This is particularly useful when using non-blocking navigation mode to poll for completion.
Returns
| Type | Description |
|---|---|
| bool | true if the robot has reached the goal within tolerance thresholds, false if still navigating, no active goal, or goal not yet reached. |
Note
This method is most useful in non-blocking navigation scenarios where the application needs to monitor progress.
Note
The tolerance thresholds for "arrival" are defined by the navigation system's internal parameters (typically a few centimeters in position and a few degrees in orientation).
Note
If no navigation command is active, this method returns false.
get_navigation_status
Get the current navigation task state.
Returns the most recent task state reported by the navigation system (UNKNOWN, RUNNING, SUCCESS, or FAILED). Use this when running non-blocking navigation to poll for state and exit error logic in time on FAILED or timeout, avoiding deadlock or indefinite wait.
Returns
| Type | Description |
|---|---|
| NavigationTaskStatus | NavigationTaskStatus Current task state. UNKNOWN if no status yet; RUNNING while navigating; SUCCESS or FAILED when task has finished. |
Note
Useful in non-blocking navigation: loop on get_navigation_status() and break on SUCCESS, FAILED, or after a timeout.
get_instance
Runtime factory for selecting a concrete navigation singleton.
This static factory method allows runtime selection of the navigation implementation based on the robot machine type. The method declaration resides in the interface header for compile-time availability, while the actual implementation logic (including platform-specific includes and switch statements) is contained in the corresponding .cpp file. This design keeps the interface clean while enabling platform-specific instantiation without exposing implementation details.
Parameters
| Name | Type | Description |
|---|---|---|
m |
MachineType | Machine type identifier specifying which robot platform to use. |
Returns
| Type | Description |
|---|---|
| GalbotNavigation & | Reference to the singleton navigation interface instance for the specified machine type. |
Note
Adding support for a new machine type requires updating the MachineType enumeration and the factory implementation in the .cpp file.
Types & Enums
ActuateType
Specifies which kinematic chains should be actuated during motion planning and execution. This controls whether the robot uses only the target arm, or also involves torso or leg motion.
| Enum Value | Description |
|---|---|
ACTUATE_WITH_CHAIN_ONLY |
Actuate only the target joint chain (e.g., arm only), base remains fixed |
ACTUATE_WITH_TORSO |
Actuate target joint chain and torso for extended workspace |
ACTUATE_WITH_LEG |
Actuate target joint chain and legs for mobile manipulation |
ACTUATE_TYPE_NUM |
Total number of actuation types (for boundary checking or array sizing) |
AudioData
Audio data structure used to encapsulate audio data.
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | Message header. |
type |
std::string | Audio data type identifier, possible values include: "waken_up": Wake-up event, format is json, data is json string "denoise_chunk": Denoised audio data, format is pcm, data is pcm data "vad_begin": Voice Activity Detection start marker (data is empty) "vad_chunk": Audio data during voice activity detection, format is pcm, data is pcm data "vad_end": Voice Activity Detection end marker (data is empty) |
format |
std::string | Audio data format description, for example: "pcm": Sample rate 16000Hz, bit depth 16bit, mono "json": UTF-8 encoded json text |
data |
std::vector< uint8_t > | Binary data packet, the specific format is specified by the format field. For pcm format, the data size for each 80ms is 2560 bytes. For json format, the data size may be the length of json text or empty. |
BmsInfo
Bms information.
Member Variables
| Name | Type | Description |
|---|---|---|
voltage |
float | Voltage (V) |
current |
float | Current (A) |
battery_level |
float | Battery level (0-100%) |
temperature |
float | Temperature (℃) |
charging_status |
bool | Charging status:False: not charging, True: charging |
health_status |
bool | Health status:False: good, True: bad |
capacity |
float | Remaining capacity (Ah) |
CameraInfo
Complete camera calibration data including intrinsic parameters, distortion coefficients, rectification, and projection matrices. Compatible with ROS 2 sensor_msgs/CameraInfo.
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | Contains timestamp and camera coordinate frame ID (e.g., "camera_optical_frame"). |
height |
uint32_t | Vertical resolution of images produced by this camera at calibration time. |
width |
uint32_t | Horizontal resolution of images produced by this camera at calibration time. |
distortion_model |
std::string | Specifies the lens distortion model used. Common values: "plumb_bob": Brown-Conrady model with radial (k1,k2,k3) and tangential (p1,p2) distortion "rational_polynomial": Extended model with additional parameters "equidistant": Fisheye lens model |
d |
std::vector< double > | Vector of distortion parameters, size and interpretation depend on distortion_model. For "plumb_bob": [k1, k2, p1, p2, k3] (5 parameters) k1, k2, k3: Radial distortion coefficients p1, p2: Tangential distortion coefficients |
k |
std::array< double, 9 > | 3×3 matrix in row-major order, maps 3D points in camera frame to 2D pixel coordinates: [fx0cx][0fycy] [001] fx, fy: Focal lengths in pixel units cx, cy: Principal point (optical center) in pixels |
r |
std::array< double, 9 > | 3×3 rotation matrix in row-major order. For stereo cameras: rotates left/right camera image planes to be coplanar and row-aligned. For monocular cameras: typically identity matrix (no rectification needed). |
p |
std::array< double, 12 > | 3×4 matrix in row-major order, projects 3D points to rectified image coordinates: [fx'0cx'Tx][0fy'cy'Ty] [0010] fx', fy': Rectified focal lengths cx', cy': Rectified principal point Tx, Ty: Stereo baseline (Tx = -fx' × baseline for right camera) |
binning_x |
uint32_t | Number of camera pixels combined horizontally for each output pixel. Values: 0 or 1 = no binning, 2 = 2×1 binning, etc. |
binning_y |
uint32_t | Number of camera pixels combined vertically for each output pixel. Values: 0 or 1 = no binning, 2 = 1×2 binning, etc. |
roi |
RegionOfInterest | Specifies a sub-window within the full sensor resolution. |
camera_type |
std::string | Optional field specifying camera type or model. Examples: "monocular", "stereo_left", "stereo_right", "depth" |
T |
std::vector< double > | Optional transformation matrix for vendor-specific or extended calibration data. Size and interpretation depend on implementation. |
ChainType
Identifies different kinematic chains in the robot structure for forward/inverse kinematics calculations and motion planning.
| Enum Value | Description |
|---|---|
HEAD |
Head kinematic chain, from base/torso to head end-effector |
LEFT_ARM |
Left arm kinematic chain, from base/torso to left end-effector |
RIGHT_ARM |
Right arm kinematic chain, from base/torso to right end-effector |
LEG |
Leg kinematic chain, for legged locomotion |
TORSO |
Torso kinematic chain, connects base to upper body |
CHAIN_NUM |
Total number of kinematic chains (for boundary checking or array sizing) |
CollisionCheckOption
Collision detection enable/disable configuration.
This structure provides fine-grained control over collision checking during motion planning and execution. It supports independent toggling of self-collision detection (robot links colliding with each other) and environment collision detection (robot colliding with obstacles or workspace boundaries). Disabling collision checks improves computational performance but may result in unsafe trajectories. Use with caution in controlled environments.
set_disable_self_collision_check
Enable or disable self-collision detection.
Parameters
| Name | Type | Description |
|---|---|---|
disable |
bool | true to disable self-collision checking, false to enable |
Warning
Disabling self-collision checks may result in physically infeasible configurations
set_disable_env_collision_check
Enable or disable environment collision detection.
Parameters
| Name | Type | Description |
|---|---|---|
disable |
bool | true to disable environment collision checking, false to enable |
Warning
Disabling environment checks may result in collisions with obstacles
get_disable_self_collision_check
Check if self-collision detection is disabled.
Returns
| Type | Description |
|---|---|
| bool | true if self-collision detection is currently disabled, false if enabled |
get_disable_env_collision_check
Check if environment collision detection is disabled.
Returns
| Type | Description |
|---|---|
| bool | true if environment collision detection is currently disabled, false if enabled |
Print collision detection configuration to standard output.
Outputs enabled/disabled status for each collision check type.
ControlStatus
Control command execution status enumeration.
Represents the execution status of robot control commands, including joint control, end-effector control, and other motion control operations.
| Enum Value | Description |
|---|---|
SUCCESS |
Execution succeeded, command completed with valid result |
TIMEOUT |
Execution timeout, task not completed within specified time limit |
FAULT |
Fault occurred, system detected anomaly and aborted execution |
INVALID_INPUT |
Input parameters invalid or not meeting interface requirements |
INIT_FAILED |
Initialization failed, internal communication or dependent component creation failed |
IN_PROGRESS |
Command is executing but has not reached target state |
STOPPED_UNREACHED |
Stopped during execution without reaching target position or state |
DATA_FETCH_FAILED |
Data retrieval failed during operation, unable to read required state |
PUBLISH_FAIL |
Control or state data publication failed, command may not be transmitted |
COMM_DISCONNECTED |
Communication connection lost, cannot continue execution |
STATUS_NUM |
Total number of status enumerations (for boundary checking or array sizing) |
DepthData
Contains compressed depth image data from depth cameras or RGB-D sensors. Compatible with ROS 2 sensor_msgs/CompressedImage format with depth extensions.
convert_to_cv2_mat
Convert depth data to OpenCV Mat.
Decodes and converts depth data to cv::Mat format for processing.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< cv::Mat > | std::shared_ptr |
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | Contains acquisition timestamp and camera coordinate frame ID. |
height |
uint32_t | Number of rows in the depth image. |
width |
uint32_t | Number of columns in the depth image. |
format |
std::string | Specifies depth encoding and compression format. Example: "16UC1; compressedDepth png" (16-bit unsigned, 1 channel, PNG compressed) |
data |
std::vector< uint8_t > | Binary blob containing raw or compressed depth image data. |
depth_scale |
uint32_t | Quantization factor for converting pixel values to metric depth. True depth (meters) = pixel_value / depth_scale Example: depth_scale = 1000 means pixel values are in millimeters |
DeviceInfo
Describes basic information about the robot or module, used for device management, logging, diagnostics, and maintenance tracking.
Member Variables
| Name | Type | Description |
|---|---|---|
model |
std::string | Device model name or identifier |
serial_number |
std::string | Unique serial number for device identification |
firmware_version |
std::string | System firmware version string (e.g., "1.2.3") |
hardware_version |
std::string | Hardware version or revision number |
manufacturer |
std::string | Manufacturer name or company identifier |
DexhandState
Contains timestamped joint feedback and, when available (e.g. Sharpa), per-sensor force/torque measurements from the dexhand force topic. sharpa per finger has 22-joint
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | State timestamp (nanoseconds since epoch) |
joint_state |
JointStateMessage | Dexhand joint state message |
force_sensor_map |
std::unordered_map< std::string, EffortInfo > | Named force sensor map (Sharpa; empty otherwise) |
DexHandType
The SDK uses this enumeration to route dexhand commands and state queries to the correct implementation. Inspire and BrainCo dexhands share the standard joint command/state path. Sharpa dexhands use a dedicated 22-joint topic interface; full state is returned in DexhandState (including force sensors).
| Enum Value | Description |
|---|---|
INSPIRE |
Inspire dexterous hand |
BRAINCO |
BrainCo dexterous hand |
SHARPA |
Sharpa dexterous hand |
EffortInfo
Represents a 6-DOF wrench (force and torque) typically measured by a force/torque sensor. Also known as a spatial force or generalized force.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Measurement timestamp (nanoseconds since epoch) |
force |
Vector3 | Force vector (Newtons): [fx, fy, fz] |
torque |
Vector3 | Torque vector (Newton-meters): [tx, ty, tz] |
Error
Describes an error from a single module or component, including error code and human-readable description for debugging and diagnostics.
Error
galbot::sdk::Error::Error(std::string commpent_input, int error_code_input, std::string description_input)
Constructor.
Parameters
| Name | Type | Description |
|---|---|---|
commpent_input |
std::string | Fault module or component name |
error_code_input |
int | Numerical error code |
description_input |
std::string | Human-readable error description |
Member Variables
| Name | Type | Description |
|---|---|---|
commpent |
std::string | Fault module or component name (note: field name contains typo but preserved for API compatibility) |
error_code |
uint64_t | Numerical error code for programmatic error handling |
description |
std::string | Human-readable error description |
ErrorInfo
Contains a timestamped collection of error messages from multiple modules or components.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Timestamp when errors were collected (nanoseconds since epoch) |
error_vec |
std::vector< Error > | Vector of error messages from various system components |
ForceData
Contains timestamped force and torque measurements from a 6-axis force/torque sensor, typically mounted at robot wrists or tool interfaces.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Measurement timestamp (nanoseconds since epoch) |
force |
Vector3 | Force vector (Newtons): [fx, fy, fz] |
torque |
Vector3 | Torque vector (Newton-meters): [tx, ty, tz] |
FrameTriad
Task-space command for a body frame relative to a reference frame.
Mirrors galbot.spatial_proto.FrameTriad at the SDK type layer.
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | |
body_frame_id |
std::string | |
reference_frame_id |
std::string | |
pose |
std::optional< Pose > | |
twist |
std::optional< Twist > | |
wrench |
std::optional< Wrench > |
GalbotSdkLogStream
GalbotSdkLogStream
galbot::sdk::GalbotSdkLogStream::GalbotSdkLogStream(
LogLevel level,
const char *file,
const char *func,
int line
)
Parameters
| Name | Type | Description |
|---|---|---|
level |
LogLevel | |
file |
const char * | |
func |
const char * | |
line |
int |
operator<<
Parameters
| Name | Type | Description |
|---|---|---|
v |
const T & |
operator<<
GalbotSdkLogStream& galbot::sdk::GalbotSdkLogStream::operator<<(std::ostream &(*manip)(std::ostream &))
Parameters
| Name | Type | Description |
|---|---|---|
manip |
std::ostream &(*)(std::ostream &) |
~GalbotSdkLogStream
GripperState
Represents the current state of a parallel-jaw gripper, including opening width, motion status, and grasping force.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | State timestamp (nanoseconds since epoch) |
width |
double | Gripper opening width (meters), distance between fingers |
velocity |
double | Gripper closing/opening velocity (meters/second), positive = opening |
effort |
double | Gripper grasping force (Newtons), force applied by fingers |
is_moving |
bool | Motion flag from a movement window: false if no effective movement is observed within the configured time window |
joint_positions |
std::vector< double > | Gripper joint positions (radians), typically 1-2 joints for finger actuators |
GroupCommand
Group-space command at a specific time point.
Member Variables
| Name | Type | Description |
|---|---|---|
time_from_start_s |
double | |
joint_commands |
std::vector< JointCommand > |
Header
Standard message header containing timestamp and coordinate frame information. Timestamp is stored as nanoseconds since epoch (unified with other sensor types).
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Timestamp of data acquisition (nanoseconds since epoch) Records when the data was captured or generated. |
frame_id |
std::string | Identifies the coordinate frame in which the data is expressed. Examples: "base_link", "world", "camera_optical_frame", "lidar_link", "map" |
IKSolverConfig
Inverse kinematics (IK) solver configuration parameters.
This structure configures the numerical inverse kinematics solver used to compute joint configurations that achieve desired end-effector poses. It supports collision-aware IK with configurable seed strategies, convergence tolerances, joint limit handling, and timeout parameters. IK solving is an iterative numerical optimization process that may benefit from multiple random initializations to find feasible collision-free solutions.
set_col_aware_ik_timeout
Set timeout for collision-aware IK solver.
Parameters
| Name | Type | Description |
|---|---|---|
timeout |
double | Maximum solver iteration time (units: ms) |
Note
Longer timeouts allow more seed attempts but delay planning
set_seed_type
Set initial configuration seed generation strategy.
Parameters
| Name | Type | Description |
|---|---|---|
type |
SeedType | Seed generation method for IK optimization initialization |
set_col_aware_ik_joint_limit_bias
Set safety margin from joint position limits.
Parameters
| Name | Type | Description |
|---|---|---|
bias |
double | Distance from joint limits to treat as forbidden region (units: rad) |
Note
Prevents IK solver from proposing configurations near singularities or mechanical limits
set_translation_eps
Set Cartesian position error tolerance for IK convergence.
Parameters
| Name | Type | Description |
|---|---|---|
eps |
const std::array< double, 3 > & | Per-axis position error tolerance {x, y, z} (units: m) |
Note
IK solution is accepted when position error is within this threshold
set_rotation_eps
Set orientation error tolerance for IK convergence.
Parameters
| Name | Type | Description |
|---|---|---|
eps |
const std::array< double, 3 > & | Per-axis orientation error tolerance {roll, pitch, yaw} (units: rad) |
Note
IK solution is accepted when orientation error is within this threshold
set_enable_collision_check_log
Enable or disable detailed collision checking diagnostic logs.
Parameters
| Name | Type | Description |
|---|---|---|
enable |
bool | true to output collision detection logs, false to suppress |
Note
Useful for debugging IK failures due to collision constraints
get_col_aware_ik_timeout
Get collision-aware IK solver timeout.
Returns
| Type | Description |
|---|---|
| double | Timeout duration (units: ms) |
get_seed_type
Get IK solver seed generation strategy.
Returns
| Type | Description |
|---|---|
| SeedType | Current seed type |
get_col_aware_ik_joint_limit_bias
Get joint limit safety margin.
Returns
| Type | Description |
|---|---|
| double | Joint limit bias distance (units: rad) |
get_translation_eps
Get Cartesian position error tolerance.
Returns
| Type | Description |
|---|---|
| const std::array< double, 3 > & | Per-axis position tolerance {x, y, z} (units: m) |
get_rotation_eps
Get orientation error tolerance.
Returns
| Type | Description |
|---|---|
| const std::array< double, 3 > & | Per-axis orientation tolerance {roll, pitch, yaw} (units: rad) |
get_enable_collision_check_log
Check if collision check logging is enabled.
Returns
| Type | Description |
|---|---|
| bool | true if logging is enabled, false otherwise |
Print IK solver configuration to standard output.
Outputs all configuration parameters for debugging and verification.
Nested Enums
SeedType
Initial guess generation strategy for IK optimization.
| Enum Value | Description |
|---|---|
RANDOM_SEED |
Uniformly random joint configurations within limits |
RANDOM_PROGRESSIVE_SEED |
Progressive random sampling with increasing coverage |
USER_DEFINED_SEED |
User-provided initial joint configurations |
ImuData
Contains timestamped data from an Inertial Measurement Unit (IMU), including accelerometer, gyroscope, and magnetometer measurements.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Measurement timestamp (nanoseconds since epoch) |
accel |
Vector3 | Linear acceleration (meters/second²): [ax, ay, az] |
gyro |
Vector3 | Angular velocity (radians/second): [ωx, ωy, ωz] |
magnet |
Vector3 | Magnetic field strength (micro-Tesla): [mx, my, mz] |
JointCommand
Specifies desired motion parameters for a single robot joint in a trajectory or control command.
Member Variables
| Name | Type | Description |
|---|---|---|
position |
double | Desired joint position (radians) |
velocity |
double | Desired joint velocity (radians/second) |
acceleration |
double | Desired joint acceleration (radians/second²) |
effort |
double | Desired joint torque/effort (Newton-meters) |
JointState
Represents the complete real-time state of a single robot joint, including kinematic quantities (position, velocity, acceleration) and dynamic quantities (torque/effort and motor current).
JointState
Default constructor.
Initializes all state variables to zero.
JointState
galbot::sdk::JointState::JointState(
double position_input,
double velocity_input,
double acceleration_input,
double effort_input,
double current_input
)
Parameterized constructor.
Initializes joint state with specified values.
Parameters
| Name | Type | Description |
|---|---|---|
position_input |
double | Joint angular position (radians) |
velocity_input |
double | Joint angular velocity (radians/second) |
acceleration_input |
double | Joint angular acceleration (radians/second²) |
effort_input |
double | Joint torque/effort (Newton-meters) |
current_input |
double | Motor current (amperes) |
Member Variables
| Name | Type | Description |
|---|---|---|
position |
double | Joint angular position (radians) |
velocity |
double | Joint angular velocity (radians/second) |
acceleration |
double | Joint angular acceleration (radians/second²) |
effort |
double | Joint torque/effort (Newton-meters) |
current |
double | Motor current (amperes) |
JointStateMessage
Timestamped collection of joint states for multiple joints, typically representing a snapshot of the robot's complete joint configuration at one instant.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Acquisition timestamp (nanoseconds since epoch) |
joint_state_vec |
std::vector< JointState > | Vector of individual joint states |
JointStates
Represents target joint configuration for a kinematic chain. Extends RobotStates to specify joint-based motion goals. Used in joint trajectory planning and forward kinematics computation. All joint angles must be in radians. Vector size must match the DOF of the specified kinematic chain.
get_type
Get runtime type identifier.
Returns
| Type | Description |
|---|---|
| Type | , indicating this is a joint-space target |
set_joint_positions
Set complete joint configuration for the kinematic chain.
Parameters
| Name | Type | Description |
|---|---|---|
joints |
const std::vector< double > & | Vector of joint angles (radians), must match chain DOF |
Note
Vector size should equal the number of actuated joints in the specified chain.
set_joint
Set individual joint angle by index.
Parameters
| Name | Type | Description |
|---|---|---|
index |
int | Zero-based joint index within the chain |
val |
int | Joint angle value (radians) |
Note
Function performs bounds checking; invalid indices are silently ignored.
Warning
No error is returned for out-of-bounds access; ensure index validity externally.
Member Variables
| Name | Type | Description |
|---|---|---|
joint_positions |
std::vector< double > | Target joint configuration for the chain (radians), ordered by joint index. |
KinematicsBoundary
Kinematic boundary parameters for robot kinematic chain joints.
This structure defines the kinematic constraints for a robot kinematic chain (e.g., manipulator arms, mobile base, or leg chains). It specifies position, velocity, acceleration, and jerk limits for each joint in the chain. These boundaries are critical for ensuring safe and physically feasible motion during trajectory planning and execution. Each vector should contain one value per joint in the kinematic chain. All joint space quantities are specified in radians or radians per unit time.
set_chain_name
Set the name identifier for this kinematic chain.
Parameters
| Name | Type | Description |
|---|---|---|
name |
const std::string & | Chain name identifier, e.g., "left_arm", "right_arm", "mobile_base" |
set_lower_limit
Set joint position lower bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of lower position limits for each joint (units: rad) |
Note
Vector size must equal the number of joints in the chain
set_upper_limit
Set joint position upper bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of upper position limits for each joint (units: rad) |
Note
Vector size must equal the number of joints in the chain
set_vel_lower_limit
Set joint velocity lower bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of lower velocity limits for each joint (units: rad/s) |
Note
Typically negative values for bidirectional joints
set_vel_upper_limit
Set joint velocity upper bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of upper velocity limits for each joint (units: rad/s) |
Note
Typically positive values for bidirectional joints
set_acc_lower_limit
Set joint acceleration lower bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of lower acceleration limits for each joint (units: rad/s²) |
Note
Used for trajectory optimization and smoothness constraints
set_acc_upper_limit
Set joint acceleration upper bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of upper acceleration limits for each joint (units: rad/s²) |
Note
Used for trajectory optimization and smoothness constraints
set_jerk_lower_limit
Set joint jerk lower bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of lower jerk limits for each joint (units: rad/s³) |
Note
Jerk constraints improve motion smoothness and reduce mechanical wear
set_jerk_upper_limit
Set joint jerk upper bounds.
Parameters
| Name | Type | Description |
|---|---|---|
limits |
const std::vector< double > & | Vector of upper jerk limits for each joint (units: rad/s³) |
Note
Jerk constraints improve motion smoothness and reduce mechanical wear
get_chain_name
Get the kinematic chain name identifier.
Returns
| Type | Description |
|---|---|
| const std::string & | Const reference to chain name string |
get_lower_limit
Get joint position lower bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of lower position limits (units: rad) |
get_upper_limit
Get joint position upper bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of upper position limits (units: rad) |
get_vel_lower_limit
Get joint velocity lower bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of lower velocity limits (units: rad/s) |
get_vel_upper_limit
Get joint velocity upper bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of upper velocity limits (units: rad/s) |
get_acc_lower_limit
Get joint acceleration lower bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of lower acceleration limits (units: rad/s²) |
get_acc_upper_limit
Get joint acceleration upper bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of upper acceleration limits (units: rad/s²) |
get_jerk_lower_limit
Get joint jerk lower bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of lower jerk limits (units: rad/s³) |
get_jerk_upper_limit
Get joint jerk upper bounds.
Returns
| Type | Description |
|---|---|
| const std::vector< double > & | Const reference to vector of upper jerk limits (units: rad/s³) |
Print kinematic boundary information to standard output.
Outputs all boundary parameters for debugging and visualization purposes.
LidarData
Generic N-dimensional point cloud structure compatible with ROS 2 sensor_msgs/PointCloud2. Stores point data as a binary blob with field descriptors defining the data layout. Supports both ordered (structured) and unordered (unstructured) point clouds.
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | Contains acquisition timestamp and coordinate frame for temporal and spatial reference. |
height |
uint32_t | Unordered point cloud: height = 1 (single row) Ordered point cloud: height = number of rows (e.g., from spinning lidar or depth camera) |
width |
uint32_t | Unordered point cloud: width = total number of points Ordered point cloud: width = number of points per row (columns) Total points = height × width |
fields |
std::vector< PointField > | Describes the data channels (x, y, z, intensity, rgb, etc.) present in each point and their binary layout (offset, type, count). |
is_bigendian |
bool | true: Data is Big Endian byte order false: Data is Little Endian byte order (typical for x86/ARM systems) |
point_step |
uint32_t | Total byte size of a single point structure, including all fields and padding. Must be ≥ sum of all field sizes, may include alignment padding. |
row_step |
uint32_t | Total byte size of one row of points. Formula: row_step = point_step × width |
data |
std::vector< uint8_t > | Binary blob containing all point data in row-major order. Size should equal: row_step × height bytes Each point occupies point_step bytes, laid out according to fields descriptors. |
is_dense |
bool | true: All points are valid, no NaN or Inf values present false: Cloud may contain invalid points (NaN/Inf coordinates or fields) |
LineTrajCheckPrimitive
Geometric primitive configuration for Cartesian linear trajectory validation.
This structure configures the collision detection geometric representation for linear end-effector trajectories in Cartesian space. It supports two primitive types: infinitesimally thin lines and swept-volume cylinders. Choosing the appropriate primitive affects collision detection conservativeness and computational cost. Cylinder primitives model the robot's actual swept volume more accurately but require more expensive geometric queries.
set_line_check_primitive_type
Set geometric primitive type for linear trajectory validation.
Parameters
| Name | Type | Description |
|---|---|---|
type |
PrimitiveType | Primitive representation (LINE or CYLINDER) |
Note
CYLINDER is recommended for safety-critical applications
set_cylinder_prim_radius
Set swept-volume cylinder radius for trajectory collision checking.
Parameters
| Name | Type | Description |
|---|---|---|
radius |
double | Cylinder radius representing robot swept volume (units: m) |
Note
Larger radii increase safety margins but may be overly conservative
Note
Only applies when primitive type is CYLINDER
set_line_prim_curvature
Set curvature approximation tolerance for line primitive.
Parameters
| Name | Type | Description |
|---|---|---|
curvature |
double | Maximum deviation tolerance for piecewise-linear approximation (units: m) |
Note
Controls how finely curved paths are discretized into line segments
Note
Lower values improve accuracy but increase computational cost
get_line_check_primitive_type
Get the geometric primitive type for trajectory checking.
Returns
| Type | Description |
|---|---|
| PrimitiveType | Current primitive type (LINE or CYLINDER) |
get_cylinder_prim_radius
Get the cylinder primitive swept-volume radius.
Returns
| Type | Description |
|---|---|
| double | Cylinder radius (units: m) |
get_line_prim_curvature
Get the line primitive curvature approximation tolerance.
Returns
| Type | Description |
|---|---|
| double | Curvature tolerance (units: m) |
Print line trajectory check primitive configuration to standard output.
Outputs selected primitive type and associated parameters for debugging.
Nested Enums
PrimitiveType
Geometric representation for linear trajectory collision checking.
| Enum Value | Description |
|---|---|
LINE |
Zero-thickness line segment (fast but less conservative) |
CYLINDER |
Swept-volume cylinder with configurable radius (accurate but slower) |
LoggerConfig
Defines the configuration parameters for the logging system, including file settings, log levels, and output options.
Member Variables
| Name | Type | Description |
|---|---|---|
path |
std::string | Directory path for log files. Default: ~/galbot_sdk_log/user_log |
file_name |
std::string | Log file name. Default: |
file_max_size |
uint64_t | Maximum size of a single log file (bytes) |
file_max_num |
uint64_t | Number of log files to retain in rotation |
level |
LogLevel | Minimum log level to record |
console_output |
bool | Flag to enable or disable console output |
LogInfo
Log information.
Member Variables
| Name | Type | Description |
|---|---|---|
level |
std::string | |
message |
std::string | "error" "warning" |
LogLevel
Represents the severity level of log messages.
| Enum Value | Description |
|---|---|
TRACE |
Trace level, detailed information for debugging |
DEBUG |
Debug level, diagnostic information for developers |
INFO |
Info level, general operational messages |
WARN |
Warn level, potentially harmful situations |
ERROR |
Error level, error events that might still allow the application to continue running |
CRITICAL |
Critical level, severe error events that lead to application termination |
MachineType
This enumeration defines the different robot platforms or machine types supported by the Galbot SDK. Clients can use these values to specify which robot model they are working with, particularly for factory methods that return platform-specific implementations. Keeping the enumeration in the common type definitions ensures consistency across the SDK while hiding implementation details in the respective modules.
| Enum Value | Description |
|---|---|
S1 |
Galbot S1 humanoid robot platform |
MotionPlanConfig
Comprehensive motion planning configuration management.
MotionPlanConfig serves as a centralized configuration container for all motion planning subsystems. It aggregates sampling strategies, trajectory generation parameters, inverse kinematics solver settings, collision detection options, feasibility validation criteria, and kinematic constraint boundaries. This class provides a unified interface for configuring complex motion planning pipelines, supporting both simple manipulator planning and whole-body humanoid motion generation with multiple kinematic chains. Configuration objects are lazily initialized and managed through shared pointers to optimize memory usage and support optional feature configuration.
MotionPlanConfig
Default constructor.
Initializes an empty configuration with all sub-configurations set to nullptr. Sub-configurations are created on-demand via create_ or get__ref methods.
set_update_time
Set configuration update timestamp.
Parameters
| Name | Type | Description |
|---|---|---|
t |
int64_t | Timestamp of last configuration modification (units: ns, typically CLOCK_MONOTONIC) |
Note
Used for configuration versioning and cache invalidation
get_update_time
Get configuration update timestamp.
Returns
| Type | Description |
|---|---|
| int64_t | of last configuration modification (units: ns) |
create_sampler_config
Create or retrieve sampler configuration.
Lazily initializes the sampler configuration if it does not exist. Safe to call multiple times; returns the same instance after first creation.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< SamplerConfig > | Shared pointer to sampler configuration with default settings |
create_trajectory_plan_config
std::shared_ptr<TrajectoryPlanConfig> galbot::sdk::MotionPlanConfig::create_trajectory_plan_config()
Create or retrieve trajectory planning configuration.
Lazily initializes the trajectory planning configuration if it does not exist.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< TrajectoryPlanConfig > | Shared pointer to trajectory planning configuration with default settings |
create_ik_solver_config
Create or retrieve inverse kinematics solver configuration.
Lazily initializes the IK solver configuration if it does not exist.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< IKSolverConfig > | Shared pointer to IK solver configuration with default settings |
create_collision_check_option
std::shared_ptr<CollisionCheckOption> galbot::sdk::MotionPlanConfig::create_collision_check_option()
Create or retrieve collision check option configuration.
Lazily initializes the collision check options if they do not exist.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< CollisionCheckOption > | Shared pointer to collision check options with default settings |
create_trajectory_feasibility_check_option
std::shared_ptr<TrajectoryFeasibilityCheckOption> galbot::sdk::MotionPlanConfig::create_trajectory_feasibility_check_option()
Create or retrieve trajectory feasibility check option configuration.
Lazily initializes the trajectory feasibility check options if they do not exist.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< TrajectoryFeasibilityCheckOption > | Shared pointer to trajectory feasibility check options with default settings |
create_line_traj_check_primitive
std::shared_ptr<LineTrajCheckPrimitive> galbot::sdk::MotionPlanConfig::create_line_traj_check_primitive()
Create or retrieve line trajectory check primitive configuration.
Lazily initializes the line trajectory check primitive configuration if it does not exist.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< LineTrajCheckPrimitive > | Shared pointer to line trajectory check primitive with default settings |
set_sampler_config
void galbot::sdk::MotionPlanConfig::set_sampler_config(const std::shared_ptr< SamplerConfig > &config)
Set or replace sampler configuration.
Parameters
| Name | Type | Description |
|---|---|---|
config |
const std::shared_ptr< SamplerConfig > & | Shared pointer to sampler configuration; nullptr clears the configuration |
set_trajectory_plan_config
void galbot::sdk::MotionPlanConfig::set_trajectory_plan_config(
const std::shared_ptr< TrajectoryPlanConfig > &config
)
Set or replace trajectory planning configuration.
Parameters
| Name | Type | Description |
|---|---|---|
config |
const std::shared_ptr< TrajectoryPlanConfig > & | Shared pointer to trajectory planning configuration; nullptr clears the configuration |
set_ik_solver_config
void galbot::sdk::MotionPlanConfig::set_ik_solver_config(const std::shared_ptr< IKSolverConfig > &config)
Set or replace inverse kinematics solver configuration.
Parameters
| Name | Type | Description |
|---|---|---|
config |
const std::shared_ptr< IKSolverConfig > & | Shared pointer to IK solver configuration; nullptr clears the configuration |
set_collision_check_option
void galbot::sdk::MotionPlanConfig::set_collision_check_option(
const std::shared_ptr< CollisionCheckOption > &option
)
Set or replace collision check option configuration.
Parameters
| Name | Type | Description |
|---|---|---|
option |
const std::shared_ptr< CollisionCheckOption > & | Shared pointer to collision check options; nullptr clears the configuration |
set_trajectory_feasibility_check_option
void galbot::sdk::MotionPlanConfig::set_trajectory_feasibility_check_option(
const std::shared_ptr< TrajectoryFeasibilityCheckOption > &option
)
Set or replace trajectory feasibility check option configuration.
Parameters
| Name | Type | Description |
|---|---|---|
option |
const std::shared_ptr< TrajectoryFeasibilityCheckOption > & | Shared pointer to trajectory feasibility check options; nullptr clears the configuration |
set_feasibility_boundary
void galbot::sdk::MotionPlanConfig::set_feasibility_boundary(
const std::vector< KinematicsBoundary > &boundary
)
Set kinematic feasibility boundaries for all chains.
Parameters
| Name | Type | Description |
|---|---|---|
boundary |
const std::vector< KinematicsBoundary > & | Vector of kinematic boundaries, one per chain |
Note
These boundaries are used for general trajectory feasibility validation
set_line_traj_check_primitive
void galbot::sdk::MotionPlanConfig::set_line_traj_check_primitive(
const std::shared_ptr< LineTrajCheckPrimitive > &primitive
)
Set or replace line trajectory check primitive configuration.
Parameters
| Name | Type | Description |
|---|---|---|
primitive |
const std::shared_ptr< LineTrajCheckPrimitive > & | Shared pointer to line trajectory check primitive; nullptr clears the configuration |
set_ik_joint_limit
void galbot::sdk::MotionPlanConfig::set_ik_joint_limit(const std::vector< KinematicsBoundary > &boundary)
Set joint limits used during IK solving phase.
Parameters
| Name | Type | Description |
|---|---|---|
boundary |
const std::vector< KinematicsBoundary > & | Vector of kinematic boundaries for IK solver joint constraints |
Note
IK limits may be tighter than hard limits to improve convergence and avoid singularities
set_sampler_joint_limit
void galbot::sdk::MotionPlanConfig::set_sampler_joint_limit(const std::vector< KinematicsBoundary > &boundary)
Set joint limits used during sampling-based planning phase.
Parameters
| Name | Type | Description |
|---|---|---|
boundary |
const std::vector< KinematicsBoundary > & | Vector of kinematic boundaries for sampling algorithms |
Note
Sampling limits define the valid configuration space for exploration
set_hard_joint_limit
void galbot::sdk::MotionPlanConfig::set_hard_joint_limit(const std::vector< KinematicsBoundary > &boundary)
Set absolute hard joint limits (safety-critical boundaries)
Parameters
| Name | Type | Description |
|---|---|---|
boundary |
const std::vector< KinematicsBoundary > & | Vector of kinematic boundaries representing mechanical/safety limits |
Note
Hard limits must never be violated; typically correspond to physical joint stops
set_revert_ik_joint_limit
Enable or disable IK joint limit reversion to hard limits.
Parameters
| Name | Type | Description |
|---|---|---|
flag |
bool | true to revert IK joint limits to hard limits, false to use configured IK limits |
Note
Useful for recovering from constrained configurations by temporarily relaxing IK limits
set_revert_ik_joint_limit_chains
void galbot::sdk::MotionPlanConfig::set_revert_ik_joint_limit_chains(const std::vector< std::string > &chains)
Set specific kinematic chains for IK joint limit reversion.
Parameters
| Name | Type | Description |
|---|---|---|
chains |
const std::vector< std::string > & | Vector of chain names to apply IK limit reversion (e.g., {"left_arm", "torso"}) |
Note
If non-empty, automatically enables revert_ik_joint_limit flag
Note
Empty vector disables selective reversion (applies to all chains if flag is set)
get_sampler_config
Get sampler configuration (may be nullptr if not initialized)
Returns
| Type | Description |
|---|---|
| std::shared_ptr< SamplerConfig > | Shared pointer to sampler configuration, or nullptr if not set |
Note
Use create_sampler_config() to ensure a valid configuration exists
get_trajectory_plan_config
std::shared_ptr<TrajectoryPlanConfig> galbot::sdk::MotionPlanConfig::get_trajectory_plan_config() const
Get trajectory planning configuration (may be nullptr if not initialized)
Returns
| Type | Description |
|---|---|
| std::shared_ptr< TrajectoryPlanConfig > | Shared pointer to trajectory planning configuration, or nullptr if not set |
Note
Use create_trajectory_plan_config() to ensure a valid configuration exists
get_ik_solver_config
Get inverse kinematics solver configuration (may be nullptr if not initialized)
Returns
| Type | Description |
|---|---|
| std::shared_ptr< IKSolverConfig > | Shared pointer to IK solver configuration, or nullptr if not set |
Note
Use create_ik_solver_config() to ensure a valid configuration exists
get_collision_check_option
std::shared_ptr<CollisionCheckOption> galbot::sdk::MotionPlanConfig::get_collision_check_option() const
Get collision check option configuration (may be nullptr if not initialized)
Returns
| Type | Description |
|---|---|
| std::shared_ptr< CollisionCheckOption > | Shared pointer to collision check options, or nullptr if not set |
Note
Use create_collision_check_option() to ensure a valid configuration exists
get_trajectory_feasibility_check_option
std::shared_ptr<TrajectoryFeasibilityCheckOption> galbot::sdk::MotionPlanConfig::get_trajectory_feasibility_check_option() const
Get trajectory feasibility check option configuration (may be nullptr if not initialized)
Returns
| Type | Description |
|---|---|
| std::shared_ptr< TrajectoryFeasibilityCheckOption > | Shared pointer to trajectory feasibility check options, or nullptr if not set |
Note
Use create_trajectory_feasibility_check_option() to ensure a valid configuration exists
get_line_traj_check_primitive
std::shared_ptr<LineTrajCheckPrimitive> galbot::sdk::MotionPlanConfig::get_line_traj_check_primitive() const
Get line trajectory check primitive configuration (may be nullptr if not initialized)
Returns
| Type | Description |
|---|---|
| std::shared_ptr< LineTrajCheckPrimitive > | Shared pointer to line trajectory check primitive, or nullptr if not set |
Note
Use create_line_traj_check_primitive() to ensure a valid configuration exists
get_sampler_config_ref
Get mutable reference to sampler configuration.
Lazily creates a new sampler configuration with default values if not already initialized. Useful for in-place modification of configuration parameters.
Returns
| Type | Description |
|---|---|
| SamplerConfig & | Mutable reference to sampler configuration (guaranteed non-null) |
get_trajectory_plan_config_ref
Get mutable reference to trajectory planning configuration.
Lazily creates a new trajectory planning configuration with default values if not already initialized.
Returns
| Type | Description |
|---|---|
| TrajectoryPlanConfig & | Mutable reference to trajectory planning configuration (guaranteed non-null) |
get_ik_solver_config_ref
Get mutable reference to inverse kinematics solver configuration.
Lazily creates a new IK solver configuration with default values if not already initialized.
Returns
| Type | Description |
|---|---|
| IKSolverConfig & | Mutable reference to IK solver configuration (guaranteed non-null) |
get_collision_check_option_ref
Get mutable reference to collision check option configuration.
Lazily creates a new collision check option with default values if not already initialized.
Returns
| Type | Description |
|---|---|
| CollisionCheckOption & | Mutable reference to collision check options (guaranteed non-null) |
get_trajectory_feasibility_check_option_ref
TrajectoryFeasibilityCheckOption& galbot::sdk::MotionPlanConfig::get_trajectory_feasibility_check_option_ref()
Get mutable reference to trajectory feasibility check option configuration.
Lazily creates a new trajectory feasibility check option with default values if not already initialized.
Returns
| Type | Description |
|---|---|
| TrajectoryFeasibilityCheckOption & | Mutable reference to trajectory feasibility check options (guaranteed non-null) |
get_line_traj_check_primitive_ref
Get mutable reference to line trajectory check primitive configuration.
Lazily creates a new line trajectory check primitive with default values if not already initialized.
Returns
| Type | Description |
|---|---|
| LineTrajCheckPrimitive & | Mutable reference to line trajectory check primitive (guaranteed non-null) |
get_feasibility_boundary
const std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_feasibility_boundary() const
Get kinematic feasibility boundaries for all chains (read-only)
Returns immutable access to the feasibility boundary configuration.
Returns
| Type | Description |
|---|---|
| const std::vector< KinematicsBoundary > & | Const reference to vector of kinematic feasibility boundaries |
get_feasibility_boundary
Get kinematic feasibility boundaries for all chains (mutable)
Returns mutable access to the feasibility boundary configuration for in-place modification.
Returns
| Type | Description |
|---|---|
| std::vector< KinematicsBoundary > & | Mutable reference to vector of kinematic feasibility boundaries |
get_ik_joint_limit
Get IK phase joint limits (read-only)
Returns
| Type | Description |
|---|---|
| const std::vector< KinematicsBoundary > & | Const reference to vector of IK joint limit boundaries |
get_ik_joint_limit
Get IK phase joint limits (mutable)
Returns
| Type | Description |
|---|---|
| std::vector< KinematicsBoundary > & | Mutable reference to vector of IK joint limit boundaries |
get_sampler_joint_limit
const std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_sampler_joint_limit() const
Get sampling phase joint limits (read-only)
Returns
| Type | Description |
|---|---|
| const std::vector< KinematicsBoundary > & | Const reference to vector of sampling joint limit boundaries |
get_sampler_joint_limit
Get sampling phase joint limits (mutable)
Returns
| Type | Description |
|---|---|
| std::vector< KinematicsBoundary > & | Mutable reference to vector of sampling joint limit boundaries |
get_hard_joint_limit
Get hard joint limits (read-only)
Returns
| Type | Description |
|---|---|
| const std::vector< KinematicsBoundary > & | Const reference to vector of hard joint limit boundaries |
Note
Hard limits represent absolute mechanical/safety constraints
get_hard_joint_limit
Get hard joint limits (mutable)
Returns
| Type | Description |
|---|---|
| std::vector< KinematicsBoundary > & | Mutable reference to vector of hard joint limit boundaries |
get_revert_ik_joint_limit_chains
const std::vector<std::string>& galbot::sdk::MotionPlanConfig::get_revert_ik_joint_limit_chains() const
Get kinematic chains for selective IK joint limit reversion (read-only)
Returns
| Type | Description |
|---|---|
| const std::vector< std::string > & | Const reference to vector of chain names for IK limit reversion |
Note
Empty vector means reversion applies to all chains (if reversion is enabled)
get_revert_ik_joint_limit_chains
Get kinematic chains for selective IK joint limit reversion (mutable)
Returns
| Type | Description |
|---|---|
| std::vector< std::string > & | Mutable reference to vector of chain names for IK limit reversion |
get_revert_ik_joint_limit
Check if IK joint limit reversion is enabled.
Returns
| Type | Description |
|---|---|
| bool | true if IK limits should revert to hard limits, false otherwise |
Print comprehensive motion planning configuration to standard output.
Outputs all sub-configuration parameters and kinematic boundaries in human-readable format. Useful for debugging, logging, and verification of configuration state.
MotionStatus
Robot motion execution status enumeration.
Represents the execution status of robot motion commands, including trajectory following, pose reaching, and other motion planning operations.
| Enum Value | Description |
|---|---|
SUCCESS |
Execution succeeded, motion reached expected target position/pose |
TIMEOUT |
Execution timeout, motion not completed within specified time limit |
FAULT |
Fault occurred, motion cannot continue due to hardware or safety issue |
INVALID_INPUT |
Input parameters invalid or not meeting interface requirements |
INIT_FAILED |
Internal initialization failed, communication component or resource creation failed |
IN_PROGRESS |
Motion in progress but has not reached target yet |
STOPPED_UNREACHED |
Stopped during motion without reaching target position/pose |
DATA_FETCH_FAILED |
Data retrieval failed, e.g., sensor or state reading failure |
PUBLISH_FAIL |
Data transmission or command delivery failed, motion command may not be executed |
COMM_DISCONNECTED |
Communication disconnected or control node unavailable |
STATUS_NUM |
Total number of status enumerations (for boundary checking or array sizing) |
UNSUPPORTED_FUNCRION |
Function not yet supported, called interface or operation not implemented (note: typo in enum name preserved for API compatibility) |
NavigationStatus
Navigation task execution status enumeration.
Defines the possible outcomes when executing navigation commands such as moving to a goal position or following a path.
| Enum Value | Description |
|---|---|
SUCCESS |
Execution succeeded, navigation task completed as expected |
FAIL |
Execution failed due to unspecified error |
TIMEOUT |
Execution timeout, task did not complete within allowed time |
INVALID_INPUT |
Input parameters do not meet requirements or are out of valid range |
MODE_ERR |
Current mode does not support this operation |
COMM_ERR |
Communication error occurred during execution |
WAIT_INITIALIZED |
Waiting for system initialization, navigation system not ready |
NavigationTaskStatus
Navigation task current state enumeration.
Represents the current state of an active or completed navigation task, as reported by the navigation system. Used for polling during non-blocking navigation to detect RUNNING, SUCCESS, or FAILED and exit error logic in time.
| Enum Value | Description |
|---|---|
UNKNOWN |
Task state unknown or not yet reported |
RUNNING |
Navigation task is in progress |
SUCCESS |
Navigation task completed successfully |
FAILED |
Navigation task failed |
OdomData
Contains robot pose and velocity estimates from odometry sources (wheel encoders, IMU fusion, etc.). Used for robot localization and navigation.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Odometry timestamp (nanoseconds since epoch) |
position |
std::array< double, 3 > | Position [x, y, z] (meters) |
orientation |
std::array< double, 4 > | Orientation as quaternion [qx, qy, qz, qw] |
linear_velocity |
std::array< double, 3 > | Linear velocity vx, vy, vz |
angular_velocity |
std::array< double, 3 > | Angular velocity ωx, ωy, ωz |
Parameter
Motion planning parameter configuration class.
This class extends PlannerConfig to provide comprehensive configuration options for whole-body motion planning and execution. It encapsulates execution mode, actuation type, tool frame handling, collision checking, and coordinate frame specifications. All angular parameters are expected in radians, linear parameters in meters (SI units).
Parameter
Default constructor.
Initializes Parameter with default values inherited from PlannerConfig.
Parameter
galbot::sdk::Parameter::Parameter(
bool direct_execute,
bool blocking,
double timeout,
std::string actuate,
bool tool_pose,
bool check_collision,
const std::string &frame="base_link"
)
Parameterized constructor for whole-body motion planning configuration.
Parameters
| Name | Type | Description |
|---|---|---|
direct_execute |
bool | If true, immediately executes the planned motion; if false, only computes the plan |
blocking |
bool | If true, blocks until motion completes or times out; if false, returns immediately |
timeout |
double | Maximum allowed time for motion execution (in seconds) |
actuate |
std::string | Actuation type string key (see g_actuate_type_map): "with_chain_only", "with_torso", or "with_leg" |
tool_pose |
bool | If true, target pose is relative to tool frame; if false, relative to end-effector flange |
check_collision |
bool | If true, enables collision checking during planning; if false, skips collision detection |
frame |
const std::string & | Reference frame for pose specifications, defaults to "base_link" (robot base frame) |
Note
timeout is only relevant when blocking is true.
Note
Invalid actuate strings will cause undefined behavior; ensure key exists in g_actuate_type_map.
set_direct_execute
Set direct execution mode.
Parameters
| Name | Type | Description |
|---|---|---|
direct_execute |
bool | If true, planned motion is immediately executed on the robot; if false, only computes the trajectory without execution |
set_blocking
Set blocking execution mode.
Parameters
| Name | Type | Description |
|---|---|---|
blocking |
bool | If true, function blocks until motion completes or times out; if false, returns immediately after sending motion command |
set_timeout
Set motion execution timeout.
Parameters
| Name | Type | Description |
|---|---|---|
timeout |
double | Maximum allowed time for motion execution (in seconds, must be positive) |
Note
Only applies when blocking mode is enabled.
set_actuate
Set actuation type for whole-body coordination.
Parameters
| Name | Type | Description |
|---|---|---|
actuate |
const std::string & | Actuation type string key: "with_chain_only" (arms only), "with_torso" (arms + torso), or "with_leg" (arms + legs) |
Warning
Must be a valid key in g_actuate_type_map, otherwise behavior is undefined.
set_tool_pose
Set tool coordinate frame usage.
Parameters
| Name | Type | Description |
|---|---|---|
tool_pose |
bool | If true, target poses are interpreted relative to the tool frame (TCP); if false, relative to the end-effector flange frame |
set_check_collision
Enable or disable collision checking.
Parameters
| Name | Type | Description |
|---|---|---|
check_collision |
bool | If true, planner performs collision detection against self-collisions and environment obstacles; if false, skips collision checking |
Warning
Disabling collision checking may result in unsafe trajectories.
set_reference_frame
Set the reference frame for pose specifications.
Parameters
| Name | Type | Description |
|---|---|---|
frame |
const std::string & | Reference frame name (e.g., "base_link", "world", "odom") |
Note
Must be a valid frame in the robot's TF tree.
set_move_line
Set Cartesian linear motion mode.
Parameters
| Name | Type | Description |
|---|---|---|
flag |
bool | If true, uses linear (straight-line) Cartesian motion; if false, uses joint-space interpolation (may result in curved end-effector paths) |
Note
Linear motion provides predictable Cartesian paths but may have joint velocity discontinuities.
get_direct_execute
Get direct execution mode status.
Returns
| Type | Description |
|---|---|
| bool | true if direct execution is enabled, false otherwise |
get_blocking
Get blocking execution mode status.
Returns
| Type | Description |
|---|---|
| bool | true if blocking mode is enabled, false otherwise |
get_timeout
Get motion execution timeout value.
Returns
| Type | Description |
|---|---|
| double | Timeout duration in seconds (positive value) |
get_actuate_type
Get actuation type as string.
Performs reverse lookup in g_actuate_type_map to convert enum to string key.
Returns
| Type | Description |
|---|---|
| std::string | Actuation type string ("with_chain_only", "with_torso", "with_leg", or "unknown" if not found) |
get_tool_pose
Get tool coordinate frame usage status.
Returns
| Type | Description |
|---|---|
| bool | true if using tool frame (TCP), false if using end-effector flange frame |
get_check_collision
Get collision checking status.
Returns
| Type | Description |
|---|---|
| bool | true if collision checking is enabled, false otherwise |
get_reference_frame
Get reference frame name.
Returns
| Type | Description |
|---|---|
| std::string | Reference frame identifier string (e.g., "base_link", "world") |
is_move_line
Check if Cartesian linear motion mode is enabled.
Returns
| Type | Description |
|---|---|
| bool | true if using linear Cartesian interpolation, false if using joint-space interpolation |
PlannerConfig
Motion planning configuration structure.
Comprehensive configuration for robot motion planning and execution, controlling behavior such as planning mode, collision checking, reference frames, and execution parameters.
Member Variables
| Name | Type | Description |
|---|---|---|
is_direct_execute |
bool | Whether to execute trajectory immediately after planning. true: Plan and execute the trajectory in one operation false: Only plan the trajectory without executing (for preview or validation) |
is_blocking |
bool | Whether to wait synchronously for operation completion. true: Block until planning/execution completes or timeout occurs false: Return immediately after initiating operation (asynchronous mode) |
timeout_second |
double | Timeout duration for blocking operations (seconds) Maximum time to wait for planning or execution completion when is_blocking = true. Default: 20 seconds |
actuate_type |
ActuateType | Actuation mode specifying which kinematic chains to use. Determines whether to use only the target arm, or also involve torso/leg motion for extended workspace or mobile manipulation. |
is_tool_pose |
bool | Whether target is specified as tool center point (TCP) pose. true: Target is end-effector TCP pose (Cartesian space) false: Target is joint space configuration |
is_relative_pose |
bool | Whether target pose is relative to current pose. true: Target pose is relative displacement from current end-effector pose false: Target pose is absolute in the specified reference frame |
is_check_collision |
bool | Whether to enable collision checking during planning. true: Check collisions with obstacles and self-collisions false: Disable collision checking (use with caution) |
reference_frame |
std::string | Reference coordinate frame for target pose. Specifies the coordinate frame in which target poses are expressed. Common values: "base_link", "world", "odom" |
joint_state |
std::unordered_map< std::string, std::vector< double > > | Specifies starting joint configuration for planning. If empty, uses current robot state. Key: Joint group identifier Value: Vector of joint angles (radians) for that group |
move_line |
bool | true: Plan straight-line motion in Cartesian space (end-effector moves in straight line) false: Plan standard joint-space or task-space trajectory (may not be Cartesian linear) |
PlanTaskResult
Contains the complete result of a motion planning operation, including success status, generated trajectory, kinematics solutions, and collision information.
Member Variables
| Name | Type | Description |
|---|---|---|
task_id |
std::string | Used to track and distinguish different planning tasks, especially in asynchronous operations. |
success |
bool | true: Planning completed successfully false: Planning failed (check error_code and error_message for details) |
error_code |
int | Used for programmatic error handling. Zero typically indicates success, non-zero values indicate specific error conditions. |
error_message |
std::string | Provides detailed description of failure reason or exception information when success = false. |
trajectory |
struct [galbot::sdk::[PlanTaskResult](#plantaskresult-struct)](#plantaskresult-struct)::[Trajectory](#trajectory-struct) | Contains the complete planned trajectory with joint positions and timing information. |
ik_result |
std::unordered_map< std::string, std::vector< double > > | Maps kinematic chain name to solved joint configuration (radians). Key: Joint chain name (e.g., "left_arm", "right_arm") Value: Vector of joint angles (radians) |
fk_result |
std::unordered_map< std::string, Pose > | Maps link or end-effector name to computed pose. Key: Link or end-effector name (e.g., "left_gripper", "right_hand") Value: Computed pose (position + orientation) |
collision_result |
std::vector< double > | Optional field containing collision distances or penetration depths. Empty vector typically means no collision check was performed. Non-empty values may represent minimum distances to obstacles or collision severity. |
Point
Represents a position in three-dimensional Cartesian space.
Member Variables
| Name | Type | Description |
|---|---|---|
x |
double | X coordinate (meters) |
y |
double | Y coordinate (meters) |
z |
double | Z coordinate (meters) |
PointField
Describes one data field in a PointCloud2 point structure, defining its name, type, offset, and count. Compatible with ROS 2 sensor_msgs/PointField.
Member Variables
| Name | Type | Description |
|---|---|---|
name |
std::string | Identifier for this data channel. Standard field names include: "x", "y", "z": 3D Cartesian coordinates (meters) "intensity": Reflection intensity (unitless or sensor-specific) "rgb" or "rgba": Color information (packed RGB or RGBA) "ring": Lidar ring/laser index (integer) "timestamp": Per-point timestamp (seconds or nanoseconds) |
offset |
uint32_t | Byte offset of this field from the beginning of a point's data structure. Example: For point layout {x:float32, y:float32, z:float32}, offsets are: x=0, y=4, z=8 |
datatype |
DataType | Specifies the primitive data type using the DataType enumeration. |
count |
uint32_t | Array length for this field. Typically 1 for scalar fields (x, y, z, intensity). May be > 1 for array fields (e.g., count=3 for a 3-element vector). |
Nested Enums
DataType
Defines primitive data types for point cloud fields, determining byte size and interpretation method for each field value.
| Enum Value | Description |
|---|---|
UNKNOWN |
Unknown or unspecified type |
INT8 |
8-bit signed integer (1 byte) |
UINT8 |
8-bit unsigned integer (1 byte) |
INT16 |
16-bit signed integer (2 bytes) |
UINT16 |
16-bit unsigned integer (2 bytes) |
INT32 |
32-bit signed integer (4 bytes) |
UINT32 |
32-bit unsigned integer (4 bytes) |
FLOAT32 |
32-bit IEEE 754 floating point (4 bytes) |
FLOAT64 |
64-bit IEEE 754 floating point (8 bytes) |
Pose
Pose (position + orientation) structure.
Represents a full 6-DOF (Degrees of Freedom) pose in 3D space, combining position (translation) and orientation (rotation) information. Commonly used for robot end-effector poses, object poses, and coordinate frame transforms.
Pose
Default constructor.
Initializes pose at origin (0,0,0) with identity rotation.
Pose
Initialize Pose using separate position and quaternion containers.
Parameters
| Name | Type | Description |
|---|---|---|
pos |
const T & | 3D position vector [x, y, z] in meters, must have size 3 |
quat |
const T & | Quaternion vector [x, y, z, w], must have size 4 |
Pose
Initialize Pose using a single 7-dimensional vector.
Parameters
| Name | Type | Description |
|---|---|---|
vec |
const T & | 7D vector: [x, y, z, qx, qy, qz, qw] where first 3 elements are position (meters) and last 4 elements are quaternion |
Member Variables
| Name | Type | Description |
|---|---|---|
position |
Point | Position in 3D space (x, y, z) in meters |
orientation |
Quaternion | Orientation as unit quaternion (x, y, z, w) |
PoseState
Represents a target end-effector pose in Cartesian space (SE(3)). Extends RobotStates to specify pose-based motion goals for kinematic chains. Used in inverse kinematics and Cartesian trajectory planning. Pose values: position in meters, orientation as unit quaternion. Coordinate frames must exist in the robot's TF tree.
get_type
Get runtime type identifier.
Returns
| Type | Description |
|---|---|
| Type | , indicating this is a Cartesian pose target |
Member Variables
| Name | Type | Description |
|---|---|---|
frame_id |
std::string | Target frame on the kinematic chain (e.g., "EndEffector", "Camera", "TCP") |
reference_frame |
std::string | Reference coordinate frame (e.g., "base_link", "world", "odom") |
pose |
Pose | Target Cartesian pose: position (meters) + orientation (unit quaternion) |
Quaternion
Represents a 3D rotation using quaternion representation (x, y, z, w). A unit quaternion has magnitude 1 and represents a valid rotation.
Member Variables
| Name | Type | Description |
|---|---|---|
x |
double | X component of the quaternion vector part |
y |
double | Y component of the quaternion vector part |
z |
double | Z component of the quaternion vector part |
w |
double | W component, scalar part (for identity rotation, w=1 and x=y=z=0) |
ReferenceFrame
Specifies the coordinate frame in which poses, positions, or trajectories are expressed. Note: This is a plain enum (not enum class) for C-style compatibility.
| Enum Value | Description |
|---|---|
FRAME_WORLD |
World/global coordinate frame, fixed reference frame |
FRAME_BASE |
Robot base coordinate frame, attached to mobile base |
RegionOfInterest
Defines a rectangular sub-region within an image for selective processing. Compatible with ROS 2 sensor_msgs/RegionOfInterest.
Member Variables
| Name | Type | Description |
|---|---|---|
x_offset |
uint32_t | Horizontal pixel coordinate of the ROI's left edge. 0 means ROI starts at the image's left edge. |
y_offset |
uint32_t | Vertical pixel coordinate of the ROI's top edge. 0 means ROI starts at the image's top edge. |
height |
uint32_t | Number of pixel rows in the region of interest. |
width |
uint32_t | Number of pixel columns in the region of interest. |
do_rectify |
bool | true: Apply camera rectification to this ROI before processing false: Use raw image data without rectification, or capture full resolution |
RgbData
Contains compressed color image data from RGB cameras. Compatible with ROS 2 sensor_msgs/CompressedImage format.
convert_to_cv2_mat
Decode compressed image data to OpenCV Mat.
Decodes the internally stored compressed binary data using cv::imdecode.
Returns
| Type | Description |
|---|---|
| std::shared_ptr< cv::Mat > | std::shared_ptr |
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | Contains acquisition timestamp and camera coordinate frame ID. |
format |
std::string | Specifies compression format and encoding. Examples: "jpeg", "png", "bgr8; jpeg compressed bgr8" |
data |
std::vector< uint8_t > | Binary blob containing the compressed image (JPEG, PNG, etc.). |
RobotStates
Encapsulates the complete kinematic state of the robot, including whole-body joint configuration and mobile base pose. This class serves as a base for more specialized state representations (PoseState, JointStates) and is used throughout the planning and control pipeline for state specification and feedback. All angular values are in radians, linear values in meters (SI units). Base pose uses quaternion representation for orientation (x, y, z, qx, qy, qz, qw).
get_type
Get the runtime type of this state object.
Returns
| Type | Description |
|---|---|
| Type | Type enumeration value, ROBOT_STATES for base class |
RobotStates
Default constructor.
Creates an empty RobotStates object with uninitialized joint and base states.
set_whole_body_joint
Set complete whole-body joint configuration.
Parameters
| Name | Type | Description |
|---|---|---|
joint_positions |
const std::vector< double > & | Vector of joint angles (in radians), must match robot DOF |
Note
Vector size should equal the total number of actuated joints in the robot.
set_base_state
Set mobile base pose.
Converts Pose structure to internal base_state vector representation.
Parameters
| Name | Type | Description |
|---|---|---|
base_pose |
const Pose & | Base pose in SE(3): position (meters) and orientation (quaternion) |
Note
Quaternion must be unit-normalized (x^2 + y^2 + z^2 + w^2 = 1).
RobotStates
galbot::sdk::RobotStates::RobotStates(
const std::string &chain,
const std::vector< double > &whole_joint,
const Pose &base_pose
)
Parameterized constructor for complete robot state initialization.
Parameters
| Name | Type | Description |
|---|---|---|
chain |
const std::string & | Kinematic chain name (e.g., "left_arm", "right_arm") |
whole_joint |
const std::vector< double > & | Complete joint configuration vector (radians) |
base_pose |
const Pose & | Mobile base pose: position (meters) + orientation (unit quaternion) |
Member Variables
| Name | Type | Description |
|---|---|---|
chain_name |
std::string | Kinematic chain identifier (e.g., "left_arm", "right_arm") |
whole_body_joint |
std::vector< double > | Complete robot joint configuration (radians), ordered by joint index. |
base_state |
std::vector< double > | Mobile base pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) |
Nested Enums
Type
Enumeration for distinguishing derived state types.
Used for runtime type identification of RobotStates-derived classes.
| Enum Value | Description |
|---|---|
POSE |
PoseState: Cartesian pose target. |
JOINT |
JointStates: Joint space target. |
ROBOT_STATES |
RobotStates: Generic whole-body state. |
S1ControllerName
String constants for S1 controller names.
Defines the controller names supported by the S1 robot model.
Member Variables
| Name | Type | Description |
|---|---|---|
SWERVE_CHASSIS_POSE_CTRL |
constexpr Name | Swerve chassis pose controller |
SWERVE_CHASSIS_TWIST_CTRL |
constexpr Name | Swerve chassis twist controller |
ELEVATOR_CTRL |
constexpr Name | Elevator controller |
HEAD_PVT_CTRL |
constexpr Name | Head PVT controller |
LEFT_ARM_PVT_CTRL |
constexpr Name | Left arm PVT controller |
RIGHT_ARM_PVT_CTRL |
constexpr Name | Right arm PVT controller |
LEFT_GRIPPER_CTRL |
constexpr Name | Left gripper controller |
RIGHT_GRIPPER_CTRL |
constexpr Name | Right gripper controller |
LEFT_CAMERA_CTRL |
constexpr Name | Left camera controller |
RIGHT_CAMERA_CTRL |
constexpr Name | Right camera controller |
S1JointGroup
A "joint group" is the SDK's primary control/planning unit, not a single joint: Kinematic-consistent control: commands are validated and executed per chain/end-effector group. Deterministic command ordering: joint_groups are expanded to concrete joint_names in group order. Group-level behavior: each group has its own active/passive attribute and execution tolerance. Recommended usage: Use constants in this struct when filling API parameters such as joint_groups. If exact joint names are needed, query them at runtime via get_joint_names(true, {group_name}) instead of hard-coding. In APIs that accept both joint_groups and joint_names, joint_names takes precedence.
Member Variables
| Name | Type | Description |
|---|---|---|
HEAD |
constexpr Name | Head chain. Default joints: head_joint1, head_joint2. Typical use: gaze/camera orientation. |
LEFT_ARM |
constexpr Name | Left 7-DoF arm chain. Default joints: left_arm_joint1 ... left_arm_joint7. Typical use: left-arm manipulation. |
RIGHT_ARM |
constexpr Name | Right 7-DoF arm chain. Default joints: right_arm_joint1 ... right_arm_joint7. Typical use: right-arm manipulation. |
LEFT_GRIPPER |
constexpr Name | Left gripper chain. Default joint: left_gripper_joint1. Typical use: grasp width control. |
RIGHT_GRIPPER |
constexpr Name | Right gripper chain. Default joint: right_gripper_joint1. Typical use: grasp width control. |
TORSO |
constexpr Name | Torso chain. Default joint: torso_base_joint. Typical use: upper-body height/pitch adjustment. |
SWERVE_CHASSIS |
constexpr Name | Swerve chassis mechanism group (passive in joint-position control). Default joints: Wheel_1_direction_joint, Wheel_1_drive_joint, Wheel_2_direction_joint, Wheel_2_drive_joint, Wheel_3_direction_joint, Wheel_3_drive_joint, Wheel_4_direction_joint, Wheel_4_drive_joint. Typical use: chassis state grouping; base motion should use base APIs. |
LEFT_CAMERA |
constexpr Name | Camera mount group placeholder (no active body joints). Typical use: semantic grouping for sensor-side logic. |
RIGHT_CAMERA |
constexpr Name | Camera mount group placeholder (no active body joints). Typical use: semantic grouping for sensor-side logic. |
SamplerConfig
Configuration parameters for sampling-based motion planners.
This structure configures sampling-based planning algorithms (e.g., RRT, RRT*). It controls state space sampling resolution, interpolation settings, path simplification, and planning termination conditions. Sampling-based planners explore the configuration space by randomly sampling states and connecting them to build a motion plan graph.
set_state_check_type
Set the distance metric for state comparison.
Parameters
| Name | Type | Description |
|---|---|---|
type |
StateCheckType | Distance metric type for evaluating state similarity |
set_state_check_resolution
Set state comparison resolution threshold.
Parameters
| Name | Type | Description |
|---|---|---|
resolution |
double | Minimum distance threshold to consider two states as distinct (units: rad or dimensionless) |
Note
Lower values increase planning precision but may slow down computation
set_interpolate
Enable or disable path interpolation between sampled states.
Parameters
| Name | Type | Description |
|---|---|---|
enable |
bool | true to enable interpolation, false to use only sampled waypoints |
Note
Interpolation improves trajectory smoothness and collision checking accuracy
set_interpolation_cnt
Set the number of interpolation waypoints between consecutive samples.
Parameters
| Name | Type | Description |
|---|---|---|
cnt |
int | Number of intermediate waypoints to insert (0 = use automatic calculation) |
Note
Higher counts improve collision detection but increase computational cost
set_simplify
Enable or disable path simplification post-processing.
Parameters
| Name | Type | Description |
|---|---|---|
enable |
bool | true to enable path shortcutting and smoothing, false to use raw planned path |
Note
Simplification reduces waypoints and improves trajectory efficiency
set_max_simplification_time
Set maximum time budget for path simplification.
Parameters
| Name | Type | Description |
|---|---|---|
time |
double | Maximum simplification duration (units: s); negative values indicate no time limit |
Note
Longer simplification time may yield shorter, smoother paths
set_termination_condition_type
Set planning termination condition.
Parameters
| Name | Type | Description |
|---|---|---|
type |
TerminationConditionType | Termination criterion (timeout only vs. timeout or exact solution) |
set_max_planning_time
Set maximum time budget for motion planning.
Parameters
| Name | Type | Description |
|---|---|---|
time |
double | Maximum planning duration (units: s) |
Note
Planning may terminate earlier if exact solution is found (depends on termination condition)
get_state_check_type
Get the configured distance metric for state comparison.
Returns
| Type | Description |
|---|---|
| StateCheckType | Current state check type |
get_state_check_resolution
Get state comparison resolution threshold.
Returns
| Type | Description |
|---|---|
| double | Resolution value (units: rad or dimensionless, depending on state check type) |
get_interpolate
Check if path interpolation is enabled.
Returns
| Type | Description |
|---|---|
| bool | true if interpolation is enabled, false otherwise |
get_interpolation_cnt
Get the number of interpolation waypoints.
Returns
| Type | Description |
|---|---|
| int | Number of intermediate waypoints between samples |
get_simplify
Check if path simplification is enabled.
Returns
| Type | Description |
|---|---|
| bool | true if path simplification is enabled, false otherwise |
get_max_simplification_time
Get maximum path simplification time budget.
Returns
| Type | Description |
|---|---|
| double | Maximum simplification time (units: s); negative values indicate no limit |
get_termination_condition_type
Get planning termination condition.
Returns
| Type | Description |
|---|---|
| TerminationConditionType | Current termination condition type |
get_max_planning_time
Get maximum planning time budget.
Returns
| Type | Description |
|---|---|
| double | Maximum planning time (units: s) |
Print sampler configuration to standard output.
Outputs all configuration parameters for debugging and verification.
Nested Enums
StateCheckType
Distance metric for comparing states in configuration space.
| Enum Value | Description |
|---|---|
EUCLIDEAN_DISTANCE |
Cartesian Euclidean distance in joint space (treats joint angles as Cartesian coordinates) |
RADIAN_DISTANCE |
Angular distance metric accounting for joint angle wraparound and weighting |
TerminationConditionType
Planning termination criteria.
| Enum Value | Description |
|---|---|
TIMEOUT |
Terminate only when maximum planning time is exceeded |
TIMEOUT_AND_EXACT_SOLUTION |
Terminate when timeout occurs OR exact goal solution is found |
SeedType
Specifies the initialization strategy for inverse kinematics (IK) solvers. Different seed types affect convergence speed and solution quality.
| Enum Value | Description |
|---|---|
RANDOM_SEED |
Random seed, generates random initial joint configurations |
RANDOM_PROGRESSIVE_SEED |
Random progressive seed, tries multiple random seeds iteratively (recommended for robustness) |
USER_DEFINED_SEED |
User-defined seed, uses explicitly provided initial joint configuration |
SEED_TYPE_NUM |
Total number of seed types (for boundary checking or array sizing) |
SensorStatus
Represents the status of sensor data acquisition and processing operations, applicable to cameras, lidar, IMU, force sensors, and other sensor types.
| Enum Value | Description |
|---|---|
SUCCESS |
Execution succeeded, sensor data valid and operation completed |
TIMEOUT |
Execution timeout, data acquisition or operation not completed within specified time limit |
FAULT |
Fault occurred, sensor detected anomaly and cannot continue normal operation |
INVALID_INPUT |
Input parameters invalid or not meeting interface requirements |
INIT_FAILED |
Initialization failed, internal communication or dependent component creation failed |
IN_PROGRESS |
Operation in progress but not yet completed |
STOPPED_UNREACHED |
Stopped during execution without completing expected operation |
DATA_FETCH_FAILED |
Data acquisition or reading failed, sensor may be disconnected or malfunctioning |
PUBLISH_FAIL |
Data transmission or reporting failed, unable to publish sensor data |
COMM_DISCONNECTED |
Sensor communication connection lost, no data available |
STATUS_NUM |
Total number of status enumerations (for boundary checking or array sizing) |
SensorType
Sensor type enumeration describing various sensors on the robot.
Identifies different sensor types available on the robot for perception, localization, and manipulation tasks.
| Enum Value | Description |
|---|---|
HEAD_LEFT_CAMERA |
Head left camera, typically RGB camera for stereo vision . |
HEAD_RIGHT_CAMERA |
Head right camera, typically RGB camera for stereo vision . |
LEFT_ARM_CAMERA |
Left arm camera, mounted on left manipulator for visual servoing . |
RIGHT_ARM_CAMERA |
Right arm camera, mounted on right manipulator for visual servoing . |
LEFT_ARM_DEPTH_CAMERA |
Left arm depth camera, provides RGB-D data for left arm workspace . |
RIGHT_ARM_DEPTH_CAMERA |
Right arm depth camera, provides RGB-D data for right arm workspace . |
HEAD_LIDAR |
S1 Head LiDAR (front), mounted on head for forward perception . |
BACK_LIDAR |
S1 Back LiDAR (rear), mounted on rear for backward perception . |
CHASSIS_LIDAR |
S1 Chassis LiDAR (front), mounted on chassis for forward perception . |
HEAD_IMU |
S1 Head LiDAR IMU (Inertial Measurement Unit) . |
BACK_IMU |
S1 Back LiDAR IMU (Inertial Measurement Unit) . |
CHASSIS_IMU |
S1 Chassis LiDAR IMU (Inertial Measurement Unit) . |
BASE_ULTRASONIC |
Base ultrasonic sensor array, for proximity detection and collision avoidance . |
SENSOR_NUM |
Total number of sensor enumerations (for boundary checking or array sizing) . |
SingoriXTarget
SDK mirror of galbot.singorix_proto.SingoriXTarget.
Member Variables
| Name | Type | Description |
|---|---|---|
header |
Header | |
target_group_trajectory_map |
std::unordered_map< std::string, TargetGroupTrajectory > | |
target_task_trajectory_map |
std::unordered_map< std::string, TargetTaskTrajectory > |
SUCTION_ACTION_STATE
Represents the operational state of a vacuum suction cup end-effector, tracking the suction process from idle to success or failure.
| Enum Value | Description |
|---|---|
suction_action_idle |
Idle state, vacuum not activated |
suction_action_sucking |
Suction in progress, attempting to grasp object |
suction_action_success |
Suction successful, pressure decreased indicating secure grasp |
suction_action_failed |
Suction failed, pressure did not decrease (no object or seal failure) |
SuctionCupState
Contains the current state of a vacuum suction cup gripper, including activation status, pressure reading, and action state.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | State timestamp (nanoseconds since epoch) |
activation |
bool | Activation flag: true if vacuum is on, false if off |
pressure |
double | Current vacuum pressure (Pascals), typically negative for suction |
action_state |
SUCTION_ACTION_STATE | Current suction action state |
TargetConfig
Common target configuration shared by group and task trajectories.
Member Variables
| Name | Type | Description |
|---|---|---|
target_data |
int32_t | |
target_type |
int32_t | |
target_sampling |
TargetSampling | |
target_priority |
int32_t | |
target_id |
std::string | |
target_ts |
Timestamp |
TargetDataBits
Bitmask describing which fields in a target are meaningful.
Mirrors galbot.singorix_proto.TargetData while remaining in the SDK type layer.
| Enum Value | Description |
|---|---|
TARGET_DATA_NONE |
|
TARGET_DATA_JOINT_POS |
|
TARGET_DATA_JOINT_VEL |
|
TARGET_DATA_JOINT_ACC |
|
TARGET_DATA_JOINT_EFF |
|
TARGET_DATA_FRAME_POSE |
|
TARGET_DATA_FRAME_TWIST |
|
TARGET_DATA_FRAME_WRENCH |
|
TARGET_DATA_DEFAULT |
TargetGroupTrajectory
Target trajectory for a group of joints.
Member Variables
| Name | Type | Description |
|---|---|---|
target_config |
TargetConfig | |
joint_names |
std::vector< std::string > | |
group_commands |
std::vector< GroupCommand > |
TargetSampling
Sampling strategy for a target trajectory.
Mirrors galbot.singorix_proto.TargetSampling while remaining in the SDK type layer.
| Enum Value | Description |
|---|---|
TARGET_SAMPLING_DEFAULT |
|
TARGET_SAMPLING_DIRECT_PASS |
|
TARGET_SAMPLING_LINEAR_INTERPOLATE |
|
TARGET_SAMPLING_TRAPEZOIDAL_PROFILE |
|
TARGET_SAMPLING_S_CURVE_PROFILE |
|
TARGET_SAMPLING_CUBIC_SPLINES |
|
TARGET_SAMPLING_QUINTIC_SPLINES |
|
TARGET_SAMPLING_B_SPLINES |
|
TARGET_SAMPLING_CUSTOM |
TargetTaskTrajectory
Target trajectory for task-space control.
Member Variables
| Name | Type | Description |
|---|---|---|
target_config |
TargetConfig | |
group_names |
std::vector< std::string > | |
joint_names |
std::vector< std::string > | |
subtask_names |
std::vector< std::string > | |
task_commands |
std::vector< TaskCommand > |
TargetTypeBits
Bitmask describing how a target should be applied.
Mirrors galbot.singorix_proto.TargetType while remaining in the SDK type layer.
| Enum Value | Description |
|---|---|
TARGET_TYPE_NONE |
|
TARGET_TYPE_TOUCH |
|
TARGET_TYPE_CLEAR |
|
TARGET_TYPE_PREPENDNOW |
|
TARGET_TYPE_APPEND |
|
TARGET_TYPE_OVERRIDE |
|
TARGET_TYPE_PROVERRIDE |
|
TARGET_TYPE_DEFAULT |
TaskCommand
Task-space command at a specific time point.
Member Variables
| Name | Type | Description |
|---|---|---|
time_from_start_s |
double | |
subtask_commands |
std::vector< FrameTriad > |
Timestamp
Represents high-precision time points with second and nanosecond components. Compatible with ROS 2 builtin_interfaces/Time and std_msgs/Header timestamp format.
Member Variables
| Name | Type | Description |
|---|---|---|
sec |
int64_t | Number of seconds since UNIX Epoch (1970-01-01 00:00:00 UTC). |
nanosec |
uint32_t | Nanosecond portion within the current second. Valid range: [0, 999,999,999] (< 1 second) |
Trajectory
Contains the complete planned trajectory with joint positions and timing information.
Member Variables
| Name | Type | Description |
|---|---|---|
joint_positions |
std::vector< std::vector< double > > | Each element is a vector of joint angles (radians) representing robot configuration at one waypoint. Inner vector size = number of joints, outer vector size = number of waypoints. |
timestamps |
std::vector< double > | Cumulative time from trajectory start. Size must match joint_positions size. |
Trajectory
Represents a complete robot trajectory consisting of multiple waypoints over time.
Member Variables
| Name | Type | Description |
|---|---|---|
points |
std::vector< TrajectoryPoint > | Ordered list of trajectory waypoints |
joint_groups |
std::vector< std::string > | Joint-group names used to expand target joints in-order. Example: {"head","left_arm"} maps to head_joint1, head_joint2, left_arm_joint1 ... left_arm_joint7. If empty (and joint_names is also empty), SDK defaults to all active body joint groups. |
joint_names |
std::vector< std::string > | Explicit joint names. When non-empty, this takes precedence over joint_groups and is validated as active joints only. |
TrajectoryControlStatus
Robot trajectory execution status enumeration.
Represents the real-time execution status when the robot follows a pre-planned trajectory consisting of multiple waypoints.
| Enum Value | Description |
|---|---|
INVALID_INPUT |
Input parameters do not meet requirements, trajectory cannot be executed |
RUNNING |
Trajectory is currently executing, not yet completed |
COMPLETED |
Trajectory execution completed successfully, reached final target point |
STOPPED_UNREACHED |
Stopped during trajectory execution without reaching endpoint |
ERROR |
Error occurred, trajectory execution cannot continue |
DATA_FETCH_FAILED |
Execution data retrieval failed, e.g., joint state or sensor feedback unavailable |
STATUS_NUM |
Total number of status enumerations (for boundary checking or array sizing) |
TrajectoryFeasibilityCheckOption
Trajectory validation and feasibility checking configuration.
This structure provides fine-grained control over which feasibility constraints are enforced during trajectory validation. It supports independent toggling of collision detection, joint limit compliance, and velocity profile feasibility. Selectively disabling checks can improve computational performance for debugging, simulation, or scenarios where certain constraints are guaranteed to be satisfied. Disabling feasibility checks may produce trajectories that are unsafe or physically unrealizable. Use with caution and only when constraints are verified through other means.
set_disable_collision_check
Enable or disable collision detection during trajectory validation.
Parameters
| Name | Type | Description |
|---|---|---|
disable |
bool | true to skip collision checking, false to enforce collision-free trajectories |
Warning
Disabling collision checks may result in unsafe motion plans
set_disable_joint_limit_check
Enable or disable joint limit compliance checking.
Parameters
| Name | Type | Description |
|---|---|---|
disable |
bool | true to skip joint limit validation, false to enforce position limits |
Warning
Disabling joint limit checks may damage hardware or violate safety constraints
set_disable_velocity_feasibility_check
void galbot::sdk::TrajectoryFeasibilityCheckOption::set_disable_velocity_feasibility_check(bool disable)
Enable or disable velocity profile feasibility checking.
Parameters
| Name | Type | Description |
|---|---|---|
disable |
bool | true to skip velocity limit validation, false to enforce velocity constraints |
Note
Velocity feasibility ensures the trajectory can be executed within actuator speed limits
get_disable_collision_check
Check if collision detection is disabled.
Returns
| Type | Description |
|---|---|
| bool | true if collision checking is currently disabled, false if enabled |
get_disable_joint_limit_check
Check if joint limit checking is disabled.
Returns
| Type | Description |
|---|---|
| bool | true if joint limit validation is currently disabled, false if enabled |
get_disable_velocity_feasibility_check
Check if velocity feasibility checking is disabled.
Returns
| Type | Description |
|---|---|
| bool | true if velocity validation is currently disabled, false if enabled |
Print trajectory feasibility check configuration to standard output.
Outputs enabled/disabled status for each feasibility check type.
TrajectoryPlanConfig
Trajectory planning and parameterization configuration.
This structure configures trajectory generation parameters for converting discrete motion plans into smooth, time-parameterized trajectories. It supports both single-segment and multi-waypoint trajectory planning. Trajectory planning involves computing velocity and acceleration profiles along a geometric path while respecting kinematic constraints.
set_min_move_time
Set minimum duration for any motion segment.
Parameters
| Name | Type | Description |
|---|---|---|
time |
double | Minimum trajectory execution time (units: s) |
Note
Non-zero values prevent excessively fast motions; 0.0 allows maximum speed within kinematic limits
set_move_line_intermediate_point
Set waypoint density for Cartesian linear motion interpolation.
Parameters
| Name | Type | Description |
|---|---|---|
value |
double | Number of intermediate waypoints for linear path segments (dimensionless) |
Note
Higher values improve Cartesian path accuracy but increase computational cost
set_way_point_plan_expected_time
Set expected total duration for multi-waypoint trajectory planning.
Parameters
| Name | Type | Description |
|---|---|---|
time |
double | Expected trajectory execution time for waypoint sequences (units: s) |
Note
Used as a hint for time-optimal trajectory generation algorithms
get_min_move_time
Get minimum motion segment duration.
Returns
| Type | Description |
|---|---|
| double | Minimum movement time (units: s) |
get_move_line_intermediate_point
Get waypoint density for linear motion interpolation.
Returns
| Type | Description |
|---|---|
| double | Number of intermediate waypoints (dimensionless) |
get_way_point_plan_expected_time
Get expected multi-waypoint trajectory duration.
Returns
| Type | Description |
|---|---|
| double | Expected planning time (units: s) |
Print trajectory planning configuration to standard output.
Outputs all configuration parameters for debugging and verification.
TrajectoryPoint
Represents a waypoint in a robot trajectory, specifying joint states at a particular time.
Member Variables
| Name | Type | Description |
|---|---|---|
time_from_start_second |
double | Time from trajectory start (seconds) |
joint_command_vec |
std::vector< JointCommand > | List of joint commands for all joints at this waypoint |
TransformMessage
Represents a timestamped coordinate frame transformation, consisting of translation and rotation. Commonly used for TF (Transform) trees in robotics.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Transform timestamp (nanoseconds since epoch) |
translation |
Point | Translation vector (meters) |
rotation |
Quaternion | Rotation as unit quaternion (x, y, z, w) |
Twist
6D twist command (linear + angular velocity).
Member Variables
| Name | Type | Description |
|---|---|---|
linear |
Vector3 | |
angular |
Vector3 |
UltrasonicData
Contains a single ultrasonic distance measurement with timestamp.
Member Variables
| Name | Type | Description |
|---|---|---|
timestamp_ns |
int64_t | Measurement timestamp in nanoseconds since epoch |
distance |
double | Measured distance to nearest obstacle (meters) |
UltrasonicType
Chassis ultrasonic sensor probe enumeration (8 directions)
Identifies individual ultrasonic sensors arranged around the mobile base chassis for omnidirectional obstacle detection and proximity sensing.
| Enum Value | Description |
|---|---|
FRONT_LEFT |
Front left ultrasonic sensor |
FRONT_RIGHT |
Front right ultrasonic sensor |
RIGHT_LEFT |
Right side front ultrasonic sensor |
RIGHT_RIGHT |
Right side rear ultrasonic sensor |
BACK_LEFT |
Back left ultrasonic sensor |
BACK_RIGHT |
Back right ultrasonic sensor |
LEFT_LEFT |
Left side front ultrasonic sensor |
LEFT_RIGHT |
Left side rear ultrasonic sensor |
ULTRASONIC_NUM |
Total number of ultrasonic sensors (for boundary checking or array sizing) |
Vector3
Represents a three-dimensional vector, used for forces, torques, velocities, accelerations, and other vectorial quantities.
Member Variables
| Name | Type | Description |
|---|---|---|
x |
double | X component |
y |
double | Y component |
z |
double | Z component |
Wrench
6D wrench command (force + torque).
Member Variables
| Name | Type | Description |
|---|---|---|
force |
Vector3 | |
torque |
Vector3 |