2018年8月28日火曜日

次は経路

今日はそんなに走らせる時間がなくざっくりですがマウスの様子を見ていっています。

まず、探索でミス発見しました。この前、壁の誤判定がきになる、と書きましたが、これがあまりに再現性が高いのであれ?と思ったらわかりました。誤判定というのは袋小路で無い壁があると判定して補正をしようとして待つ、という状況で分かるのですが、これは誤判定ではなく探索中に袋小路カットをしていたからでした。シミュレータ作った時点で処理時間を気にして入れていたのですが、正直クラシックではほとんど無くても変わらないので抜きました。

あとは高速域のゲインを見ていきました。とりあえずジャイロのゲインが前のがよく無いことがわかりました。今までなんかログとってもイマイチでこんなもんか、と思っていましたが、色々走らせていくうちに何となくどの辺が悪いかわかったので調整しました。だいぶ改善したと思います。
エンコーダのゲインは…もう少し最高速や加速度を上げて見てみようと思います。加速度もまだ目標としているあたりまであげるとフェールセーフがかかってしまいます。
壁制御もまだフラつきますね。ここのゲインは丁寧に詰めていかなければと思います。ついでに探索時の壁制御もかかりが悪かったので、少し調整して良くしました。

あとは探索中の壁切れに速度制限を設けました。ちょっと速すぎると遅れが生じるように見えました。今のところ判定はいい感じに見えます。

今日のところはそんな感じです。
今後のことをまとめると
・探索
大きな問題はなさそうですが、ジャイロのゲインは直さなければなのでそこを直した上でターン調整を、また、エンコーダのゲイン、壁制御のゲインはよく見たほうが良い気がします。
・サーキット
一応昨年(公式大会で使ったパラメータ)を超えたパラメータで走れることは確認できましたが、壁制御が怪しいです。あと壁切れまだ入れていないので入れたいです。
・最短走行
そろそろできるようにしたいです。

動きは日々良くなっている印象ですが、まだ修行が足りない部分があるのも確かです。頑張っていきたいですね。
とりあえず明日からは予定通り、経路導出アルゴリズムの完成を目指します。シミュレータは今月の完成が目標です。なんとか、うまくいって欲しいものですね。

今日はこの辺で。

2018年8月27日月曜日

そんなところに…

どうも、2投稿目ですね。
いやー、それが、結構わかりにくいけど致命的なバグを見つけました。

というのも、さっきブログ更新して、さて、ゲインの様子を見ていこうかなーと思ってマウスを直進させたら、挙動がおかしくて。高速直進させようとすると、止まらずに吹っ飛ぶ(暴れるわけではなく、脱力するような感じ)症状が出て、あれ?と思いました。
そしてログを取ってみると…なんと減速していない(減速開始タイミングに速度が一瞬で0になっている)…なん…だと!
ということでバグ取りです。嫌でしたがネイピア加減速が原因であることは確実だったので、一個一個式を見直してみました。でも、ミスがありません。結構?を続けて色々試行してみるもどっかの値の最適化ではないことも分かってきまして、それでも意地でにらめっこをしていたらようやく気付きました。

といってもこれが説明しにくくて。まず、バグが起こるのは、目標最高速に到達したらすぐに減速する直進動作をする際(台形加速だったら速度のグラフが三角形になるパターン)に起こります。この際、今年の加減速はネイピア数を用いた関数からそれを速度にするような感じで目標速度や加速度を出しているのですが、その際、横軸に時間を使うようにしています。で、その時間を使う際に加減速の始点がわかるようにフラグみたいなものを立てておくのですが、これが加減速共有にしていたのがまずかった原因でした。もちろん加減速が終了した時点でこのフラグはリセットするのですが、先程のパターンだと実は加減速が終了した判定が出ないようになってました。減速開始のタイミングを距離で見ていたため、加速途中(正確にはほとんど加速しきっているはず)で減速が開始しフラグが立ちっぱなしになる、そうすると横軸の時間もリセットされないから、ほぼ減速しきった時の速度に切り替わる、つまり減速しなくなる、というオチでした。

…自分でも読みたくなくないですね。まあ、複雑なものを作ろうとすると、細かいところが大事になっているというところですかね。いやしかし、これでもかなり短時間で見つかって良かったです。ということで、ゲインの調整は明日からです。

今日はこの辺で。

探索の近況

広い迷路で探索を見てみました。

既知区間加速の時に変更した壁切れ補正が悪かったみたいで、最初はよくわからない動きをされましたが、既知区間加速時とそうじゃない時で壁切れのパターンを変えたら解決しました。なんか何が起こっていたのかよくわかりませんが、まあ直ったようなのでとりあえず良しとしましょう。

