Skip to main content

set_config Configurable Field Reference (Navigation Service / Camera Services / Motion Planning Service / Control Service)

GalbotRobot.set_config() modifies the runtime configuration of the navigation service, camera services, motion planning service, and control service. This document lists every field currently supported by these services, along with its meaning, type, and valid range. For the signature, parameters, and return value of the interface itself, see the description of GalbotRobot.set_config in the Python API Reference / C++ API Reference.


Basic Usage

set_config() takes a ConfigService (which service to modify) and a list of ConfigItem(key, value) (which fields to change and what to change them to):

from galbot_sdk.g3 import GalbotRobot, ConfigService, ConfigItem, ControlStatus

robot = GalbotRobot()
robot.init()

status = robot.set_config(
ConfigService.NAVIGATION,
[
ConfigItem("replan_threshold", 30.0),
ConfigItem("no_replan_threshold", 1.0),
],
)
print(status) # ControlStatus.SUCCESS / INVALID_INPUT / ...

robot.request_shutdown()
robot.wait_for_shutdown()
robot.destroy()

A few key behaviors to understand before using this API:

  • Use key names exactly as listed in the tables below.
  • The call returns only a single aggregate ControlStatus; it does not tell you which specific field caused a failure. When a call does not succeed, check the ERR lines in the SDK log (under ~/galbot_sdk_log/g3/) to find the reason.
  • A single call can set multiple fields at once. If any field is invalid (not in the tables below, or its value is out of range), the entire batch is rejected and none of it takes effect.
Important

A successful set_config() call (returning ControlStatus.SUCCESS) only means the configuration has been saved -- it does not take effect immediately. Please restart the device after configuration; the new settings will only be loaded and applied by the relevant service after a restart.


The 52 fields supported by the navigation service are listed below, grouped by function.

Map & Obstacle Avoidance

Field (key)TypeRangeDescription
esdf_map_pathstrunrestrictedESDF map path; if the map does not exist, the service enters an error state
forbidden_dyn_mapbool-Whether to disable the dynamic map (turns dynamic obstacle avoidance on/off)
use_static_mapbool-Enable static-map planning: path search runs on the static map, the dynamic map is only used for real-time collision checking; when blocked by an obstacle the robot stops instead of going around it
evaluate_at_dyn_mapbool-Whether to perform reachability estimation on the dynamic map layer (when enabled, reachability is also evaluated on the dynamic layer; when disabled, only the static layer is used)

Replanning & Timeout

Field (key)TypeRangeDescription
no_replanbool-Whether to immediately report failure (without attempting to replan) when planning fails or a collision is detected during execution
task_timeout_secfloatsecondsGlobal timeout for a single navigation request; if not completed within this time, the request is reported as failed. A positive value is the timeout duration; a non-positive value means no timeout (unlimited replanning is allowed)
dyn_planbool-Whether to enable continuous dynamic replanning (Beta): when enabled, no stop command is issued during replanning -- the last executed trajectory position is used as the starting condition so obstacle-avoidance motion stays continuous; when disabled (default), the base stops before replanning
replan_thresholdfloat> 0.1, in mReplanning is skipped once the current position is closer than this threshold to the starting point; replan_threshold + no_replan_threshold must be less than planning_horizen, otherwise active replanning stops working
no_replan_thresholdfloat> 0.1, in m, typically 1.0Replanning is skipped once the current position is closer than this threshold to the goal; too small a value can cause trajectory jitter from replanning near the goal
planning_horizenfloat> 0, in mLocal planning horizon; only the path within this range is planned each time. Anything beyond it is truncated to this length and completed over multiple replanning segments
search_closest_distancefloat> 0, in mDistance kept from obstacles for the partial path returned when path search fails; if larger than half the width of a feasible corridor, that area is treated as unreachable

End-Effector Collision Checking

