特に大したことはしてません笑(と、言ったら嘘になるのですが)
避難部屋アルゴリズムは2013年のときから大体は変わってませんが、レスキュー(特にレゴロボット)の中では標準的なものだと思っています。
とにかく図のように避難部屋の周りを回り続けます。
被災者がボールに変わってもこの方法を活用し続けました。
前方にボールがあればアームでつかんで取り込む。ロボットの横に物体があれば(距離センサーが反応したら)そっちを向いてまっすぐ動いてそれが障害物かボールかを検知する。避難場所が見つかれば安全策として常にボールをロボットから落とす動作をする。
このアルゴリズムは簡単でプログラムもしやすいしミスも少ないですが、とにかくハードをうまく作るのが大切です。
まず前方にボールが来たらそれを検知して持ち上げる必要があります。僕は通電でしましたが、なにか距離センサーとかでもいけそうな気はします。ボールが球体であることからこの辺は難しくなってきます。
ちゃんと壁と避難場所を認識するシステムも必要ですね。僕は避難場所が6cmなので6cm以上の場所にメインのバンパーを設置して、その下にもう一つタッチを設置しました。こうすることで、下のやつが反応したら避難場所だということがわかります。(タッチはマイクロスイッチを使用)
あとは、ちゃんと遠くにあるボールを認識するための距離センサーが必要です。僕は標準的な赤外線戦距離センサー(中距離)を使いました(DISTってよばれているやつですね)。ただ、センサー自体がでかいので、力技でセンサーの目の部分(SHAPRセンサー部)を外して地上から4cmくらいのところに設置しました。あまり床に近すぎると誤検知するし、離しすぎるとボールを見ないのでこの辺も面倒くさいです笑。
アルゴリズムっていいながらほとんどハードの話になりました笑(まあそれありきにアルゴリズムなので)
まあアルゴリズムでいうと、常に銀を読んでいたり(絶対に部屋から出ないために)、避難場所のどの 位置にいるかを記憶していたり、距離でミスらないために二度読みしていたりしてます。
~ 自作坂センサー ~
これはまずあまりおすすめしません笑 特にて加工で作るなら余計に
絶対に既製品の加速度センサーや水銀スイッチの方が性能がいいです。
まあ、当時はあまりI2Cの使い方とかよくわからなかったので、自作で行きました。
自作といっても本当に中学生の工作程度です。
ver 1.
これは2013年のレスキューで地区から世界まで使用しました。アルミに包まれている部分が2つあり、坂にロボットが乗ると重力で傾き接触します。なので通電センサーですね。
ver2.
写真がなかったので説明しにくいのですが、磨いた10円がたくさん入った箱です。箱自体が地上と平行になっていないのでもともと坂以外の時では反応しません。坂に乗ると箱がロボットと同じく傾いて、10円が2つの銅板を通電させます。
10円スイッチの方がうまくいった記憶がありますが、これも10回に一回くらいは反応しなかったので結構なクセものでした。いずれは振動とかで反応しますが、坂の下りは早く反応して欲しいので 2014年の全国からは加速度センサーに変更しました。
あー、あと自作の問題として1軸しか読めないのと、登り下りあるので2つ作らなければならないのが面倒です。
~ ジャイロセンサー ~
2015年からジャイロを変えたと指摘がありましたが、変えていません。ずっと赤い8角形のやつです。
正式名称は Absolute-IMU ACG とかでしたんね。日本だったらROBO-PRODUCTとかテクノロジアから購入できます。少し高いです。
センサー自体はジャイロ(3軸)と加速度(3軸)とコンパス(1軸)が入っている上ちっちゃいすごいはずのやつですが....
レスキューではあまり使い物になりません... 特に加速度とコンパスは無能です。2015年の全国では頑張ってこいつの加速度を使いましたが、色々と大変でした。プログラムで多くのフィルターを使って2度読み/3度読みすればなんとか使えるかなっていうレベルです。使えることはつかえますが、楽ではないです。
ジャイロに関してはある程度正確に回転してくれます。
とはいえ、これが正しい方法かどうかはわかりません。なんせ、これを使い出した2014年の世界大会前はジャイロ使うの初めてだったしその原理もよくわかっていなかったので。
プログラムはこんなんです。2015年の世界大会でも使いましたが、2014年に使ったままです。
もちろん最初にセンサーの設定とかセンサー起動とかしないといけないですが。
最後のintegral (int です)が角度になります。
絶対値の6000くらいが90だったことは覚えてますがその辺は調整したらすぐにわかります。
でも、性能は低くてMセンサーみたいにずれてもきっちり90度は曲がれません。そもそもレスキューラインでめっちゃ正確な90度はいらないと思っているので... 笑
まあ、ずれはなんとか壁とか使って補正しろってことですね笑
以上、part 1でした。