reBot Arm B601-DM ビジュアル把持デモ

奥行き認識 · 物体検出 · ハンドアイキャリブレーション · 自律把持 · 完全オープンソース
YOLO は広く使われているリアルタイム物体検出モデルのファミリーで、1 回のフォワードパスでターゲットの位置特定と分類を行うことができます。本チュートリアルでは、YOLO と Orbbec Gemini 2 深度カメラを組み合わせて、reBot Arm B601-DM 向けのデスクトップ用ビジュアル把持デモを構築します。環境構築、カメラ統合、ハンドアイキャリブレーション、把持検証までをカバーします。
プロジェクトの特長
-
YOLO + OBB による直接的な把持姿勢推定
パイプラインは検出ボックスまたは OBB の最小外接矩形を直接使用し、短軸をグリッパの開閉方向として扱うことで、複雑な 3D 点群処理を回避します。 -
軽量なロボットアームとグリッパの統合
主要な把持スクリプトはRebotArmインターフェースを再利用し、IK、軌道制御、グリッパのステートマシンを統合しています。 -
オープンソースかつ拡張可能
すべてのソースコードは公開されており、ユーザーは自分のニーズに応じて制御アルゴリズムや動作をカスタマイズできます。
仕様
このチュートリアルで使用するハードウェアは Seeed Studio によって提供されています。
| パラメータ | 仕様 |
|---|---|
| ロボットアームモデル | reBot Arm B601-DM |
| 自由度 | 6-DOF + グリッパ |
| カメラモデル | Orbbec Gemini 2 |
| 検出方式 | YOLO + OBB 最小外接矩形 |
| 通信方式 | USB2CAN アダプタ経由の CAN バス;USB 3.0 カメラ接続 |
| 動作電圧 | 24V DC |
| ホストプラットフォーム | Ubuntu 22.04+ PC |
| 推奨 Python バージョン | Python 3.10 |
部品表 (BOM)
| コンポーネント | 数量 | 同梱 |
|---|---|---|
| reBot Arm B601-DM ロボットアーム | 1 | ✅ |
| グリッパ | 1 | ✅ |
| USB2CAN シリアルブリッジ | 1 | ✅ |
| 電源アダプタ (24V) | 1 | ✅ |
| USB-C / 通信用ケーブル | 1 | ✅ |
| Orbbec Gemini 2 深度カメラ | 1 | ✅ |
| Gemini 2 カメラコネクタ / 取付ブラケット | 1 | ✅ |
配線
- Gemini 2 を USB 3.0 でホストに接続します。
- USB2CAN アダプタをアームの CAN バスに接続します。
- 24V 電源、カメラ、ロボットアームがすべて確実に接続されていることを確認します。
- パーミッションを設定します:
sudo chmod a+rw /dev/bus/usb/*/*
sudo chmod 666 /dev/ttyUSB0
動作環境要件
| 項目 | 要件 |
|---|---|
| オペレーティングシステム | Ubuntu 22.04+ |
| Python | 3.10 |
| 推奨環境 | conda |
| 推奨ワークスペースフォルダ | rebot_grasp |
| 推奨 conda 環境名 | rebotarm |
インストール手順
ステップ 0. 先にロボットアームの基本準備を完了する
このチュートリアルを始める前に、reBot Arm B601-DM クイックスタート の内容(ロボットアームの組み立て、ゼロ点初期化、モーター ID 設定、基本的な接続確認)を完了してください。
ステップ 1. リポジトリをクローンする
git clone https://github.com/Seeed-Projects/reBot-DevArm-Grasp.git rebot_grasp
cd rebot_grasp
ステップ 2. Python 環境を作成する
conda create -n rebotarm python=3.10 -y
conda activate rebotarm
ステップ 3. プロジェクト依存関係をインストールする
pip install -r requirements.txt
ステップ 4. ロボットアーム SDK をインストールする
git clone https://github.com/vectorBH6/reBotArm_control_py.git sdk/reBotArm_control_py
cd sdk/reBotArm_control_py
pip install -e .
cd ../..
ステップ 5. Orbbec Gemini 2 SDK をインストールする
このプロジェクトは pyorbbecsdk に依存しています。リポジトリにはデフォルトで sdk/pyorbbecsdk は同梱されていないため、sdk/ 配下に公式リポジトリを自分でクローンするか、別の方法でインストールする必要があります。
sudo apt-get update
sudo apt-get install -y cmake build-essential libusb-1.0-0-dev
cd sdk
git clone https://github.com/orbbec/pyorbbecsdk.git
cd pyorbbecsdk
pip install -e .
Gitee ミラーを使用することもできます:
cd sdk
git clone https://gitee.com/orbbecdeveloper/pyorbbecsdk.git
cd pyorbbecsdk
pip install -e .
初めて使用する場合は、udev ルールをインストールすることを推奨します:
sudo bash scripts/install_udev_rules.sh
sudo udevadm control --reload-rules
sudo udevadm trigger
ステップ 6. 依存関係を検証する
python -c "import pyorbbecsdk; print('pyorbbecsdk OK')"
python -c "import motorbridge; print('motorbridge OK')"
Orbbec カメラを初めて使用する場合は、インストールした pyorbbecsdk ディレクトリ内で scripts/install_udev_rules.sh を実行することを推奨します。そうしないと、カメラが正しくオープンできない可能性があります。
ハンドアイキャリブレーション
フルの把持パイプラインを実行する前に、まず Eye-in-Hand 方式のハンドアイキャリブレーションを完了してください。
python scripts/collect_handeye_eih.py
実行前に、config/default.yaml 内の次の ArUco サイズパラメータが、実際に印刷したマーカーと一致していることを確認してください:
calibration:
aruco:
marker_length_m: 0.1
自動モードでは、アームが 50 個のプリセット姿勢を走査し、ArUco マーカーが安定して検出されたタイミングでサンプルを記録します。途中で c または q で処理を中断した場合でも、スクリプトは収集済みサンプルからキャリブレーション結果の計算を試みます。
収集中にロボットアームを手動で動かしたい場合は、マニュアルモードを使用します:
python scripts/collect_handeye_eih.py --manual
マニュアルモードでは、アームは重力補償モードに入ります。エンドエフェクタを適切な視点に動かし、Enter を押してキャプチャし、c または q を押して終了および結果の計算を行います。
キャリブレーション結果は次の場所に保存されます:
config/calibration/orbbec_gemini2/hand_eye.npz
推奨サンプル数:
- 最低:5 サンプル
- 推奨:少なくとも 15 サンプル
実行とデバッグ
1. 物体検出のみを検証する
python scripts/object_detection.py
検出モデルやクラスを変更する必要がある場合は、config/default.yaml を編集します:
yolo:
model_name: "yoloe-26l-seg.pt"
device: "cpu"
use_world: true
custom_classes:
- "yellow banana"
- "water bottle"
- "cup"
このステップでは、次の点を確認するのに役立ちます:
- カメラが正しくオープンできているか
- YOLO モデルが正しくロードされているか
- YOLO 物体検出が期待どおりに動作しているか
2. 把持推定のみを検証する
python scripts/ordinary_grasp_pipeline.py
把持推論の頻度やプレ把持時の退避距離を調整する必要がある場合は、次を編集します:
grasp_pipeline:
infer_every_live: 3
grasp:
depth_quantile: 0.6
pregrasp_offset_m: 0.080
このスクリプトはロボットアームには接続しません。次の点を検証するためだけに使用します:
- OBB または最小外接矩形が妥当かどうか
- 把持点がターゲットの中心付近に位置しているかどうか
- 短軸方向が期待されるグリッパ開閉方向と一致しているかどうか
主な操作キー:
- 左クリック:選択したピクセルの深度を確認
G: 現在の最良把持姿勢を表示Q/Esc: 終了
3. メインの把持プログラムを実行する
python scripts/main.py
ロボットアームを動かさずにターゲット姿勢だけを検証したい場合:
python scripts/main.py --dry-run
実際の把持を行う前に、まず --dry-run で姿勢と到達可能な作業空間を検証することを推奨します。
reBotArm_control_py がデフォルトの場所にない場合は、config/default.yaml で指定します:
robot:
repo_root: null
通常は null のままで問題ありません。プログラムはまず sdk/reBotArm_control_py を自動検出しようとします。
メインプログラムの流れ:
- ロボットアームとグリッパを初期化する
- レディ姿勢へ移動する。起動時のレディ姿勢を変更したい場合は、
config/default.yamlを編集します:
robot:
ready_pose:
x: 0.3
y: 0.0
z: 0.3
roll: 0.0
pitch: 1.0
duration: 3.0
- テーブル上のターゲットをリアルタイムに検出する
- 短軸から把持姿勢を推定する
Gを押して現在のフレームをキャプチャし、把持を実行する
実行時のキー操作:
G: 現在の最良ターゲットを把持R: ライブプレビューを再開Q/Esc: 終了
FAQ
1. ModuleNotFoundError: No module named 'motorbridge'
これは通常、現在の Python 環境にロボットアーム SDK の依存関係がインストールされていないことを意味します。次を確認してください:
conda activate rebotarm
pip install -r requirements.txt
cd sdk/reBotArm_control_py && pip install -e .
2. G を押しても把持が実行されない
よくある原因:
hand_eye.npzが存在しない- ハンドアイキャリブレーションモードが
eye_in_handになっていない - ターゲット姿勢が IK によって到達可能ではない
次を実行することを推奨します:
python scripts/main.py --dry-run
3. 把持深度が安定しない
次の調整を試すことができます:
grasp_pipeline.grasp.depth_quantile- ワークスペースに対するカメラの設置高さ
- 対象表面の反射特性
お問い合わせ
- 技術サポート: Submit an Issue
- プロジェクトページ: GitHub
- フォーラム: Seeed Studio Forum