Field (key)TypeRangeDescription
left_armintenum 0~6Left-arm end-effector tool type, used to include the end-effector in environment collision checking during navigation planning: 0=None, 1=gripper_hitbot, 2=suction_cup, 3=robotiq_gripper, 4=galbot_gripper, 5=GE103, 6=GE103v1 (default 0, collision not considered)
right_armintenum 0~6Right-arm end-effector tool type, same meaning as left_arm

Path Search Safety Margins

Field (key)TypeRangeDescription
point_safe_marginfloat> 0, in mDistance kept between path points and obstacles (hard constraint)
search_start_radiusfloat> 0, in mSpecialized radius around the start point, during path search
search_end_radiusfloat> 0, in mSpecialized radius around the goal point, during path search
start_safe_marginfloat> 0, in mDistance to obstacles within the start-point specialized radius, for cases where the starting point is close to an obstacle
end_safe_marginfloat> 0, in mDistance to obstacles within the goal-point specialized radius, for cases where the goal is close to an obstacle
return_closest_pathbool-Whether to return the feasible partial path closest to the goal when path search fails (path blocked); use with caution when the goal is behind a shelf/wall, as it can look like the robot went to the wrong place

Trajectory Optimization (Safety Distance & Smoothness)

Field (key)TypeRangeDescription
safe_distancefloat> 0, in mDistance kept between path control points and obstacles (soft constraint); should be greater than the search-phase safety distance, typically by 0.2~0.5m
start_safe_distancefloat> 0, in mDistance to obstacles within the start-point specialized radius
end_safe_distancefloat> 0, in mDistance to obstacles within the goal-point specialized radius
optimize_start_radiusfloat> 0, in mSpecialized radius around the start point, during trajectory optimization
optimize_end_radiusfloat> 0, in mSpecialized radius around the goal point, during trajectory optimization
post_check_hard_safe_distancefloat> 0, in mPost-optimization hard constraint: planning is judged to have failed if the final planned path's distance to an obstacle is below this value
weight_obstaclefloat> 0Obstacle-distance weight (safety weight); by default safety is prioritized, and a larger value further prioritizes obstacle avoidance
weight_smoothfloatlarger = smoother; 20.0~50.0 usually works wellTrajectory smoothness weight; can be increased in open scenes that don't require hugging obstacles closely, to improve navigation smoothness

Collision Checking

Field (key)TypeRangeDescription
check_collision_radiusfloat> 0, in m, recommended ≤ 5Distance ahead of the robot's current position, along the planned path, over which collisions are predicted during navigation execution; too large a value can cause frequent replanning or jerky/stuttering motion
collision_check_plan_pathbool-Whether to check the full trajectory (cylindrical envelope) for collision feasibility once planning completes, and withhold execution if infeasible; can be disabled in high dynamic-response or mapless long-range navigation scenarios in favor of runtime collision prediction + dynamic replanning

Velocity, Acceleration & Control Cycle

Field (key)TypeRangeDescription
max_velocityList[float]length 3, in m/s and rad/s, element range (0, 1.5)Maximum navigation planning velocity [vx, vy, w]; the robot's control-side velocity limit must be kept no lower than this value, otherwise the robot may fail to track the planned velocity
max_accelerationList[float]length 3Maximum navigation planning acceleration [ax, ay, aw]; normally left unchanged
max_jerkList[float]length 3Maximum navigation planning jerk [jx, jy, jw]; normally left unchanged
enable_centripetal_constraintbool-Whether to enable the centripetal acceleration constraint
max_centripetal_accfloat> 0Upper bound for the centripetal acceleration constraint
control_cycle_timefloatnormally left unchangedTime interval between planned waypoints (control cycle), determining how densely waypoints are packed

Arrival Accuracy

Field (key)TypeRangeDescription
arrival_pos_err_xfloat> 0, in mArrival position error (X direction); the robot's control accuracy must be smaller than this arrival error, otherwise the robot may fail to reach the target; control accuracy should not be smaller than 1cm
arrival_pos_err_yfloat> 0, in mArrival position error (Y direction)
arrival_ori_errfloat> 0, in radArrival orientation error

