SI2013の発表

先日、SI2013(計測自動制御学会)が神戸で行われました。
僕は、その中のRTミドルウェアコンテストのセッションで発表しました。
発表自体は非常に楽しく行わせていただいて、神戸も十分満喫できました。


今回マニピュレータ(OROCHI)を初めて本格的に扱うことになり、非常に楽しかったです。
やっぱり大型のロボットは迫力が違います。


今回は、RTミドルウェアの枠組みを使うにあたって、初めて本格的にPythonでプログラムを作りました。
いや、オブジェクト指向とかマジで分からなかったよ。(いまだ分からないこと多いけど)
GUIは、Python標準で付いているTKinterを使いました。
これは、プログラムを配布することが求められたので、なるべく追加のライブラリは使いたくないなぁと思ったからです。
PythonGUIを作ることがあったらたぶんPyQtを使います。そっちのほうがはるかに融通が利くと思います。


でも、周りの人たちからたくさん助けていただいてなんとか乗り切りました。


このOROCHIは、NEDO次世代ロボット標準化プロジェクトで定めたインターフェースに準じていて、
この枠組みでプログラムを作った、というか、APIがすでにあったので、非常に簡単に動かすことが出来ました。


ということで、成果物です。


http://www.openrtm.org/openrtm/ja/project/contest2013_1B3-6


じつはまだこれ絡みの作業が終わっていないので、これからまだまだ手を加えないといけないのですが、
年末年始は少し休ませていただきたいな〜と。。。


就職活動もやらないといけないですし、もうすでに手遅れな企業もちらほら。。。orz

全国大会直前

さて、全国大会までもうあと何日も無い中、あまりマイクロマウスに触れられていない状態です。
非常にまずい。。。

ということで、先日取った動画をなぜか編集しました。

とまぁ、斜め走行に関しては、実はゴール処理が適当です。

最後のパラメータだけ乗っけます。
accel = 16000mm/s/s
max_speed = 3000mm/s
sla90 = 1400mm/s
sla45_sp = 1100mm/s
sla135_sp = 1100mm/s
sla_vturn_sp = 900mm/s


走らせたあとに、パラメータの確認をして、え!?ってなりました。

それよりも安定性を高めないとダメですね。なにやってるんだか。。。。

機体の性能を探ってみる

いや、素直に探索とか入れて早くマイクロマウスとして成立させろよという感じですが、
モータに対するだいぶ安直なフィードフォワード項(前作の磁定数を弄っただけ)を入れ、
さらにタイヤとピニオンギアの干渉を除いてあげたら、
わりといい感じになったので、機体の限界値を知りたくなったのです。

そういう時ってあるよね〜(いつもorz)


ということで、結構無茶させました。

加速:20m/s/s
目標速度:5m/s

で6区画走らせたらこんなログが取れました。

トルクが足りていなさそうな雰囲気は出ていない。
あと、この加速度で走らせても、ちょっと途中ふらつくがちゃんと直進で走る。(4輪の直進性能マジですごい)
(直進中のジャイロ補正はまだ入れていない。改善の余地あり。)


しかし、気になる点が3つある。

1.なぜ終端速度が0になっていない?目標値でそうなっていないのはおかしい。
2.なぜしばらく実速度が0になっている?曲がりなりにもフィードフォワード項入れているんだから。。。
3.ここのグラフではdutyがどうなっているのかが分からないが、ログとして吐き出されなかった。
 (dutyは0だと言い張っている)


という不可解な点が実はこれ以外にもいくつかあって、それぞれバグなので今後直さなければいけないものが見え始めた。
実は1の問題については前作のマウスから持ち込んだバグというのはすでに分かっている。対処せねば。
物理量の計算がどこか間違っていると思われる。


じつは機体性能は割と良さげということが判明してちょっと安心しているが、
そのおかげで、自分のプログラムがいかにダメかが浮き彫りになってちょっと悲しい。
それでもプログラムしないと走らないから頑張るけど。。。


そういえば学生大会に登録したので、皆さんよろしく。
後輩に負けないように頑張ります。。。
(斜め走行のプログラム、実はまだバグだらけで実用できませんので。。。)

BlenderでMMDモデルをレンダリングしてみる

はい、今回はまったくロボットと関係ありませんね。
マイクロマウスのシーズン中に何をやってるんだか。。。まったく。。。


前々から3Dモデルを弄ってみたいな〜と思っていて、ちょっと熱が入ってしまいました。
今回はMMDのモデルをBlenderに導入してCyclesレンダラを使って時間を掛けてレンダリングしました。

いくつかソフトの候補があったのですが、今回は調べたらすぐに出てきたBlenderでやってみることにしました。
もともとソフト入ってたし。。。


ここのページがありがたい情報をたくさん載せています。
http://seiga.nicovideo.jp/seiga/im2951328?comment_page=1


ありがたやーありがたや。


ということでこんなの出来ました。

MMDから持ってきたモデルをそのままレンダリングしました。
モデルは参考にしたサイトにあったTda改変ミク JKStyleそのままです。

