読者です 読者をやめる 読者になる 読者になる

ロボコニストの技術日記

知見や技術を備忘録として書こうかな

九州大会に行ってきた

おはこんばんちはひふみです。

 

今回は先週に引き続き九州大会に行ってきました。

今は福岡空港でのんびりしています。

 

九州遠征では沢山観光しちゃいました。やっぱりMiceですね。

合宿みたいで楽しかったです。

 

さてさて、雑談もさておき、忘れない内に今回の大会の反省点と中部、学生に向けた目標を書いていきます。

今回は大きく反省するべき点はありませんが、強いて言うと、GOAL後にMTUが切れていないような挙動をしてしまうバグを最終的に直せなかった点です。

九州大会の迷路では大きく影響しませんでしたが、今後帰り最短等行う際に死ぬ原因となりかねないので修正したいと思います。(・・・途中で死なれると取りに行くのめんどくさいんですよね。)

あと、最短でのフェイルセーフが入らない。。。?なんででしょうね。困った。これも次までに直します。

 

反省点もこんな所にしておいて、本題の今回の成績です(あんまり覚えていないので、ふわっとした情報だけ書いておきます)。

1.探索(29秒79、パラメーター:最高速0.45m/s, 加速度2.0m/ss, 減速度4.0m/ss)、帰り重ね成功

2.最短(大回り90onlyパラメーター:最高速1.8m/s, 加速度2.8m/ss, 減速度2.8m/ss)失敗。開始直後に脱調。

3.最短(大回り90only、パラメーター:最高速1.5m/s, 加速度2.3m/ss, 減速度2.8m/ss)成功。14秒59

4.最短(大回り90onlyパラメーター:最高速1.8m/s, 加速度2.8m/ss, 減速度2.8m/ss)失敗。開始直後に脱調。

5.最短(大回り90onlyパラメーター:最高速1.8m/s, 加速度2.8m/ss, 減速度2.8m/ss、14秒40)成功。嬉しい。

 

こうして見るともう一つ反省点(改善点)がありましたね。

脱調問題についてです。割りと軽く脱調してしまうので、ハードを強く見直してみたいと思います。

 

と、いうのが今回の結果ですかね。

今後の予定としては、

1.脱調問題の解決(2016/10/17:解決済み(ハードエラー←半田量不足))

2.GOAL後のバグ解決

3.最短でのフェイルセーフ導入

4.帰り最短の導入

5.大回りターン(180°)の調整

6.古川法の導入(出来れば、未到達区間でも袋小路に入らない様な処理等を加えたい)

7.全体的な調整(袋小路でのずれ防止(壁制御オフ?、色々と考察が必要))

8.壁切れ(2016/10/17追加)

を今週の目標として頑張っていきます。

学生大会までは、探索を安定させることを目標にします。

 

って感じで、言うてる間に時間も近付いてきたので終わりにしたいと思います。

 

九州楽しかったな。また来年来たい人が居れば行きたいですね。

 

それでは長々とお読み頂きありがとうございました。

しーゆー九州!

 

追記(2016/10/18):思っていたよりやらないといけないことが多いので、のんびりと色々やっていきます。学生大会までにこれに加えて斜め入れたいです。

何か色々と反省した話 ~直進台形加速編~

おはこんばんちはひふみです。

 

台形加速。当然こんなものはスラローム最短を終わらせているなら完成しているものですよね。はい。

ワタクシの「hihumint!」君はですね。台形加速出来てませんでした。

hihumint!君は、台形加速を時間ベースで行っておりました。

それが原因ではないと思うのですが、何が原因かわからなくなってきた上に距離ベースは30分で書けるという噂を信じて、眠たい中昨晩、式を適当に導いて今日実装しました。

 

めっちゃきれいに動きましたね!!!!!!!!

 

どうもありがとうございました。

さようなら台形加速にかけた夏休み。

さようなら台形加速のバグに気付けず最短アルゴリズムを見直した東北大会の24時~30時。お前たちを許しはせんからな。

 

という訳で、最短ビンビンに決めれ。。。。。ると思ったのですが、やはり脱調しやすい?のかしらん。まぁ色々試してみたいと思います。壁制御強すぎるのかもなぁ。

 

あ、折角台形加速作り直すのに何も進歩してないのは嫌なので、加速度減速度を引数として持てるようにしました。減速度4.0m/ssで動かしても特に問題なさそう。でもスリップが辛そう?やってる人少ないっぽいので色々試して結果を記したいと思います。

 

