ソフトウェアのセットアップ

SDK のインストール、CAN ドライバーのセットアップ、ROS2 コントローラーの構成、O6 用の LeRobot の統合、Python API の例、および主なトラブルシューティングの問題。 Ubuntuの新規インストールからアームの移動まで。

セクションにジャンプします:

ステップ 1 — SDK のインストール

SDKのインストール

LinkerBot O6 SDK は、アームの CAN バス インターフェイスに Python バインディングを提供します。 これは 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 は、OpenArm 101 と同じ SocketCAN アーキテクチャを使用します。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

再起動後も永続化する

systemd サービスを作成するか、それに追加します /etc/rc.local。 を参照してください。 SocketCAN セットアップガイド — この手順は O6 でも同じです。

ステップ 3 — ROS2 コントローラー

ROS2 コントローラーのセットアップ

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 ワークフローに従って記録とトレーニングを行います。

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 ID、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

まだ行き詰まっていますか? に投稿してください SVRCフォーラム または、にアクセスしてください O6 ウィキ.

ソフトウェアは動作していますか? データの収集を開始します。

O6 が移動したら、次のステップは LeRobot による遠隔操作とデータセットの記録です。