Skip to main content

CPP API Reference - G1 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.
  • GalbotPerception: On-device perception (G1 only). Load vision models, run inference, and read structured results such as stereo depth; use together with GalbotRobot sensor APIs.
  • 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

virtual galbot::sdk::GalbotRobot::~GalbotRobot()=default

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

NameTypeDescription
enable_sensor_setconst 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

TypeDescription
booltrue if initialization succeeded

PublishTarget

virtual ControlStatus galbot::sdk::GalbotRobot::PublishTarget(const SingoriXTarget &target)=0

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

NameTypeDescription
targetconst SingoriXTarget &SDK mirror of singorix target data

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
targetconst SingoriXTarget &SDK mirror of singorix target data

Returns

TypeDescription
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

NameTypeDescription
joint_commandsconst std::vector< JointCommand > &Vector of low-level joint commands.
joint_groupsconst 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_namesconst 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_sconst doubleExpected arrival time (seconds) for the target command.

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
joint_positionsconst 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_groupsconst 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_namesconst std::vector< std::string > &Specific joint names to control. This parameter takes precedence over joint_groups. When provided, joint_groups is ignored.
is_blockingconst boolIf true, blocks until motion completes or timeout occurs. If false, returns immediately after command is sent.
speed_rad_sconst doubleMaximum joint angular velocity in radians per second (rad/s). Default: 0.2 rad/s.
timeout_sconst doubleMaximum blocking wait time in seconds. Returns immediately upon timeout regardless of execution completion. Default: 15 seconds.

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
joint_groupsstd::vector< std::string >Vector of joint group names to query

Returns

TypeDescription
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

NameTypeDescription
trajectoryTrajectoryTrajectory data structure containing waypoints and timing
is_blockingboolIf true, blocks until trajectory execution completes. If false, returns immediately after trajectory is submitted.

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
trajectoryconst 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

TypeDescription
ControlStatusControlStatus indicating success or failure of command submission. Returns immediately without waiting for execution completion (non-blocking).

set_suction_cup_command

virtual ControlStatus galbot::sdk::GalbotRobot::set_suction_cup_command(
const std::string &end_effector,
bool activate
) =0

Control suction cup activation state.

Activates or deactivates the specified suction cup end-effector.

Parameters

NameTypeDescription
end_effectorconst std::string &Joint group name specifying which suction cup to control (e.g., "left_suction_cup", "right_suction_cup")
activateboolIf true, activates vacuum suction. If false, releases suction.

Returns

TypeDescription
ControlStatusControlStatus indicating success or failure of command transmission

Supported: G1

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

NameTypeDescription
end_effectorconst std::string &Joint group name specifying which gripper to control (e.g., "left_gripper", "right_gripper")
width_mdoubleTarget gripper opening width in meters (m), measured between the inner surfaces of the gripper fingers.
velocity_mpsdoubleGripper closing/opening velocity in meters per second (m/s). Default: 0.03 m/s.
effortdoubleMaximum gripping force in Newton-meters (N·m). This limits the torque applied to prevent damage to grasped objects. Default: 30 N·m.
is_blockingboolIf true, blocks until gripper reaches target position or times out. If false, returns immediately after command is sent.

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
end_effectorconst std::string &Joint group name specifying which gripper to query (e.g., "left_gripper", "right_gripper")

Returns

TypeDescription
std::shared_ptr< GripperState >Shared pointer to , or nullptr if retrieval fails

get_suction_cup_state

virtual std::shared_ptr<SuctionCupState> galbot::sdk::GalbotRobot::get_suction_cup_state(
const std::string &end_effector
) =0

Get current suction cup state.

Retrieves the current state of the specified suction cup, including activation status and vacuum pressure measurements.

Parameters

NameTypeDescription
end_effectorconst std::string &Joint group name specifying which suction cup to query (e.g., "left_suction_cup", "right_suction_cup")

Returns

TypeDescription
std::shared_ptr< SuctionCupState >Shared pointer to , or nullptr if retrieval fails

Supported: G1

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

NameTypeDescription
end_effectorconst std::string &Joint group name specifying which dexhand to query (e.g., "left_dexhand", "right_dexhand")
dexhand_stateDexhandState &Output dexhand state (joint_state and optional force_sensor_map)
dexhand_typeDexHandTypeDexterous hand model type (INSPIRE, BRAINCO, or SHARPA)

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
end_effectorconst std::string &Joint group name specifying which dexhand to control (e.g., "left_dexhand", "right_dexhand")
dexhand_commandconst 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_typeDexHandTypeDexterous hand model type.
is_blockingboolIf true, blocks until the hand reaches target position or times out.

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
joint_groupsconst std::vector< std::string > &Joint group names to query. Empty vector retrieves all body joints.
joint_namesconst std::vector< std::string > &Specific joint names to query. This parameter takes precedence over joint_groups. When provided, joint_groups is ignored.

Returns

TypeDescription
std::vector< double >Vector of current joint angles in radians

get_joint_group_names

virtual std::vector<std::string> galbot::sdk::GalbotRobot::get_joint_group_names()=0

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

TypeDescription
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

NameTypeDescription
only_active_jointboolIf true, returns only actuated joints (excludes passive/fixed joints). If false, returns all joints including passive ones.
joint_groupsconst std::vector< std::string > &Joint group names to query. Empty vector retrieves joints from all groups.

Returns

TypeDescription
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

NameTypeDescription
joint_group_vecconst std::vector< std::string > &Joint group names to query. Empty vector defaults to all body joints.
joint_names_vecconst 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

TypeDescription
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

NameTypeDescription
linear_velocityconst 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_velocityconst 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_sdoubleDuration in seconds to maintain the velocity command before auto-stop. If <= 0, the command behaves as legacy mode (no automatic stop).

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
base_poseconst Pose &Target base pose [x, y, z, qx, qy, qz, qw]
is_blockingboolIf true, waits for controller response; if false, returns immediately after request
timeout_sdoubleTimeout for blocking request (seconds)

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
xdoubleTarget x position (meters)
ydoubleTarget y position (meters)
yawdoubleTarget yaw (radians)
frame_idconst std::string &Frame id of target. Options: "base_link" / "odom" / "map". Default: "odom"
reference_frame_idconst std::string &Reference frame id. Options: "odom" / "map"
is_blockingboolIf true, waits for controller response; if false, returns immediately after request
timeout_sdoubleTimeout for blocking request (seconds)

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
xdoubleTarget x position (meters)
ydoubleTarget y position (meters)
yawdoubleTarget yaw (radians)
frame_idconst std::string &Frame id of target. Options: "base_link" / "odom" / "map".
reference_frame_idconst std::string &Reference frame id. Options: "odom" / "map"
time_from_start_sdoubleChassis pose interpolation time (seconds)
is_blockingboolIf true, waits for controller response; if false, returns immediately after request
timeout_sdoubleRequest timeout (seconds)

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
posesconst std::vector< std::vector< double >> &Row-major poses: one vector per end effector, seven values each.
end_effector_framesconst std::vector< std::string > &Target frame names (e.g. link names).
reference_framesconst 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_sdoubleTime from trajectory start (seconds); default 0.0.

Returns

TypeDescription
ControlStatusControlStatus indicating success or failure of command transmission

clear_end_effector_command

virtual ControlStatus galbot::sdk::GalbotRobot::clear_end_effector_command()=0

Clear WBC end-effector task commands.

Clears published end-effector task trajectory commands for the WBC channel.

Returns

TypeDescription
ControlStatusControlStatus 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

TypeDescription
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

virtual ControlStatus galbot::sdk::GalbotRobot::stop_base()=0

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

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
base_zero_poseconst Pose &Target base zero pose [x, y, z, qx, qy, qz, qw]
is_blockingboolWhether to block on joint zeroing
leg_head_speed_rad_sdoubleMax joint speed for leg/head direct control (rad/s)
leg_head_timeout_sdoubleTimeout for leg/head direct control (seconds)
paramsstd::shared_ptr< Parameter >Motion planning parameters (nullptr uses default_param)

Returns

TypeDescription
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

NameTypeDescription
frame_idconst std::string &Frame id of target. Options: "base_link" / "odom" / "map". Default "odom".
reference_frame_idconst std::string &Reference frame id. Options: "odom" / "map"
is_blockingboolWhether to block on joint zeroing
leg_head_speed_rad_sdoubleMax joint speed for leg/head direct control (rad/s)
leg_head_timeout_sdoubleTimeout for leg/head direct control (seconds)
paramsstd::shared_ptr< Parameter >Motion planning parameters (nullptr uses default_param)

Returns

TypeDescription
std::pair< MotionStatus, ControlStatus >Pair of (MotionStatus for joints, ControlStatus for base)

stop_trajectory_execution

virtual ControlStatus galbot::sdk::GalbotRobot::stop_trajectory_execution()=0

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

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
group_nameconst 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

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
controller_nameconst std::string &Controller name string, for example "CHASSIS_POSE_CTRL".

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
group_nameconst std::string &Name of the joint group to query.

Returns

TypeDescription
std::stringstd::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

NameTypeDescription
controller_nameconst std::string &Controller name string, for example "LEFT_ARM_PVT_CTRL".

Returns

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
group_nameconst 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

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
group_nameconst 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

TypeDescription
ControlStatusControlStatus 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

NameTypeDescription
group_nameconst 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

TypeDescription
ControlStatusControlStatus indicating success or failure of the stop operation

get_imu_data

virtual std::shared_ptr<ImuData> galbot::sdk::GalbotRobot::get_imu_data(SensorType imu_type)=0

Get IMU (Inertial Measurement Unit) sensor data.

Retrieves the latest IMU measurements including linear acceleration, angular velocity, and orientation estimation.

Parameters

NameTypeDescription
imu_typeSensorTypeSensorType enumeration specifying which IMU to query

Returns

TypeDescription
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

virtual std::shared_ptr<OdomData> galbot::sdk::GalbotRobot::get_odom()=0

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

TypeDescription
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

virtual std::shared_ptr<DeviceInfo> galbot::sdk::GalbotRobot::get_device_information()=0

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

TypeDescription
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

NameTypeDescription
rgb_cameraconst SensorTypeSensorType enumeration specifying which RGB camera to query

Returns

TypeDescription
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

NameTypeDescription
depth_cameraconst SensorTypeSensorType enumeration specifying which depth camera to query

Returns

TypeDescription
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

NameTypeDescription
lidarconst SensorTypeSensorType enumeration specifying which LiDAR to query

Returns

TypeDescription
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_ultrasonic_data

virtual std::shared_ptr<UltrasonicData> galbot::sdk::GalbotRobot::get_ultrasonic_data(
const UltrasonicType ultrasonic_type
) =0

Get distance measurement from specified ultrasonic sensor.

Retrieves the latest distance measurement from one of the ultrasonic range sensors. The robot typically has multiple ultrasonic sensors arranged around its perimeter.

Parameters

NameTypeDescription
ultrasonic_typeconst UltrasonicTypeUltrasonicType enumeration specifying which ultrasonic sensor to query (one of 8 directional sensors)

Returns

TypeDescription
std::shared_ptr< UltrasonicData >Shared pointer to containing distance in meters (m), or nullptr if sensor is not enabled or data retrieval fails
note

The ultrasonic sensor must be enabled during initialization via enable_sensor_set

Supported: G1

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

NameTypeDescription
cameraconst SensorTypeSensorType enumeration specifying which camera to query

Returns

TypeDescription
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

NameTypeDescription
target_frameconst std::string &Name of the target coordinate frame (frame to transform into)
source_frameconst std::string &Name of the source coordinate frame (frame to transform from)
timestamp_nsint64_tDesired transform timestamp in nanoseconds. Pass 0 to get the most recent available transformation.
timeout_msint64_tMaximum time to wait for the transform in milliseconds. Default: 100 milliseconds.

Returns

TypeDescription
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

virtual std::vector<std::string> galbot::sdk::GalbotRobot::get_frame_names()=0

Get all available coordinate frame names in the TF tree.

Returns

TypeDescription
std::vector< std::string >std::vectorstd::string All frame names

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

NameTypeDescription
sensor_idconst SensorTypeSensorType enumeration specifying which sensor to query
reference_frameconst std::string &Name of the reference coordinate frame (frame to transform from). Default is "base_link".

