おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回はルンバ実機とGazeboシミュレーターのオドメトリ情報を比較してみましたが、今回はオドメトリ(Odometry)情報を使用して正確な正方形の動きにチャレンジしてみます。
まずはトラブルシューティングから
少し前から新たなメンバーが加わり、Raspberry Pi 4にROSとGazeboシミュレーターのインストールにチャレンジしています。メンバーで作成した手順に基づき作業を進めていましたが、どうしても亀が出てこないそうです。確認したところ肝心のROSがインストールできていませんでした。再度確認しながら途中のエラーを解決していき、ようやく亀が動くようになりました。その瞬間みんなで拍手です。
オドメトリ情報を使って正方形に動かすには
オドメトリ情報を使ってROSで正方形で動かす記事を検索したところ以下のサイトがみつかりました。
- 毎日がロボット勉強会 四角形に沿って移動する nav_square.py を見てみる
nav_square.pyのソース解説を行っていますが、どうもソース全体は掲載されていないようです。GitHubで検索したところ、オリジナルと思われるものがみつかりました。こちらpi_robotのプロジェクトの成果物のようです。
このソースを眺めているとロジックが見えてきました。今使用しているプログラムと大きく構造がちがうので、アルゴリズムを流用させていただき、これまでのプログラムに組み込みました。
これをGazeboシミュレータで確認するとかなり正確な正方形を描いてくれました。
ルンバ実機で正方形に動かす
ルンバ実機で同じプログラムを動かしましたが、なぜか回転が180度になってしまい、往復運動の動きになってしまいました。
そのためプログラム中のパラメタで90度の回転角度を半分の45度にして調整しました。これである程度正確に動くようになりました。
なぜ倍の動きをするのかはいまのところ不明です。このため、流れているROSトピックをrosbagで記録をしておき、後で解析してみることにしました。
LIDIRのデモ
そろそろ次のことに取り組みたく、以前から気になっていたRPLIDAR A1M8を購入して動かしてみました。これを使うと周囲の物体までの距離や方向の情報が取得できます。
以下の記事を参考にして実験しました。
- HARD2021:とってもリーズナブルなLIDAR。RPLIDAR A1M8を使おう!(第2回補講) (demura.net)
この画面キャプチャは自宅で撮ったものですが、物の位置や動きがみえます。これをルンバに搭載して自律走行をしてみたいと考えています。
ルンバ実装フレームの検討
LIDIRの記事をみていたところ、ルンバに実装するためのフレームの記事を見つけました。これを使えば便利そうです。
- Roomblock(5): 3Dプリンタで出力可能なフレーム構造 (Tokyo Opensource Robotics Kyokai)
こちらはおおたfabさんの3Dプリンタで試作をしてみることになりました。こちらも楽しみです。
まとめ
課題は残るものの基本的な動きはPythonで書けるようになってきました。デバック情報で課題の原因をさぐりながら、LIDARとの組み合わせや3Dプリンタでのフレーム製作など新たな方面にも取り組んでいきます。