前回に引き続きロボミントンの振り返りです。
Contents
センシング
ロボミントンで全自動を行うのに最低限必要なデータはたった2つです。
- ロボットの位置・姿勢
- シャトルの軌道
とまあ言うのは簡単ですが、これがなかなか難しいです。
ロボットの位置推定(Localization)
GitHubで公開しているプロジェクトのlaser2locationとdeadreckoningが位置推定に関するノードです。
Dead Reckoning
2011年のロイクラトン以降、学生ロボコンではエンコーダとジャイロセンサを用いたDead Reckoningが一般的になっています。
Dead Reckoningで取得できるのはあくまで相対的自己位置であり、絶対的自己位置を得るにはロボットの初期状態(位置・姿勢)を正確に指定する必要があります。
そのため、セッティングタイムで治具を使用して位置合わせをする大学が多く存在します。
また、取得できる相対位置のデータには誤差が含まれており、Dead Reckoningのみではこの誤差は修正できず、積算されてします。
つまり、長時間動作していると徐々に推定位置がズレていく問題があります。
従来のタイムアタック制の試合ではこの誤差は無視(あるいはハード的位置合わせで修正)できるものでしたが、ロボミントンには時間制限がありません。
また、サーブ前の調整時間は15秒しかなく、再度位置合わせをするのは難しいです。
そこで、Dead Reckoningと同時に、フィールドの周りにある木枠を検出することで、ロボットの絶対位置を求めることにしました。
使用したセンサは北陽電機の測域センサ(LRF)、UTM-30LXです。
木枠の高さは5cmしかないため、をロボットの足元、地面すれすれに設置しました。
LRFを用いた自己位置の計算
LRFを用いた自己位置推定で有名なのはSLAMですが、今回は使用しません。
木枠が長方形状に配置されている特徴を活かし、Hough変換を用いて木枠の直線検出を行うことでロボットの絶対座標を計算することにしました。
ハフ変換は、画像から直線や円を検出する為によく用いられるアルゴリズムです。
ハフ変換で検出した直線を用いて、
- フィールド左右の木枠に該当する直線との距離から、ロボットのX座標
- フィールド前後の木枠に該当する直線との距離から、ロボットのY座標
- 直線の傾きから、ロボットの傾き
をそれぞれ求めています。
データの統合
LRFで位置検出をする毎に、Dead Reckoningで推定した位置との相補フィルタでデータを統合しています。
https://youtu.be/mppzTzU5qcI
次回はシャトルの認識について記述しようと思います。
ロボットと電子工作とプログラミング!
女の子は甘いもので出来てる?