Returns

TypeDescription
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

get_force_sensor_data

virtual std::shared_ptr<ForceData> galbot::sdk::GalbotRobot::get_force_sensor_data(
const GalbotOneFoxtrotSensor sensor_type
) =0

Get force/torque sensor data.

Retrieves the latest measurements from the specified force/torque sensor. These sensors are typically mounted at wrists or end-effectors for contact force monitoring and compliance control.

Parameters

NameTypeDescription
sensor_typeconst GalbotOneFoxtrotSensorGalbotOneFoxtrotSensor enumeration specifying which force sensor to query

Returns

TypeDescription
std::shared_ptr< ForceData >Shared pointer to containing:
- Force vector in Newtons (N): [fx, fy, fz]
- Torque vector in Newton-meters (N·m): [tx, ty, tz]
- Timestamp in nanoseconds Returns nullptr if sensor is not enabled or data retrieval fails.
note

The force sensor must be enabled during initialization via enable_sensor_set

Supported: G1

start_microphone_stream_input

virtual std::string galbot::sdk::GalbotRobot::start_microphone_stream_input(
std::function< void(const std::shared_ptr< AudioData >)> callback,
int chunk_size=2560,
bool use_raw_audio=false
) =0

Start microphone streaming audio input.

Parameters

NameTypeDescription
callbackstd::function< void(const std::shared_ptr< AudioData >)>Audio data callback function with signature: void(const std::shared_ptr<AudioData>)
chunk_sizeintAudio data chunk size in bytes, default value 2560. Dynamic configuration not supported yet
use_raw_audioboolWhether to use raw audio, default false. Dynamic configuration not supported yet. true means output raw audio directly, false means output processed audio

Returns

TypeDescription
std::stringstd::string Stream ID used to identify this audio input stream

Supported: G1

stop_microphone_stream_input

virtual void galbot::sdk::GalbotRobot::stop_microphone_stream_input(const std::string &stream_id="")=0

Stop the specified microphone streaming audio input.

Parameters

NameTypeDescription
stream_idconst std::string &Audio input stream ID to stop. If empty string, stops all active streams

Supported: G1

write_audio_stream_output

virtual bool galbot::sdk::GalbotRobot::write_audio_stream_output(
const std::string &audio_chunk,
const std::string &stream_id=""
) =0

Write PCM format audio data chunk to audio output stream for real-time playback.

Parameters

NameTypeDescription
audio_chunkconst std::string &Audio data chunk in PCM format (16000 Hz, 16-bit little-endian), single channel
stream_idconst std::string &Audio stream ID to distinguish different audio sources. Empty string means use default stream

Returns

TypeDescription
boolbool Returns operation result. True means audio data has been successfully written and playback task issued, False means write failed

Supported: G1

stop_audio_stream_output

virtual void galbot::sdk::GalbotRobot::stop_audio_stream_output(const std::string &stream_id="")=0

Stop the specified audio output stream or all active audio output streams playback.

Parameters

NameTypeDescription
stream_idconst std::string &Audio output stream ID to stop. Empty string means stop all active audio output streams

Supported: G1

get_volume

virtual float galbot::sdk::GalbotRobot::get_volume()=0

Get current system global volume value.

Returns

TypeDescription
floatfloat Returns current volume value, range 0.0 to 100.0

Supported: G1

set_volume

virtual bool galbot::sdk::GalbotRobot::set_volume(float volume)=0

Set system global volume value.

Parameters

NameTypeDescription
volumefloatTarget volume value, range 0.0 to 100.0

Returns

TypeDescription
boolbool Returns the volume setting result. True indicates the volume was set successfully, False indicates the volume setting failed.

Supported: G1

is_running

virtual bool galbot::sdk::GalbotRobot::is_running()=0

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

TypeDescription
booltrue if system is running normally

request_shutdown

virtual void galbot::sdk::GalbotRobot::request_shutdown()=0

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

virtual void galbot::sdk::GalbotRobot::wait_for_shutdown()=0

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

virtual void galbot::sdk::GalbotRobot::destroy()=0

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

NameTypeDescription
exit_functionstd::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_bms_information

virtual std::shared_ptr<BmsInfo> galbot::sdk::GalbotRobot::get_bms_information()=0

Get BMS (Battery Management System) information.

Returns

TypeDescription
std::shared_ptr< BmsInfo >Shared pointer to containing battery information

Supported: G1

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

NameTypeDescription
timewindow_suint64
log_levelLogLevel

Returns

TypeDescription
std::shared_ptr< LogInfo >Shared pointer to containing log information

get_instance

static GalbotRobot& galbot::sdk::GalbotRobot::get_instance(MachineType m)

Runtime factory for selecting a concrete robot singleton.

Parameters

NameTypeDescription
mMachineTypeMachine type identifier (e.g. MachineType::G1, MachineType::S1).

Returns

TypeDescription
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

virtual galbot::sdk::GalbotMotion::~GalbotMotion()=default

init

virtual bool galbot::sdk::GalbotMotion::init()=0

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

TypeDescription
booltrue 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

virtual bool galbot::sdk::GalbotMotion::is_valid()=0

Check if the motion interface is properly initialized and operational.

Returns

TypeDescription
booltrue 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

NameTypeDescription
target_frameconst std::string &Name of the link whose pose is to be computed (e.g., "left_ee_link", "camera_link")
reference_frameconst std::string &Coordinate frame for pose expression (default: "base_link")
joint_stateconst std::unordered_map< std::string, std::vector< double >> &Joint configurations by chain: {chain_name -> joint_angles}. Empty map uses current robot joint state.
paramsstd::shared_ptr< Parameter >Planning parameters (collision checking, timeout, etc.)

Returns

TypeDescription
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

NameTypeDescription
target_frameconst std::string &Link name for pose computation
reference_robot_statesconst std::shared_ptr< RobotStates > &Complete robot state; nullptr uses current robot state
reference_frameconst std::string &Coordinate frame for pose expression (default: "base_link")
paramsstd::shared_ptr< Parameter >Planning parameters

Returns

TypeDescription
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

NameTypeDescription
target_poseconst std::vector< double > &Target Cartesian pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion)
chain_namesconst std::vector< std::string > &Kinematic chains to coordinate (e.g., {"left_arm"}, {"right_arm", "torso"})
target_frameconst std::string &Frame on chain for pose target (e.g., "EndEffector", "Tool")
reference_frameconst std::string &Coordinate frame for pose specification (default: "base_link")
initial_joint_positionsconst 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_checkconst bool &If true, only returns collision-free solutions
paramsstd::shared_ptr< Parameter >Planning parameters (timeout, actuation type, etc.)

Returns

TypeDescription
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

NameTypeDescription
target_poseconst std::vector< double > &Target Cartesian pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion)
chain_namesconst std::vector< std::string > &Kinematic chains to coordinate
target_frameconst std::string &Frame on chain for pose target (e.g., "EndEffector", "Tool")
reference_frameconst std::string &Coordinate frame for pose specification (default: "base_link")
reference_robot_statesconst std::shared_ptr< RobotStates > &Complete robot state as IK seed; nullptr uses current state
enable_collision_checkconst bool &If true, only returns collision-free solutions
paramsstd::shared_ptr< Parameter >Planning parameters

Returns

TypeDescription
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

NameTypeDescription
end_effector_frameconst std::string &Name of end-effector link (must exist in URDF, e.g., "left_ee_link")
reference_frameconst std::string &Coordinate frame for pose expression (default: "base_link")

Returns

TypeDescription
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

NameTypeDescription
chain_nameconst std::string &Kinematic chain identifier (e.g., "left_arm", "right_arm")
frame_idconst std::stringEnd-effector frame type: "EndEffector" (flange), "Camera", etc.
reference_frameconst std::string &Coordinate frame for pose expression (default: "base_link")

Returns

TypeDescription
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

NameTypeDescription
target_poseconst std::vector< double > &Target Cartesian pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion)
end_effector_frameconst std::string &Kinematic chain identifier (e.g., "left_arm", "right_arm")
reference_frameconst std::string &Coordinate frame for pose specification (default: "base_link")
reference_robot_statesstd::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_checkconst bool &If true, only executes collision-free trajectories
is_blockingconst bool &If true, blocks until motion completes or times out; if false, returns immediately
timeoutconst double &Blocking timeout (seconds). If < 0 and is_blocking=true, uses params->timeout_second
paramsstd::shared_ptr< Parameter >Motion planning parameters (linear motion, actuation type, etc.)

Returns

TypeDescription
MotionStatusMotionStatus:
- 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

NameTypeDescription
targetstd::shared_ptr< RobotStates >Target state (must be PoseState or JointStates, not base RobotStates). Specifies the goal configuration for planning.
startstd::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_statesstd::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_checkboolIf true, only returns collision-free trajectories
paramsstd::shared_ptr< Parameter >Planning parameters (timeout, actuation type, linear motion, etc.)

Returns

TypeDescription
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

NameTypeDescription
targetstd::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.
targetsstd::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)
startstd::shared_ptr< RobotStates >Optional start state (JointStates). nullptr uses current robot state. Warning: For direct execution, leave as nullptr.
reference_robot_statesstd::shared_ptr< RobotStates >Whole-body reference state for planning context. nullptr uses current state. Warning: For direct execution, leave as nullptr.
enable_collision_checkboolIf true, only returns collision-free trajectories
paramsstd::shared_ptr< Parameter >Planning parameters

Returns

TypeDescription
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

NameTypeDescription
targetsstd::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.
startstd::vector< std::shared_ptr< RobotStates >>Optional start states (JointStates) for each chain. Empty uses current state. Warning: For direct execution, leave empty.
reference_robot_statesstd::shared_ptr< RobotStates >Whole-body reference state for planning context. nullptr uses current state. Warning: For direct execution, leave as nullptr.
enable_collision_checkboolIf true, only returns collision-free trajectories
paramsstd::shared_ptr< Parameter >Planning parameters

Returns

TypeDescription
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

NameTypeDescription
is_blockingboolWhether to block on leg/head execution and arm planning/execution.
leg_head_speed_rad_sdoubleMax joint speed for leg/head direct control (rad/s).
leg_head_timeout_sdoubleTimeout for leg/head direct control (seconds).
paramsstd::shared_ptr< Parameter >Motion planning parameters for arm planning (collision is forced enabled).

Returns

TypeDescription
MotionStatusMotionStatus 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

NameTypeDescription
startconst 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_checkboolIf true, checks both self and environment collisions; if false, only checks self-collisions
paramsstd::shared_ptr< Parameter >Optional parameters

Returns

TypeDescription
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

NameTypeDescription
chainconst std::string &Kinematic chain for tool attachment (e.g., "left_arm", "right_arm")
toolconst std::string &Tool identifier (must be predefined in tool library, see get_support_tool_list())

Returns

TypeDescription
MotionStatusMotionStatus:
- 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

virtual MotionStatus galbot::sdk::GalbotMotion::detach_tool(const std::string &chain)=0

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

NameTypeDescription
chainconst std::string &Kinematic chain to detach tool from (e.g., "left_arm", "right_arm")

Returns

TypeDescription
MotionStatusMotionStatus:
- 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

NameTypeDescription
obstacle_idconst std::string &Unique obstacle identifier (must not exist in scene). Used for later removal/updates.
obstacle_typeconst std::string &Obstacle geometry type (e.g., "box", "sphere", "cylinder", "mesh", "point_cloud", "depth_image"). See get_support_obstacle_type() for valid types.
poseconst std::vector< double > &Obstacle pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) relative to target_frame.
scaleconst std::array< double, 3 > &Geometry dimensions (meters): box: [length, width, height] sphere: [radius, -, -] cylinder: [radius, height, -] mesh/point_cloud: scaling factors [sx, sy, sz]
keyconst 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_frameconst std::string &Reference frame for pose (default: "world"). Can be "world", "base_link", or chain name (e.g., "left_arm").
ee_frameconst std::string &If target_frame is a chain, specifies frame on chain: "ee_base" (end-effector), "camera_base", "camera_object".
reference_joint_positionsconst std::vector< double > &Robot joint state for computing frame transforms (radians). Empty uses current robot state.
reference_base_poseconst std::vector< double > &Robot base pose in map frame: [x, y, z, qx, qy, qz, qw]. Empty uses current localization.
ignore_collision_link_namesconst std::vector< std::string > &Robot links to exclude from collision with this obstacle. Useful for carried objects or mounting surfaces.
safe_marginconst double &Safety distance buffer (meters). Collision reported if distance < safe_margin. Default: 0 (contact-based).
resolutionconst double &Discretization resolution (meters) for complex geometries (mesh, point cloud, depth image). Default: 0.01m.

