ラベル note の投稿を表示しています。 すべての投稿を表示
ラベル note の投稿を表示しています。 すべての投稿を表示

2016年11月26日土曜日

みんなのブックマーク2017年用

こじまうす12は基礎に立ち返ったことも含めてニューテクノロジー賞をいただいたので,パラメータを公開する.優勝機があれなのでよくわからなくなっているが,実は圧倒的に速くなっている.

下記の過去のパラメータたちも参照ください.リストは後で追加するかもしれない.

Parameters (2016)
KOJIMOUSE12
Final Official Record
Half-size
KOJIMOUSE12
Final Unofficial Record
Half-size
KOJIMOUSE12CL
Preliminary Official Record
Classic-size
Acceleration [m/s2]
(Straight)
10.0 12.0 9.0
Acceleration [m/s2]
(Diagonal)
10.0 10.0 9.0
Max. speed [m/s]
(Straight)
3.6 4.0 3.3
Max. speed [m/s]
(Diagonal)
3.2 3.5 3.0
45o turn [m/s] 1.05 1.12 1.43
90o turn [m/s] 1.05 1.12 1.43
90o turn [m/s]
(diag. to diag.)
0.76 0.81 1.02
135o turn [m/s] 0.79 0.84 1.04
180o turn [m/s] 0.81 0.86 1.09

クラシックについては感覚を失っており全然わからないが,ハーフサイズにおいては吸引機構を使わない4輪マウスには到底出せないターン速度を実現している.加速度こそ劣るが最高速は同等である.しかもハーフ決勝では斜めから斜めの90度大径ターンをさらりと(製作者本人はヒヤリとする)こなしている.気付いてましたか?速くて見えない?

2015年4月3日金曜日

フォトセンサ回路

最近Pi:Coのフォトセンサをうまく使えなくて試行錯誤している.

今日はフォトセンサ回路について考える.Pi:Coのフォトセンサ回路について書くのはあまりおもしろくないので,BasicMouseのフォトセンサ回路がいかにすぐれているかを考える.実は昔説明文章を書いたことがあるらしい.その説明が正しいかどうかは知らない.

今改めて考えると,すぐれているのは「強力パルス発光」と「ピークホールド機能」である.

前回はフォトセンサの特性に触れたが,これを考慮するとハイパスフィルタ付きのフォトセンサを外乱光のある場で使うと次の図のような出力が得られるだろう.すなわち,周囲の明るさと壁との距離(反射光の強さ)で立ち上がりの速さが決まり,壁との距離で出力の極大値が決まる.ハイパスフィルタの影響で初期値は0であり,立ち上がり遅れの後は時間とともに出力が低下する.

この場合,外乱光の影響を避けるには,外乱光の強さに比べ十分強い反射光を得ること,出力のピーク値をA/D変換すればよいことがわかる.BasicMouseの回路は,パルス状にはLEDに5Vをそのままかけ大電流を流せるものの,定常的には電流が制限される比較的安全な構成になっている.そのため,ソフトウェアにバグによる回路破壊のリスクを避けつつ非常に強い発光をさせられる.また,ピークホールド回路のおかげで十分遅い時間にサンプリングすれば立ち上がり時間が多少異なっても影響を受けない.

知識のないときにはまねするしかないのでまねていたが,今思えば偉大であった.

2015年4月1日水曜日

Saturation of photo sensor

I put my photo sensor characteristics on the previous blog post. The curve shows that sensor output around 600 does not change with distance to wall. I have believed that this characteristics is caused by the geometry of emitter and detector because the parallel distance of them is relatively long.

When I wrote the answer in the comments, I came up with another possibility. Schematic of photo sensor response is shown below. In general, response of photo transistor is slow and it changes with light intensity. More intensity the received light is, faster the rising speed becomes.

When the sampling timing of A/D is set to B in the figure, A/D value is not affected by the response time. On the other hand, sampling is performed at timing A, A/D value is determined by the response speed. There is an advantage to sample at timing A, because saturation of current or output of opamp is avoidable owing to its low photo current. However, the response speed also saturates for very high intensity of light. This effect may cause the low sensitive curve in my photo sensor.

If this is true, the easiest solution is to change the value of register, but, anyway, I cannot change it by the rule for Pi:Co in this year.

2015年3月20日金曜日

フォトセンサ修正

前回のはそのコメントも含め不満が出始めたが,長くやっているとハードウェアの不備を修正する技術は嫌でも身につくわけで,ベストを尽くすために修正を試みた.

まず,機体後端が接地したときに前方が浮いてセンサ光が上向きになる問題を解決するために,後端のテフロンシートをかさ上げした.

つぎに,実はマニュアルにもぼそっと意味のとれない日本語で書いてあるが,フォトセンサ用赤色LEDを基板と並行ではなく,下方に向けた.

