ゼロからのROS入門 ~フォーストルクセンサ~

大阪大学 中島優作


← シリーズ一覧に戻る

本スライドの担当範囲

  • 使い方は人それぞれなので詳細は触れず、例だけ紹介します
  • 全般で使える内容として、データの読み出し、ノイズ除去、座標変換を扱います
  • 実装の詳細よりも基本概念を重視
  • 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への統合
  • ノイズ除去の重要性
  • 座標変換の正しい実装
  • 用途に応じた適切な利用
  • ロボット学習への応用可能性

← シリーズ一覧に戻る