Returns

TypeDescription
MotionStatusMotionStatus:
- 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

virtual MotionStatus galbot::sdk::GalbotMotion::remove_obstacle(const std::string &obstacle_id)=0

Remove a collision obstacle from the planning scene.

Parameters

NameTypeDescription
obstacle_idconst std::string &Unique identifier of obstacle to remove (must exist in scene)

Returns

TypeDescription
MotionStatusMotionStatus: SUCCESS, INVALID_INPUT (obstacle_id not found), or FAULT
note

Removing a non-existent obstacle returns INVALID_INPUT (not silently ignored).

clear_obstacle

virtual MotionStatus galbot::sdk::GalbotMotion::clear_obstacle()=0

Remove all collision obstacles from the planning scene.

Clears the entire obstacle set, resetting the planning scene to empty (except robot geometry).

Returns

TypeDescription
MotionStatusMotionStatus: 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

NameTypeDescription
obstacle_idconst std::string &Unique object identifier (must not exist in scene).
obstacle_typeconst std::string &Object geometry type (e.g., "box", "sphere", "mesh"). See get_support_obstacle_type() for valid types.
poseconst std::vector< double > &Object pose: [x, y, z, qx, qy, qz, qw] (meters, quaternion) relative to target_frame at attachment time.
scaleconst std::array< double, 3 > &Geometry dimensions (meters): box: [length, width, height] sphere: [radius, -, -] cylinder: [radius, height, -]
keyconst std::string &Type-specific data (e.g., mesh file path for "mesh" type).
target_frameconst std::string &Attachment frame (default: "world"). Typically a chain name (e.g., "left_arm") for grasped objects.
ee_frameconst std::string &If target_frame is a chain, specifies frame on chain ("ee_base", "camera_base", etc.).
reference_joint_positionsconst std::vector< double > &Robot joint state for computing attachment transform (radians). Empty uses current robot state.
reference_base_poseconst std::vector< double > &Robot base pose in map: [x, y, z, qx, qy, qz, qw]. Empty uses current localization.
ignore_collision_link_namesconst std::vector< std::string > &Robot links to exclude from collision with this object. Typically includes the grasping end-effector links.
safe_marginconst double &Safety distance buffer (meters). Default: 0.
resolutionconst double &Discretization resolution for complex geometries (meters). Default: 0.01m.

Returns

TypeDescription
MotionStatusMotionStatus: 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

NameTypeDescription
obstacle_idconst std::string &Unique identifier of attached object to remove

Returns

TypeDescription
MotionStatusMotionStatus: 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

NameTypeDescription
configstd::shared_ptr< MotionPlanConfig >Shared pointer to MotionPlanConfig with desired settings

Returns

TypeDescription
MotionStatusMotionStatus:
- 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

TypeDescription
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.

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

NameTypeDescription
only_end_effectorboolIf true, returns only end-effector/tool links; if false, returns all links including base, intermediate, and end-effector links. Default: false (all links).

Returns

TypeDescription
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.

virtual const std::set<std::string>& galbot::sdk::GalbotMotion::get_support_links()=0

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

TypeDescription
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

virtual const std::set<std::string>& galbot::sdk::GalbotMotion::get_support_chains()=0

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

TypeDescription
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

virtual const std::set<std::string>& galbot::sdk::GalbotMotion::get_support_frame()=0

Get set of valid reference frame names.

Returns standard reference frames supported for pose specifications (e.g., "base_link", "world", "odom").

Returns

TypeDescription
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

virtual const std::set<std::string>& galbot::sdk::GalbotMotion::get_support_ee_frame()=0

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

TypeDescription
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

virtual const std::set<std::string>& galbot::sdk::GalbotMotion::get_support_tool_list()=0

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

TypeDescription
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

virtual std::set<std::string> galbot::sdk::GalbotMotion::get_support_obstacle_type()=0

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

TypeDescription
std::set< std::string >Set of supported obstacle type strings
note

Different types require different scale/key parameter formats.

get_built_object_list

virtual std::vector<std::string> galbot::sdk::GalbotMotion::get_built_object_list()=0

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

TypeDescription
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

virtual std::vector<std::string> galbot::sdk::GalbotMotion::get_attached_object_list()=0

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

TypeDescription
std::vector< std::string >Vector of attached object ID strings (empty if none attached)
note

Useful for tracking grasped objects or payloads.

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

NameTypeDescription
valueconst std::string &Link name to validate
throw_exceptionboolIf true, throws std::invalid_argument on validation failure; if false, returns false silently. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::string &Chain name to validate (e.g., "left_arm", "right_arm")
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::string &Frame name to validate (e.g., "base_link", "world")
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::string &Frame type to validate (e.g., "EndEffector", "Camera", "TCP")
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::string &Tool name to validate
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::string &Obstacle type to validate (e.g., "box", "sphere", "mesh")
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::vector< double > &Joint configuration vector (radians) to validate
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::vector< double > &Pose vector to validate
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

NameTypeDescription
valueconst std::unordered_map< std::string, std::vector< double >> &Map of {chain_name -> joint_configuration} to validate
throw_exceptionboolIf true, throws exception on failure. Default: false.

Returns

TypeDescription
booltrue 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

virtual int galbot::sdk::GalbotMotion::get_robot_dof()=0

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

TypeDescription
intNumber of robot DOF (actuated joints)
note

Typical humanoid/mobile manipulator: 15-30 DOF.

get_robot_states

virtual RobotStates galbot::sdk::GalbotMotion::get_robot_states()=0

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

TypeDescription
RobotStatesobject 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

virtual std::vector<double> galbot::sdk::GalbotMotion::get_whole_body_state()=0

Get current whole-body joint configuration.

Retrieves joint angles for all actuated joints in the robot.

Returns

TypeDescription
std::vector< double >Vector of joint angles (radians), size =
note

Joint ordering defined by robot URDF/configuration.

get_chassis_state

virtual std::vector<double> galbot::sdk::GalbotMotion::get_chassis_state()=0

Get current mobile base pose.

Retrieves the position and orientation of the robot's mobile base in the map frame.

Returns

TypeDescription
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

TypeDescription
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

NameTypeDescription
frameconst std::string &Reference frame for pose expression (default: "base_link")

Returns

TypeDescription
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

NameTypeDescription
chain_nameconst std::string &Chain identifier whose joints to replace
chain_jointconst std::vector< double > &New joint configuration for the chain (radians)
whole_body_jointstd::vector< double > &Whole-body joint vector to modify (in/out parameter)

Returns

TypeDescription
booltrue 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

virtual std::string galbot::sdk::GalbotMotion::status_to_string(MotionStatus status)=0

Convert MotionStatus enum to human-readable string.

Maps status codes to descriptive strings for logging, error reporting, or UI display.

Parameters

NameTypeDescription
statusMotionStatusMotionStatus enumeration value

Returns

TypeDescription
std::stringDescriptive 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

static GalbotMotion& galbot::sdk::GalbotMotion::get_instance(MachineType m)

Runtime factory for selecting a concrete motion planning singleton.

Parameters

NameTypeDescription
mMachineTypeMachine type identifier (e.g. MachineType::G1, MachineType::S1).

Returns

TypeDescription
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

virtual galbot::sdk::GalbotNavigation::~GalbotNavigation()=default

init

virtual bool galbot::sdk::GalbotNavigation::init()=0

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

TypeDescription
booltrue 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

virtual NavigationStatus galbot::sdk::GalbotNavigation::relocalize(const Pose &init_pose)=0

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

NameTypeDescription
init_poseconst 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

TypeDescription
NavigationStatusNavigationStatus 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

virtual bool galbot::sdk::GalbotNavigation::is_localized()=0

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

TypeDescription
booltrue 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

virtual Pose galbot::sdk::GalbotNavigation::get_current_pose()=0

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

TypeDescription
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

NameTypeDescription
goal_poseconst 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_checkboolIf true, enables dynamic obstacle detection and avoidance during navigation. If false, only static map obstacles are considered. Default: true.
is_blockingboolExecution 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.
timeoutfloatMaximum 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_planboolMotion 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

TypeDescription
NavigationStatusNavigationStatus 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

NameTypeDescription
goal_poseconst 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_blockingboolExecution 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.
timeoutfloatMaximum wait time in seconds for blocking mode. Default: 8.0 seconds. Only relevant when is_blocking is true.

Returns

TypeDescription
NavigationStatusNavigationStatus 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

virtual NavigationStatus galbot::sdk::GalbotNavigation::stop_navigation()=0

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

TypeDescription
NavigationStatusNavigationStatus 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

NameTypeDescription
goal_poseconst Pose &Goal pose in the map frame: position (x, y, z) in meters and orientation quaternion (x, y, z, w).
start_poseconst Pose &Start pose in the map frame: position (x, y, z) in meters and orientation quaternion (x, y, z, w).

Returns

TypeDescription
booltrue 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

virtual bool galbot::sdk::GalbotNavigation::check_goal_arrival()=0

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

TypeDescription
booltrue 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

virtual NavigationTaskStatus galbot::sdk::GalbotNavigation::get_navigation_status()=0

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

TypeDescription
NavigationTaskStatusNavigationTaskStatus 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

static GalbotNavigation& galbot::sdk::GalbotNavigation::get_instance(MachineType m)

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

NameTypeDescription
mMachineTypeMachine type identifier specifying which robot platform to use.

Returns

TypeDescription
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.


GalbotPerception

Perception module interface; obtain the singleton via get_instance(MachineType).

Implemented for G1 only: get_instance(MachineType::S1) throws std::runtime_error.

~GalbotPerception

virtual galbot::sdk::GalbotPerception::~GalbotPerception()=default

init

virtual bool galbot::sdk::GalbotPerception::init(const std::set< PerceptionModule > &enabled_modules)=0

Initialize perception and load models for the selected modules.

Parameters

NameTypeDescription
enabled_modulesconst std::set< PerceptionModule > &Set of perception modules to enable.

Returns

TypeDescription
boolTrue if every requested module loaded successfully.

run_once

virtual bool galbot::sdk::GalbotPerception::run_once(PerceptionModule module)=0

Run a single inference for the given module.

Parameters

NameTypeDescription
modulePerceptionModulePerception module to run.
note

After init, wait ~10s for models to be ready before calling run_once.

wait_for_new_result

virtual bool galbot::sdk::GalbotPerception::wait_for_new_result(
PerceptionModule module,
double timeout_s=5.0
) =0

Block until the module produces a new result, or timeout. Use with run_once to fetch the latest output.

Parameters

NameTypeDescription
modulePerceptionModulePerception module.
timeout_sdoubleTimeout in seconds.

get_latest_result

virtual bool galbot::sdk::GalbotPerception::get_latest_result(
PerceptionModule module,
DetectionResult &result
) =0

Return the latest cached result for the module without blocking.

Parameters

NameTypeDescription
modulePerceptionModulePerception module.
resultDetectionResult &Output detection result.

Returns

TypeDescription
boolTrue if a result is available, false if none.

get_instance

static GalbotPerception& galbot::sdk::GalbotPerception::get_instance(MachineType m)

Get the singleton instance of GalbotPerception.

Parameters

NameTypeDescription
mMachineTypeMachine type (e.g. MachineType::G1). MachineType::S1 is not supported and throws.

Returns

TypeDescription
GalbotPerception &Reference to the singleton instance for the given machine type.

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 ValueDescription
ACTUATE_WITH_CHAIN_ONLYActuate only the target joint chain (e.g., arm only), base remains fixed
ACTUATE_WITH_TORSOActuate target joint chain and torso for extended workspace
ACTUATE_WITH_LEGActuate target joint chain and legs for mobile manipulation
ACTUATE_TYPE_NUMTotal number of actuation types (for boundary checking or array sizing)