Omnidirectional & Short-Distance Motion

Field (key)TypeRangeDescription
omni_planboolG-series onlyWhether to enable omnidirectional planning (simultaneous translation and rotation); when disabled, standard heading-based navigation (turn first, then move straight) is used. Due to limited lidar field of view, moving omnidirectionally with an obstacle behind the robot carries a collision risk -- enable based on the scene. On S1 this returns INVALID_INPUT
stop_errfloatin m (G-series default 0.2, S1 default 0.5)Short-distance-move threshold: once the distance between the current position and target is below this value, the short-distance motion mode is used
adjust_motion_typeintenum 0~2Short-distance motion mode: 0=omnidirectional (G-series), 1=crab-walk + rotate, 2=rotate + crab-walk (recommended for S1, avoids joint collisions)
try_omni_plan_firstbool-Whether to first attempt a straight-line omnidirectional move (rotate + crab-walk on S1) to the goal, executing it if collision-free, otherwise falling back to regular planning
try_omni_plan_min_obstacle_distancefloat> 0, in mDistance kept from obstacles for the straight-line omnidirectional waypoints attempted above

Automatic Transition-Point Insertion

Field (key)TypeRangeDescription
dis_with_obstaclefloatin m; ≥0 enables it (recommended 0.2), <0 disables itDistance kept between the start/end positions and obstacles (the robot's or a specified link's cylindrical envelope surface) during planning; should be set together with find_valid_pos_step
find_valid_pos_stepfloatin m; ≥0 enables it (recommended 0.05), <0 disables itStep size for searching the best safe distance when the requested start/end obstacle clearance can't be achieved (narrow corridors); should be set together with dis_with_obstacle
find_start_valid_pos_check_link_listList[str]from the URDFLink list included in envelope checking when searching for a clearance point near the start
find_end_valid_pos_check_link_listList[str]from the URDFLink list included in envelope checking when searching for a clearance point near the goal; a smaller link list avoids inserting redundant transition points caused by an oversized cylindrical envelope when the upper body's arm span is large

Recovery Strategy

Field (key)TypeRangeDescription
enable_adjustmentbool-Whether to enable recovery adjustment (entering a recovery strategy when the planned path collides); when enabled, if static-map planning is also enabled, the stop-on-obstacle behavior stops working
recovery_strategy_orderList[int]element enum 0~3, recommended order [1,2,3,0]Order in which recovery strategies are attempted: 0=navigate to a designated transition point, 1=go straight omnidirectionally (rotate + crab-walk on S1), 2=search for an in-place rotation point based on the collision location, 3=handle by collision-location category
adjust_motion_typesList[int]element enum 0~2Motion modes attempted, in configured order, to reach a transition point away from the obstacle: 0=omnidirectional (G-series), 1=crab-walk + rotate, 2=rotate + crab-walk
transition_posesList[List[float]]each item length 3 or 7List of designated recovery transition-point poses, each [x,y,yaw] or [x,y,z,rx,ry,rz,rw]; when multiple are set, the fastest feasible one is chosen

Other

Field (key)TypeRangeDescription
save_databool-Whether to save each navigation run's process data (dynamic map, local map at time of collision, planned path), for reproducing issues and visual debugging

Camera Services

Camera configuration is split into 4 independent ConfigService values:

ConfigServiceSupported Platforms
LEFT_ARM_CAMERAG-series / S1
RIGHT_ARM_CAMERAG-series / S1
FRONT_HEAD_CAMERAG-series / S1
SURROUND_CAMERASG-series only; calling on S1 returns INVALID_INPUT

Only the fields listed below can be set; any other field is out of scope and passing it causes the whole batch to be rejected.

Resolution width/height must be set as a pair

