HumansXドキュメントセンター 公式サイトへ ↗

主要機能の紹介

概要

インテリジェント・ビジョン制御ロボットアームシステムは、先進的なコンピュータビジョン技術と高度なロボットアーム制御アルゴリズムを統合し、ビジョン誘導による把持を一貫して実現するシステムです。

ビジョン検出システム

YOLO11 検出エンジン

技術的特長:

  • モデル構成:YOLO11n 量子化モデル、RDK X5 プラットフォーム向けに最適化
  • 検出対象:3 クラス検出(オレンジ、緑、赤の図形)
  • 入力サイズ:320 × 320 ピクセル
  • 検出精度:信頼度しきい値 0.7、IoU しきい値 0.45
  • 処理速度:約 30fps のリアルタイム検出

検出の流れ:

  1. 画像の前処理:BGR から NV12 形式への変換、サイズのスケーリング
  2. モデル推論:BPU による高速推論、マルチスケール特徴抽出
  3. 後処理:非最大値抑制(NMS)、座標の逆量子化
  4. 結果の出力:バウンディングボックス、信頼度、クラス情報

VLM 検出モード(オプション)

技術的特長:

  • モデル:Qwen2-VL-72B-Instruct
  • API:SiliconFlow API サービス
  • 機能:自然言語による指示に基づく物体検出
  • 用途:複雑なシーンにおける意味的な検出

設定要件:VLM 検出機能を使用するには、SiliconFlow の API キーを設定する必要があります。詳しくは SiliconFlow API キー取得ガイド を参照してください。

使用例:

# プロンプトの例
"画像内の赤い円形の物体と緑の四角形の物体を検出してください"
"画像内で最も大きい物体を見つけて位置を示してください"

計測システム

座標系

  • 原点:画像の中心
  • X 軸:水平方向、右が正
  • Y 軸:垂直方向、上が正
  • 象限:第 I 象限(右上)、第 II 象限(左上)、第 III 象限(左下)、第 IV 象限(右下)

計測機能

  1. 位置計測:画像中心を基準とした物体中心の座標
  2. 距離計測:物体から中心点までの直線距離
  3. 寸法計測:物体のバウンディングボックスの幅と高さ
  4. 象限の識別:物体が位置する象限の表示

可視化表示

  • 座標軸の描画(白い十字線)
  • 物体のバウンディングボックス(色付きの矩形)
  • 距離線(黄色の線)
  • 計測データのラベル表示(テキスト表示)

ロボットアーム制御システム

ハードウェア仕様

アームのパラメータ:

  • 自由度:4DOF(4 関節)
  • 駆動方式:サーボモータ駆動、シリアル通信
  • 通信プロトコル:ボーレート 115200、/dev/ttyS1
  • 動作範囲:
  • X 軸:50~180mm
  • Y 軸:-80~80mm
  • Z 軸:-50~140mm

逆運動学アルゴリズム

アルゴリズムの実装(user_arm.py):

def get_coordinate(self, x1, y1, z1):
    # 幾何パラメータ
    a = 109  # 上腕の長さ
    b = 126  # 前腕の長さ

    # 空間距離の計算
    c = math.sqrt(x*x + y*y + z*z)

    # 関節角度の計算
    theta1 = math.acos((a*a + c*c - b*b) / (2*a*c))
    theta2 = math.atan(z / math.sqrt(x*x + y*y))

    # 角度の変換と制限
    alpha = 83 - math.atan(y/x) * (180/math.pi)
    beta = 95 - (90 - beta1)
    gamma = 141 - (180 - (beta1 + (theta1 + theta2)))

    return (alpha, theta, beta, gamma)

動作制御

補間アルゴリズム

線形補間:2 点間に滑らかな軌道を生成します。

# 軌道点数の計算
num_points = int((abs(delta_x) + abs(delta_y)) / 9.0)
num_points = max(8, min(num_points, 25))

# 補間計算
for i in range(num_points + 1):
    t = i / num_points
    x = start_x + t * (end_x - start_x)
    y = start_y + t * (end_y - start_y)
    z = start_z + t * (end_z - start_z)