AudioData

Audio data structure used to encapsulate audio data.

Member Variables

NameTypeDescription
headerHeaderMessage header.
typestd::stringAudio 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)
formatstd::stringAudio data format description, for example: "pcm": Sample rate 16000Hz, bit depth 16bit, mono "json": UTF-8 encoded json text
datastd::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.

BBox

Axis-aligned 2D bounding box with class id and score helpers.

x1

int BBox::x1() const

y1

int BBox::y1() const

x2

int BBox::x2() const

y2

int BBox::y2() const

area

float BBox::area() const

center

cv::Point2f BBox::center() const

Member Variables

NameTypeDescription
rectcv::Rect
clsstd::pair< int, float >

BmsInfo

Bms information.

Member Variables

NameTypeDescription
voltagefloatVoltage (V)
currentfloatCurrent (A)
battery_levelfloatBattery level (0-100%)
temperaturefloatTemperature (℃)
charging_statusboolCharging status:False: not charging, True: charging
health_statusboolHealth status:False: good, True: bad
capacityfloatRemaining 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

NameTypeDescription
headerHeaderContains timestamp and camera coordinate frame ID (e.g., "camera_optical_frame").
heightuint32_tVertical resolution of images produced by this camera at calibration time.
widthuint32_tHorizontal resolution of images produced by this camera at calibration time.
distortion_modelstd::stringSpecifies 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
dstd::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
kstd::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
rstd::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).
pstd::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_xuint32_tNumber of camera pixels combined horizontally for each output pixel. Values: 0 or 1 = no binning, 2 = 2×1 binning, etc.
binning_yuint32_tNumber of camera pixels combined vertically for each output pixel. Values: 0 or 1 = no binning, 2 = 1×2 binning, etc.
roiRegionOfInterestSpecifies a sub-window within the full sensor resolution.
camera_typestd::stringOptional field specifying camera type or model. Examples: "monocular", "stereo_left", "stereo_right", "depth"
Tstd::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 ValueDescription
HEADHead kinematic chain, from base/torso to head end-effector
LEFT_ARMLeft arm kinematic chain, from base/torso to left end-effector
RIGHT_ARMRight arm kinematic chain, from base/torso to right end-effector
LEGLeg kinematic chain, for legged locomotion
TORSOTorso kinematic chain, connects base to upper body
CHAIN_NUMTotal 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

void galbot::sdk::CollisionCheckOption::set_disable_self_collision_check(bool disable)

Enable or disable self-collision detection.

Parameters

NameTypeDescription
disablebooltrue to disable self-collision checking, false to enable
warning

Disabling self-collision checks may result in physically infeasible configurations

set_disable_env_collision_check

void galbot::sdk::CollisionCheckOption::set_disable_env_collision_check(bool disable)

Enable or disable environment collision detection.

Parameters

NameTypeDescription
disablebooltrue to disable environment collision checking, false to enable
warning

Disabling environment checks may result in collisions with obstacles

get_disable_self_collision_check

bool galbot::sdk::CollisionCheckOption::get_disable_self_collision_check() const

Check if self-collision detection is disabled.

Returns

TypeDescription
booltrue if self-collision detection is currently disabled, false if enabled

get_disable_env_collision_check

bool galbot::sdk::CollisionCheckOption::get_disable_env_collision_check() const

Check if environment collision detection is disabled.

Returns

TypeDescription
booltrue if environment collision detection is currently disabled, false if enabled

print

void galbot::sdk::CollisionCheckOption::print() const

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 ValueDescription
SUCCESSExecution succeeded, command completed with valid result
TIMEOUTExecution timeout, task not completed within specified time limit
FAULTFault occurred, system detected anomaly and aborted execution
INVALID_INPUTInput parameters invalid or not meeting interface requirements
INIT_FAILEDInitialization failed, internal communication or dependent component creation failed
IN_PROGRESSCommand is executing but has not reached target state
STOPPED_UNREACHEDStopped during execution without reaching target position or state
DATA_FETCH_FAILEDData retrieval failed during operation, unable to read required state
PUBLISH_FAILControl or state data publication failed, command may not be transmitted
COMM_DISCONNECTEDCommunication connection lost, cannot continue execution
STATUS_NUMTotal 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

std::shared_ptr<cv::Mat> galbot::sdk::DepthData::convert_to_cv2_mat()

Convert depth data to OpenCV Mat.

Decodes and converts depth data to cv::Mat format for processing.

Returns

TypeDescription
std::shared_ptr< cv::Mat >std::shared_ptrcv::Mat Smart pointer to decoded depth image on success, nullptr on failure

Member Variables

NameTypeDescription
headerHeaderContains acquisition timestamp and camera coordinate frame ID.
heightuint32_tNumber of rows in the depth image.
widthuint32_tNumber of columns in the depth image.
formatstd::stringSpecifies depth encoding and compression format. Example: "16UC1; compressedDepth png" (16-bit unsigned, 1 channel, PNG compressed)
datastd::vector< uint8_t >Binary blob containing raw or compressed depth image data.
depth_scaleuint32_tQuantization 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

DetectionAndSegmentationResult

Single-object detection or instance segmentation record (2D box, class, optional mask/keypoints).

SENSORDATA_POINTER_TYPEDEFS

DetectionAndSegmentationResult::SENSORDATA_POINTER_TYPEDEFS(DetectionAndSegmentationResult)

DetectionAndSegmentationResult

DetectionAndSegmentationResult::DetectionAndSegmentationResult()

DetectionAndSegmentationResult

DetectionAndSegmentationResult::DetectionAndSegmentationResult(
const cv::Rect &box,
const std::string &name,
const int index,
const float conf,
const std::vector< cv::Point2f > &kps=std::vector< cv::Point2f >(),
const std::vector< cv::Point > &poly=std::vector< cv::Point >()
)

Parameters

NameTypeDescription
boxconst cv::Rect &
nameconst std::string &
indexconst int
confconst float
kpsconst std::vector< cv::Point2f > &
polyconst std::vector< cv::Point > &

printInfo

void DetectionAndSegmentationResult::printInfo(std::ostream &os, bool showPolygon=false) const

Parameters

NameTypeDescription
osstd::ostream &
showPolygonbool

Member Variables

NameTypeDescription
bboxcv::Rect
classNamestd::string
classIndexint
confidencefloat
keypointsstd::vector< cv::Point2f >
polygonstd::vector< cv::Point >

DetectionResult

Aggregated perception output for one module tick (images, masks, poses, point clouds, etc.).

SENSORDATA_POINTER_TYPEDEFS

DetectionResult::SENSORDATA_POINTER_TYPEDEFS(DetectionResult)

addResult

void DetectionResult::addResult(
const cv::Rect &box,
const std::string &className,
int classIndex,
float confidence
)

Parameters

NameTypeDescription
boxconst cv::Rect &
classNameconst std::string &
classIndexint
confidencefloat

addResult

void DetectionResult::addResult(
const cv::Rect &box,
const std::vector< cv::Point2f > &kps,
const std::string &className,
int classIndex,
float confidence
)

Parameters

NameTypeDescription
boxconst cv::Rect &
kpsconst std::vector< cv::Point2f > &
classNameconst std::string &
classIndexint
confidencefloat

addPose

void DetectionResult::addPose(const Eigen::Matrix4f &pose)

Parameters

NameTypeDescription
poseconst Eigen::Matrix4f &

addKeypoints

void DetectionResult::addKeypoints(const std::vector< cv::Point2f > &kps)

Parameters

NameTypeDescription
kpsconst std::vector< cv::Point2f > &

addPointCloud

void DetectionResult::addPointCloud(const PointCloudPtr &cloud)

Parameters

NameTypeDescription
cloudconst PointCloudPtr &

setRunningInfo

void DetectionResult::setRunningInfo(const std::string &info)

Parameters

NameTypeDescription
infoconst std::string &

addClassMask

void DetectionResult::addClassMask(const cv::Mat &mask)

Parameters

NameTypeDescription
maskconst cv::Mat &

addInstanceMask

void DetectionResult::addInstanceMask(const cv::Mat &mask)

Parameters

NameTypeDescription
maskconst cv::Mat &

clear

void DetectionResult::clear()

getResultInfo

std::string DetectionResult::getResultInfo()

copyFrom

void DetectionResult::copyFrom(const DetectionResult &other)

Parameters

NameTypeDescription
otherconst DetectionResult &

DetectionResult

DetectionResult::DetectionResult()

Member Variables

NameTypeDescription
timestamp_nsEIGEN_MAKE_ALIGNED_OPERATOR_NEW int64_t
sensorNamestd::string
resultImagecv::Mat
resultPointCloudstd::vector< PointCloudPtr >
detectionAndSegmentationResultsstd::vector< DetectionAndSegmentationResult >
boundingBoxesstd::vector< cv::Rect >
classNamesstd::vector< std::string >
classIndicesstd::vector< int >
confidencesstd::vector< float >
ocrStringstd::vector< std::string >
targetPosesstd::vector< Eigen::Matrix4f >
keypointsstd::vector< std::vector< cv::Point2f > >
runningInfostd::string
classMaskcv::Mat
instanceMaskcv::Mat
garbage_resultGarbageResult::Ptr
object6DPosesstd::map< std::string, std::vector< Eigen::Matrix4f > >
grasp_pose_resultstd::vector< std::vector< float > >
targetPointPosesstd::vector< Eigen::Matrix4f >
preTargetPointPosesstd::vector< Eigen::Matrix4f >
ocrPointPosesstd::vector< Eigen::Matrix4f >
ocrLabelImagestd::map< std::string, std::vector< cv::Mat > >
ocrResultsstd::map< std::string, Eigen::Matrix4f >

DeviceInfo

Describes basic information about the robot or module, used for device management, logging, diagnostics, and maintenance tracking.

Member Variables

NameTypeDescription
modelstd::stringDevice model name or identifier
serial_numberstd::stringUnique serial number for device identification
firmware_versionstd::stringSystem firmware version string (e.g., "1.2.3")
hardware_versionstd::stringHardware version or revision number
manufacturerstd::stringManufacturer 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

NameTypeDescription
timestamp_nsint64_tState timestamp (nanoseconds since epoch)
joint_stateJointStateMessageDexhand joint state message
force_sensor_mapstd::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 ValueDescription
INSPIREInspire dexterous hand
BRAINCOBrainCo dexterous hand
SHARPASharpa 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

NameTypeDescription
timestamp_nsint64_tMeasurement timestamp (nanoseconds since epoch)
forceVector3Force vector (Newtons): [fx, fy, fz]
torqueVector3Torque 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

NameTypeDescription
commpent_inputstd::stringFault module or component name
error_code_inputintNumerical error code
description_inputstd::stringHuman-readable error description

Member Variables

NameTypeDescription
commpentstd::stringFault module or component name (note: field name contains typo but preserved for API compatibility)
error_codeuint64_tNumerical error code for programmatic error handling
descriptionstd::stringHuman-readable error description

ErrorInfo

Contains a timestamped collection of error messages from multiple modules or components.

Member Variables

NameTypeDescription
timestamp_nsint64_tTimestamp when errors were collected (nanoseconds since epoch)
error_vecstd::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

NameTypeDescription
timestamp_nsint64_tMeasurement timestamp (nanoseconds since epoch)
forceVector3Force vector (Newtons): [fx, fy, fz]
torqueVector3Torque 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

NameTypeDescription
headerHeader
body_frame_idstd::string
reference_frame_idstd::string
posestd::optional< Pose >
twiststd::optional< Twist >
wrenchstd::optional< Wrench >

G1ControllerName

String constants for G1 controller names.

Defines the controller names supported by the G1 robot model.

Member Variables