こんな所ですかね。今後はとりあえず、探索、最短共に成長させていきたいと思います。小回りスラロームに大きなずれがあるっぽいので、単位系の見直しとかもしときます。

それでは以上!毎度ながらの長文でしたがここまでお読み頂きありがとうございました。

東北大会直後

おはこんばんちはひふみです。

今回は、「hihumint!」くんの東北大会第29回大会の結果と今後について書きたいと思います。

 

まずは、今大会の成績と自己分析から。

 

第1走:探索走行(小回りスラ、27秒075)、復路探索(小ス)成功

第2走:最短走行(小ス、1.2m/s,2.0m/ss)スタート後直線のバグにより失敗

第3走:探索走行(小ス、27秒100)、復路探索(小ス)成功

第4走:最短走行(小ス、1.0m/s,2.0m/ss、14秒520)成功

第5走:最短走行(小ス、1.2m/s,2.0m/ss、14秒194)成功

 

こんな感じの成績でした。

迷路自体は簡単で、バグさえなければ恐らくもっと上のパラメータでも走れたのでしょう。

第1走と第3走の探索走行に0.025秒の誤差があるのが少し気になりますが、初期位置で機体速度等がずれていたのかなと思います。

ちなみに、最短ミス後に探索をやり直しているのは、最短で死んだ時、フェイルセーフを入れていなかったため、つい癖でリセットボタンを押してしまったからです。

今は、サマーギフトくんに教わったフェイルセーフを導入して探索、最短時失敗の際すぐ停止、迷路情報の復元、等々を行えるようにしました。

そして、第2走で死んだ原因ですが、これは恐らく大会前日に台形加速のバグを消すために消したプログラムが原因だと考えています。部室の迷路部屋では動いていた動作ですので、月曜日にしっかりと原因について考え、修正したいと思います。

ちなみにこのバグというのは、停止時から短直線を走ろうとするときに生じるものです。そして、今色々考えた結果、時間ベースの台形加速は場合分けが難しく、距離に差異が生じやすいため、距離ベースに変更したほうがいいのかな、と感じました。実際、スラロームで物理量ベースの書き方は学んでいるので、変更は容易いはずですし、もしかしたらそちらに直すかもしれません。

 

第4走は普通にきれいに最短してくれました。ここまで分かることは探索、最短アルゴリズムともに16×16でのバグが(恐らく)ないということですね。嬉しいです。

そして、第5走は、第2走と同じパラメータなのですが、hihumint!くんをスタート区画のギリギリまで下げて走りすぎてしまうバグを物理的に修正しました。スタート後の直線を抜けてしまえば大きなバグはないのでいけると確信してました。

 

とまぁ、そんなこんなで僕の出走は終わってしまいました。悔いが無いかと言われれば嘘になってしまいますが、東日本大会からの反省や目標はすべて達しましたし、個人的には満足しています。

 

楽しかったですしね。徹夜調整。w

 

長くなってしまいますが、次に九州大会に向けての目標を軽く書いて終わりにしたいと思います。

 

1つ目:台形加速関数のバグ探し、または大幅作り変え

こいつが中々厄介。。。頑張ろう。月曜日~金曜日にかけて。

2つ目:大回り90ターンと180ターンの実装を月曜日に行う。調整は適当に頑張ります。

3つ目:フェイルセーフの動作チェック。ここらへんは1つ目をやってる最中に出来るかと思う。

4つ目:九州大会はエキスパートクラスとしての出場となるので、安定した探索が出来るように小技を追加していきたいと思います。

5つ目:色んな調整をする!

6つ目:励磁のタイミングを馬鹿にされないようにする!!!

 

以上!それでは、また大会直前直後何れかにブログ書きます。東北大会はまだ終わってません(お家に帰るまでが遠足)が、東北大会お疲れ様でした。

東北大会直前

おはこんばんちわ。ひふみです。

東日本からなんだかよく分からないけどがむしゃらに頑張ってきました。

東北大会での目標はスラローム最短です。
最速パラメーターとか決めときたいですね。

東北大会の試走会でやることをまとめときたいのでブログ書きました。

まず1つに、最短のバグを直すこと。
これは、僕の最短は未知区間にも行ってしまうので、それの修理です。プログラム自体は書いてるので、出来れば出発前に直(確認)したいとも。

2つに、スラロームの調整です。
スラローム自体はできたので、色々と調整したいです。これは完全に試走会場で行うことになりそう。

3つめ、スラロームを探索に組み込むことです。これは正直すぐ出来る。次がバグを産んじゃいそうで怖い。

