सॉफ्टवेयर सेटअप
SDK इंस्टालेशन, CAN ड्राइवर सेटअप, ROS2 कंट्रोलर कॉन्फ़िगरेशन, O6 के लिए LeRobot एकीकरण, Python API उदाहरण और शीर्ष समस्या निवारण मुद्दे। एक ताजा उबंटू इंस्टाल से लेकर एक चलती हुई भुजा तक।
किसी अनुभाग पर जाएँ:
एसडीके स्थापना
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 .
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 के लिए समान है।
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
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
देखें डेटा संग्रहण पृष्ठ गुणवत्ता जांच सहित संपूर्ण कार्यप्रवाह के लिए।
पायथन एपीआई उदाहरण
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 सामान्य मुद्दे
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
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 रोबोट कॉन्फ़िगरेशन नहीं मिल रहा है या 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 विकी.