NameTypeDescription
CHASSIS_POSE_CTRLconstexpr NameChassis pose controller
CHASSIS_TWIST_CTRLconstexpr NameChassis twist controller
LEG_PVT_BYPASS_CTRLconstexpr NameLeg PVT bypass controller
LEG_PVT_CTRLconstexpr NameLeg PVT controller
HEAD_PVT_BYPASS_CTRLconstexpr NameHead PVT bypass controller
HEAD_PVT_CTRLconstexpr NameHead PVT controller
LEFT_ARM_PVT_BYPASS_CTRLconstexpr NameLeft arm PVT bypass controller
LEFT_ARM_PVT_CTRLconstexpr NameLeft arm PVT controller
RIGHT_ARM_PVT_BYPASS_CTRLconstexpr NameRight arm PVT bypass controller
RIGHT_ARM_PVT_CTRLconstexpr NameRight arm PVT controller
LEFT_GRIPPER_CTRLconstexpr NameLeft gripper controller
RIGHT_GRIPPER_CTRLconstexpr NameRight gripper controller
LEFT_DEXHAND_CTRLconstexpr NameLeft dexhand controller
RIGHT_DEXHAND_CTRLconstexpr NameRight dexhand controller
CONTROLLER_NAME_NUMconstexpr NameSentinel value for invalid controller name

G1JointGroup

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

NameTypeDescription
HEADconstexpr NameHead chain. Default joints: head_joint1, head_joint2. Typical use: gaze/camera orientation.
LEFT_ARMconstexpr NameLeft 7-DoF arm chain. Default joints: left_arm_joint1 ... left_arm_joint7. Typical use: left-arm reaching/manipulation.
RIGHT_ARMconstexpr NameRight 7-DoF arm chain. Default joints: right_arm_joint1 ... right_arm_joint7. Typical use: right-arm reaching/manipulation.
LEFT_GRIPPERconstexpr NameLeft gripper chain. Default joint: left_gripper_joint1. Typical use: left gripper open/close and grasp width.
RIGHT_GRIPPERconstexpr NameRight gripper chain. Default joint: right_gripper_joint1. Typical use: right gripper open/close and grasp width.
LEGconstexpr NameLeg chain. Default joints: leg_joint1 ... leg_joint5. Typical use: lower-body posture/locomotion-related body control.
CHASSISconstexpr NameChassis mechanism group (passive in joint-position control). Default joints: chassis_joint1 ... chassis_joint4. Typical use: chassis state grouping; base motion should use base APIs.
LEFT_SUCTION_CUPconstexpr NameLeft suction-cup end-effector group. Default joint: left_suction_cup_joint1. Typical use: vacuum pick/place on left arm.
RIGHT_SUCTION_CUPconstexpr NameRight suction-cup end-effector group. Default joint: right_suction_cup_joint1. Typical use: vacuum pick/place on right arm.
LEFT_DEXHANDconstexpr NameLeft dexterous hand group. Default joints: left_dexhand_joint1 ... left_dexhand_joint6. Typical use: multi-finger dexterous manipulation (left).
RIGHT_DEXHANDconstexpr NameRight dexterous hand group. Default joints: right_dexhand_joint1 ... right_dexhand_joint6. Typical use: multi-finger dexterous manipulation (right).

GalbotOneFoxtrotSensor

Force sensor enumeration describing robot wrist force sensors.

Identifies force/torque sensors mounted at the robot's wrist joints for force-controlled manipulation and contact detection.

Enum ValueDescription
LEFT_WRIST_FORCELeft wrist force/torque sensor, typically 6-axis (3 forces + 3 torques)
RIGHT_WRIST_FORCERight wrist force/torque sensor, typically 6-axis (3 forces + 3 torques)
FORCE_NUMTotal number of force sensor enumerations (for boundary checking or array sizing)

GalbotSdkLogStream

GalbotSdkLogStream

galbot::sdk::GalbotSdkLogStream::GalbotSdkLogStream(
LogLevel level,
const char *file,
const char *func,
int line
)

Parameters

NameTypeDescription
levelLogLevel
fileconst char *
funcconst char *
lineint

operator<<

GalbotSdkLogStream& galbot::sdk::GalbotSdkLogStream::operator<<(const T &v)

Parameters

NameTypeDescription
vconst T &

operator<<

GalbotSdkLogStream& galbot::sdk::GalbotSdkLogStream::operator<<(std::ostream &(*manip)(std::ostream &))

Parameters

NameTypeDescription
manipstd::ostream &(*)(std::ostream &)

~GalbotSdkLogStream

galbot::sdk::GalbotSdkLogStream::~GalbotSdkLogStream() noexcept

GarbageResult

Structured garbage / bin-like detection output (3D boxes and optional clouds).

SENSORDATA_POINTER_TYPEDEFS

GarbageResult::SENSORDATA_POINTER_TYPEDEFS(GarbageResult)

addResult

void GarbageResult::addResult(
const std::string &uuid,
Eigen::Vector3f box_shape,
const Eigen::Vector3f &box_center_pos,
const cv::Rect &box
)

Parameters

NameTypeDescription
uuidconst std::string &
box_shapeEigen::Vector3f
box_center_posconst Eigen::Vector3f &
boxconst cv::Rect &

addPointCloud

void GarbageResult::addPointCloud(const std::string &uuid, const PointCloudPtr &bbox_pointcloud)

Parameters

NameTypeDescription
uuidconst std::string &
bbox_pointcloudconst PointCloudPtr &

Member Variables

NameTypeDescription
boxes_shapeEIGEN_MAKE_ALIGNED_OPERATOR_NEW std::map< std::string, Eigen::Vector3f >
boxes_center_posstd::map< std::string, Eigen::Vector3f >
bboxesstd::map< std::string, cv::Rect >
bboxes_pointcloudstd::map< std::string, PointCloudPtr >

GripperState

Represents the current state of a parallel-jaw gripper, including opening width, motion status, and grasping force.

Member Variables

NameTypeDescription
timestamp_nsint64_tState timestamp (nanoseconds since epoch)
widthdoubleGripper opening width (meters), distance between fingers
velocitydoubleGripper closing/opening velocity (meters/second), positive = opening
effortdoubleGripper grasping force (Newtons), force applied by fingers
is_movingboolMotion flag from a movement window: false if no effective movement is observed within the configured time window
joint_positionsstd::vector< double >Gripper joint positions (radians), typically 1-2 joints for finger actuators

GroupCommand

Group-space command at a specific time point.

Member Variables

NameTypeDescription
time_from_start_sdouble
joint_commandsstd::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

NameTypeDescription
timestamp_nsint64_tTimestamp of data acquisition (nanoseconds since epoch)

Records when the data was captured or generated.
frame_idstd::stringIdentifies 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

void galbot::sdk::IKSolverConfig::set_col_aware_ik_timeout(double timeout)

Set timeout for collision-aware IK solver.

Parameters

NameTypeDescription
timeoutdoubleMaximum solver iteration time (units: ms)
note

Longer timeouts allow more seed attempts but delay planning

set_seed_type

void galbot::sdk::IKSolverConfig::set_seed_type(SeedType type)

Set initial configuration seed generation strategy.

Parameters

NameTypeDescription
typeSeedTypeSeed generation method for IK optimization initialization

set_col_aware_ik_joint_limit_bias

void galbot::sdk::IKSolverConfig::set_col_aware_ik_joint_limit_bias(double bias)

Set safety margin from joint position limits.

Parameters

NameTypeDescription
biasdoubleDistance 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

void galbot::sdk::IKSolverConfig::set_translation_eps(const std::array< double, 3 > &eps)

Set Cartesian position error tolerance for IK convergence.

Parameters

NameTypeDescription
epsconst 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

void galbot::sdk::IKSolverConfig::set_rotation_eps(const std::array< double, 3 > &eps)

Set orientation error tolerance for IK convergence.

Parameters

NameTypeDescription
epsconst 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

void galbot::sdk::IKSolverConfig::set_enable_collision_check_log(bool enable)

Enable or disable detailed collision checking diagnostic logs.

Parameters

NameTypeDescription
enablebooltrue to output collision detection logs, false to suppress
note

Useful for debugging IK failures due to collision constraints

get_col_aware_ik_timeout

double galbot::sdk::IKSolverConfig::get_col_aware_ik_timeout() const

Get collision-aware IK solver timeout.

Returns

TypeDescription
doubleTimeout duration (units: ms)

get_seed_type

SeedType galbot::sdk::IKSolverConfig::get_seed_type() const

Get IK solver seed generation strategy.

Returns

TypeDescription
SeedTypeCurrent seed type

get_col_aware_ik_joint_limit_bias

double galbot::sdk::IKSolverConfig::get_col_aware_ik_joint_limit_bias() const

Get joint limit safety margin.

Returns

TypeDescription
doubleJoint limit bias distance (units: rad)

get_translation_eps

const std::array<double, 3>& galbot::sdk::IKSolverConfig::get_translation_eps() const

Get Cartesian position error tolerance.

Returns

TypeDescription
const std::array< double, 3 > &Per-axis position tolerance {x, y, z} (units: m)

get_rotation_eps

const std::array<double, 3>& galbot::sdk::IKSolverConfig::get_rotation_eps() const

Get orientation error tolerance.

Returns

TypeDescription
const std::array< double, 3 > &Per-axis orientation tolerance {roll, pitch, yaw} (units: rad)

get_enable_collision_check_log

bool galbot::sdk::IKSolverConfig::get_enable_collision_check_log() const

Check if collision check logging is enabled.

Returns

TypeDescription
booltrue if logging is enabled, false otherwise

print

void galbot::sdk::IKSolverConfig::print() const

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 ValueDescription
RANDOM_SEEDUniformly random joint configurations within limits
RANDOM_PROGRESSIVE_SEEDProgressive random sampling with increasing coverage
USER_DEFINED_SEEDUser-provided initial joint configurations

ImuData

Contains timestamped data from an Inertial Measurement Unit (IMU), including accelerometer, gyroscope, and magnetometer measurements.

Member Variables

NameTypeDescription
timestamp_nsint64_tMeasurement timestamp (nanoseconds since epoch)
accelVector3Linear acceleration (meters/second²): [ax, ay, az]
gyroVector3Angular velocity (radians/second): [ωx, ωy, ωz]
magnetVector3Magnetic 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

NameTypeDescription
positiondoubleDesired joint position (radians)
velocitydoubleDesired joint velocity (radians/second)
accelerationdoubleDesired joint acceleration (radians/second²)
effortdoubleDesired 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

galbot::sdk::JointState::JointState()=default

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

NameTypeDescription
position_inputdoubleJoint angular position (radians)
velocity_inputdoubleJoint angular velocity (radians/second)
acceleration_inputdoubleJoint angular acceleration (radians/second²)
effort_inputdoubleJoint torque/effort (Newton-meters)
current_inputdoubleMotor current (amperes)

Member Variables

NameTypeDescription
positiondoubleJoint angular position (radians)
velocitydoubleJoint angular velocity (radians/second)
accelerationdoubleJoint angular acceleration (radians/second²)
effortdoubleJoint torque/effort (Newton-meters)
currentdoubleMotor 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

NameTypeDescription
timestamp_nsint64_tAcquisition timestamp (nanoseconds since epoch)
joint_state_vecstd::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

Type galbot::sdk::JointStates::get_type() const override

Get runtime type identifier.

Returns

TypeDescription
Type, indicating this is a joint-space target

set_joint_positions

void galbot::sdk::JointStates::set_joint_positions(const std::vector< double > &joints)

Set complete joint configuration for the kinematic chain.

Parameters

NameTypeDescription
jointsconst 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

void galbot::sdk::JointStates::set_joint(int index, int val)

Set individual joint angle by index.

Parameters

NameTypeDescription
indexintZero-based joint index within the chain
valintJoint 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

NameTypeDescription
joint_positionsstd::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

void galbot::sdk::KinematicsBoundary::set_chain_name(const std::string &name)

Set the name identifier for this kinematic chain.

Parameters

NameTypeDescription
nameconst std::string &Chain name identifier, e.g., "left_arm", "right_arm", "mobile_base"

set_lower_limit

void galbot::sdk::KinematicsBoundary::set_lower_limit(const std::vector< double > &limits)

Set joint position lower bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_upper_limit(const std::vector< double > &limits)

Set joint position upper bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_vel_lower_limit(const std::vector< double > &limits)

Set joint velocity lower bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_vel_upper_limit(const std::vector< double > &limits)

Set joint velocity upper bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_acc_lower_limit(const std::vector< double > &limits)

Set joint acceleration lower bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_acc_upper_limit(const std::vector< double > &limits)

Set joint acceleration upper bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_jerk_lower_limit(const std::vector< double > &limits)

Set joint jerk lower bounds.

Parameters