4つめ、スラロームを最短に組み込まないといけない。最短のパスにスラローム入れて速度とかでバグが出なければいいけど。

5つめ、直進2.0m/s近辺からのスラロームでバグが生じます、折角速度出せるのにこれでは意味がない。出来れば東北までに直したい。

最後、いろんな調整。やっぱり袋小路から出るときとかにずれる。ずれる。ずれる。良くない。探索すらできない可能性も。


終わり。電磁気のテスト始まるので頑張ってきます。

東日本大会を終えて

おはこんばんちはひふみです

 

随分とブログを書くのが久しぶりな気がします。

理由はただ一つ、書いてる暇があるなら開発したい。サボりたい。課題したい。みたいな妥当な理由です。

 

今回は(一応)初大会なので、色々と新しい発見や進捗、後悔、反省等々とありました。開発してるだけでは味わえないことばかりですね。

 

まず、ご存知?の通り、 hihumint! のメイン基板が水曜日にお亡くなり。

修理しろよって言われましたが、UEWでつぎはぎしてきたみんと君をこのまま生かしていいものかと悩み結局digikeyで発注かけました。土曜に届きました。日曜には動きました。

 

その動いたみんとをまずは午前中のクラシック直前、windowsの更新プログラムも入り無事死亡かと思いきや何とか復帰、ゴール座標を7,7に変更し、出走。

 

この時、事情を知る人の誰もが走るなんて思ってなかったんでしょうね。僕もです。

スタート区画を出たことも割りと奇跡なのに、完走までしてくれるとは。部室の4×4ですら危うかったのにな。まぁ、普段から調整ガバガバで怒られてた上に、当日完成の機体なので調整なんて出来てる訳もなく復路探索で死ぬ、重ね探索なんてもってのほかでした。まぁここまでは良かったのかな。

 

一番後悔というか、辛いなって個人的に感じたのはクォーター競技でした。

機体作るために徹夜したのとクラシック終わってしかも完走までしたので軽く燃え尽きてたんでしょうね、折角調整できる時間がたんまりあったのに調整もせずのんびりしてました。そのせいで重ね探索に入るためのプログラムのバグにも気付かないわ、当日製作でハードバグがないわけがないのに過信して何も確認せず動かしていたこと、これらの要点が重なってがばみんと君となってました。クォーターで重ねできなかったのは個人的に本当にショックでした。出来たから何になるわけでもないですが、出来ることを出来ずに帰るっていうのが嫌いなのでショックが大きかったのかなと今では思います。

 

あとは周りのフレッシュな人たちが常に1週間先に居て、タイムも凄かったので、純粋に悔しかったです。この悔しいって気持ちは次の東北大会にぶつけたいと思います。

 

あ、書くタイミングを失ってしまったけど、サーキットはマジで楽しかった。ただ微妙に速度出せないの気になるので原因究明っすね。

 

東日本大会のまとめとしては、進捗はたくさん出たものの、色々と詰めの甘さや自分の努力不足が痛感出来た、そんな大会だったと思います。

あと、先輩たち、特にFNDの走りは個人的にピカイチにカッコよかったなって思いました。ホモかな。

 

今日もまた長々と書いてしまいましたがこんな所で終わっておきます。

眠いし。悔しさ極まって部室行ってひたすらみんとと戯れたおかげで疲れが倍増したし。

それでは、次の記事でお会いしましょう。おやすみんと!

e2studioのC標準ライブラリの仕様について

お久しぶりおはこんちゃすひふみです!

 

今日は、かる~く標準ライブラリの読み込みについて簡単にお話したいと思います。

完全に備忘録なので、そこらへんよろしくぅ!

 

1.問題提起

math.hをインクルードしてもsqrtが使えない。

エラー内容は以下。

E0562310:Undefined external symbol "_sqrt" referenced in ".\src\motor.obj"

 

 

2.考えられ得る問題に対する原因

コンパイル時に定番の-lmが行われていない。

 

3.最終的な解決策

e2studioの設定でmath.hを使用可能とした。

その設定方法が今回の花。以下。

 

プロジェクト -> プロパティ -> C/C++ ビルド -> 設定 -> Standard Library -> 内容

 

を辿り、使いたい標準関数にチェックを入れる(math.hだけでなく他の関数も勿論そこで設定可)。これによりsqrtが使えるようになった。

 

以上!

 

しかしだ、

 

RX631の初期設定について(2) ~クロック設定の闇編~

こんばんちはひふみです。こんちゃ!

 

