トピックハブ

センサ

ロボットが何を計測し、その計測がどのように狂うか。内界センサと外界センサ、それぞれの故障モード、そしてあらゆるセンサフュージョンと認識のスタックが依存する内部・外部・時刻のキャリブレーションを扱います。

更新 2026年11月14日 · IMU、エンコーダ、力覚センサ、カメラ、深度カメラ、LiDAR、レーダ、触覚センシング、キャリブレーション、REP 145

概要

ロボットが知ることができるのは、センサが伝えることだけです。そして、どのセンサもそれぞれ特有のしかたで誤った値を返します。ジャイロスコープはドリフトし、カメラの画像はぶれます。深度カメラはガラスに対して何も返さず、ロボットが動くと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)は、時刻オフセットと空間的な座標変換を同時に推定します。
キャリブレーション(オフライン)時刻オフセット内部パラメータ外部パラメータセンサ生のカウント値ドライバstamp, frame_id, SIセンサモデル歪み、バイアス座標変換base_linkへ利用側融合・視覚処理すべてのメッセージがタイムスタンプとframe_idを持つ時刻や座標系の誤りは、アルゴリズムの不具合に見える
物理的なセンサから推定器までの経路。ドライバは各計測値に時刻と座標系名を付与し、SI単位に変換します。オフラインで行うキャリブレーションが、時刻オフセット、内部モデル、base_linkへの外部変換を提供します。どの段階の誤りも、下流のすべての利用側に届きます。

どこから始めるか

/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を示すことを忘れ、重力を逆の符号で差し引く。
  • 外部パラメータを定規で測ったまま、一度も精密化しない。小さな回転誤差は、遠距離では大きな位置誤差になる。
  • あるフォーカス・ズーム設定でカメラをキャリブレーションし、別の設定で使う。
  • 朝に合わせた力覚センサのゼロ点を一日中そのまま使う。

さらに深く

訂正

  • 2026年11月14日:KalibrのライセンスをBSD-3-Clauseと記載していました。LICENSEは広告条項付きの4条項BSDライセンスです。

学習パス

リファレンス

  • カルマンフィルタ早見表

    KF・EKF・UKFの式の比較、QとRの決め方、カイ二乗区間を用いたNEES・NISによる一貫性の確認、実行できるNumPyコード(カルマンフィルタとEKFのヤコビ行列チェック)をまとめます。

最近の論文

  • Camera equalisation of an 11.5x drop in environmental illuminance: four imitation-learning policies on an SO-101 arm

    S. Cowling · arXiv cs.RO · ダイジェスト

    著者は、実機のSO-101アームで収集した50件のピックアンドプレースのデモンストレーションを共通のデータとして、4つの模倣学習方策(pi0.5、ACT、Diffusion Policy、SmolVLA)を学習させました。その後、各方策を約520 luxで10回、約45 luxで10回実行しました。成功数は通常の明るさで40回中20回、暗い条件で40回中19回でした。この差の95%区間はマイナス23ポイントからプラス19ポイントにわたり、方策間で感度が異なる兆候は見られませんでした。その理由は記録データからわかります。自動露出とホワイトバランスを有効にしたままだったため、画像の平均輝度の低下はフロントカメラで3%、手首カメラで19%にとどまっていました。実用上の助言は、部屋の照度を示すのではなく、カメラ設定を固定して報告し、画像統計を学習データと比較することです。サンプルは小さく、1ブロック分の試行を誤って再実行したところ、成功数は一致しましたが、個々の配置結果が一致したのは10回中6回だけでした。

  • Galilean Robots, Aristotelian Sensors: Joint Spatiotemporal Trajectory Estimation and Extrinsic Calibration

    A. Goudar, J. Kelly, T. D. Barfoot · arXiv cs.RO · ダイジェスト

    センサキャリブレーションでは通常、剛体変換と時刻オフセットを別々に推定します。そのオフセットを適用するには、補間、動き補償、または連続時間の軌跡が必要になります。本論文では、ロボットの軌跡を特殊ガリレイ群上に、センサの外部パラメータをその部分群であるアリストテレス群上に置きます。これにより、時刻オフセットは群演算そのものを通じて位置姿勢と結合されます。この手法は、慣性計測装置(IMU)駆動およびツイスト駆動の運動事前分布と、ドリフトするクロックに対応しています。検証は、シミュレーション、Starry Nightのステレオカメラ・IMUデータセット、実機のクアッドロータで行いました。クアッドロータでは、IMUをモーションキャプチャに対して、また超広帯域(ultra-wideband)測距に対してキャリブレーションしました。精度は既存手法と同等で、上回ってはいません。したがって利点は、誤差の低減ではなく問題設定の単純化にあります。