ゼロからのROS1

フォーストルクセンサ

大阪大学 中島優作


← シリーズ一覧に戻る

力を測るセンサは2種類

① 6軸FTセンサ(手先・ベース) FT FT ② 関節トルクセンサ τ₁ τ₂ τ₃ τ₄

1か所で力3+トルク3を測る

手先:ツールにかかる力を直接測る

ベース:ロボット全体にかかる力を測る

各関節に内蔵、1軸ずつトルクを測る

ヤコビ行列で手先の力を推定

アームのどこが触れても気づける

例:Franka, KUKA LBR iiwa

→ 本スライドでは ① 6軸FTセンサ を扱います(センサなしの方法などは次の章のコラムで →)

コラム従来法:関節トルクセンサ

モータ ハーモニックドライブ 摩擦はここで発生 トルク センサ ギアの出力側 外力 摩擦の手前で届く ✓ Franka KUKA iiwa
  • ハーモニックドライブは摩擦が大きく電流では外力が見えない → 出力側にトルクセンサ
  • 代表例:Franka・KUKA LBR iiwa(DLR の軽量アームの系譜)
  • 課題①:関節ごとにセンサが必要 → 高い・配線や部品が増える
  • 課題②:センサは「ひずむ」ことで測る → 関節の剛性が下がる
  • 課題③:ハーモニックドライブなど高価な特殊減速機が前提

コラム最近の手法:電流で推定

電流 i モータ Kt · i 減速機 × N − 摩擦 関節トルク τ 外力 = τ − モデル (重力・慣性を計算で引く)

τ ≈ N · Kt · i − 摩擦 (Kt:トルク定数、N:減速比)

  • モータのトルクは電流にほぼ比例 → 追加センサ不要で安い・壊れにくい
  • 外力 = 電流から出したトルク − 動力学モデル(重力・慣性)の分
  • 弱点:摩擦とモデルの誤差がそのまま力の誤差になる

コラム産業用ロボットと QDD の違い

産業用ロボット(50〜160 : 1) 小さいモータ ハーモニックドライブ 摩擦・ヒステリシス大 外力 ✕ → 外力が摩擦に埋もれ、電流に出にくい QDD(〜10 : 1) 大径モータ 1段遊星ギア 外力 → 外力がそのまま電流に出る
  • 高減速ギアは摩擦・ヒステリシスが大きく、外力が電流に出にくい(衝突検知どまり)
  • QDD は大径モータ+1段ギアで逆駆動できる → 外力がそのまま電流に出る
  • トルクセンサも特殊減速機も不要 → 部品が大幅に少なく、誤差も小さい

コラムDD・QDD なら実用的

減速比(対数) 1 : 1 6〜10 : 1 50〜160 : 1 DD(直結) QDD(準ダイレクトドライブ) ハーモニックドライブ ← 電流 ≈ トルク(推定しやすい) 小さいモータで大トルク →
  • DD(ダイレクトドライブ):減速機なし。摩擦が小さく、電流がほぼそのままトルク
  • QDD:大径モータ+1段遊星ギア(〜10:1)。トルクを稼ぎつつ逆駆動できる
  • 低減速なら電流からのトルク推定で十分な精度が出る → 電流ベースの力制御が実用的に
  • MIT Cheetah(7.67:1)・Mini Cheetah(6:1)の設計が公開され、広く普及

P. M. Wensing et al., "Proprioceptive Actuator Design in the MIT Cheetah", IEEE T-RO 33(3), 2017 / B. Katz et al., "Mini Cheetah", ICRA 2019

コラム四足・ヒューマノイドの主流

Unitree Go2(四足)
Unitree Go2(四足)
Unitree G1(ヒューマノイド)
Unitree G1
  • 中国勢(Unitree など)の四足・ヒューマノイドは低減速の遊星ギア+大径モータが多い
  • 関節トルクセンサを積むより安く・量産しやすい
  • SDK は関節ごとに 目標角 q・速度 dq・トルク τ・ゲイン Kp/Kd を送る形
    → 中身は電流ベースのトルク制御と考えられる
  • 返ってくる関節トルクも推定値(専用センサの記載なし)