今日は、クロック設定についての話を簡単にしたいと思います。

なんで、CMTの後なの?って思われるかもしれませんが、僕自身まさかクロック設定がこんなにも大変なものだとは認識していなかった。。。

最後の最後は、え・・・、ここ・・・?っていう、簡単な見落としでした。

クロックの設定が出来たので恐らくMTUも出来ているのですが、如何せん回路がおかしいのかステッパーが回りません。CMTで回そうとしても回らないので、このブログを書き終わり次第色々確認してみます。

 

さてさて、それでは本題です。今日はタイトルの通りクロック設定の闇についてです。実際、ブロック図通りに書けば動くのですが、そのためにプロテクト解除とか、使わない機能についても設定しないといけなかったりとか、予約ビットですら設定しないといけなかったりとかで、本当にめんどくさかったです。

悲しみ。そろそろ具体的な話をしていきましょうか。

まず、始めにしなければならないことは、レジスタライトプロテクション機能の解除です。僕みたいなアマチュアには罠でしかありませんでした。本来は、プログラムが暴走して、重要なレジスタを書き換えられないようにするためのプロテクト(保護)です。プロテクトレジスタ(以下PRCR)は、上位8bitがPRCキーコードビットと呼び、PRCRレジスタの書き換え可否を制御しています。PRCRレジスタを書き換える場合は、上位8bitを"A5h"とし、下位8bitに設定値を書き込む様です。例としては、

SYSTEM.PRCR.WORD=0xA501 ;

とかでしょうか。これが何を意味するかはデータシートで見てみてください。

さて、これがまずレジスタを叩く為の準備です。以上は今後も使うことになるので、よく調べておきましょう。レジスタ書き換え許可が終わり次第、書き込み禁止に設定しておきましょう。何かプロっぽくてかっこいい!

次の設定で、各クロック発振器を停止しておきましょう。動いている最中に設定は厳禁です。

そして、ようやっとブロック図通りの設定をしていく訳ですが、PLL停止ビットでPLLの動きを止めておきましょう。そして分周の設定、逓倍の設定の二つが終わり次第PLL停止ビットでPLLを許可してあげましょう。

次に、メインクロックを動作させてあげる(MOSCCR)わけなのですが、メインクロックが安定するまで少々お時間頂きたいので、for文か何かで"168h"ほど無駄時間を生成しておきましょう。何故かはかふぇルネで調べましょう(僕は知らない)。

はい。それでは、そろそろ動き出してくれます。200MHzは生成できています。これを各システムに分けていく訳ですが、当然1分周ではいけません。そのため、分周をシステムクロックコントロールレジスタ(SCKCR)で設定します。この時注意しなければならないことがありまして、データシートP.255 表9.1を見てみると、システムクロック以外は大抵50MHz(Max)となっています。従って、4分周以上の分周をしないといけないことになります。そこで、各システムのクロックを分周設定していきます。そしてクロックソースの設定(SCKCR3)をして終了。といきたいのですが、少し遡って罠があります(僕には罠だったけど強い人は罠じゃないだろうな、ハハハ)。おもむろにSCKCRのレジスタの説明を眺めてみます。普段であれば、予約ビットの欄には、"読むと“0”が読めます。書く場合、“0”としてください"みたいな文章が書かれています。ですがどうでしょう、SCKCRの下位8bitは"“0001b”を設定してください"と書かれているではありませんか!これは困りました!困りましたよ!一つ一つ設定するだけでは動かないのです!この"“0001b”を設定してください"を見逃していた僕は、クロックをまともに動かすことが出来ていなかったのです!なんということでしょう!この7月に入ってからあれやこれや悩んでいたことはすべて無駄なことだったのです!!"0001b”を設定してください"を見逃していたために!!!!

・・・取り乱しました。

要は、レジスタ丸ごと設定してくれと仰るのです(iodefine.hで自分で名称付けても良いのかもしれませんが)。今回は面倒なのでレジスタ丸ごと設定してやりましょう。例えば、

SYSTEM.SCKCR.LONG=0x~~~~11 ;

とかでしょうか。最後の11は0b00010001です。あとは適当な設定をしてあげれば動くと思います。LONGになっているのは、このレジスタが32bit長なので、深く気にすることはないですね。

とまぁこんな感じでクロック設定が終わりました。

およそ7月からプログラムを書いていますが、中々進捗出せないですね。悔しいです。今後も頑張っていきます。

 

それでは、日も跨いでしまったので以上としましょう。今回もお読み頂きありがとうございました。

 

おやすみんと!