リアルタイムレンダリングではないので時間を掛ければかなり綺麗にできますね。
(ちなみにこの画像をレンダリングするのにノートパソコンで25分掛かりました。
この画質で30fpsでアニメーション作ろうと思うとやばいですね)
MMDモデルがこんなに可愛くなるのなら、バックグラウンドもきちんとそろえて、
いい感じのシチュエーションを作りたいですよね。


本当はGUMIでやりたかったのですが、顔下半分が真っ黒になって怖い感じになりました。
何でだろう。あと、足がおかしいですね。

おそらくマテリアルに割り振られてるテクスチャがうまく設定できてないのではないかと思っています。


Blenderではpmx形式のモデルが読み込めるんですが、うまく読み込めないモデルもあります。
そに子とTda改変Gumiは読み込めませんでした。
なんかどこか変換ソフトとか経由させるとうまく行くんじゃないかと淡い期待を抱いています。


pmx形式のモデルは割と最近のものらしく、過去のデータがBlenderに読み込めないのが残念です。
追記:pmxエディタを使ってpmdファイルをpmxファイルに変換してBlenderに読み込めました。
たまたま出来ただけかもしれませんが。。。。


今回はBlenderMMDの良い勉強になりました。もっと使いこなしたいです。

スラロームまで実装できた

東北大会でマウサーの皆さん頑張っていたことですし、僕もそろそろきちんと走らせにゃと。

ですので、今日は主にモータ制御のほうを頑張って移植してました。
いやーモータのフィードバックゲインを決めるのに、走行中のログを取るのは大事ですね。
ログ取って無かったら原因も分からず走れないなんて事になってました。


スラローム中の角速度のログはこんな感じです。


縦軸が角速度[rad/s]で、横軸が時間です。
このログは0.5m/sでターンしているときのログです。

ジャイロからのフィードバックをしていないとずいぶんずれていることが分かります。
それにしても変則四輪(スキッドステアタイプ)は曲がりづらい。

まだゲインを調整仕切れていないのでこんなもんでしょう。


一応速度上げて走らせて見ました。こんな感じです。

加速度:10m/s/s
ターン速度:1m/s


これから探索アルゴリズムをガッツリ移植します。

マイクロマウス東日本大会参加して来ました。

さてさて、今日はマイクロマウス東日本大会が九段下にある科学技術館で行なわれました。
(写真撮ってくるのを完全に失念しました。)


自分は参加登録時点で、走れないことがわかっていたので、サーキット競技にしかエントリーしていませんでした。
それですら走れなかったのですが。。。


去年ブランクがあったので、大会の感覚は久しぶりでした。
毎回大会に行くと非常に良い刺激があり、新しい知見などを養えるためすごく楽しいです。
(やべぇなぁ〜まじで後輩に勝てる気がしない。。。。)


さて、モーターが駆動しないと先日ブログに書きましたが、やはりモータードライバの駆動電圧がLiPo1セルだと足りないということでした。
データシート見ても全然分からなくて苦労しましたが、UVLO(Under Voltage Lock Out) 6.5Vときちんと書いてありました。
なんだそれ。響きがめちゃめちゃかっこいいじゃん。


ということで、大会の帰りがけに秋葉を後輩と3人で全力疾走して閉店ギリギリのスーパーラジコンに駆け込んで2セルのLiPoを手に入れてきました。

というのも、HobbyKingに生のLiPoを発注しようと思ってたけど、7月あたりからずっと100mAh以下の生セルが在庫切れで、今回は断念して、ちょっと高いけどラジコンショップで買ってきました。


帰ってきてLiPo早速分解してコンパクトにしましたが。(危ないので初心者はあまりやらないでください


で、早速モーター駆動させたらうまく回りました!!


ということでハードウェアはこれで終わりです。


あとはどれだけソフトウェアを作りこめるか。

本業やらねば。。。


大会関係者の皆さま、お疲れ様でした。

マイクロマウス東日本大会前日

さて、明日はマイクロマウス東日本大会ですね。
ちなみに断っておきますが、明日は迷路壊しません。


というか、モーターがまだ動かないので物理的に無理です。


ということで、ここ一週間前後の俺のマウスの進歩状況。

1.モーターのシャフトがタイヤと若干干渉したので、モーターマウントとピニオンギアの削り直し
2.ADを割り込みで取得後、DMAでデータの転送、ポートの出力切り替えが出来るようになった
3.ジャイロの値がきちんと取れるようになった
4.1msの割り込みが出来る
5.磁気エンコーダのパルスを拾えるようになった
6.任意のピンからPWM出力が出来るようになった

というところ。

一番の問題点は、モーターが回らない。というかウンともスンとも言わない。
当然オシロでモーター出力見たけどだめ。


駆動電圧が低すぎて電流が流れないのか?


う〜ん。すげー悩んだけど、明日は走れないので、観客者として楽しもうと思います。

後輩のマウスがビュンビュン走っている動画を見て、あぁ、もう後輩には勝てないんだなって思った次第です。


以上、参加する方頑張ってください。