写真:Unitree Go2 — HotNews Romania, CC BY 3.0(Wikimedia Commons)/ Unitree G1 — Sayanesy, CC0(Wikimedia Commons)。内部構成は公開情報・分解記事からの推定

コラム力の測り方 まとめ

精度コスト測れる場所主な使い道
① 6軸FTセンサ◎高い付けた所だけ研磨・組立・力制御
② 関節トルクセンサ◎〜○高い全関節協働ロボット(Franka, iiwa)
電流(高減速)△追加なし全関節衝突検知
電流(QDD・DD)○安い全関節四足・ヒューマノイド

精密な力が要る作業は FTセンサ、全身で触れて動く・安く作るなら電流ベース

本スライドの担当範囲

  • 使い方は人それぞれなので詳細は触れず、例だけ紹介します
  • 全般で使える内容として、データの読み出し、ノイズ除去、座標変換を扱います
  • 実装の詳細よりも基本概念を重視
  • ROSでの統合方法に焦点

フォーストルクセンサの用途

均一な力をかける制御や接触時のデータ収集に使います↓

フォース制御、コンプライアンス制御のために追加

  • 位置制御だけでは不十分な作業
  • 柔軟な物体への対応
  • 過度な力の抑制
  • 繊細な作業の実現
  • 環境適応制御

力を均一にかけるためのセンシング

  • 粉体粉砕ではXY軸の平均値を見て乳鉢中心推定などを行っています
  • 研磨・磨き作業での力分布
  • 表面処理の品質向上
  • 接触面の姿勢推定
  • 力のバランス制御

ロボット学習での活用

  • ロボット学習の情報として、位置だけでは分からない情報を追加することでより良いモーションにつながります
  • 触覚情報の学習データ化
  • 巧緻動作の習得支援
  • 環境認識の向上
  • 模倣学習への応用

leptrinoフォーストルクセンサのROSパッケージの例

  • 日本国内でよく使われるleptrinoのROSでの使い方を紹介↓

Leptrinoフォーストルクセンサとは

  • 安価で性能も十分
  • USB接続で使いやすい
  • ROSでの統合が簡単
  • 日本国内で広く使用されている
  • 高精度な6軸力・トルク測定

パッケージの使い方 3 Steps

  1. clone
    git clone https://github.com/hiveground-ros-package/leptrino_force_torque
  2. rosdep
    rosdep install -i --from-paths src
  3. build
    catkin build; source devel/setup.bash

これで準備完了

USBのセンサのパスの指定方法

  • 基本的なパス:
    /dev/ttyACM* または /dev/ttyUSB*
  • 製品固有のパス:
    チップによっては、/dev/serial/by-idで確認をすると製品ごとの固有のパスも可能
  • デバイスの安定した識別が可能
  • 複数センサ使用時に便利

センサーデータの確認

  • センサの起動:
    roslaunch leptrino_force_torque leptrino.launch
    ※COMポートは先ほど確認したものを指定する
  • wrench_stampedのデバッグ表示:
  • rostopic echo または rqt_plotで確認
  • リアルタイムでの力・トルクデータ監視

ノイズ除去

  • ホワイトノイズを除去します
  • FTセンサに何も力を加えていないデータを撮って、FFTをかけて低周波領域をカットするフィルタをかけます
  • フィルタにはscipy.signal.butterなどを使います
  • 移動平均フィルタの適用
  • 外れ値の除去
  • 周波数ドメインでのフィルタリング

座標変換

  • TFを使って同姿変換行列を取得
  • フォースはそのまま回転行列で座標変換をする
  • トルクは回転行列で座標変換したもの+(旧位置-新位置)*新力で変換する
  • センサ座標系からロボット座標系へ
  • tf2_geometryライブラリの活用
  • リアルタイム座標変換

まとめ

  • フォーストルクセンサの基本的な活用方法
  • データ読み出しとROSへの統合
  • ノイズ除去の重要性
  • 座標変換の正しい実装
  • 用途に応じた適切な利用
  • ロボット学習への応用可能性

← シリーズ一覧に戻る