Motion Service Interfaces
Introduction
Motion Service Interfaces:
Control the robot's stand/lie down posture, body height, gait, charging, and velocity through Python function calls.
| Purpose | Python |
|---|---|
| Stand Up | ✔ |
| Lie Down | ✔ |
| Get Robot Posture State | ✔ |
| Adjust Standing Height | ✔ |
| Set Gait | ✔ |
| Get Gait | ✔ |
| Set Control Mode | ✔ |
| Get Control Mode | ✔ |
| Go to Charging Dock | ✔ |
| Leave Charging Dock | ✔ |
| Get Dock State | ✔ |
| Get Battery State | ✔ |
| Check Charging Status | ✔ |
| Velocity Control | ✔ |
Stand and Lie Down
Python Interface
stand_up(timeout=30)
Function Description
Make the robot stand up. Intelligently checks the current posture state before sending commands:
- Already standing: returns success immediately without sending extra commands
- Currently in the process of standing up: returns failure (wait for completion)
- Lying down: sends stand up command
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
timeout | int | 30 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
StandUpResponse | state.code == 0 indicates success; response.result is a boolean indicating whether the command executed successfully. |
Example
from daystar_api.lowlevel_skills import stand_up
result = stand_up()
if result.response.result:
print("Robot is now standing")
else:
print(f"Stand up failed: {result.state.describe}")lie_down(timeout=30)
Function Description
Make the robot lie down. Intelligently checks the current posture state before sending commands:
- Already lying down: returns success immediately without sending extra commands
- Currently in the process of standing up: returns failure (cannot interrupt)
- Standing: sends lie down command
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
timeout | int | 30 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
LieDownResponse | state.code == 0 indicates success; response.result is a boolean indicating whether the command executed successfully. |
Example
from daystar_api.lowlevel_skills import lie_down
result = lie_down()
if result.response.result:
print("Robot is now lying down")
else:
print(f"Lie down failed: {result.state.describe}")get_robot_state()
Function Description
Get the robot's current posture state with automatic data validation. Returns UNKNOWN_STATE when data is stale or unavailable.
Parameter Description
No parameters.
Return Value
| Type | Description |
|---|---|
GetRobotStateResponse | state.code == 0 indicates success; robot_state is a RobotState enum: LIE_DOWN(0) lying down, STANDING_UP(1) standing up in transition, STAND_UP(2) standing, UNKNOWN_STATE(99) unknown. |
Example
from daystar_api.lowlevel_skills import get_robot_state, RobotState
response = get_robot_state()
if response.state.code == 0:
if response.robot_state == RobotState.STAND_UP:
print("Robot is standing")
elif response.robot_state == RobotState.LIE_DOWN:
print("Robot is lying down")Body Control
Python Interface
adjust_body_height(percent, timeout=5)
Function Description
Adjust the robot's standing height (percentage). The robot must be standing to adjust height. Valid range is 20–50.
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
percent | int | Required | Height percentage, valid range 20–50. |
timeout | int | 5 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
RobotCommandResponse | state.code == 0 indicates success; response.result is a boolean indicating whether the command executed successfully. |
Example
from daystar_api.lowlevel_skills import adjust_body_height
result = adjust_body_height(30)
if result.response.result:
print("Height adjusted to 30%")set_gait(gait_type, timeout=5)
Function Description
Set the robot gait type. The robot must be standing to switch gait.
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
gait_type | GaitType | Required | Gait type enum. GaitType.TROT(0) normal gait; GaitType.NORMAL_STAIR(1) normal stair gait; GaitType.SENSE_STAIR(6) sensing stair gait; GaitType.POSE_ADJUST(13) pose adjustment; GaitType.CAR_MODE(14) crawl mode; GaitType.RL_TROT(0x20) RL trot; GaitType.RL_MOUNTAIN(0x21) RL mountain gait. |
timeout | int | 5 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
RobotCommandResponse | state.code == 0 indicates success; response.result is a boolean. |
Example
from daystar_api.lowlevel_skills import set_gait, GaitType
result = set_gait(GaitType.TROT)
if result.response.result:
print("Gait set to normal trot")get_gait()
Function Description
Get the robot's current gait type with automatic data validation. Returns UNKNOWN_GAIT when data is stale or unavailable.
Parameter Description
No parameters.
Return Value
| Type | Description |
|---|---|
GetGaitResponse | state.code == 0 indicates success; gait_type is a GaitType enum value. |
Example
from daystar_api.lowlevel_skills import get_gait, GaitType
response = get_gait()
if response.state.code == 0:
print(f"Current gait: {response.gait_type}")Control Mode
Python Interface
set_control_mode(mode, timeout=5)
Function Description
Set the robot control mode, switching between manual joystick mode and automatic navigation mode.
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
mode | ControlMode | Required | Control mode enum. ControlMode.JOY_MODE(0) joystick manual control; ControlMode.NAV_MODE(1) navigation automatic control. |
timeout | int | 5 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
RobotCommandResponse | state.code == 0 indicates success; response.result is a boolean. |
Example
from daystar_api.lowlevel_skills import set_control_mode, ControlMode
# Switch to navigation mode
result = set_control_mode(ControlMode.NAV_MODE)
if result.response.result:
print("Switched to navigation mode")get_control_mode()
Function Description
Get the robot's current control mode with automatic data validation. Returns UNKNOWN_MODE when data is stale or unavailable.
Parameter Description
No parameters.
Return Value
| Type | Description |
|---|---|
GetControlModeResponse | state.code == 0 indicates success; control_mode is a ControlMode enum: JOY_MODE(0) joystick mode, NAV_MODE(1) navigation mode, UNKNOWN_MODE(99) unknown. |
Example
from daystar_api.lowlevel_skills import get_control_mode, ControlMode
response = get_control_mode()
if response.state.code == 0:
if response.control_mode == ControlMode.NAV_MODE:
print("Currently in navigation mode")Charging
Python Interface
go_to_dock(timeout=60)
Function Description
Command the robot to go to the charging dock.
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
timeout | int | 60 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
GoToDockResponse | state.code == 0 indicates success; response.result is a boolean. |
Example
from daystar_api.lowlevel_skills import go_to_dock
result = go_to_dock()
if result.response.result:
print("Robot is heading to charging dock")leave_dock(timeout=60)
Function Description
Command the robot to leave the charging dock. The robot must be on the dock to execute this command.
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
timeout | int | 60 | Service call timeout in seconds. |
Return Value
| Type | Description |
|---|---|
LeaveDockResponse | state.code == 0 indicates success; response.result is a boolean. |
Example
from daystar_api.lowlevel_skills import leave_dock
result = leave_dock()
if result.response.result:
print("Robot is leaving the charging dock")get_dock_state()
Function Description
Get the current charging dock state with automatic data validation. Returns UNKNOWN_DOCK when data is stale or unavailable.
Parameter Description
No parameters.
Return Value
| Type | Description |
|---|---|
GetDockStateResponse | state.code == 0 indicates success; dock_state is a DockState enum: IDLE(0) idle, GOING_TO_DOCK(1) going to dock, LIE_ON_DOCKER(4) charging on dock, LEAVE_DOCK(7) left dock, UNKNOWN_DOCK(99) unknown. |
Example
from daystar_api.lowlevel_skills import get_dock_state, DockState
response = get_dock_state()
if response.state.code == 0:
if response.dock_state == DockState.LIE_ON_DOCKER:
print("Robot is charging on dock")Battery State
Python Interface
get_battery_state()
Function Description
Get the robot's complete battery state information with automatic data validation. is_valid is False when data is stale or unavailable.
Parameter Description
No parameters.
Return Value
| Type | Description |
|---|---|
GetBatteryStateResponse | state.code == 0 indicates success; is_valid indicates whether the data is valid; battery_state.percentage charge percentage (0–100); battery_state.voltage voltage (V); battery_state.current current (A, negative indicates discharge); battery_state.temperature temperature (°C); battery_state.power_supply_status charging status (1=charging, 4=full). |
Example
from daystar_api.lowlevel_skills import get_battery_state
response = get_battery_state()
if response.state.code == 0 and response.is_valid:
battery = response.battery_state
print(f"Battery level: {battery.percentage}%")
print(f"Voltage: {battery.voltage}V")
print(f"Temperature: {battery.temperature}°C")is_charge()
Function Description
Check if the robot is currently charging with automatic data validation. Returns False when data is stale or unavailable.
Parameter Description
No parameters.
Return Value
| Type | Description |
|---|---|
IsChargeResponse | state.code == 0 indicates success; is_charging is a boolean: True means currently charging, False means not charging (or data unavailable). |
Example
from daystar_api.lowlevel_skills import is_charge
response = is_charge()
if response.is_charging:
print("Robot is charging")
else:
print("Robot is not charging")Velocity Control
Python Interface
send_cmd_vel(linear_x=0.0, linear_y=0.0, angular_z=0.0, dt=1.0, blocking=True)
Function Description
Send velocity commands via the /cmd_vel topic to control robot movement direction and speed, supporting omnidirectional movement. Supports both blocking and non-blocking modes.
Parameter Description
| Parameter Name | Type | Required/Default | Description |
|---|---|---|---|
linear_x | float | 0.0 | Forward/backward linear velocity (m/s). Positive moves forward, negative moves backward. Recommended range for normal gait on flat ground: [-1.0, 2.0]. |
linear_y | float | 0.0 | Left/right lateral velocity (m/s, omnidirectional). Positive moves left, negative moves right. Recommended range: [-0.4, 0.4]. |
angular_z | float | 0.0 | Angular velocity (rad/s). Positive is counter-clockwise (turn left), negative is clockwise (turn right). Recommended range: [-0.8, 0.8]. |
dt | float | 1.0 | Movement duration in seconds. dt > 0 automatically stops after dt seconds; dt = 0 continues moving until a manual stop command is sent. |
blocking | bool | True | If True, blocks until movement completes; if False, returns immediately and motion runs in the background. |
Return Value
| Type | Description |
|---|---|
SendCmdVelResponse | state.code == 0 indicates success; success field indicates whether the command was sent successfully. |
Example
from daystar_api.lowlevel_skills import send_cmd_vel
# Move forward for 1 second (blocking)
result = send_cmd_vel(linear_x=0.5, dt=1.0)
# Rotate left in place (non-blocking, background execution)
result = send_cmd_vel(angular_z=0.3, dt=2.0, blocking=False)
# Move forward continuously (requires manual stop)
send_cmd_vel(linear_x=0.3, dt=0.0)
# ... perform other operations ...
send_cmd_vel() # Send stop command