सॉफ्टवेयर सेटअप

SDK इंस्टालेशन, CAN ड्राइवर सेटअप, ROS2 कंट्रोलर कॉन्फ़िगरेशन, O6 के लिए LeRobot एकीकरण, Python API उदाहरण और शीर्ष समस्या निवारण मुद्दे। एक ताजा उबंटू इंस्टाल से लेकर एक चलती हुई भुजा तक।

किसी अनुभाग पर जाएँ:

चरण 1 - एसडीके इंस्टालेशन

एसडीके स्थापना

LinkerBot O6 SDK आर्म के CAN बस इंटरफ़ेस में पायथन बाइंडिंग प्रदान करता है। यह रोबोटिक्ससेंटर प्लेटफ़ॉर्म पैकेज में शामिल है।

एक आभासी वातावरण बनाएं (अनुशंसित)

python3 -m venv ~/.venvs/linkerbot-o6
source ~/.venvs/linkerbot-o6/bin/activate

एसडीके स्थापित करें

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 OpenArm 101 के समान सॉकेटकैन आर्किटेक्चर का उपयोग करता है। यदि आपने OpenArm के लिए CAN सेट किया है, तो यह प्रक्रिया समान है। CAN बस ड्राइवर Linux कर्नेल में निर्मित होते हैं।

कर्नेल मॉड्यूल लोड करें

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. देखें सॉकेटकैन सेटअप गाइड - प्रक्रिया O6 के लिए समान है।

चरण 3 - ROS2 नियंत्रक

ROS2 नियंत्रक सेटअप

The linkerbot_ros2 पैकेज O6 के लिए पूर्ण ros2_control हार्डवेयर इंटरफ़ेस प्रदान करता है। इसमें बिना बांह के परीक्षण के लिए नकली हार्डवेयर मोड शामिल है।

ROS2 विनम्र स्थापित करें

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 - O6 के लिए LeRobot

O6 के लिए LeRobot एकीकरण

LeRobot मूल रूप से LinkerBot O6 का समर्थन करता है। अपने रोबोट प्रकार को कॉन्फ़िगर करें और रिकॉर्डिंग और प्रशिक्षण के लिए मानक 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-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/o6-pick-place

देखें डेटा संग्रहण पृष्ठ गुणवत्ता जांच सहित संपूर्ण कार्यप्रवाह के लिए।

चरण 5 - पायथन एपीआई

पायथन एपीआई उदाहरण

LinkerBot Python SDK ROS2 की आवश्यकता के बिना प्रत्यक्ष संयुक्त नियंत्रण प्रदान करता है। ओपनआर्म एसडीके के समान पैटर्न।

बुनियादी संयुक्त नियंत्रण

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

सॉकेटकैन इंटरफ़ेस चालू नहीं है। लगभग हमेशा क्योंकि 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 रोबोट कॉन्फ़िगरेशन नहीं मिल रहा है या LeRobot प्रारंभ होने पर CAN इंटरफ़ेस चालू नहीं है।

हल करना:

# 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

अभी भी अटके हुए हैं? में पोस्ट करें एसवीआरसी फोरम या पर जाएँ O6 विकी.

सॉफ्टवेयर काम कर रहा है? डेटा एकत्र करना प्रारंभ करें.

एक बार जब O6 चल रहा है, तो अगला कदम LeRobot के साथ टेलीऑपरेशन और डेटासेट रिकॉर्डिंग है।