color_width/color_height (present on all 4 camera services) and rs_color_width/rs_color_height (LEFT_ARM_CAMERA/RIGHT_ARM_CAMERA only, RealSense-specific) must be included together in the same set_config() call, and their combined values must be one of the valid combinations listed in the Range column below. Passing only one of the two, or passing both with an invalid combination, causes the whole batch to be rejected. Even if you only want to change one of them, you must resend the other's target value as well.

LEFT_ARM_CAMERA / RIGHT_ARM_CAMERA (identical field definitions on both services)

G3 uses monocular arm cameras and does not provide arm-mounted depth cameras. color_width/color_height controls the final-output resolution. The RealSense-specific fields remain in the shared configuration schema for G1/S1 compatibility and do not enable depth-camera support on G3.

Field (key)TypeRangeDescription
color_widthintpaired with color_height; valid combinations: (1920,1536) (1280,1024)Final-output image width
color_heightintsee aboveFinal-output image height
frame_rateintenum 30, 15Final-output frame rate
rs_color_widthintpaired with rs_color_height; valid combinations: (1280,720) (848,480) (640,480) (640,360) (480,270) (424,240)RealSense capture image width
rs_color_heightintsee aboveRealSense capture image height
rs_frame_rateintenum 30, 15, 9, 6RealSense camera frame rate; RealSense only supports these 4 values
ir_enabledbool-Whether to enable infrared image publishing
imu_enabledbool-Whether to enable IMU data publishing; currently only supported on D436
iframe_intervalint≥ 2I-frame interval; recommended to be a multiple of the frame rate

FRONT_HEAD_CAMERA

Field (key)TypeRangeDescription
undistort_enabledbooldefault falseWhether to enable distortion correction
color_widthintpaired with color_height; valid combinations: (1280,992) or (-1,-1) (full size)Image width
color_heightintsee aboveImage height
frame_rateintenum 30, 15Frame rate
iframe_intervalint≥ 2I-frame interval; recommended to be a multiple of the frame rate

SURROUND_CAMERAS (same field names as FRONT_HEAD_CAMERA, different resolution values)

Field (key)TypeRangeDescription
undistort_enabledbooldefault falseWhether to enable distortion correction
color_widthintpaired with color_height; valid combinations: (1920,1536) or (-1,-1) (full size)Image width
color_heightintsee aboveImage height
frame_rateintenum 30, 15Frame rate
iframe_intervalint≥ 2I-frame interval; recommended to be a multiple of the frame rate

Camera Configuration Example

from galbot_sdk.g3 import GalbotRobot, ConfigService, ConfigItem, ControlStatus

robot = GalbotRobot()
robot.init()

# Front head camera: set resolution (width/height must be sent together)
status = robot.set_config(
ConfigService.FRONT_HEAD_CAMERA,
[
ConfigItem("color_width", 1280),
ConfigItem("color_height", 992),
],
)
print(status)

robot.request_shutdown()
robot.wait_for_shutdown()
robot.destroy()

Motion Planning Service (ConfigService.MOTION_PLAN)

The fields supported by the motion planning service are listed below, grouped by function. Available on both G-series and S1.

Key Naming Convention for Per-Chain Fields

Some fields must be configured per body chain. The chain name can be one of 5 values: head, left_arm, right_arm, torso (waist), leg (lower body/lift). These fields follow the key naming pattern {field_name}_{chain_name}, e.g. max_velocity_left_arm.

The array length (number of joints) for each chain differs by platform:

ChainG-seriesS1
head22
left_arm77
right_arm77
torso21
leg51

The array length must exactly match the joint count of the corresponding chain on the currently connected platform, otherwise the field is rejected.

Sample Planner Parameters

Field (key)TypeRangeDescription
state_check_typestrcommon values EUCLIDEAN_DISTANCE, RADIAN_DISTANCE (not strictly validated)State-distance metric used
state_check_resolutionfloat> 0Minimum distance threshold for two states to be considered different
interpolatebool-Whether to interpolate between sampled points
interpolation_cntfloatunrestricted; ≤ 0 means automatic/keep current valueNumber of interpolated intermediate points
simplifybool-Whether to simplify (shortcut) the planned path
max_simplification_timefloatunrestricted, in s; ≤ 0 means keep current valueTime budget for path simplification
termination_condition_typestrcommon value e.g. TimeoutAndExactSolution (not strictly validated)Planning termination condition type
plan_timeoutfloat≥ 0, in sPlanning timeout

