センサ
ロボットが何を計測し、その計測がどのように狂うか。内界センサと外界センサ、それぞれの故障モード、そしてあらゆるセンサフュージョンと認識のスタックが依存する内部・外部・時刻のキャリブレーションを扱います。
概要
ロボットが知ることができるのは、センサが伝えることだけです。そして、どのセンサもそれぞれ特有のしかたで誤った値を返します。ジャイロスコープはドリフトし、カメラの画像はぶれます。深度カメラはガラスに対して何も返さず、ロボットが動くとLiDARの点は引き伸ばされ、力覚センサは温まるにつれてゼロ点が変わります。優れたロボットソフトウェアは、こうした誤差に驚かされるのではなく、誤差を前提に作られています。
このハブページは、センサを選定する、ドライバを書く、あるいは収束しない推定器をデバッグしているエンジニアに向けたものです。各センサが何を計測し、どのように失敗するか、そして生の読み値を既知の座標系・既知の時刻における数値に変換するキャリブレーションを扱います。推定の側面は/topics/state-estimation/、視覚の側面は/topics/robot-perception/で扱います。
重要な考え方
内界センサ:ロボット自身の計測
エンコーダは関節や車輪の角度を計測します。通常はロボットで最も精度の高いセンサであり、誤差はその周囲の機構から生じます。バックラッシ、車輪の滑り、コンプライアンスです。/topics/actuators-and-drives/を参照してください。
慣性計測装置(IMU)は、3軸ジャイロスコープと3軸加速度計を組み合わせたもので、多くの場合は磁気センサも加わります。ジャイロスコープは角速度を計測します。加速度計が計測するのは加速度ではなく比力(specific force)です。IMUドライバに関するROSの慣例であるREP 145は、z軸を上に向けて静止しているデバイスはz軸に+g(m/s²単位)を出力すべきだと述べています。ジャイロスコープを積分すると姿勢が得られますが、バイアスに応じてドリフトします。加速度計を2回積分すると位置が得られますが、こちらははるかに速くドリフトします。そのため、IMUは他のセンサとフュージョンして使います。ノイズとバイアス不安定性は、長時間の静止記録から作成したアラン分散プロットで評価します。
力覚センサは力とトルクの6成分を計測します。通常は、手首に取り付ける本体にひずみゲージを内蔵しています。温度によってドリフトするため、現在の姿勢における工具の重量を補償した上でゼロ点合わせをする必要があります。関節トルクセンサは同じことを関節ごとに行い、トルク制御アームを可能にします。
外界センサ:周囲の世界の計測
カメラは安価で、得られる情報が豊富です。ローリングシャッター方式のセンサは行ごとに異なる時刻で読み出すため、速い動きが歪みます。そのため、高速に動くロボットではグローバルシャッターのカメラが好まれます。深度カメラはステレオマッチング、構造化光、またはToF(time of flight)を使います。3方式とも透明な表面、光沢のある表面、非常に暗い表面が苦手です。アクティブ赤外線方式は、日光の下で信号がかき消されることがあります。
LiDARは光パルスの往復時間で距離を計測し、照明条件に依存しない正確な形状を得られます。回転式のユニットは点ごとにわずかに異なる時刻で計測するため、動きを補償しないと、移動中のロボットには歪んだスキャンが見えます。ZhangとSinghは、これがLiDARオドメトリを難しくしている要因だと述べています。レーダは角度分解能がはるかに低いものの、相対速度を直接計測でき、粉塵・雨・霧の中でも動作し続けます。
触覚センサは、抵抗式や静電容量式のアレイで指先や皮膚状の面を覆います。あるいはGelSightのように、変形するゲルの裏側にカメラを置いて接触面を撮像します。把持の瞬間に視覚では捉えられない情報、すなわち接触位置・滑り・せん断を報告します。
キャリブレーション:内部・外部・時刻
キャリブレーションは3つの部分からなり、どれか1つでも誤っているとフュージョンは失敗します。
- 内部(intrinsic):センサ自身のモデル。カメラでは焦点距離・主点・レンズ歪みで、通常はZhang(2000)の手法により、チェッカーボードを撮影した画像から推定します。IMUではバイアス・スケールファクタ・軸のずれです。
- 外部(extrinsic):
base_linkに対してセンサがどこにあるか。これはロボット記述の中で静的な座標変換になります。カメラとグリッパ間のキャリブレーション(ハンドアイキャリブレーション)は、よくある特殊な例です。 - 時刻(temporal):センサの時計とロボットの時計のずれ。1 rad/sで回転しているカメラで10 msのずれがあると、0.01 rad(0.57°)の姿勢誤差になります。Furgale・Rehder・Siegwart(2013)は、時刻オフセットと空間的な座標変換を同時に推定します。
どこから始めるか
/learn/beginner/06-sensors-and-noise/では、ノイズ・バイアス・ドリフトをコードでモデル化し、平均化してもバイアスが除去されない理由を示します。/learn/beginner/02-frames-and-rotations/は外部キャリブレーションで値を埋める座標系を、/topics/spatial-math/は光学座標系の慣例を扱います。
ツールとプラットフォーム
| ツール | 用途 | ライセンス | プラットフォーム |
|---|---|---|---|
| Kalibr | マルチカメラ、カメラ・IMU間、ローリングシャッターのキャリブレーション(時刻オフセットを含む)。ROS 1ベースで、Dockerでのインストールに対応 | BSD-4-Clause(広告条項あり) | /platforms/opensource/ |
| camera_calibration | ROSでの単眼カメラ・ステレオカメラのチェッカーボードによるキャリブレーション | BSD | /platforms/ros/ |
| OpenCV | カメラモデル、歪み補正、キャリブレーション機能 | Apache-2.0 | /platforms/opensource/ |
| librealsense | RealSense深度カメラ用のSDKとドライバ | Apache-2.0 | /platforms/opensource/ |
ROS 2 sensor_msgs |
画像・点群・IMU・関節状態の標準メッセージ型 | Apache-2.0 | /platforms/ros/ |
よくある間違い
- 計測が行われた時刻ではなく、データ到着時にドライバが付けたタイムスタンプを信用する。
- 静止した加速度計は上向きの軸で+gを示すことを忘れ、重力を逆の符号で差し引く。
- 外部パラメータを定規で測ったまま、一度も精密化しない。小さな回転誤差は、遠距離では大きな位置誤差になる。
- あるフォーカス・ズーム設定でカメラをキャリブレーションし、別の設定で使う。
- 朝に合わせた力覚センサのゼロ点を一日中そのまま使う。
さらに深く
- Z. Zhang, A flexible new technique for camera calibration, 「IEEE Transactions on Pattern Analysis and Machine Intelligence」 22(11), 2000.
- P. Furgale, J. Rehder and R. Siegwart, Unified temporal and spatial calibration for multi-sensor systems, IROS 2013. Kalibrの基になっている手法です。
- REP 145: Conventions for IMU Sensor Drivers。本稿執筆時点で、ステータスはドラフトです。
- Richard Hartley and Andrew Zisserman, 「Multiple View Geometry in Computer Vision」, 第2版, Cambridge University Press, 2004. カメラモデルの定番リファレンスです。
- W. Yuan, S. Dong and E. H. Adelson, GelSight: high-resolution robot tactile sensors for estimating geometry and force, 「Sensors」 17(12), 2017.
訂正
- 2026年11月14日:KalibrのライセンスをBSD-3-Clauseと記載していました。LICENSEは広告条項付きの4条項BSDライセンスです。