さらに,壁切れを区画中央くらいで検出できるように横センサの水平方向の傾きを調整し,マニュアル通り前方センサは少し外側に開いた.シルクの位置なんて無視だ.

結果,まともに壁に光があたるようになった.

2015年3月9日月曜日

Linuxでシリアル通信

これを見て,ふと思い出したのでメモ.

LinuxでUSB-シリアル変換ケーブルを使うのは場合によっては非常に簡単である.FTDIのチップを使っていればUbuntuなどでははじめからドライバを持っているのでドライバのインストールという面倒な手順をスキップして挿すだけで使える.

かというと,実はそうでもなく,リンク先でも書かれているように一般ユーザには読み書き権限がない.Ubuntuの場合昔は普通に読み書きできたのだが,数年前のバージョンからできなくなったようだ.はじめにこの問題にぶつかったときは焦った.

結局chmodして権限付与すればよいわけだが,それよりも/dev/ttyUSB0などはdialoutグループでありグループに対しては読み書き権限があるので,自分をdialoutグループに入れるのがよいと思われる.例えば,kojimaというユーザをdialoutグループに追加するためには下記を実行する.
    $ sudo usermod -a -G dialout kojima
-aのオプションを忘れると痛い目を見るので注意.実際に追加されたか確認するために,下記コマンドで自分の所属グループを調べる.
    $ id
ちなみに,変換ケーブルをUSBポートに挿した後
    $ dmesg
で,どう認識されてどこに接続されたのか確認できます.

2014年12月13日土曜日

比較動画

明日某地区の忘年会で公開されることになっていたのとほぼ同様の動画が公開されてしまっている.仕事が速いですね.

こうして比較されるといろいろ対策を練られるので危険である.とくに経路選択はやはり重要そうだというのが私の中では結論となった.

こじまうす10ではマウスの移動距離を常に積算しており総走行距離を変数として持っている.それによると,こじまうす10がオートスタートをした2回目の走行で選択した(つまりSapphireの選択した)コースの走行距離は13.7m,3回目以降に選択したコースでは12.5mと大きく差がある.ただし,スリップするとこの計算は狂うのであくまでも目安.直進速度が高くてもこの距離の差を覆せるかどうかはわからない.32x32は2度と試走できないので明らかになることもない(←こちらとしては望ましい).

ただし,予選迷路は組めるのでやられてしまうんでしょうかね.

2014年12月6日土曜日

MAXパラメータ2014

これを示すと皆がこれを超えるべく調整してくるので怖いが,今年も勝てたので公開するしかない.全日本大会最高タイムを出したときの設定値である.

Parameters of KOJIMOUSE10 (2014)
KOJIMOUSE7
2012
KOJIMOUSE9
2013
KOJIMOUSE10
2014
Acceleration [m/s2]
(Straight)
10.0 12.0 13.0
Acceleration [m/s2]
(Diagonal)
8.0 10.0 11.0
Max. speed [m/s]
(Straight)
3.0 3.2 3.5
Max. speed [m/s]
(Diagonal)
2.5 2.7 3.0
45o turn [m/s] 0.96 0.86 0.93→0.86
90o turn [m/s] 1.00 0.93 0.97→0.91
90o turn [m/s]
(diag. to diag.)
0.75 0.73 0.72→0.69
135o turn [m/s] 0.79 0.75 0.77→0.72
180o turn [m/s] 0.82 0.79 0.77→0.72

今年は過去の自分のパラメータをブックマークまでして調整してきたが,結局詰めきれず,速くなっているものもあれば遅いものもある.また,走行中少しずつターン速度を落とすようにしたのでゴール直前は遅い(はず).パラメータは,直進安定化,特に斜めの速度向上のためにターン速度を少し抑えて直進開始時の姿勢を整えるという戦略で設定したが,功を奏したのではないかと思う.

自分を超えられたか?(こじまうす10はこじまうす9より速いか?)と聞かれることが多かったが,全面探索をこなす安定度を得たこと,ターン速度が同等であること,直進が速くなったことから超えたといえると思う.試走会の日にようやくというかんじではあったが.

2014年9月28日日曜日

Errata?

こじまうす10のマイコンはSTM32F405RGT6である.加速度,ジャイロセンサにはMPU-6500を使っている.

MPU-6500との通信はSPIで行っているが,これでおおいにはまった.

SPI通信はDMACを使ってバックグラウンドで行っているがどういうわけか失敗することがある.まる一日かけて,どうやらシリアル通信と干渉しているらしいことをつきとめた.さらに半日くらいかけてポートBが勝手に書き換わっていることをつきとめた.以前から通信のときにLEDがピカピカするとは思っていたがなにゆえ勝手に書き換わる?

そうすると通信のDMAあたりがあやしいが,試しにDMACなしでシリアル通信させると問題ない.じっくりソースをにらんでも間違いが見つからない.何気なくPriorityをMediumからVeryHighに変更する → もしかして解決した?今度はMediumからLowへ変更する → これもOK?