あとはサーキットモードを実装しました。ただゲインの調整が甘いらしく、直進区画が長いとフェールセーフがかかります。これは高速域でのログを取ってみる必要がありますね。まあパラメータ的には旧作は上回れそう(まあ旧作は直進遅いですが…)な感触なので、今後の調整で乗りこなせるようにしたいですね。

探索の感想としては
・袋小路補正は良い
頼りすぎは良くないですが、なおせるのは嬉しいところです。
・既知区間加速はどうだろう?
まあ大きくずれるというわけではないですが、くしの区画を既知区間加速すると壁制御がほとんどかけられないので角度のずれがシビアになる印象です。
壁切れの遅延がないかも少し気になるところで、ちょっと検証しても良いかもですね。まあ大丈夫そうに見えますが。
・探索法に関して
全面探索ですが、時間はそこまで気にならない印象です。去年より探索速度を上げているのが要因の1つかなと思います。まあ少し回されますが、このまま走行の安定性をあげることを優先しようと思います。
・安定性
まだ壁の読み間違えや既知区間加速あたりが怪しいですね。そこそこ走りますが、補正による動きは過信し過ぎないことが賢明です。特に全面探索後に帰ってくる動作(未知区間壁入れ足立法既知区間加速入りだから、実質歩数小回り最短?)でのズレが目立ちますね。

まあそんなところですね。壁の閾値、高速時のゲイン、既知区間加速あたりを明日調整します。
明後日以降は経路導出アルゴリズムを書いていく予定です。

この記事はこの辺で。

2018年8月26日日曜日

袋小路補正実装

また暑いみたいですね。

マウスの方に、袋小路補正を実装しました。尻当てしないものです。前壁センサから回転方向と進行方向のずれを検出して制御する感じです。まあまあ時間がかかりましたが、やっていること自体は結構シンプルなので、実装自体はそこまで苦労せずに出来ました。
入れてみた感想としては、結構いいんじゃないかなという印象です。もちろん完璧に直らないことももありますが、かなり姿勢を戻してくれます。角度補正ができるのが嬉しいところですね。

探索で入れたいことは大体入れたと思うので、少し様子見ですね。小回りターンや袋小路後の距離など、もう少し詰めても良いかなという風に見えます。ターン前の前壁距離補正は、欲しくなったら入れます。
あとはサーキットのプログラムを入れてもいいなと思いました(学生大会で登録をして、存在を思い出しました)。
ぼちぼち経路導出もですかね。そろそろ最短もしたくなってきました。

今日はこの辺で。

2018年8月25日土曜日

既知区間加速完成

今月もあと1週間ですね。

マウスの方に、袋小路後の既知区間加速を導入しました。また、直進区間も1区画では加速しないことになっていたので、既知区画ならそこも加速するようにしました。

アルゴリズム自身はシミュレータで試していたので割とあっさり出来ましたが、別の部分で少し修正が必要でした。壁切れです。自分のマウスはこれまで探索中の壁切れは1区画ごと前提のものだったのですが、既知区間加速で走行する際はそこを変更する必要があります。壁切れを読んだ時点での距離からどこの区画か推定して壁切れするように変えました。これで既知区間加速時にも壁切れが読めるようになりました。
ただ、これでも進行方向に対してズレているのを減速時に判断できても減速しきれない、というパターンがありますね。まあ、前は読めなかったわけですからそれよりかは改善されたのは確かなので、とりあえず良しとしましょう。そのパターンが起きない(起きても動きに支障が出ないようにする)ように他の箇所をきっちり調整する、既知区間加速時の速度を適切にするなどが大事かな、と思っています。

袋小路壁補正も入れたかったですが、それはまた今度やります。

今日はこの辺で。

2018年8月24日金曜日

探索安定しました

ようやくマウスの動きが良くなってきました。

まあ色々怪しい動きをしていたマウスでしたが、原因は壁制御が大きかったみたいです。
去年の壁制御は、壁の値が急激に変化した場合、リファレンスをいじる+D項の制御を切る、みたいにしていたのですが、どうにも調整パラメータが多い上に全然安定しないので、そういう場合は、そこの制御を切るようにしました。
それと、壁制御のエラーでの補正がないと判断されても角速度がリセットされないパターンがあったようなので、そこを修正しました。
こうしたところ、見違えるほど動きが綺麗になり、全面探索も16*8で成功するようになりました。

また、壁切れにもミスがありました。少し説明しにくいですが、1個前の壁切れの情報が現在の壁切れに干渉するようなものでした。これを修正したところ壁切れも綺麗になりました。

さらに直進時に既知区間加速も実装しました。とりあえずアルゴリズムの方は正しく動いていそうです。ここでの速度は、要検証ですね。

他にも広い迷路で小回りターンを調整しました。

これで、探索の安定感はだいぶ増しました。良かったです。ようやく少しマウスらしくなってきました。