Trajectory Planner Parameters (non per-chain)

Field (key)TypeRangeDescription
min_move_timefloat≥ 0, in sMinimum execution time for a single segment; 0 means execute as fast as the dynamic limits allow
move_line_intermidiate_pointfloat> 0Number of interpolated intermediate points for straight-line segments (note: the field name is spelled intermidiate)
way_point_plan_expected_timefloatunrestricted, recommended > 0Expected total duration hint for multi-waypoint trajectories

Per-Chain Max Velocity / Acceleration / Jerk

Field (key)TypeRangeDescription
max_velocity_{chain}List[float]length equal to the chain's joint countMaximum joint velocity limit for the chain
max_acceleration_{chain}List[float]length equal to the chain's joint countMaximum joint acceleration limit for the chain
max_jerk_{chain}List[float]length equal to the chain's joint countMaximum joint jerk limit for the chain

{chain} can be head, left_arm, right_arm, torso, or leg, e.g. max_velocity_left_arm, max_acceleration_leg.

IK Solver Parameters

Field (key)TypeRangeDescription
col_aware_ik_timeoutfloat> 0, in msTotal time budget for a single collision-aware IK solve
seed_typestrenum RANDOM_SEED, RANDOM_PROGRESSIVE_SEED, USER_DEFINED_SEEDIK seed/initial-value strategy; a value outside the enum is rejected (to prevent the entire IK configuration from failing to load)
enable_collision_check_logbooldefault falseWhether to output collision-check diagnostic logs
translation_epsList[float]length 3, each component ≥ 0, in mPosition convergence tolerance [x, y, z]
rotation_epsList[float]length 3, each component ≥ 0, in radOrientation convergence tolerance [roll, pitch, yaw]
enable_collision_avoidancebool-Whether to enable collision avoidance during IK solving

IK Soft Limits (per chain)

lower / upper must be set as a pair

ik_soft_limit_lower_{chain} and ik_soft_limit_upper_{chain} must be included together in the same set_config() call; passing only one causes the whole batch to be rejected.

Field (key)TypeRangeDescription
ik_soft_limit_lower_{chain}List[float]length equal to the chain's joint countLower bound of the IK soft joint limit
ik_soft_limit_upper_{chain}List[float]length equal to the chain's joint countUpper bound of the IK soft joint limit

Sample Planner Limits (per chain)

lower / upper must be set as a pair

sample_planner_limit_lower_{chain} and sample_planner_limit_upper_{chain} must be included together in the same set_config() call; passing only one causes the whole batch to be rejected.

Field (key)TypeRangeDescription
sample_planner_limit_lower_{chain}List[float]length equal to the chain's joint countLower bound of the sample planner joint limit
sample_planner_limit_upper_{chain}List[float]length equal to the chain's joint countUpper bound of the sample planner joint limit

Collision Checking Switches

Field (key)TypeRangeDescription
enable_self_collision_checkbool-Whether to enable self-collision checking
enable_env_collision_checkbool-Whether to enable environment-collision checking; disabling it may result in planned trajectories that collide with the environment

Trajectory Validity Checking Switches

Field (key)TypeRangeDescription
enable_collision_checkbool-Whether to perform collision checking during trajectory validation
enable_joint_limit_checkbool-Whether to perform joint-limit checking during trajectory validation
enable_velocity_feasibility_checkbool-Whether to perform velocity-feasibility checking during trajectory validation

Motion Planning Configuration Example

from galbot_sdk.g3 import GalbotRobot, ConfigService, ConfigItem, ControlStatus

robot = GalbotRobot()
robot.init()