どういうことだ?と思いながらErrata sheetを見ると,少し違うがかなり近いものがのっている.確かにフォトセンサのLEDはDMACでポートBをたたいているので,DMA転送がぶつかるバグがあるならば書き換わる可能性はある.

結局SPI通信中にポートBを書き換えるDMAとシリアル通信のDMAがぶつかって,チップセレクト用のポート出力が書き換わってSPI転送が強制的に終了していたようだ.

2日間も費やしてしまった.チップのバグにつきあっている時間はないんだが...

原因はわかったが,さらに様子をみていると結局Priorityを変更してもダメみたいなのでどうしようもない.

実際にはどうしようもないということはないが,スマートな方法はない.

2014年7月5日土曜日

マイクロマウス合宿2014

今年の(夏の?)マイクロマウス合宿が終わりました.既に1週間も経過したようですが.

何もしゃべらないわけにはいかないかなあと思い,「今選ぶ,DCモータ」と題してテキトーな話をしました.準備の時間がないので,当日の朝スターバックスで予備知識だけまとめ,当日しゃべりながらまさに今選ぶというテキトーで発表者にとって省エネなスタイルで話をしただけですが,マウス脳の活性化には役立ったのではないでしょうか.

資料テキストファイル2つ.間違っている可能性が十分ありえるので注意してください.文字コードはutf-8,改行文字はunixスタイル.

2014年1月5日日曜日

タブレット

今使っている7インチタブレット ASUS Fonepad ME371MG がバッテリを認識しなくなった.それ以外は全く問題ない.でもバッテリ残量不明では使えない.

症状が出たのがソフトのアップデートのタイミングではなかったのでハードの問題らしい.RebootしてもFactory Resetしてもダメであった.

ということは分解する他ない.保証期間内のような気もするが...修理に出すのは面倒である.

バッテリのコネクタを抜いて挿し直すと認識した.解決.

2013年12月21日土曜日

スリップ角3

前回から4ヶ月も経ってしまいましたが,スリップ角に関する続きを詳しく書きます. 前回はスリップ角が
β = θr - θm ...(1)
であること,遠心力に比例すると仮定すれば
acen = k × β ...(2)
と表されることを書きました.

遠心加速度acenは速度vと旋回半径rを使って,
acen = v2/r ...(3)
であるので式(2), (3)から
v2/r = kβ ...(4)
を得ます.

機体の角度θrの時間微分は角速度ωであり, 移動方向の角度θmの時間微分はv/rなので, 式(1)を時間微分すると,
dβ/dt = ω - v/r ...(5)
となります.

式(4)を使って式(5)からrを消去すると,
dβ/dt = -kβ/v + ω ...(6)
を得ます. 定数kを経験的に与える必要はありますが,スリップ角βの微分方程式を得られました. これを積分すれば,スリップ角を推定することができます. 式(1)から実際の移動方向θmを得ることができますので 前々回に示した普通のオドメトリの方法で自己位置推定ができます.

I write the detail of slip angle, though four months elapsed from last time... In the last post, it is explained that slip angle is defined as
β = θr - θm ...(1),
and the following equation can be obtained by assuming a proportional relationship between slip angle and centrifugal force,
acen = k × β ...(2).

Using velocity v and turning radius r, centrifugal acceleration acen becomes
acen = v2/r ...(3).
So, equations (2) and (3) give
v2/r = kβ ...(4).

Here, the temporal differential of the direction of the robot θr is angular velocity ω, and the temporal differential of the direction of actual movement θm is v/r. Therefore, the temporal differential of equation (1) gives
dβ/dt = ω - v/r ...(5).

Using equation (4) to erase r in equation (5),
dβ/dt = -kβ/v + ω ...(6)
can be obtained, which is the differential equation of slip angle β. Although the constant k is required to be determined empirically, slip angle can be estimated by integrating this equation. Since the actual moving direction θm can be obtained by equation (1), general odometry method gives the location of the robot, which is shown in the post before last.

2013年8月18日日曜日

スリップ角2

前回,マウスが高速ターンではタイヤの向いている向きには進まないと書きました.図のように左ターンしているとすると,ロボットはθrの向きに向いていますが,実際の移動方向はθmの向きです.この角度差がスリップ角です.通常,マウスの向きはジャイロセンサの出力を積分して得るので,直接推定できるのはθrです.スリップ角β=θrmを予測できれば,θmがわかるので,前回の一般的なオドメトリで自己位置推定ができます.

Last time, I wrote that a micromouse does not proceed in the direction of the tire in the high-speed turn. When it is assumed that a mouse turns to the left as shown in the figure, the direction of the robot is θr, but the direction of actual movement is θm. This angular difference is the slip angle. Usually, the direction of the mouse is obtained by integrating the output of the gyro sensor, so you can estimate θr directly. If you can predict the slip angle β=θrm, the general odometry will give more precise self-position written last time.