今の所気になる点は
・段差に弱い
たまにスカートが引っかかります。改善すべきな気がします。
・フェールセーフ(?)
たまによく分からない直進時とかにフェールセーフがかかってしまうことがあります。設定きつすぎかなと思い緩くしましたが、どうなんでしょう。
・探索のずれ
かなり安定しましたが、袋小路で補正ができればなーと思う瞬間が多いです。去年は尻当てでしたが、今年はセンサ補正にトライしようと思っています。
あとは細かい調整ですね。ターン時の前壁距離補正がいるのかはもう少し見てから考えます(補正は増やすとパラメータが増えるので気をつける必要があるかなと)。
・既知区間加速
180度からの直進動作でも行えることをシミュレータでは確認しているので、実装します。

とりあえずそんなところですかね。スカートを改善→既知区間加速追加→袋小路(止まった時?)センサ補正の順でやっていきましょうか。時間がありそうなら少し早めに経路導出の続きをして見ても良いかもですね。

今日はこの辺で。

2018年8月23日木曜日

色々改良中

色々手をつけてみています。

まず、経路導出の方を書き始めました。まだマップ展開の1/2がかけたくらいです。やはりパターンが結構多いので書くと時間がかかりますね。これは今月末に仕上げようと思っています。

マウス自身も、いくつか改良しています。
データフラッシュで迷路を保存できるようにしました。これで電源を落としても経路データを導けるので、結構便利だと思います。とりあえず探索中にゴールの入り口を見つけたらそこで迷路データを保存、その後全面探索を完了したと判断したら迷路を上書きするようにしてあります。
フェールセーフ後に色々出来るようにもしました。まだ書いたばっかりで自分自身どのモードでどの探索なのかデータ保存なのか覚えていませんが、そのうち覚えるでしょう。

マウスの調整も始めていまして、壁制御をパターンごとに調整したのと、壁切れを実装し調整しました。壁制御に関してはまあ吸い込まれや触れはおきていないで真ん中に戻るのでこんなもんかなーと。

今のところマウスの問題点というかやりたいことというかは
・既知区間加速
そろそろ実機に移していいかなーとおもいます。
・ズルっ
いやなんだよと突っ込みたくなるかもしれませんが、なんかたまーに、小回りターンでズルっと言ってターンが変になる時があります。ジャイロのゲインが高すぎたかなと思い(ログ上では追従しているようでしたが走らすと結構音が怪しい)減らしたところ症状収まりましたが、再発して欲しくないですね。少なくともピニオン滑りや接触不良ではなさそうなことも確認してあります。
・壁切れ不安定
特定のパターンが苦手みたいです。特に柱で壁切れするときにずれてしまうような。
・壁制御が怪しい(?)
先程まあこんなもんかなーと書きましたが、どうなんだろうという感じでして。というのは直進単体で試すと悪くなさげに見えるのですが、探索させるとなんか触れるように見えるのです。でも真ん中に戻っているようにも見えるから、単にターンでズレているのを補正しようとしているだけかもわかりません。
・前壁補正
もちもち3号には入っていないのですが、入れたほうが良いのでしょうかね。まあ壁切れの調整ができて必要だと思ったら、というところですかね。

まあざっとこんな感じですかね。やはりマウスの探索は基礎でありながら難しいなあと思います。
とりあえずここ数日は探索の調整、今月末に経路導出アルゴリズムを書き上げる計画です。どんどん走らせて、問題を減らしていきましょう。頑張ります。

今日はこの辺で。

2018年8月21日火曜日

調整開始

新ハードを動かしています。

とりあえず、センサの校正、モーターとジャイロのゲイン、小回りターンあたりは調整しました。ゲインはログを見て割ときっちり合わせ、小回りターンもまあとりあえず悪くなさげくらいには調整しました。
あと、全面探索の帰りにミスるバグは、スタート地点の北壁の処理を忘れていて袋小路カットされてしまい歩数マップが崩れるというミスでした。修正したところ、きちっと戻ってくるようになりました。マウスから壁情報を読み出させたら分かりました。

今の問題は壁制御です。壁制御って難しいですね。去年も言っていた気がします。今のコードが去年の使い回しで結構よくわからないので、そろそろ整理するべきな気がします。

壁制御の調整もそうですが、探索のアルゴリズムのバグが潰しきれたみたいなので、そろそろ経路導出アルゴリズムを完成させるのと、ROMに迷路データを保存できるようにするのと、あとはフェールセーフ後の動作を含む本番用のモード選択を作ることなどをやりたいところです。今のマウスはさすがにまだ調整不足でよくわからない動きをしていますが、とりあえずアルゴリズム系を完成させておいて調整のみの状況にしたいなあと思っています。

今日はこの辺で。

2018年8月20日月曜日

新ハード完成

とりあえず、新機体が完成しました。

