最短走行の行きで変な走りをしてしまう部分は解決しましたね!!やったー!ただ、帰りで今度は以前見た「最低速度でぶるぶると走る」現象が起きています。違うコースでも試してみます。帰り道でぶるぶるしてしまいます。本質を見失っていたかもしれないですw上記の条件にすれば、行きでも帰りでもこうなりました。yukaこんにちは!なんだかまだ今日ものどが痛い松崎です。周りでも夏の終わりかけのこの時期に風邪を引いている人が多いので、みなさんもお気をつけください。)さて、壁切れ補正の実装に取り組んだ結果難しくなってきたマイクロマウス研修です。今日の目標は、昨日の研修を踏まえて、うまく実装できていなかった壁切れ補正をちゃんと書き直す以下の図のようなコース、両側に壁がない場合も壁の切れ目をきちんと読めるようにするの2つです。今日は壁切れ補正をするようにプログラムを書き換えてみました。※昨日のブログは→こちら以下の通りに、if文の中にwhile文を入れて書き直しました。これで、壁を見て走行を補正するプログラムにはなりました。プログラム上では本日の目標1は達成のようです♪イエイ!これで一度走ってみます。ムム、やはり両側に壁がない場合に変な動きをしてしまっていますね。ちなみにこれは何度もやると、うまくちゃんと曲がってくれるときもありますし、斜めに曲がる方向が右だったり左だったりもします。これに対してのり先生に相談して立てた原因の仮説が、この図の場合に、AやBの壁を見て姿勢を補正してしまっているのではないか?というもの。プログラムに問題があるようには思えません。いう場合、よく実際にコースにマウスを置いて順にプログラムを確認するとイメージが湧きます。今回もそのように実際にプログラムを追ってみます。2区画以上走る場合というif文に入り、停止する地点の一区画前まで走ります。停止する地点の一区画前まで来た時点で、左右の壁の状態によってその後の処理を振り分けます。右壁がある場合→壁がきれるまで走って、壁が切れたと認識した地点からあらかじめ指定したパラメータ分進み、止まります。左壁がある場合→壁がきれるまで走って、壁が切れたと認識した地点からあらかじめ指定したパラメータ分進み、止まります。それ以外の場合→壁の切れ目は一切気にせずとにかくまたもう一区画走り、止まります。どんな状況でも、わたしの思う場所で止まって、次の処理である超信地旋回に移るはず!!!だよ!!!Genieちゃん!!!ちなみに、今回壁切れ補正を実装しようと書き足した部分をコメントアウトして走らせると、同じコースを何度でも問題なく走ります。どこか書き足した部分に問題があるということなのです。ひええ、、まったくアイディアが湧きません...。履修していない物理を勉強しようかな~と思い買ってみました。yukaこんにちは~一晩中扇風機を付けっぱなしにして寝ていたら、ちょっと喉を痛めてしまったようです...。クーラーか、扇風機か...どちらが快適なんでしょう~。今日も昨日に引き続き、壁切れ補正のプログラムを書いて試していきます。帰り道の「2区画以上左折時」に、「最低速度で律儀に走る」モードに入ってしまいました...。それを克服するために、以下のようなプログラムを書いてみました。if」を使って、左壁がある場合の処理も足してあげてみた次第です。すると、こうなりました。if」を覚えたwそこでのり先生に自慢しに行ったところ...のり先生「壁があればこれでいいけど、もし柱しかなかったら...?」といわれてしまいました!いろいろな場合を考えていかなる状況でも確実に動作するプログラムを作らなければならない。いうことで、こんな風に修整してみました。このプログラムで試走したらこんな感じになりました。昨日の変な動きをプログラムで回避したものの、なんと!壁切れさえもなくしてしまっていたのでしたw最初にコピペしたプログラムをご覧ください...。昨日まではwhile文で一定位置まで走って、壁切れを読んでからさらに一定区間走るという方法で壁切れ補正をしました。(右に壁があるうちは走って、なくなったところをきっかけに...という感じ。)今日はそのwhile文をif文にしてしまったので、壁切れ補正ではなくなっちゃったのです...(;_;)(もし右壁があったら...なので、壁の切れ目は見ていない!)独り立ち一日目にしてミスorzのり先生に爆笑された...orzうーん...。満足のいくプログラムを書くことは難しいですね。実際にどのようにプログラムが走ってそのような動きをしているのかをちゃんと理解してあげることが大切ですね。本日も壁切れのプログラムを書いては試し、書いては試していきます。※おさらい松崎は、最短走行時に2区画以上走って右折する場合のみ壁切れ補正をするプログラムを書きたいと思っています。前回までに、「停止する一区間前までは通常走行し、壁の切れ目がなくなったら、モーターのカウントをリセットして任意の距離を走り超信地旋回する」という意図でプログラムを書きました。(残念ながら”意図”に終わっています;_;)本日も、のり先生とプログラムをじっくり見ながらトライアンドエラーです。※前回書いてみたstraight_for_fastの全体のプログラムはこちらのブログをご覧ください。今日最初に試したのはこれ。文の中でモータのカウントをストップさせる2行をコメントアウトしてみたのです。