open-rdc / orne-box

Platform hardware for autonomous robot
BSD 2-Clause "Simplified" License
25 stars 20 forks source link

IMUのキャリブレーションの検証 #74

Closed Mochizuki12 closed 9 months ago

Mochizuki12 commented 1 year ago

静止時にIMUのZ軸回転のドリフトが原因でロボットの姿勢が回転する問題があったため,ADI_IMU_TR_Driver_ROS1のキャリブレーション機能を使用してキャリブレーションを行う.現在はこちらのキャリブレーション機能を使用している

過去120秒のデータを使用してキャリブレーションを行うため,120秒間静止させてからserviceをコールするとキャリブレーションを行える. 以下に現在のキャリブレーションを行う手順を示す.

1.script_orneの中にある, imu_calibration.shを実行. 2.120秒のカウントが始まるのでその間ロボットを動かさない. 3.calibration doneとの表示が出たらキャリブレーション完了.

以上の手順でキャリブレーションを行うことができる. ただし,box2の電源を落とすとキャリブレーションがリセットされるので,電源を入れたら毎回おこなう必要がある.

動画

IMUのROS 1パッケージ https://github.com/technoroad/ADI_IMU_TR_Driver_ROS1

コールするservice

$ rosservice call /imu/cmd_srv "cmd: 'START_BIAS_CORRECTION'
args:
- ''"
Mochizuki12 commented 1 year ago

また,adi_driverのキャリブレーション機能を使用した結果を以下示す. 現在のbox2のjetsonの環境ではadi_driverは使用できなかった .他のPCでは動作確認済み(melodic, noetic).

adi_driverは過去40秒のデータを使用してキャリブレーションを行う.40秒間静止させてからserviceをコールするとキャリブレーションを行える. ただし,box2の電源を落とすとキャリブレーションがリセットされるので,電源を入れたら毎回おこなう必要がある.

以下に実行した動画のURLを添付する. キャリブレーション検証の動画

使用したROS 1パッケージ https://github.com/tork-a/adi_driver

コールするservice

rosservice call /imu/bias_estimate
Mochizuki12 commented 9 months ago

IMUのキャリブレーションの効果を18階を1周した時のオドメトリとIMUで補正したオドメトリを表示して確認した. 現在のシステムでは,オドメトリのデータは,オドメトリの生データである odom とIMUのデータでオドメトリを補正した odometry_filteredの2種類がある.

1.odom

odom_no_filter_before1

2.キャリブレーション前のodometry_filtered

odom_filtered_no_calib_before1

3.キャリブレーション後のodometry_filtered

odom_filtered_calib_before1

キャリブレーション前は閉じていなかったが,キャリブレーション後はループが閉じているため,キャリブレーションの効果があることがわかった.

yasuohayashibara commented 9 months ago

@Mochizuki12 Yuya Mochizuki つくばチャレンジも終了したのでissueを閉じてください.

yasuohayashibara commented 9 months ago

以下,データとして追加しておく. つくばチャレンジでのオドメトリの値

Screenshot from 2023-11-20 20-37-45

ちなみに,IMUを利用していないORNE-box3は以下のような感じ

Screenshot from 2023-11-20 20-40-30