回路にミスは…ミスというか直せなかったのが、ノイズです。結局コンデンサを外付けするはめになりました。近くにコンデンサ置いたのですが、なんか配線の引き回しが良くないみたいです。まあ、一応外付けしたら改善したので、よかったとしましょう。スイッチも直せたし。各ハードの動作も確認出来ました。

あとはスカートの方を面積を広くしたのとエア漏れが減るように構造を変更して、改善しました。前回の大体1.5倍くらい上がっているみたいです。これだけあれば十分かと思います。

さて、センサの校正をしなおさなければですね。

今日はこの辺で。

2018年8月15日水曜日

再開せねば

草の根から1カ月、前回の投稿から10日経ちましたね。お久しぶりです。

時間は過ぎたのですが、進捗はありません。色々とタスクがあって、隙間時間にやりくり出来ないかなとも思いましたがどうにもまとまった時間がないと難しく、時間が流れました。
そうこう言っているうちに基板も届きました。
タスクの方はおおむね目処が立ったので、そろそろ作業を再開しなければです。
どうにか今月中に
・新ハード完成
・経路導出やデータフラッシュの扱いなど、調整項目ではない一通りの完成
・探索を安定して走れるようにする
くらい出来たら良いなと思っていますが、なかなか大変そうだなーという感じです。特に探索の安定化、これが見極めとかが難しいのですよね。去年は探索失敗したので、環境に左右されず安定して探索ができるようにするのは今年の1つの課題でもあります。
後は旧作からは斜め走行の制御が改善出来る(というか旧作の斜め走行は結構不安定)と思っているので、これも課題ですね。少し先の話ですが。

まずは基板が届いたので改良版の製作から。経路導出をシミュレータで完成させて、機体の探索のバグ取り、後はセンサの校正もし直す必要がありますね。

とりあえず、手を動かしていきます。

今日はこの辺で。

2018年8月5日日曜日

部品集め

毎日暑いですね…。

ええと、とりあえず基板や部品を発注しました。ないと思っていたMPU-9250が未開封の新品があったり、あると思っていた青色LEDを使い切っていたりとありましたがひとまず後は部品が届くのを待つだけという状況です。
基板はもう結構再発注したので、今度こそ最後になりますように…いやほんと。ここで足止めを喰らわないで欲しいです。

今の機体も動くには動きますが、結局センサを再調整することになるので、経路導出やターンなど調整ではないところをやっていこうと思います。どうにかまとまった時間を作っていきたいですね。

今日はこの辺で。

2018年8月3日金曜日

まあまあ改善

一応走るようにはなりました。まだ動きが結構汚いですが。

主にターン、壁制御、壁切れあたりを再調整しました。壁切れに関しては斜め45度センサが使い勝手があまり良くないので、真横センサを使うようにしてみました。こっちの方が使い勝手が良いように感じています。
壁制御も前ほどはひどくなくなり、一応足立法往復くらいならまあまあ走るようになりました。たまーに全面も成功するかな、という感じです。

今の問題点としては、片方だけに壁がある時の壁制御が少し怪しいのと、壁切れがずれるときがあるように感じる(本当にそうかはまだちょっとわかりません)こと、が主に動きの部分で気になりますね。後は前壁補正とか姿勢が変な時の復帰動作とかも欲しいかもです。
アルゴリズム面では全面が終わった後に帰り探索をしようとすると壁に激突する動作をほぼ100%していてまたなんかバグを仕込んだように見えます。

地味にハードもやられていまして、今こんな感じです。


ノイズの件もあるので、これも含めて基板再発注かなーと思っています。正直この前の発注で最後かと思いましたが、ちょっと電源スイッチがこれなのは致命的なので仕方ないですかね。

経路導出とかターンの改良とか他にもやりたいことありますが、とりあえず基板と部品を発注してから、調整や新しいことをやっていこうかと思っています。

今日はこの辺で。

2018年8月1日水曜日

ようやく見つけた!

ようやっと探索の不思議な動きの訳がわかりました。

というのも、昨日なんとなく帰り探索を実装して、適当にテストしてみたところ、座標が1マス決まってずれる動きをしました。
この再現性の高さ…前もどこかで…と思い考えてみると綺麗な姿勢なのに壁読みをミスるような動作をするのも、決まった場所での再現性が異常に高かったような、と思い、共通点を考えてみました。
すると、3パターンほどあったのですが、全てマウスが西向きの時にのみその変な動きをしていることに気づきました。
ということで、方角関係の記述を探っていたところ、ついに見つけました。直進動作の際、もしも西だった時、と書いていたつもりが南になっていて、西を向いている時に直進しようとするとその動作がスキップされるという記述ミスがありました。そりゃ動くわけないですよね。

まあともかく、見つかって良かったです。
さて、これでそろそろゴール出来るようになるかな。というか、そろそろちゃんと走れるようになって欲しいですねー。

今日はこの辺で。