NameTypeDescription
limitsconst 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

void galbot::sdk::KinematicsBoundary::set_jerk_upper_limit(const std::vector< double > &limits)

Set joint jerk upper bounds.

Parameters

NameTypeDescription
limitsconst 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

const std::string& galbot::sdk::KinematicsBoundary::get_chain_name() const

Get the kinematic chain name identifier.

Returns

TypeDescription
const std::string &Const reference to chain name string

get_lower_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_lower_limit() const

Get joint position lower bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of lower position limits (units: rad)

get_upper_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_upper_limit() const

Get joint position upper bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of upper position limits (units: rad)

get_vel_lower_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_vel_lower_limit() const

Get joint velocity lower bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of lower velocity limits (units: rad/s)

get_vel_upper_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_vel_upper_limit() const

Get joint velocity upper bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of upper velocity limits (units: rad/s)

get_acc_lower_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_acc_lower_limit() const

Get joint acceleration lower bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of lower acceleration limits (units: rad/s²)

get_acc_upper_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_acc_upper_limit() const

Get joint acceleration upper bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of upper acceleration limits (units: rad/s²)

get_jerk_lower_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_jerk_lower_limit() const

Get joint jerk lower bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of lower jerk limits (units: rad/s³)

get_jerk_upper_limit

const std::vector<double>& galbot::sdk::KinematicsBoundary::get_jerk_upper_limit() const

Get joint jerk upper bounds.

Returns

TypeDescription
const std::vector< double > &Const reference to vector of upper jerk limits (units: rad/s³)

print

void galbot::sdk::KinematicsBoundary::print() const

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

NameTypeDescription
headerHeaderContains acquisition timestamp and coordinate frame for temporal and spatial reference.
heightuint32_tUnordered point cloud: height = 1 (single row) Ordered point cloud: height = number of rows (e.g., from spinning lidar or depth camera)
widthuint32_tUnordered point cloud: width = total number of points Ordered point cloud: width = number of points per row (columns) Total points = height × width
fieldsstd::vector< PointField >Describes the data channels (x, y, z, intensity, rgb, etc.) present in each point and their binary layout (offset, type, count).
is_bigendianbooltrue: Data is Big Endian byte order false: Data is Little Endian byte order (typical for x86/ARM systems)
point_stepuint32_tTotal byte size of a single point structure, including all fields and padding. Must be ≥ sum of all field sizes, may include alignment padding.
row_stepuint32_tTotal byte size of one row of points. Formula: row_step = point_step × width
datastd::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_densebooltrue: 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

void galbot::sdk::LineTrajCheckPrimitive::set_line_check_primitive_type(PrimitiveType type)

Set geometric primitive type for linear trajectory validation.

Parameters

NameTypeDescription
typePrimitiveTypePrimitive representation (LINE or CYLINDER)
note

CYLINDER is recommended for safety-critical applications

set_cylinder_prim_radius

void galbot::sdk::LineTrajCheckPrimitive::set_cylinder_prim_radius(double radius)

Set swept-volume cylinder radius for trajectory collision checking.

Parameters

NameTypeDescription
radiusdoubleCylinder 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

void galbot::sdk::LineTrajCheckPrimitive::set_line_prim_curvature(double curvature)

Set curvature approximation tolerance for line primitive.

Parameters

NameTypeDescription
curvaturedoubleMaximum 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

PrimitiveType galbot::sdk::LineTrajCheckPrimitive::get_line_check_primitive_type() const

Get the geometric primitive type for trajectory checking.

Returns

TypeDescription
PrimitiveTypeCurrent primitive type (LINE or CYLINDER)

get_cylinder_prim_radius

double galbot::sdk::LineTrajCheckPrimitive::get_cylinder_prim_radius() const

Get the cylinder primitive swept-volume radius.

Returns

TypeDescription
doubleCylinder radius (units: m)

get_line_prim_curvature

double galbot::sdk::LineTrajCheckPrimitive::get_line_prim_curvature() const

Get the line primitive curvature approximation tolerance.

Returns

TypeDescription
doubleCurvature tolerance (units: m)

print

void galbot::sdk::LineTrajCheckPrimitive::print() const

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 ValueDescription
LINEZero-thickness line segment (fast but less conservative)
CYLINDERSwept-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

NameTypeDescription
pathstd::stringDirectory path for log files. Default: ~/galbot_sdk_log/user_log
file_namestd::stringLog file name. Default: <process_name><current_time>_<thread_id>.log
file_max_sizeuint64_tMaximum size of a single log file (bytes)
file_max_numuint64_tNumber of log files to retain in rotation
levelLogLevelMinimum log level to record
console_outputboolFlag to enable or disable console output

LogInfo

Log information.

Member Variables

NameTypeDescription
levelstd::string
messagestd::string"error" "warning"

LogLevel

Represents the severity level of log messages.

Enum ValueDescription
TRACETrace level, detailed information for debugging
DEBUGDebug level, diagnostic information for developers
INFOInfo level, general operational messages
WARNWarn level, potentially harmful situations
ERRORError level, error events that might still allow the application to continue running
CRITICALCritical 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 ValueDescription
G1Galbot G1 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

galbot::sdk::MotionPlanConfig::MotionPlanConfig()=default

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

void galbot::sdk::MotionPlanConfig::set_update_time(int64_t t)

Set configuration update timestamp.

Parameters

NameTypeDescription
tint64_tTimestamp of last configuration modification (units: ns, typically CLOCK_MONOTONIC)
note

Used for configuration versioning and cache invalidation

get_update_time

int64_t galbot::sdk::MotionPlanConfig::get_update_time()

Get configuration update timestamp.

Returns

TypeDescription
int64_tof last configuration modification (units: ns)

create_sampler_config

std::shared_ptr<SamplerConfig> galbot::sdk::MotionPlanConfig::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

TypeDescription
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

TypeDescription
std::shared_ptr< TrajectoryPlanConfig >Shared pointer to trajectory planning configuration with default settings

create_ik_solver_config

std::shared_ptr<IKSolverConfig> galbot::sdk::MotionPlanConfig::create_ik_solver_config()

Create or retrieve inverse kinematics solver configuration.

Lazily initializes the IK solver configuration if it does not exist.

Returns

TypeDescription
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

TypeDescription
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

TypeDescription
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

TypeDescription
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

NameTypeDescription
configconst 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

NameTypeDescription
configconst 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

NameTypeDescription
configconst 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

NameTypeDescription
optionconst 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

NameTypeDescription
optionconst 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

NameTypeDescription
boundaryconst 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

NameTypeDescription
primitiveconst 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

NameTypeDescription
boundaryconst 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

NameTypeDescription
boundaryconst 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

NameTypeDescription
boundaryconst 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

void galbot::sdk::MotionPlanConfig::set_revert_ik_joint_limit(bool flag)

Enable or disable IK joint limit reversion to hard limits.

Parameters

NameTypeDescription
flagbooltrue 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

NameTypeDescription
chainsconst 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

std::shared_ptr<SamplerConfig> galbot::sdk::MotionPlanConfig::get_sampler_config() const

Get sampler configuration (may be nullptr if not initialized)

Returns

TypeDescription
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

TypeDescription
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

std::shared_ptr<IKSolverConfig> galbot::sdk::MotionPlanConfig::get_ik_solver_config() const

Get inverse kinematics solver configuration (may be nullptr if not initialized)

Returns

TypeDescription
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

TypeDescription
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

TypeDescription
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

TypeDescription
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

SamplerConfig& galbot::sdk::MotionPlanConfig::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

TypeDescription
SamplerConfig &Mutable reference to sampler configuration (guaranteed non-null)

get_trajectory_plan_config_ref

TrajectoryPlanConfig& galbot::sdk::MotionPlanConfig::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

TypeDescription
TrajectoryPlanConfig &Mutable reference to trajectory planning configuration (guaranteed non-null)

get_ik_solver_config_ref

IKSolverConfig& galbot::sdk::MotionPlanConfig::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

TypeDescription
IKSolverConfig &Mutable reference to IK solver configuration (guaranteed non-null)

get_collision_check_option_ref

CollisionCheckOption& galbot::sdk::MotionPlanConfig::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

TypeDescription
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

TypeDescription
TrajectoryFeasibilityCheckOption &Mutable reference to trajectory feasibility check options (guaranteed non-null)

get_line_traj_check_primitive_ref

LineTrajCheckPrimitive& galbot::sdk::MotionPlanConfig::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

TypeDescription
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

TypeDescription
const std::vector< KinematicsBoundary > &Const reference to vector of kinematic feasibility boundaries

get_feasibility_boundary

std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_feasibility_boundary()

Get kinematic feasibility boundaries for all chains (mutable)

Returns mutable access to the feasibility boundary configuration for in-place modification.

Returns

TypeDescription
std::vector< KinematicsBoundary > &Mutable reference to vector of kinematic feasibility boundaries

get_ik_joint_limit

const std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_ik_joint_limit() const

Get IK phase joint limits (read-only)

Returns

TypeDescription
const std::vector< KinematicsBoundary > &Const reference to vector of IK joint limit boundaries

get_ik_joint_limit

std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_ik_joint_limit()

Get IK phase joint limits (mutable)

Returns

TypeDescription
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

TypeDescription
const std::vector< KinematicsBoundary > &Const reference to vector of sampling joint limit boundaries

get_sampler_joint_limit

std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_sampler_joint_limit()

Get sampling phase joint limits (mutable)

Returns

TypeDescription
std::vector< KinematicsBoundary > &Mutable reference to vector of sampling joint limit boundaries

get_hard_joint_limit

const std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_hard_joint_limit() const

Get hard joint limits (read-only)

Returns

TypeDescription
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

std::vector<KinematicsBoundary>& galbot::sdk::MotionPlanConfig::get_hard_joint_limit()

Get hard joint limits (mutable)

Returns

TypeDescription
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

TypeDescription
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

std::vector<std::string>& galbot::sdk::MotionPlanConfig::get_revert_ik_joint_limit_chains()

Get kinematic chains for selective IK joint limit reversion (mutable)

Returns

TypeDescription
std::vector< std::string > &Mutable reference to vector of chain names for IK limit reversion

get_revert_ik_joint_limit

bool galbot::sdk::MotionPlanConfig::get_revert_ik_joint_limit()

Check if IK joint limit reversion is enabled.

Returns

TypeDescription
booltrue if IK limits should revert to hard limits, false otherwise

print

void galbot::sdk::MotionPlanConfig::print() const

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 ValueDescription
SUCCESSExecution succeeded, motion reached expected target position/pose
TIMEOUTExecution timeout, motion not completed within specified time limit
FAULTFault occurred, motion cannot continue due to hardware or safety issue
INVALID_INPUTInput parameters invalid or not meeting interface requirements
INIT_FAILEDInternal initialization failed, communication component or resource creation failed
IN_PROGRESSMotion in progress but has not reached target yet
STOPPED_UNREACHEDStopped during motion without reaching target position/pose
DATA_FETCH_FAILEDData retrieval failed, e.g., sensor or state reading failure
PUBLISH_FAILData transmission or command delivery failed, motion command may not be executed
COMM_DISCONNECTEDCommunication disconnected or control node unavailable
STATUS_NUMTotal number of status enumerations (for boundary checking or array sizing)
UNSUPPORTED_FUNCRIONFunction 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 ValueDescription
SUCCESSExecution succeeded, navigation task completed as expected
FAILExecution failed due to unspecified error
TIMEOUTExecution timeout, task did not complete within allowed time
INVALID_INPUTInput parameters do not meet requirements or are out of valid range
MODE_ERRCurrent mode does not support this operation
COMM_ERRCommunication error occurred during execution
WAIT_INITIALIZEDWaiting 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 ValueDescription
UNKNOWNTask state unknown or not yet reported
RUNNINGNavigation task is in progress
SUCCESSNavigation task completed successfully
FAILEDNavigation 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

NameTypeDescription
timestamp_nsint64_tOdometry timestamp (nanoseconds since epoch)
positionstd::array< double, 3 >Position [x, y, z] (meters)
orientationstd::array< double, 4 >Orientation as quaternion [qx, qy, qz, qw]
linear_velocitystd::array< double, 3 >Linear velocity vx, vy, vz
angular_velocitystd::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