# Set plan_timeout
status = robot.set_config(
ConfigService.MOTION_PLAN,
[
ConfigItem("plan_timeout", 5.0),
],
)
print(status)

robot.request_shutdown()
robot.wait_for_shutdown()
robot.destroy()

Control Service (ConfigService.CONTROL)

The control service's fields are spread across several chassis/body controllers. The same field name (e.g. max_vel, stop_acc, pos_threshold) appears in more than one controller, so friendly keys are disambiguated with a {field_name}_{controller_suffix} pattern, e.g. max_vel_chassis_pose, max_vel_chassis_pose_fast. Whether a given controller is available on the currently connected robot is determined at runtime (e.g. the high-speed-tuned chassis controller only exists on some models); the field is rejected when it isn't applicable.

Each table below has a "Platform" column right next to the field key so you don't have to cross-reference the section heading.

General Parameters

Field (key)PlatformTypeRangeDescription
group_listsG-series / S1List[str]unrestrictedThe set and order of groups that participate in initialization; a structural field -- changing it incorrectly may stop some subsystems from initializing, so edit with care
report_error_skipG-series / S1int≥ 1How many main-loop cycles between each error report
report_sensor_skipG-series / S1int≥ 1How many main-loop cycles between each sensor report
report_wbc_info_skipG-series / S1int≥ 1How many main-loop cycles between each wbc_info report
report_wbcs_info_skipG-series / S1int≥ 1How many main-loop cycles between each wbcs_info report
report_fault_skipG-series / S1int≥ 1How many main-loop cycles between each fault heartbeat report
target_sub_log_skipG-series / S1int≥ 1How many target-processing cycles between each received-target log line; log output only
target_sampling_defaultG-series / S1strenum LinearInterpolate, DirectPassDefault sampling/interpolation strategy for the control target within a control cycle, when not otherwise specified
wbc_rateG-series / S1float> 0, in HzTarget frequency of the control main loop; restart the device after changing this and verify the actual effective frequency

Switching a Group's Currently-Active Controller

Field (key)PlatformTypeRangeDescription
group_controller_default_{group}G-series / S1strmust be one of the controller names currently registered for {group} (validated at runtime, not a fixed enum); {group} itself must also be a group that genuinely exists on the robot, otherwise it's rejectedSwitches the currently-active controller for group {group}. For example, group_controller_default_chassis set to "chassis_pose_ctrl_fast" switches the chassis to the high-speed-tuned controller (provided that controller is already registered in the system). Common {group} values include chassis, head, left_arm, right_arm, etc.
The valid range is read live, not a fixed table

The valid values for group_controller_default_{group} depend on which controllers are currently registered on the robot, and can vary by model and by scene -- it isn't a fixed field table. Passing a group name that doesn't exist, or a controller name that isn't registered for that group, is rejected.

Chassis Pose Controller

Field (key)PlatformTypeRangeDescription
max_acc_chassis_poseG-series onlyList[float]length 3, each > 0Maximum chassis acceleration [x, y, yaw]
max_vel_chassis_poseG-series onlyList[float]length 3, each ≥ 0Maximum chassis velocity [x, y, yaw]
pos_threshold_chassis_poseG-series onlyList[float]length 3, each ≥ 0Per-axis error threshold for judging a pose target as reached
slow_stop_when_shutdown_chassis_poseG-series onlybool-Whether to decelerate gradually per stop_acc_chassis_pose when the controller shuts down
stop_acc_chassis_poseG-series onlyList[float]length 3, each > 0Per-axis deceleration during stop or shutdown slow-stop

Chassis Pose Controller (High-Speed Variant, Some Models)

