視覚センサデバイス

概要

Choreonoidのボディモデルには、カメラや距離センサといった視覚センサをデバイスとして搭載することができます。本ページでは、利用可能な視覚センサデバイスの一覧と、各デバイスの主なパラメータについて解説します。

視覚センサデバイスは、Body形式のモデルファイルにおいて、搭載するリンクの elements 以下にデバイスノードとして記述します。記述したデバイスの出力は、 視覚センサのシミュレーション で解説する方法によりシミュレートできます。

全ての視覚センサデバイスで共通の主なパラメータは以下のとおりです。

パラメータ

デフォルト値

意味

name

デバイスの名前です。コントローラからのデバイス取得等で使用します。

id

デバイスのIDです。

translation / rotation

親リンク座標系におけるセンサの位置・姿勢です。

on

true

センサの初期状態(オン/オフ)です。

frame_rate

30

センサが毎秒何回の計測データを出力するかを指定します。

optical_frame

gl

センサの光学座標系を「gl」「cv」「robotics」から指定します。詳細は Cameraノード を参照してください。

カメラ(Camera)

色画像を出力するカメラです。モデルファイルでは type: Camera のデバイスノードとして記述し、 formatCOLOR を指定します(デフォルト)。

主なパラメータは以下のとおりです。

パラメータ

デフォルト値

意味

format

COLOR

出力する情報の種類です。COLORで色画像を出力します。COLOR以外の指定については後述のレンジカメラを参照してください。

lens_type

NORMAL

レンズの種類を「NORMAL」(通常)「FISHEYE」(魚眼)「DUAL_FISHEYE」(全方位)から指定します。

width / height

640 / 480

出力画像の解像度(幅・高さ)です。

field_of_view

45°

カメラの視野角です。

near_clip_distance / far_clip_distance

0.04 / 200

撮影範囲となる前方クリップ面・後方クリップ面までの距離です [m]。

モデルファイルにおける記述の詳細は Cameraノード を参照してください。

レンジカメラ(RangeCamera)

深度画像や3次元点群を出力するカメラで、RGB-Dカメラやデプスカメラの模擬に使用できます。モデルファイルでは独立したノード型ではなく、Cameraノードの format に以下のいずれかを指定することで、内部的にレンジカメラとして扱われます。

  • DEPTH : 深度情報を出力

  • COLOR_DEPTH : 色情報と深度情報を出力

  • POINT_CLOUD : 3次元点群を出力

  • COLOR_POINT_CLOUD : 色情報と3次元点群を出力

カメラのパラメータに加えて、以下のパラメータが利用できます。

パラメータ

デフォルト値

意味

min_distance / max_distance

0.1 / 10

距離を計測可能な最小・最大距離です [m]。

detection_rate

1.0

各計測点で計測値が得られる確率です。1未満の値を設定することで、計測の欠損を模擬できます。

error_deviation

0.0

計測距離に加わるガウス雑音の標準偏差です [m]。計測誤差を模擬できます。

レンジセンサ(RangeSensor)

レーザスキャナ(LiDAR)のようなスキャン型の距離センサです。モデルファイルでは type: RangeSensor のデバイスノードとして記述します。水平方向のみのスキャンを行う2次元LiDARと、垂直方向のスキャンも行う3次元LiDARのいずれも表現できます。

主なパラメータは以下のとおりです。

パラメータ

デフォルト値

意味

yaw_range

120°

水平方向のスキャン範囲の角度です。0度を中心に左右対称にスキャンされます。水平方向のスキャンを行わない場合は0とします。

yaw_step

水平方向のスキャンの角度刻み幅です。かわりに yaw_samples でサンプル数を指定することもできます。

pitch_range

垂直方向のスキャン範囲の角度です。垂直方向のスキャンを行わない場合は0とします。

pitch_step

垂直方向のスキャンの角度刻み幅です。かわりに pitch_samples でサンプル数を指定することもできます。

scan_rate

30

1秒間あたりのスキャン回数です [Hz]。(frame_rateと同じ値として扱われます。)

min_distance / max_distance

0.1 / 10

計測可能な最小・最大距離です [m]。

detection_rate

1.0

各計測点で計測値が得られる確率です。1未満の値を設定することで、計測の欠損を模擬できます。

error_deviation

0.0

計測距離に加わるガウス雑音の標準偏差です [m]。計測誤差を模擬できます。

モデルファイルにおける記述の詳細は RangeSensorノード を参照してください。

LivoxMid360

Livox社のLiDARであるMID-360に対応するデバイスです。 LivoxMid360プラグイン を導入することで利用可能となります。モデルファイルでは type: LivoxMid360 のデバイスノードとして記述します。

MID-360は非反復スキャン方式のLiDARで、スキャンのたびに異なるパターンで走査を行うことにより、時間をかけて視野内を密にカバーするという特性を持ちます。本デバイスはこの走査パターンを模擬した点群出力を行います。

RangeSensorを拡張したデバイスとなっており、RangeSensorのパラメータに加えて以下のパラメータが利用できます。

パラメータ

デフォルト値

意味

samples

24000

1スキャンあたりの計測点数です。

angular_precision

0.5°

走査方向の角度精度です。

angle_seq_file

走査パターンを定義する角度列のCSVファイルです。走査パターンのデータとして "${SHARE}/livox/scan_mode/mid360.csv" が付属しています。

MID-360のモデルとして share/model/misc/mid360.body が、これを用いたシミュレーションのサンプルプロジェクトとして sample/VisionSimulator/Mid360.cnoid が用意されていますので、記述例・利用例はそちらを参考にしてください。

シミュレーションでの利用

これらの視覚センサデバイスの出力は、GLビジョンシミュレータを用いてシミュレートできます。具体的な手順は 視覚センサのシミュレーション を参照してください。またカメラ画像に対してノイズや歪み等のエフェクトをかけたい場合は、 カメラエフェクトのシミュレーション を参照してください。