LeRobot documentation
Damiao MotorsとCANバス
はじめに
チュートリアル
ロボットのための模倣学習LeLab - Lerobot GUIポリシーの追加独自のハードウェアを持ち込むRLでロボットを訓練するシミュレーションでRLを学習マルチGPUトレーニングHuman In the Loop データ収集PEFT(LoRA など)による学習Rename Map と空のカメラの使用
Compute & Hardware
Datasets
LeRobotDataset の使用トレーニングデータセットのストリーミング大規模データセットの移植Dataset Tools の使用言語カラムとレシピツールアノテーションパイプラインVideo encoding parametersストリーミング動画エンコーディング
ポリシー
ACTSmolVLAπ₀ (Pi0)π₀-FAST (Pi0Fast)π₀.₅ (Pi05)FineART-VLAMolmoAct2VLA-JEPALaWAMEO-1LingBot-VALingBot-VLA 2.0OpenGalaxea G0.5FastWAMLong-WAMFLUX 3 Action (flux3)EVO1NVIDIA GR00TX-VLAマルチタスクDiTポリシーWALL-OSSWall-OSS-0.5DM05Cosmos3
報酬モデル
推論
シミュレーション
ベンチマーク
ベンチマークの追加LIBEROLIBERO-plusMeta-WorldRoboTwin 2.0RoboCasa365RoboCerebraNVIDIA RoboLabRoboMMENVIDIA IsaacLab Arena 環境VLABench
ロボットプロセッサ
Robots
SO-101SO-100Koch v1.1LeKiwiHope JrReachy 2Unitree G1Earth Rover MiniOMXOpenArmreBot B601YAMサードパーティ製ロボットおよびテレオペレーター
テレオペレーター
センサー
リソース
概要
API リファレンス
You are viewing main version, which requires installation from source. If you'd like
regular pip install, checkout the latest stable version (v0.7.0).
Damiao MotorsとCANバス
このガイドでは、CANバス通信を介してLeRobotでDamiaoモーターを設定し、使用する手順について説明します。
現在、OpenArms CANアダプターにはLinux用のドライバのみが用意されているため、Linuxのみがサポートされています。
Linux CAN セットアップ
Damiaoモーターを使用する前に、Linuxシステム上でCANインターフェースを設定する必要があります。
CAN Utilitiesのインストール
sudo apt-get install can-utilsCANインターフェースの構成(手動)
標準的なCAN FDの場合(OpenArmsには推奨されます):
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up標準CAN(FDなし)の場合:
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 upCANインターフェースの構成(LeRobotを使用)
LeRobotには、CANインターフェースのセットアップとテストを行うユーティリティスクリプトが提供されています:
# Setup multiple interfaces (e.g., OpenArms Followers with 2 CAN buses)
lerobot-setup-can --mode=setup --interfaces=can0,can1CAN通信のデバッグ
組み込みのデバッグツールを使用して、モーター通信をテストします:
# Test motors on all interfaces
lerobot-setup-can --mode=test --interfaces=can0,can1
# Run speed/latency test
lerobot-setup-can --mode=speed --interfaces=can0テストモードでは、モーター(ID 0x01-0x08)をスキャンし、応答するモーターを報告します。出力例:
can0: UP (CAN FD)
Motor 0x01 (joint_1): ✓ FOUND
→ Response 0x11 [FD]: 00112233...
Motor 0x02 (joint_2): ✓ FOUND
Motor 0x03 (joint_3): ✗ No response
...
Summary: 2/8 motors found使用方法
基本的なセットアップ
from lerobot.motors import Motor
from lerobot.motors.damiao import DamiaoMotorsBus
# Define your motors with send/receive CAN IDs
motors = {
"joint_1": Motor(id=0x01, motor_type_str="dm8009", recv_id=0x11),
"joint_2": Motor(id=0x02, motor_type_str="dm4340", recv_id=0x12),
"joint_3": Motor(id=0x03, motor_type_str="dm4310", recv_id=0x13),
}
# Create the bus
bus = DamiaoMotorsBus(
port="can0", # Linux socketcan interface
motors=motors,
)
# Connect
bus.connect()モーター状態の読み取り
# Read single motor position (degrees)
position = bus.read("Present_Position", "joint_1")
# Read from multiple motors
positions = bus.sync_read("Present_Position") # All motors
positions = bus.sync_read("Present_Position", ["joint_1", "joint_2"])
# Read all states at once (position, velocity, torque)
states = bus.sync_read_all_states()
# Returns: {'joint_1': {'position': 45.2, 'velocity': 1.3, 'torque': 0.5}, ...}モーターコマンドの作成
# Enable torque
bus.enable_torque()
# Set goal position (degrees)
bus.write("Goal_Position", "joint_1", 45.0)
# Set positions for multiple motors
bus.sync_write("Goal_Position", {
"joint_1": 45.0,
"joint_2": -30.0,
"joint_3": 90.0,
})
# Disable torque
bus.disable_torque()設定オプション
| パラメータ | デフォルト | 説明 |
|---|---|---|
port | - | CANインターフェース(can0)またはシリアルポート(/dev/cu.usbmodem*) |
use_can_fd | True | 高速なデータレートを実現するためにCAN FDを有効にする |
bitrate | 1000000 | 公称ビットレート (1 Mbps) |
data_bitrate | 5000000 | CAN FD データビットレート (5 Mbps) |
モーター設定
各モーターには以下が必要です:
id: コマンド送信用の CAN IDmotor_type: 対応するモータータイプのいずれか(例:"dm8009"、"dm4340")recv_id: 応答の受信に使用する CAN ID
OpenArmsのデフォルトIDは、送信IDが0x0N、受信IDが0x1Nというパターンに従います。ここでNは関節番号です。
トラブルシューティング
モーターからの応答なし
- 電力を確認する
- Verify CAN wiring: Check CAN-H, CAN-L, and GND connections
- モーターIDの確認: Damiao Debugging Toolsを使用してIDを確認/設定します
- CANインターフェースのテスト:
candump can0を実行して、メッセージが受信されているか確認します - 診断を実行する:
lerobot-setup-can --mode=test --interfaces=can0
モーターのタイムアウトパラメータ
モーターがtimeout=0で設定されている場合、コマンドに応答しません。Damiao Debugging Toolsを使用して、ゼロ以外のタイムアウト値を設定してください。
CAN FDステータスの確認
ip -d link show can0 | grep fd