安全機構

  1. リミットチェック:目標位置が動作範囲内にあるかを厳密に検証します。
  2. スムーズ制御:補間アルゴリズムにより滑らかな動作を保証します。
  3. リアルタイム監視:現在位置を記録し、相対移動に対応します。
  4. エラー処理:範囲外の動作は自動的に拒否され、エラーメッセージが返されます。

制御動作

基本動作

  • 把持:catch_sth() ― グリッパーを閉じる
  • 解放:release_sth() ― グリッパーを開く
  • 初期化:arm_init_action() ― 初期位置に戻る

複合動作

  1. 物体の把持(arm_catch_sth):
上昇 → 目標の上方へ移動 → 下降 → 把持 → 上昇 → 初期位置に戻る
  1. 通常配置(arm_normal_put_sth):
上昇 → 目標の上方へ移動 → 下降 → 解放 → 上昇 → 初期位置に戻る
  1. 積み重ね配置(arm_stack_put_sth):
積み重ね高さまで上昇 → 目標へ移動 → 解放 → 上昇 → 初期位置に戻る

ビジョンとロボットアームの統合

座標変換システム

画像座標からロボットアーム座標への変換:

def calculate_arm_pos(self, x, y):
    if x <= 0:
        position_x = (0.821 * y + 114.2) - 10
        position_y = (0.3638 * x - 15.049) - 6
    else:
        position_x = 0.821 * y + 114.2
        position_y = 0.3638 * x - 15.049

    return position_x, position_y

キャリブレーションパラメータ:

  • X 軸変換係数:[0.000004, 0.9879, -2.9465]
  • Y 軸変換係数:[0.0005, 0.9 638, 228.29]

ワークフロー

自動把持の流れ

  1. ビジョン検出:対象物の位置を識別します。
  2. 座標変換:画像座標をロボットアーム座標に変換します。
  3. 経路計画:安全な把持経路を生成します。
  4. 把持の実行:ロボットアームを制御して把持動作を完了します。
  5. 状態フィードバック:実行結果を返します。

精度制御

  • ビジョン精度:ピクセル単位の位置決め精度
  • ロボットアーム精度:ミリメートル単位の制御精度
  • 繰り返し精度:± 2mm

性能指標

システム性能

  • 検出遅延:33ms 未満(30fps)
  • 制御応答:100ms 未満
  • システムスループット:把持頻度 20 回/分以上
  • メモリ使用量:500MB 未満

精度指標

  • 検出精度:信頼度 90% 超
  • 位置決め精度:± 5 ピクセル
  • 把持成功率:85% 超

️ 設定パラメータ

検出設定

detection:
  class_names: ["orange", "green", "red"]
  colors:
    - [0, 165, 255]  # オレンジ
    - [0, 255, 0]    # 緑
    - [0, 0, 255]    # 赤
  font_scale: 1.0
  line_thickness: 2

計測設定

measurement:
  enable_coordinate_system: true
  enable_distance_measurement: true
  enable_dimension_measurement: true
  axis_color: [255, 255, 255]
  measurement_color: [255, 255, 0]

アーム設定

arm:
  serial_port: "/dev/ttyS1"
  baudrate: 115200
  workspace_limits:
    x_range: [-200, 200]
    y_range: [100, 400]
    z_range: [30, 150]

デバッグと最適化

パフォーマンス監視

  • FPS カウンタによるリアルタイムフレームレート表示
  • メモリ使用量の監視
  • CPU 使用率の統計
  • ネットワーク遅延の計測

デバッグツール

  • リアルタイムログ出力
  • 可視化デバッグ画面
  • API テストクライアント
  • パフォーマンス分析ツール

最適化の推奨事項

  1. ハードウェアの最適化:SSD ストレージと有線ネットワーク接続を使用します。
  2. アルゴリズムの最適化:検出しきい値を調整し、補間パラメータを最適化します。
  3. システムの最適化:不要なサービスを停止し、プロセスの優先度を上げます。

情報交換コミュニティ

資料のダウンロード・技術サポートについては、HumansX株式会社までお問い合わせください。