galbot::sdk::Parameter::Parameter()=default

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

NameTypeDescription
direct_executeboolIf true, immediately executes the planned motion; if false, only computes the plan
blockingboolIf true, blocks until motion completes or times out; if false, returns immediately
timeoutdoubleMaximum allowed time for motion execution (in seconds)
actuatestd::stringActuation type string key (see g_actuate_type_map): "with_chain_only", "with_torso", or "with_leg"
tool_poseboolIf true, target pose is relative to tool frame; if false, relative to end-effector flange
check_collisionboolIf true, enables collision checking during planning; if false, skips collision detection
frameconst 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

void galbot::sdk::Parameter::set_direct_execute(bool direct_execute)

Set direct execution mode.

Parameters

NameTypeDescription
direct_executeboolIf true, planned motion is immediately executed on the robot; if false, only computes the trajectory without execution

set_blocking

void galbot::sdk::Parameter::set_blocking(bool blocking)

Set blocking execution mode.

Parameters

NameTypeDescription
blockingboolIf true, function blocks until motion completes or times out; if false, returns immediately after sending motion command

set_timeout

void galbot::sdk::Parameter::set_timeout(double timeout)

Set motion execution timeout.

Parameters

NameTypeDescription
timeoutdoubleMaximum allowed time for motion execution (in seconds, must be positive)
note

Only applies when blocking mode is enabled.

set_actuate

void galbot::sdk::Parameter::set_actuate(const std::string &actuate)

Set actuation type for whole-body coordination.

Parameters

NameTypeDescription
actuateconst 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

void galbot::sdk::Parameter::set_tool_pose(bool tool_pose)

Set tool coordinate frame usage.

Parameters

NameTypeDescription
tool_poseboolIf true, target poses are interpreted relative to the tool frame (TCP); if false, relative to the end-effector flange frame

set_check_collision

void galbot::sdk::Parameter::set_check_collision(bool check_collision)

Enable or disable collision checking.

Parameters

NameTypeDescription
check_collisionboolIf 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

void galbot::sdk::Parameter::set_reference_frame(const std::string &frame)

Set the reference frame for pose specifications.

Parameters

NameTypeDescription
frameconst 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

void galbot::sdk::Parameter::set_move_line(bool flag)

Set Cartesian linear motion mode.

Parameters

NameTypeDescription
flagboolIf 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

bool galbot::sdk::Parameter::get_direct_execute() const

Get direct execution mode status.

Returns

TypeDescription
booltrue if direct execution is enabled, false otherwise

get_blocking

bool galbot::sdk::Parameter::get_blocking() const

Get blocking execution mode status.

Returns

TypeDescription
booltrue if blocking mode is enabled, false otherwise

get_timeout

double galbot::sdk::Parameter::get_timeout() const

Get motion execution timeout value.

Returns

TypeDescription
doubleTimeout duration in seconds (positive value)

get_actuate_type

std::string galbot::sdk::Parameter::get_actuate_type() const

Get actuation type as string.

Performs reverse lookup in g_actuate_type_map to convert enum to string key.

Returns

TypeDescription
std::stringActuation type string ("with_chain_only", "with_torso", "with_leg", or "unknown" if not found)

get_tool_pose

bool galbot::sdk::Parameter::get_tool_pose() const

Get tool coordinate frame usage status.

Returns

TypeDescription
booltrue if using tool frame (TCP), false if using end-effector flange frame

get_check_collision

bool galbot::sdk::Parameter::get_check_collision() const

Get collision checking status.

Returns

TypeDescription
booltrue if collision checking is enabled, false otherwise

get_reference_frame

std::string galbot::sdk::Parameter::get_reference_frame() const

Get reference frame name.

Returns

TypeDescription
std::stringReference frame identifier string (e.g., "base_link", "world")

is_move_line

bool galbot::sdk::Parameter::is_move_line()

Check if Cartesian linear motion mode is enabled.

Returns

TypeDescription
booltrue if using linear Cartesian interpolation, false if using joint-space interpolation

PerceptionModule

Enabled perception pipelines (model sets loaded at init).

Enum ValueDescription
FOUNDATION_STEREO
LIGHT_STEREO
STATUS_NUM

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

NameTypeDescription
is_direct_executeboolWhether 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_blockingboolWhether to wait synchronously for operation completion.

true: Block until planning/execution completes or timeout occurs false: Return immediately after initiating operation (asynchronous mode)
timeout_seconddoubleTimeout duration for blocking operations (seconds)

Maximum time to wait for planning or execution completion when is_blocking = true. Default: 20 seconds
actuate_typeActuateTypeActuation 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_poseboolWhether 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_poseboolWhether 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_collisionboolWhether to enable collision checking during planning.

true: Check collisions with obstacles and self-collisions false: Disable collision checking (use with caution)
reference_framestd::stringReference coordinate frame for target pose.

Specifies the coordinate frame in which target poses are expressed. Common values: "base_link", "world", "odom"
joint_statestd::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_linebooltrue: 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

