choreonoidでは2D・3D LiDARのシミュレーションが可能。またその時の点群をchoreonoid上で可視化することも可能。
ただちょっと可視化するのに自分が手順知らなくてちょっとハマったので一応メモしておく。
1. ロボットモデルにセンサアイテムを追加
とりあえずまずはセンサを追加する。対象のBodyファイルを開き、追加したい部分に以下の記述をする。
-
type: RangeSensor
name: Velodyne
translation: [ 0, 1.2, 0 ]
rotaion: [ [0, 1, 0, 90], [0, 0, 1, 180] ]
yawRange: 360.0
yawStep: 0.4
pitchRange: 30.0
pitchStep: 2.0
scanRate: 5
maxDistance: 100.0
minDistance: 0.5
on: true
-
translationとかrotationは位置姿勢なのでつけたいケースに合わせて変える。その他のパラメータはLiDARのシミュレーションに関するパラメータである。上記の例はVLP-16。32とかそれ以上のものを使いたい場合は仕様に合わせて調整する。(例えばVLP-32cとかは垂直方向の画角が40°とかなのでpitchRangeは40にする)
2. choreonoid側に可視化用のアイテムを追加する
choreonoidでプロジェクトファイルを開き、諸々追加する。センサ関連のシミュレータに必要なのはGLVisionSimulatorである。ファイル→新規→GLビジョンシミュレータを選択し追加。そうすると左側のアイテムビューに追加される。
↑で選択された状態で下の方のプロパティを見るとその中にビジョンデータの記録という項目があるのでそれを選択しfalseになってる場合はtrueに変更する。
その後アイテムビューでロボットボディアイテムを選択し、ファイル→新規→センサ可視化を選択し、SensorVisualizerItemを追加する。
アイテムを追加後、SensorVisualizerのツリーを開きその中から可視化したいセンサーのチェックボックスを入れる。今回はVelodyneを可視化したいため選択する。これで準備はOK。
3. シミュレーション開始
上タブのシミュレーション開始のボタンを押すとシミュレーションが開始され、点群がシーンビューにて可視化される。
補足
GLVisionSimulatorアイテムでビジョンデータの記録をtrueにしてると毎フレームごとのセンサデータ情報を記録するようで、カメラやその他センサをもりもり積んでいるとメモリ消費が多くなり、処理が重くなってしまうかもしれないので注意(私の環境では少し放置していたらchoreonoidが落ちた)。普段のシミュレーションではfalseにしておく。
(GLVisionSimulatorに関する項目はこちらからhttps://choreonoid.org/ja/manuals/latest/simulation/vision-simulation.html)
あと今だとROSのプラグインを用いてROS側でもデータ見れるのでそちらでも良いと思う。下にchoreonoidとrosプラグインの環境を構築するreposファイルおいたのでぜひ。
https://github.com/RyuYamamoto/choreonoid_ros_setup