הגדרת תוכנה
התקנת SDK, ממשק שליטה על כל הגוף של ROS2, קריאה ופקודה במצב משותף, יסודות API של תנועה, הדמיית MuJoCo דמוי אדם, ו-3 בעיות פתרון הבעיות המובילות.
קפוץ לקטע:
התקנת Booster SDK
ה-Booster SDK מופץ כ booster_robotics_sdk_python על PyPI. הוא מספק קישורי Python לממשק בקרת הרשת של ה-K1.
צור סביבה וירטואלית (מומלץ)
python3 -m venv ~/.venvs/booster-k1
source ~/.venvs/booster-k1/bin/activate
התקן את ה-SDK
pip install booster_robotics_sdk_python
ודא את ההתקנה
python3 -c "import booster_robotics_sdk; print('SDK ready')"
תצורת רשת
ה-K1 מתקשר באמצעות Ethernet קווי. הגדר את ממשק הרשת של המחשב המארח שלך לפני החיבור:
# Set your PC's Ethernet interface to 192.168.10.10
sudo ip addr add 192.168.10.10/24 dev eth0
sudo ip link set eth0 up
# Verify connectivity to the K1
ping 192.168.10.102
ממשק בקרה של ROS2 לכל הגוף
ה-K1 נשלח עם צומת גשר ROS2 החושף את כל המפרקים כסטנדרט ros2_control ממשק חומרה. זה מאפשר אינטגרציה עם MoveIt2, מתכנני מסלולים ובקרים מותאמים אישית.
התקן את ROS2 Humble
sudo apt update && sudo apt install software-properties-common curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | \
sudo apt-key add -
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu jammy main" \
> /etc/apt/sources.list.d/ros2.list'
sudo apt update
sudo apt install ros-humble-desktop ros-humble-ros2-control \
ros-humble-ros2-controllers ros-humble-joint-state-publisher-gui -y
שכפל ובנה את חבילת K1 ROS2
mkdir -p ~/k1_ws/src && cd ~/k1_ws/src
git clone https://github.com/BoosterRobotics/booster_ros2.git
cd ~/k1_ws
source /opt/ros/humble/setup.bash
colcon build --symlink-install
הפעל את גשר K1
source ~/k1_ws/install/setup.bash
ros2 launch booster_ros2 k1_bringup.launch.py \
robot_ip:=192.168.10.102
בדוק מצבים משותפים
# List all available topics
ros2 topic list
# Stream joint states (22 joints at 500 Hz)
ros2 topic echo /joint_states
קריאה ופיקוד על מדינות משותפות
ה- Python SDK מספק גישה ישירה לכל 22 המפרקים. התחל תמיד במצב DAMP לפני פקודה על תנועה.
התחבר וקרא מצבים משותפים
from booster_robotics_sdk import BoosterRobot, RobotMode
# Connect to the robot
robot = BoosterRobot(ip="192.168.10.102")
robot.connect()
# Enter DAMP mode (safe, low impedance)
robot.set_mode(RobotMode.DAMP)
# Read full joint state
state = robot.get_state()
print(f"Mode: {state.mode}")
print(f"Joint positions (rad): {state.joint_positions}")
print(f"Joint velocities (rad/s): {state.joint_velocities}")
print(f"Joint torques (Nm): {state.joint_torques}")
print(f"IMU euler (deg): {state.imu_euler}")
robot.disconnect()
עמדות מפרקי זרוע הפקודה (מצב מותאם אישית)
מצב CUSTOM מאפשר שליטה ישירה ברמת המפרק של הזרוע. דורש מתקן הרמה - אסור שהרובוט תומך במשקל שלו. ראה את דף בטיחות.
from booster_robotics_sdk import BoosterRobot, RobotMode, ArmCommand
import numpy as np
robot = BoosterRobot(ip="192.168.10.102")
robot.connect()
# Transition: DAMP -> PREP -> CUSTOM
robot.set_mode(RobotMode.DAMP)
robot.set_mode(RobotMode.PREP)
import time; time.sleep(3) # Wait for PREP stabilization
robot.set_mode(RobotMode.CUSTOM)
# Command right arm to a target configuration (7 DOF)
# Joints: shoulder_pitch, shoulder_roll, shoulder_yaw,
# elbow_pitch, wrist_pitch, wrist_roll, wrist_yaw
target = [0.0, -0.3, 0.0, 0.8, 0.0, 0.0, 0.0]
cmd = ArmCommand(side="right", joint_positions=target, kp=60, kd=2)
robot.send_arm_command(cmd)
robot.disconnect()
שליטה בתנוחת הראש
from booster_robotics_sdk import BoosterRobot, HeadCommand
robot = BoosterRobot(ip="192.168.10.102")
robot.connect()
robot.set_mode(RobotMode.PREP)
# Head: yaw in [-90, 90] deg, pitch in [-40, 30] deg
cmd = HeadCommand(yaw_deg=15.0, pitch_deg=-10.0)
robot.send_head_command(cmd)
robot.disconnect()
יסודות ה-API של Locomotion
בקר התנועה של ה-K1 מנהל שיווי משקל והליכה באופן אוטונומי. אתה מצווה על מטרות מהירות; הבקר המשולב מטפל ביציבות. תמיד תהיה נוכח צופה.
רצף מעבר מצב
from booster_robotics_sdk import BoosterRobot, RobotMode, LocomotionCommand
import time
robot = BoosterRobot(ip="192.168.10.102")
robot.connect()
# Step 1: Enter DAMP (zero torque, safe to handle)
robot.set_mode(RobotMode.DAMP)
time.sleep(1)
# Step 2: Enter PREP (stand up to PREP posture)
robot.set_mode(RobotMode.PREP)
time.sleep(5) # Wait for full PREP stabilization — do not skip
# Step 3: Enter WALK
robot.set_mode(RobotMode.WALK)
time.sleep(2)
תנועת פיקוד (מצב מהירות)
# Walk forward at 0.3 m/s
cmd = LocomotionCommand(
vx=0.3, # forward/back (m/s), range: [-0.5, 0.5]
vy=0.0, # lateral (m/s), range: [-0.3, 0.3]
vyaw=0.0 # rotation (rad/s), range: [-1.0, 1.0]
)
robot.send_locomotion_command(cmd)
time.sleep(2)
# Stop
robot.send_locomotion_command(LocomotionCommand(vx=0, vy=0, vyaw=0))
time.sleep(1)
# Return to PREP then DAMP
robot.set_mode(RobotMode.PREP)
time.sleep(3)
robot.set_mode(RobotMode.DAMP)
robot.disconnect()
עצירת חירום בתוכנה
# Call from any thread — immediately enters DAMP mode
robot.emergency_stop()
העדיפו תמיד את לחצן עצירה אלקטרונית של החומרה למקרי חירום. התוכנה e-stop היא גיבוי בלבד.
סימולציית MuJoCo Humanoid
דגם K1 URDF כלול ב-SDK. השתמש ב-MuJoCo כדי לפתח ולבדוק מדיניות תנועה ומניפולציה לפני פריסת חומרה.
התקן את MuJoCo
pip install mujoco
שכפל את סביבת הכושר K1
git clone https://github.com/BoosterRobotics/booster_gym.git
cd booster_gym
pip install -e .
הפעל את סימולציית ההליכה
python examples/walk_sim.py --render
אייזק סים (מתקדם)
NVIDIA Isaac Sim מספקת סימולציה מקבילה מואצת ב-GPU לאימון מדיניות בקנה מידה גדול. ה-K1 URDF מייבא בצורה נקייה לתוך Isaac Sim 4.x. דורש NVIDIA GPU (16 GB VRAM מומלץ) ורישיון Isaac Sim. ראה את מאמר השוואה אנושי עבור מדדי סימולציה.
יישור Sim-to-Real - דגם K1 MuJoCo כולל פרמטרי אינרציה מכוילים ומגבלות מפרקים התואמות את החומרה האמיתית. ניתן לפרוס מדיניות מאומנת בסימולציה עם כוונון רווח מינימלי.
3 הבעיות המובילות להגדרת Humanoid
Connection refused / ping timeout
הנושא הנפוץ ביותר. כמעט תמיד תצורה שגויה של הרשת בצד המחשב המארח.
לִקְבּוֹעַ:
# 1. Verify your PC's interface is on the correct subnet
ip addr show eth0
# Should show 192.168.10.10/24
# 2. Set it if not configured
sudo ip addr flush dev eth0
sudo ip addr add 192.168.10.10/24 dev eth0
sudo ip link set eth0 up
# 3. Ping the robot
ping -c 4 192.168.10.102
# 4. If ping fails, verify the K1 is fully booted
# The K1 takes ~60 seconds to boot. Look for the LED sequence
# to complete before attempting connection.
ה-K1 דורש לפחות 3 שניות ב-PREP כדי שבקר האיזון יאתחל. מעבר מהיר מדי הוא הגורם השכיח ביותר לנפילות במהלך ההתקנה הראשונה.
לִקְבּוֹעַ:
# Always wait at least 5 seconds in PREP before WALK
robot.set_mode(RobotMode.PREP)
time.sleep(5) # Do not reduce this
# Verify PREP is fully active before proceeding
state = robot.get_state()
assert state.mode == RobotMode.PREP, "PREP not confirmed"
# Have your spotter positioned with the e-stop
robot.set_mode(RobotMode.WALK)
hardware interface not found
גשר ROS2 לא יכול למצוא את ממשק החומרה של ה-K1. בדרך כלל נגרמת על ידי חבילות חסרות או רובוט IP שגוי בקובץ ההשקה.
לִקְבּוֹעַ:
# 1. Install missing ros2_control packages
sudo apt install ros-humble-ros2-control \
ros-humble-ros2-controllers -y
# 2. Rebuild the workspace
cd ~/k1_ws && colcon build --symlink-install
# 3. Source both ROS2 and your workspace
source /opt/ros/humble/setup.bash
source ~/k1_ws/install/setup.bash
# 4. Verify robot_ip matches actual K1 IP
ros2 launch booster_ros2 k1_bringup.launch.py \
robot_ip:=192.168.10.102
# 5. Check the K1 is connected and responding
ping 192.168.10.102
עדיין תקוע? פרסם ב פורום SVRC עם גרסת אובונטו, הודעת שגיאה מדויקת וגרסת SDK (pip show booster_robotics_sdk_python).