NameTypeDescription
task_idstd::stringUsed to track and distinguish different planning tasks, especially in asynchronous operations.
successbooltrue: Planning completed successfully false: Planning failed (check error_code and error_message for details)
error_codeintUsed for programmatic error handling. Zero typically indicates success, non-zero values indicate specific error conditions.
error_messagestd::stringProvides detailed description of failure reason or exception information when success = false.
trajectorystruct [[galbot::sdk::PlanTaskResult](#plantaskresult-struct)::Trajectory](#trajectory-struct)Contains the complete planned trajectory with joint positions and timing information.
ik_resultstd::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_resultstd::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_resultstd::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

NameTypeDescription
xdoubleX coordinate (meters)
ydoubleY coordinate (meters)
zdoubleZ 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

NameTypeDescription
namestd::stringIdentifier 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)
offsetuint32_tByte 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
datatypeDataTypeSpecifies the primitive data type using the DataType enumeration.
countuint32_tArray 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 ValueDescription
UNKNOWNUnknown or unspecified type
INT88-bit signed integer (1 byte)
UINT88-bit unsigned integer (1 byte)
INT1616-bit signed integer (2 bytes)
UINT1616-bit unsigned integer (2 bytes)
INT3232-bit signed integer (4 bytes)
UINT3232-bit unsigned integer (4 bytes)
FLOAT3232-bit IEEE 754 floating point (4 bytes)
FLOAT6464-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

galbot::sdk::Pose::Pose()=default

Default constructor.

Initializes pose at origin (0,0,0) with identity rotation.

Pose

galbot::sdk::Pose::Pose(const T &pos, const T &quat)

Initialize Pose using separate position and quaternion containers.

Parameters

NameTypeDescription
posconst T &3D position vector [x, y, z] in meters, must have size 3
quatconst T &Quaternion vector [x, y, z, w], must have size 4

Pose

galbot::sdk::Pose::Pose(const T &vec)

Initialize Pose using a single 7-dimensional vector.

Parameters

NameTypeDescription
vecconst 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

NameTypeDescription
positionPointPosition in 3D space (x, y, z) in meters
orientationQuaternionOrientation 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

Type galbot::sdk::PoseState::get_type() const override

Get runtime type identifier.

Returns

TypeDescription
Type, indicating this is a Cartesian pose target

Member Variables

NameTypeDescription
frame_idstd::stringTarget frame on the kinematic chain (e.g., "EndEffector", "Camera", "TCP")
reference_framestd::stringReference coordinate frame (e.g., "base_link", "world", "odom")
posePoseTarget 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

NameTypeDescription
xdoubleX component of the quaternion vector part
ydoubleY component of the quaternion vector part
zdoubleZ component of the quaternion vector part
wdoubleW 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 ValueDescription
FRAME_WORLDWorld/global coordinate frame, fixed reference frame
FRAME_BASERobot 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

NameTypeDescription
x_offsetuint32_tHorizontal pixel coordinate of the ROI's left edge. 0 means ROI starts at the image's left edge.
y_offsetuint32_tVertical pixel coordinate of the ROI's top edge. 0 means ROI starts at the image's top edge.
heightuint32_tNumber of pixel rows in the region of interest.
widthuint32_tNumber of pixel columns in the region of interest.
do_rectifybooltrue: 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

std::shared_ptr<cv::Mat> galbot::sdk::RgbData::convert_to_cv2_mat()

Decode compressed image data to OpenCV Mat.

Decodes the internally stored compressed binary data using cv::imdecode.

Returns

TypeDescription
std::shared_ptr< cv::Mat >std::shared_ptrcv::Mat Smart pointer to decoded image on success, nullptr on failure

Member Variables

NameTypeDescription
headerHeaderContains acquisition timestamp and camera coordinate frame ID.
formatstd::stringSpecifies compression format and encoding. Examples: "jpeg", "png", "bgr8; jpeg compressed bgr8"
datastd::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

virtual Type galbot::sdk::RobotStates::get_type() const

Get the runtime type of this state object.

Returns

TypeDescription
TypeType enumeration value, ROBOT_STATES for base class

RobotStates

galbot::sdk::RobotStates::RobotStates()=default

Default constructor.

Creates an empty RobotStates object with uninitialized joint and base states.

set_whole_body_joint

void galbot::sdk::RobotStates::set_whole_body_joint(const std::vector< double > &joint_positions)

Set complete whole-body joint configuration.

Parameters

NameTypeDescription
joint_positionsconst 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

void galbot::sdk::RobotStates::set_base_state(const Pose &base_pose)

Set mobile base pose.

Converts Pose structure to internal base_state vector representation.

Parameters

NameTypeDescription
base_poseconst 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

NameTypeDescription
chainconst std::string &Kinematic chain name (e.g., "left_arm", "right_arm")
whole_jointconst std::vector< double > &Complete joint configuration vector (radians)
base_poseconst Pose &Mobile base pose: position (meters) + orientation (unit quaternion)

Member Variables

NameTypeDescription
chain_namestd::stringKinematic chain identifier (e.g., "left_arm", "right_arm")
whole_body_jointstd::vector< double >Complete robot joint configuration (radians), ordered by joint index.
base_statestd::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 ValueDescription
POSEPoseState: Cartesian pose target.
JOINTJointStates: Joint space target.
ROBOT_STATESRobotStates: Generic whole-body state.

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

void galbot::sdk::SamplerConfig::set_state_check_type(StateCheckType type)

Set the distance metric for state comparison.

Parameters

NameTypeDescription
typeStateCheckTypeDistance metric type for evaluating state similarity

set_state_check_resolution

void galbot::sdk::SamplerConfig::set_state_check_resolution(double resolution)

Set state comparison resolution threshold.

Parameters

NameTypeDescription
resolutiondoubleMinimum 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

void galbot::sdk::SamplerConfig::set_interpolate(bool enable)

Enable or disable path interpolation between sampled states.

Parameters

NameTypeDescription
enablebooltrue to enable interpolation, false to use only sampled waypoints
note

Interpolation improves trajectory smoothness and collision checking accuracy

set_interpolation_cnt

void galbot::sdk::SamplerConfig::set_interpolation_cnt(int cnt)

Set the number of interpolation waypoints between consecutive samples.

Parameters

NameTypeDescription
cntintNumber of intermediate waypoints to insert (0 = use automatic calculation)
note

Higher counts improve collision detection but increase computational cost

set_simplify

void galbot::sdk::SamplerConfig::set_simplify(bool enable)

Enable or disable path simplification post-processing.

Parameters

NameTypeDescription
enablebooltrue to enable path shortcutting and smoothing, false to use raw planned path
note

Simplification reduces waypoints and improves trajectory efficiency

set_max_simplification_time

void galbot::sdk::SamplerConfig::set_max_simplification_time(double time)

Set maximum time budget for path simplification.

Parameters

NameTypeDescription
timedoubleMaximum simplification duration (units: s); negative values indicate no time limit
note

Longer simplification time may yield shorter, smoother paths

set_termination_condition_type

void galbot::sdk::SamplerConfig::set_termination_condition_type(TerminationConditionType type)

Set planning termination condition.

Parameters

NameTypeDescription
typeTerminationConditionTypeTermination criterion (timeout only vs. timeout or exact solution)

set_max_planning_time

void galbot::sdk::SamplerConfig::set_max_planning_time(double time)

Set maximum time budget for motion planning.

Parameters

NameTypeDescription
timedoubleMaximum planning duration (units: s)
note

Planning may terminate earlier if exact solution is found (depends on termination condition)

get_state_check_type

StateCheckType galbot::sdk::SamplerConfig::get_state_check_type() const

Get the configured distance metric for state comparison.

Returns

TypeDescription
StateCheckTypeCurrent state check type

get_state_check_resolution

double galbot::sdk::SamplerConfig::get_state_check_resolution() const

Get state comparison resolution threshold.

Returns

TypeDescription
doubleResolution value (units: rad or dimensionless, depending on state check type)

get_interpolate

bool galbot::sdk::SamplerConfig::get_interpolate() const

Check if path interpolation is enabled.

Returns

TypeDescription
booltrue if interpolation is enabled, false otherwise

get_interpolation_cnt

int galbot::sdk::SamplerConfig::get_interpolation_cnt() const

Get the number of interpolation waypoints.

Returns

TypeDescription
intNumber of intermediate waypoints between samples

get_simplify

bool galbot::sdk::SamplerConfig::get_simplify() const

Check if path simplification is enabled.

Returns

TypeDescription
booltrue if path simplification is enabled, false otherwise

get_max_simplification_time

double galbot::sdk::SamplerConfig::get_max_simplification_time() const

Get maximum path simplification time budget.

Returns

TypeDescription
doubleMaximum simplification time (units: s); negative values indicate no limit

get_termination_condition_type

TerminationConditionType galbot::sdk::SamplerConfig::get_termination_condition_type() const

Get planning termination condition.

Returns

TypeDescription
TerminationConditionTypeCurrent termination condition type

get_max_planning_time

double galbot::sdk::SamplerConfig::get_max_planning_time() const

Get maximum planning time budget.

Returns

TypeDescription
doubleMaximum planning time (units: s)

print

void galbot::sdk::SamplerConfig::print() const

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 ValueDescription
EUCLIDEAN_DISTANCECartesian Euclidean distance in joint space (treats joint angles as Cartesian coordinates)
RADIAN_DISTANCEAngular distance metric accounting for joint angle wraparound and weighting
TerminationConditionType

Planning termination criteria.

Enum ValueDescription
TIMEOUTTerminate only when maximum planning time is exceeded
TIMEOUT_AND_EXACT_SOLUTIONTerminate 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 ValueDescription
RANDOM_SEEDRandom seed, generates random initial joint configurations
RANDOM_PROGRESSIVE_SEEDRandom progressive seed, tries multiple random seeds iteratively (recommended for robustness)
USER_DEFINED_SEEDUser-defined seed, uses explicitly provided initial joint configuration
SEED_TYPE_NUMTotal 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 ValueDescription
SUCCESSExecution succeeded, sensor data valid and operation completed
TIMEOUTExecution timeout, data acquisition or operation not completed within specified time limit
FAULTFault occurred, sensor detected anomaly and cannot continue normal operation
INVALID_INPUTInput parameters invalid or not meeting interface requirements
INIT_FAILEDInitialization failed, internal communication or dependent component creation failed
IN_PROGRESSOperation in progress but not yet completed
STOPPED_UNREACHEDStopped during execution without completing expected operation
DATA_FETCH_FAILEDData acquisition or reading failed, sensor may be disconnected or malfunctioning
PUBLISH_FAILData transmission or reporting failed, unable to publish sensor data
COMM_DISCONNECTEDSensor communication connection lost, no data available
STATUS_NUMTotal 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 ValueDescription
HEAD_LEFT_CAMERAHead left camera, typically RGB camera for stereo vision .
HEAD_RIGHT_CAMERAHead right camera, typically RGB camera for stereo vision .
LEFT_ARM_CAMERALeft arm camera, mounted on left manipulator for visual servoing .
RIGHT_ARM_CAMERARight arm camera, mounted on right manipulator for visual servoing .
LEFT_ARM_DEPTH_CAMERALeft arm depth camera, provides RGB-D data for left arm workspace .
RIGHT_ARM_DEPTH_CAMERARight arm depth camera, provides RGB-D data for right arm workspace .
BASE_LIDARG1 Base LiDAR .
TORSO_IMUG1 Torso IMU (Inertial Measurement Unit), measures acceleration and angular velocity .
BASE_ULTRASONICBase ultrasonic sensor array, for proximity detection and collision avoidance .
LEFT_FRONT_SURROUND_CAMERAG1 left-front surround color camera .
RIGHT_FRONT_SURROUND_CAMERAG1 right-front surround color camera .
LEFT_REAR_SURROUND_CAMERAG1 left-rear surround color camera .
RIGHT_REAR_SURROUND_CAMERAG1 right-rear surround color camera .
SENSOR_NUMTotal number of sensor enumerations (for boundary checking or array sizing) .

SingoriXTarget

SDK mirror of galbot.singorix_proto.SingoriXTarget.

Member Variables

NameTypeDescription
headerHeader
target_group_trajectory_mapstd::unordered_map< std::string, TargetGroupTrajectory >
target_task_trajectory_mapstd::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 ValueDescription
suction_action_idleIdle state, vacuum not activated
suction_action_suckingSuction in progress, attempting to grasp object
suction_action_successSuction successful, pressure decreased indicating secure grasp
suction_action_failedSuction 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

NameTypeDescription
timestamp_nsint64_tState timestamp (nanoseconds since epoch)
activationboolActivation flag: true if vacuum is on, false if off
pressuredoubleCurrent vacuum pressure (Pascals), typically negative for suction
action_stateSUCTION_ACTION_STATECurrent suction action state

TargetConfig

Common target configuration shared by group and task trajectories.

Member Variables

NameTypeDescription
target_dataint32_t
target_typeint32_t
target_samplingTargetSampling
target_priorityint32_t
target_idstd::string
target_tsTimestamp

TargetDataBits

Bitmask describing which fields in a target are meaningful.

Mirrors galbot.singorix_proto.TargetData while remaining in the SDK type layer.

Enum ValueDescription
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

NameTypeDescription
target_configTargetConfig
joint_namesstd::vector< std::string >
group_commandsstd::vector< GroupCommand >

TargetSampling

Sampling strategy for a target trajectory.

Mirrors galbot.singorix_proto.TargetSampling while remaining in the SDK type layer.

Enum ValueDescription
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

NameTypeDescription
target_configTargetConfig
group_namesstd::vector< std::string >
joint_namesstd::vector< std::string >
subtask_namesstd::vector< std::string >
task_commandsstd::vector< TaskCommand >

TargetTypeBits

Bitmask describing how a target should be applied.

Mirrors galbot.singorix_proto.TargetType while remaining in the SDK type layer.

Enum ValueDescription
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

NameTypeDescription
time_from_start_sdouble
subtask_commandsstd::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

NameTypeDescription
secint64_tNumber of seconds since UNIX Epoch (1970-01-01 00:00:00 UTC).
nanosecuint32_tNanosecond portion within the current second. Valid range: [0, 999,999,999] (< 1 second)

Trajectory

Represents a complete robot trajectory consisting of multiple waypoints over time.

Member Variables

NameTypeDescription
pointsstd::vector< TrajectoryPoint >Ordered list of trajectory waypoints
joint_groupsstd::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_namesstd::vector< std::string >Explicit joint names. When non-empty, this takes precedence over joint_groups and is validated as active joints only.

Trajectory

Contains the complete planned trajectory with joint positions and timing information.

Member Variables

NameTypeDescription
joint_positionsstd::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.
timestampsstd::vector< double >Cumulative time from trajectory start. Size must match joint_positions size.

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 ValueDescription
INVALID_INPUTInput parameters do not meet requirements, trajectory cannot be executed
RUNNINGTrajectory is currently executing, not yet completed
COMPLETEDTrajectory execution completed successfully, reached final target point
STOPPED_UNREACHEDStopped during trajectory execution without reaching endpoint
ERRORError occurred, trajectory execution cannot continue
DATA_FETCH_FAILEDExecution data retrieval failed, e.g., joint state or sensor feedback unavailable
STATUS_NUMTotal 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

void galbot::sdk::TrajectoryFeasibilityCheckOption::set_disable_collision_check(bool disable)

Enable or disable collision detection during trajectory validation.

Parameters

NameTypeDescription
disablebooltrue 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

void galbot::sdk::TrajectoryFeasibilityCheckOption::set_disable_joint_limit_check(bool disable)

Enable or disable joint limit compliance checking.

Parameters

NameTypeDescription
disablebooltrue 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

NameTypeDescription
disablebooltrue 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

bool galbot::sdk::TrajectoryFeasibilityCheckOption::get_disable_collision_check() const

Check if collision detection is disabled.

Returns

TypeDescription
booltrue if collision checking is currently disabled, false if enabled

get_disable_joint_limit_check

bool galbot::sdk::TrajectoryFeasibilityCheckOption::get_disable_joint_limit_check() const

Check if joint limit checking is disabled.

Returns

TypeDescription
booltrue if joint limit validation is currently disabled, false if enabled

get_disable_velocity_feasibility_check

bool galbot::sdk::TrajectoryFeasibilityCheckOption::get_disable_velocity_feasibility_check() const

Check if velocity feasibility checking is disabled.

Returns

TypeDescription
booltrue if velocity validation is currently disabled, false if enabled

print

void galbot::sdk::TrajectoryFeasibilityCheckOption::print() const

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

void galbot::sdk::TrajectoryPlanConfig::set_min_move_time(double time)

Set minimum duration for any motion segment.

Parameters

NameTypeDescription
timedoubleMinimum 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

void galbot::sdk::TrajectoryPlanConfig::set_move_line_intermediate_point(double value)

Set waypoint density for Cartesian linear motion interpolation.

Parameters

NameTypeDescription
valuedoubleNumber 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

void galbot::sdk::TrajectoryPlanConfig::set_way_point_plan_expected_time(double time)

Set expected total duration for multi-waypoint trajectory planning.

Parameters

NameTypeDescription
timedoubleExpected trajectory execution time for waypoint sequences (units: s)
note

Used as a hint for time-optimal trajectory generation algorithms

get_min_move_time

double galbot::sdk::TrajectoryPlanConfig::get_min_move_time() const

Get minimum motion segment duration.

Returns

TypeDescription
doubleMinimum movement time (units: s)

get_move_line_intermediate_point

double galbot::sdk::TrajectoryPlanConfig::get_move_line_intermediate_point() const

Get waypoint density for linear motion interpolation.

Returns

TypeDescription
doubleNumber of intermediate waypoints (dimensionless)

get_way_point_plan_expected_time

double galbot::sdk::TrajectoryPlanConfig::get_way_point_plan_expected_time() const

Get expected multi-waypoint trajectory duration.

Returns

TypeDescription
doubleExpected planning time (units: s)

print

void galbot::sdk::TrajectoryPlanConfig::print() const

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

NameTypeDescription
time_from_start_seconddoubleTime from trajectory start (seconds)
joint_command_vecstd::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

NameTypeDescription
timestamp_nsint64_tTransform timestamp (nanoseconds since epoch)
translationPointTranslation vector (meters)
rotationQuaternionRotation as unit quaternion (x, y, z, w)

Twist

6D twist command (linear + angular velocity).

Member Variables

NameTypeDescription
linearVector3
angularVector3

UltrasonicData

Contains a single ultrasonic distance measurement with timestamp.

Member Variables

NameTypeDescription
timestamp_nsint64_tMeasurement timestamp in nanoseconds since epoch
distancedoubleMeasured 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 ValueDescription
FRONT_LEFTFront left ultrasonic sensor
FRONT_RIGHTFront right ultrasonic sensor
RIGHT_LEFTRight side front ultrasonic sensor
RIGHT_RIGHTRight side rear ultrasonic sensor
BACK_LEFTBack left ultrasonic sensor
BACK_RIGHTBack right ultrasonic sensor
LEFT_LEFTLeft side front ultrasonic sensor
LEFT_RIGHTLeft side rear ultrasonic sensor
ULTRASONIC_NUMTotal 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

NameTypeDescription
xdoubleX component
ydoubleY component
zdoubleZ component

Wrench

6D wrench command (force + torque).

Member Variables

NameTypeDescription
forceVector3
torqueVector3