ところで,マウスが走りながら旋回するためには向心力が必要ですが,これはタイヤが変形したときの反発力です.そしてこの変形分がスリップ角になるわけです.簡単のため向心力(遠心力)とスリップ角が比例関係にあるとすれば,遠心加速度acenとスリップ角βは比例係数をkとして次式の関係になります.
acen = k × β
これを用いてスリップ角を推定します.つづきは次回.

By the way, centripetal force is required for the mouse to turn, and this is a repulsive force when the tire is deformed. This deformation causes the slip angle. Assuming a proportional relationship between slip angle and centripetal force (centrifugal force) for simplicity,
acen = k × β,
where k is the proportional coefficient and acen is centrifugal acceleration. Slip angle can be estimated using this. Continued next time.

2013年7月30日火曜日

スリップ角

スリップ角に関する情報を教えてほしいという要望がありましたので, 数回にわたって書きたいと思います. ただし,日本語で書きますのでご了承ください.(Japanese sentences here were tuned for "google translate".)

まず,オドメトリによってマウスの位置を推定していることを前提とします.つまり,
x = v × cos(θm) × dt
y = v × sin(θm) × dt

x, y: マウスの座標
v: マウスの速度
θm: マウスの進行方向の角度
dt: 制御周期(位置更新間隔)

この方法で計算した場合,高速ターンでは正確な自己位置推定ができません.その主要因はタイヤの変形によって生じるスリップ角だと考えています.スリップ角とは,タイヤの向きとマウスの進行方向の角度差です.低速ターンでは,両者は同じ向きなので,スリップ角はゼロです.しかし,遠心力が強くかかる場合にはタイヤの向きにマウスは進みません.

そこで,スリップ角を考慮してθmを見積もることが重要です.続きは次回.

2013年6月10日月曜日

シャフト

ホイールにベアリングを埋め込むようにしたので,シャフトはそのベアリングを保持してくれればなんでもよいことになります.

いろいろ考えた末,以下のようなものを使ってナットでマウントに固定します.

2013年6月8日土曜日

ホイールの切削

前回設計したホイールを実際に削りだしました.実際には,切削して失敗して切削してを繰り返しながら設計が進んでいるわけですけどね.

白のポリアセタールを2mmのスクエアエンドミルで切削しました.G-codeは,生成プログラムをpythonで書いて作りました.加工時間は1個あたり15分くらいです.

4輪だと4つもホイールが必要ですが,まあ勝手に削りだしてくれるのでだいぶ楽ですね.

2013年5月25日土曜日

ホイールの設計

以前CNC加工機を導入してからかなり日数が経過してしまいましたが,足回りの設計を行いながら少しずつテスト加工を繰り返していました.

結局ホイールとしては以下のようなもので落ち着きそうです.ポイントは,dNanoのタイヤDNT001-10を少し伸ばして装着できるように直径を10mmとしたこと,ホイールにベアリングを埋め込みシャフトを回転させないようにしたことでしょうか.前者については,昨年まではタイヤ径とほぼ等しい直径9.2mmだったのですが,この場合ちょっとスカスカになりがちだったので今年は10mm径としました.昨年までは加工の問題もあってホイール径が制限されていましたが,この点今年は自由に設定できます.また,後者のベアリング埋め込みについては中グリ加工が必要なので加工機のおかげで実現できます.なお,ベアリングはミネベアの内径1mm,外径3mmのミニチュアボールベアリングL-310を使います.

2012年12月19日水曜日

今年のMAXパラメータ

今年はほとんど試走時間がなかったので新たな制御を組み込むなどはできなかったが,長い直進,長い斜め走行で安全に走れる速度を見つける作業を行った.結果,以下のようなパラメータになり,ちょっと昨年より速くなっている.

Max. parameters of KOJIMOUSE7
20112012
Acceleration (Straight)8.0 m/s/s10.0 m/s/s
Acceleration (Diagonal)8.0 m/s/s
Max. speed (Straight)3.0 m/s
Max. speed (Diagonal)1.5 m/s2.5 m/s
45 deg turn0.96 m/s
90 deg turn1.00 m/s
90 deg turn
(diag. to diag.)
0.75 m/s
135 deg turn0.79 m/s
180 deg turn0.82 m/s

といっても,今年は2m/sを超えると安定度が急激に落ちることがわかったので,安全のため2m/sを超えると加速度を低下させるようにしている.従って昨年より速いとは限らない.壁読みを確実に読むためかなり早めに減速をはじめるというのも入れたので,本当に昨年より遅いかもしれない.

で,パラメータを詰めた結果直進走行に限界を感じるので,真剣に4輪などを検討している.