הגדרת תוכנה
התקנת SDK, הגדרת מנהלי התקנים של CAN, תצורת בקר ROS2, שילוב LeRobot עבור O6, דוגמאות של Python API ובעיות מובילות בפתרון בעיות. מהתקנה חדשה של אובונטו ועד לזרוע נעה.
קפוץ לקטע:
התקנת SDK
ה-LinkerBot O6 SDK מספק כריכות Python לממשק ה-CAN bus של הזרוע. הוא כלול בחבילת פלטפורמת RoboticsCenter.
צור סביבה וירטואלית (מומלץ)
python3 -m venv ~/.venvs/linkerbot-o6
source ~/.venvs/linkerbot-o6/bin/activate
התקן את ה-SDK
pip install roboticscenter
ודא את ההתקנה
python3 -c "from linkerbot import LinkerBotO6; print('SDK ready')"
התקן ממקור (אופציונלי)
git clone https://github.com/linkerbot/linkerbot_sdk.git
cd linkerbot_sdk
pip install -e .
הגדרת מנהל ההתקן של CAN
ה-LinkerBot O6 משתמש באותה ארכיטקטורת SocketCAN כמו OpenArm 101. אם הגדרת CAN עבור OpenArm, תהליך זה זהה. מנהלי ההתקן של ה-CAN מובנים בתוך ליבת לינוקס.
טען מודולי ליבה
sudo modprobe can
sudo modprobe can_raw
sudo modprobe slcan # for USB CAN adapters (CANable)
העלה את ממשק ה-CAN
# Find the USB serial device
ls /dev/ttyACM*
# Bring up CAN interface at 1 Mbps
sudo slcand -o -c -s8 /dev/ttyACM0 can0
sudo ip link set up can0
ודא שהממשק פועל
ip link show can0
# Expected: can0: <NOARP,UP,LOWER_UP> mtu 16 ...
בדוק תקשורת CAN
sudo apt install can-utils -y
candump can0
# Power on the O6 and look for motor heartbeat packets
הפוך מתמיד לאורך אתחולים מחדש
צור שירות מערכת או הוסף אליו /etc/rc.local. ראה את מדריך התקנה של SocketCAN - הנוהל זהה עבור O6.
הגדרת בקר ROS2
ה linkerbot_ros2 החבילה מספקת ממשק חומרה מלא של ros2_control עבור ה-O6. זה כולל מצב חומרה מזויף לבדיקה ללא הזרוע.
התקן את 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
שיבוט ובנה linkerbot_ros2
mkdir -p ~/o6_ws/src && cd ~/o6_ws/src
git clone https://github.com/linkerbot/linkerbot_ros2.git
cd ~/o6_ws
source /opt/ros/humble/setup.bash
colcon build --symlink-install
הפעלה במצב חומרה מזויפת (אין צורך בזרוע)
source ~/o6_ws/install/setup.bash
ros2 launch linkerbot_ros2 o6.launch.py use_fake_hardware:=true
הפעל עם חומרה אמיתית
ros2 launch linkerbot_ros2 o6.launch.py \
use_fake_hardware:=false \
can_interface:=can0
אמת מדינות משותפות
ros2 topic echo /joint_states
שילוב LeRobot עבור O6
LeRobot תומך ב-LinkerBot O6 באופן מקורי. הגדר את סוג הרובוט שלך ופעל לפי זרימת העבודה הסטנדרטית של LeRobot להקלטה והדרכה.
התקן את LeRobot
pip install lerobot
הגדר את רובוט ה-O6 שלך
# ~/.lerobot/robots/linkerbot_o6.yaml
robot_type: linkerbot_o6
can_interface: can0
num_joints: 6
camera_names:
- wrist_cam
- overhead_cam
הקלט מערך נתונים
python -m lerobot.scripts.control_robot \
--robot.type=linkerbot_o6 \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/o6-pick-place \
--control.num_episodes=50 \
--control.single_task="Pick up the red cube"
העלה ל- HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/o6-pick-place
ראה את דף איסוף נתונים עבור זרימת העבודה המלאה כולל בדיקות איכות.
דוגמאות של Python API
LinkerBot Python SDK מספק שליטה משותפת ישירה ללא צורך ב-ROS2. אותו דפוס כמו OpenArm SDK.
שליטה משותפת בסיסית
from linkerbot import LinkerBotO6
# Connect to the arm
arm = LinkerBotO6(can_interface="can0")
arm.connect()
arm.enable_all()
# Move joint 1 to 45 degrees (0.785 rad)
arm.set_position(joint_id=1, position=0.785, kp=50, kd=1)
# Read current state
state = arm.get_state()
print(f"Positions (rad): {state.positions}")
print(f"Velocities (rad/s): {state.velocities}")
print(f"Torques (Nm): {state.torques}")
# Safe shutdown
arm.disable_all()
arm.disconnect()
קרא את כל המפרקים בלולאת בקרה
import time
from linkerbot import LinkerBotO6
arm = LinkerBotO6(can_interface="can0", control_rate_hz=500)
arm.connect()
arm.enable_all()
for _ in range(500): # 1 second at 500 Hz
state = arm.get_state()
print(state.positions)
time.sleep(1 / 500)
arm.disable_all()
arm.disconnect()
ביצוע מסלול
from linkerbot import LinkerBotO6, JointTrajectory
import numpy as np
arm = LinkerBotO6(can_interface="can0")
arm.connect()
arm.enable_all()
# Define a waypoint trajectory
waypoints = [
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.5, -0.3, 0.8, 0.0, 0.4, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
]
durations = [2.0, 2.0, 2.0] # seconds per segment
traj = JointTrajectory(waypoints=waypoints, durations=durations)
arm.execute_trajectory(traj)
arm.disable_all()
arm.disconnect()
3 הבעיות הנפוצות ביותר
no such device can0
ממשק SocketCAN אינו פועל. כמעט תמיד מכיוון שמתאם ה-USB CAN אינו מחובר או מודולי ליבה אינם נטענים.
לִקְבּוֹעַ:
# 1. Verify USB adapter is detected
lsusb | grep -i "can\|serial"
# 2. Load the kernel modules
sudo modprobe can && sudo modprobe can_raw && sudo modprobe slcan
# 3. Bring up the interface
sudo slcand -o -c -s8 /dev/ttyACM0 can0
sudo ip link set up can0
# 4. Verify
ip link show can0
arm.enable_all()
מנועים אינם מקבלים פקודות. נגרמת לרוב על ידי מזהי CAN שגויים, מסגרות שגיאה באוטובוס CAN או מתח לא מספיק של אספקת החשמל.
לִקְבּוֹעַ:
# 1. Check for CAN error frames
candump can0 | grep -i "error"
# 2. Check power supply — O6 requires 24V @ 150W minimum
# 3. Scan for motors and verify IDs
python3 -c "from linkerbot import LinkerBotO6; a=LinkerBotO6('can0'); a.scan_motors()"
# 4. Power cycle the arm and retry
robot not found
LeRobot לא יכול למצוא את תצורת הרובוט O6 או שממשק ה-CAN אינו פועל כאשר LeRobot מתחיל.
לִקְבּוֹעַ:
# 1. Verify CAN interface is up before starting LeRobot
ip link show can0
# 2. Verify config file path and format
cat ~/.lerobot/robots/linkerbot_o6.yaml
# 3. Test direct SDK connection first
python3 -c "
from linkerbot import LinkerBotO6
a = LinkerBotO6(can_interface='can0')
a.connect()
print('Connected:', a.get_state())
a.disconnect()"
# 4. Then retry LeRobot
python -m lerobot.scripts.control_robot \
--robot.type=linkerbot_o6 \
--control.type=teleoperate
עדיין תקוע? פרסם ב פורום SVRC או בקר ב O6 Wiki.