הגדרת תוכנה

התקנת SDK, הגדרת מנהלי התקנים של CAN, תצורת בקר ROS2, שילוב LeRobot עבור O6, דוגמאות של Python API ובעיות מובילות בפתרון בעיות. מהתקנה חדשה של אובונטו ועד לזרוע נעה.

קפוץ לקטע:

שלב 1 - התקנת SDK

התקנת 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 .
שלב 2 - הגדרת מנהל התקן CAN

הגדרת מנהל ההתקן של 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.

שלב 3 - בקרי ROS2

הגדרת בקר 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
שלב 4 - LeRobot עבור O6

שילוב 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

ראה את דף איסוף נתונים עבור זרימת העבודה המלאה כולל בדיקות איכות.

שלב 5 - Python API

דוגמאות של 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 הבעיות הנפוצות ביותר

שגיאה 1 ממשק CAN לא נמצא: 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
שגיאה 2 ג'וינטים לא מגיבים לאחר מכן 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
שגיאה 3 LeRobot לא מצליח להתחבר: 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.

תוכנה עובדת? התחל לאסוף נתונים.

ברגע שה-O6 זז, השלב הבא הוא הפעלה טלפונית והקלטת נתונים עם LeRobot.