Field (key)PlatformTypeRangeDescription
max_vel_chassis_pose_fastG-series, some models onlyList[float]length 3, each ≥ 0Maximum chassis velocity [x, y, yaw] (high-speed-tuned variant)
pos_threshold_chassis_pose_fastG-series, some models onlyList[float]length 3, each ≥ 0Per-axis error threshold for judging a pose target as reached
slow_stop_when_shutdown_chassis_pose_fastG-series, some models onlybool-Whether to decelerate gradually per stop_acc_chassis_pose_fast when the controller shuts down
stop_acc_chassis_pose_fastG-series, some models onlyList[float]length 3, each > 0Per-axis deceleration during stop or shutdown slow-stop

Chassis Twist Controller

Field (key)PlatformTypeRangeDescription
max_acc_down_chassis_twistG-series onlyList[float]length 3, each > 0Per-axis deceleration cap when a velocity command decreases
max_acc_up_chassis_twistG-series onlyList[float]length 3, each > 0Per-axis acceleration cap when a velocity command increases
max_vel_chassis_twistG-series onlyList[float]length 3, each ≥ 0Maximum chassis velocity [x, y, yaw]
slow_stop_when_shutdown_chassis_twistG-series onlybool-Whether to decelerate gradually per stop_acc_chassis_twist when the controller shuts down
stop_acc_chassis_twistG-series onlyList[float]length 3, each > 0Per-axis deceleration during stop or shutdown slow-stop

Swerve Chassis Pose Controller

Field (key)PlatformTypeRangeDescription
max_acc_swerve_chassis_poseS1 onlyList[float]length 3, each > 0Maximum chassis acceleration [x, y, yaw]
max_vel_swerve_chassis_poseS1 onlyList[float]length 3, each ≥ 0Maximum chassis velocity [x, y, yaw]
pos_threshold_swerve_chassis_poseS1 onlyList[float]length 3, each ≥ 0Per-axis error threshold for judging a pose target as reached
slow_stop_when_shutdown_swerve_chassis_poseS1 onlybool-Whether to decelerate gradually per stop_acc_swerve_chassis_pose when the controller shuts down
stop_acc_swerve_chassis_poseS1 onlyList[float]length 3, each > 0Per-axis deceleration during stop or shutdown slow-stop
final_pos_threshold_swerve_chassis_poseS1 onlyList[float]length 3, each ≥ 0Per-axis threshold for the final parking phase
log_skip_swerve_chassis_poseS1 onlyint≥ 0How many control cycles between each log line

Swerve Chassis Pose Controller (NMPC Variant)

Field (key)PlatformTypeRangeDescription
log_skip_swerve_chassis_pose_nmpcS1 onlyint≥ 0How many control cycles between each log line
max_acc_swerve_chassis_pose_nmpcS1 onlyList[float]length 3, each > 0Maximum chassis acceleration [x, y, yaw]
max_vel_swerve_chassis_pose_nmpcS1 onlyList[float]length 3, each ≥ 0Maximum chassis velocity [x, y, yaw]
pos_threshold_swerve_chassis_pose_nmpcS1 onlyList[float]length 3, each ≥ 0Per-axis error threshold for judging a pose target as reached
slow_stop_when_shutdown_swerve_chassis_pose_nmpcS1 onlybool-Whether to decelerate gradually per stop_acc_swerve_chassis_pose_nmpc when the controller shuts down
stop_acc_swerve_chassis_pose_nmpcS1 onlyList[float]length 3, each > 0Per-axis deceleration during stop or shutdown slow-stop

Lift-Height Controller (Some Models)

Field (key)PlatformTypeRangeDescription
target_height_leg_heightG-series onlyfloatRange comes from the device's currently configured height bounds (read live, not a fixed constant; the typical factory range is approximately [1.14, 1.72] meters)Target body height, in m

Control Service Configuration Example

from galbot_sdk.g3 import GalbotRobot, ConfigService, ConfigItem, ControlStatus

robot = GalbotRobot()
robot.init()

# report_error_skip is a general parameter shared by both G-series and S1
status = robot.set_config(
ConfigService.CONTROL,
[
ConfigItem("report_error_skip", 1),
],
)
print(status)

robot.request_shutdown()
robot.wait_for_shutdown()
robot.destroy()