[うp]wiiハンドルもどきでロボットを動かしてみた[ソフト編]
もうすぐ1500再生・・・
たぶん動画を見てもらえると分かるんですが回路面はそんなに凝った作りじゃないです
前回に続き今回はソフト編。だらだら書いてたら1ヶ月半経ってしまった。。。
基本的な流れ
リモコン側のpicは内蔵クロック(4MHz)で動作しているうえpic自体があまり速くないので(実効1MHz)重い計算処理はすべてArduino側に投げる形で、PIC側は単にAD変換結果をRS232Cで飛ばすだけになってます。
無線部分はXBeeなので有線でシリアル通信するのとなんらプログラムに差はありません。
そしてArduinoは受信したデータからハンドルの回転角を割り出し、そこから左右のモーターをどれだけ駆動するか算出しモータードライバに出力するという流れになっています。
送信側
[ソース]
ミソ
set_adc_channel(0); //pin0にセット
delay_us(50); //AD変換待ち
value=read_adc()-X_CAL; //キャリブレート
printf("X%04lu",value); //0で埋めた4桁の数値で送信
getc(); //Arduino側が何か応答を返すまで待つ
送信側は説明のしようがないくらいに単純です
AD変換の後の待ち時間をクロックが低いのでちょっと長めに取ってみたくらい。
受信側
[ソース]
ミソ:
for(ct=0;ct<4;ct++)
{
while(!Serial.available()); //何か文字が飛んでくるまで待つ
val[ct]=Serial.read(); //配列に代入
}
/*文字列valを書式指定(%d)に従って変数prmに代入*/
sscanf(val,"%d",&prm);
受信側は説明しきれないくらい長い。。。
Arduinoはprintfとかscanfが動かない(エラーは出ないがUARTと関連づけられてない感じ)。
でもsscanfなら動くからこれでいいやって事で。
文字列->数値変換は自分で書いた方がプログラムサイズが減ったり速くなったりするだろうがこういう「動けばいい」系にそう言う凝った細工はしなくても良いと思う。プログラミングのお勉強じゃないんだし、本質的に重要なのはそこじゃない。下手に自分で書くよりかはどっかのえろい人が書いたライブラリの方がずっと速いかもしれないし。
動画でもあったように初めのうちはPC(HSP)でデバッグしていたんですがHSPのCOMポート操作命令、特に受信系が扱いづらくて、Cみたいにとりあえず何十文字かがさっと取ってきてscanfでふるいに掛けるというようなことができないので、送信後は律儀に1軸ずつ受信完了を待つような形にしています。こうすると受信側では上のように最初の1文字でswitch?caseして残りの4文字を数値として読めばいいので結構楽です。またscanfが使えなくてもこの方法ならいけるという理由もあります。
数値を出した後は後々扱いやすいようにラジアンにしておきます。
/*ハンドルの回転角(rad)を求める */ /*atan()でなくatan2()にすると0?360度の範囲で求められる */ at=atan2((1.0*int_y)-AD_NOR,(1.0*int_x)-AD_NOR); /*ハンドルを傾けるほど左右のモーターの回転数に差が出るように*/ /* ≒傾けるほどよく曲がるように */ mS=100.0*cos(at+PI_2);
三角関数の辺は数学のお勉強的にはややこしいけど実用できるとすごく便利。こういう時に。
センサーの取り付け方的にそのままの数値を使うと90度ずれた状態で出てくるのでπ/2を足して補正したりとか。 でも授業でアークタンジェントのこんな使い方はしなかったような気がせんでもない。ググって知った。
左右の傾き具合で曲がり具合を変える部分は、横に倒すほどcosが増えるのでその数値を左右のモーターにそれぞれ符号を変えて足してやると横に倒すほど左右のモーターで回転数に開きが出てくる、といった感じです。
まとめと反省と雑記
- 今見るとなんだか不可解な部分がかなりある。やっぱり書いてから2ヶ月半も経つと忘れるなぁ・・・とブログ記事の方もハード編から1ヶ月半も経っていることに深く反省。なんじゃこりゃ。
- 忙しいかというとそうでもないのに更新するかと言えばそうでもない。だらしねぇ・・・何という怠惰生活。高専じゃない3年生だったらこれはやばいし許されない。いや、高専の3年もいろいろとやばい年だけど。
- でもテストは専門科目が増えて平均点が久しぶりに70代行ったりとか景気は良いがふたを開けると最高点と最低点の差が91点とか言うグランドキャニオンなので安心はできないという。
- Googleで捜し物をしていると自分のブログが引っかかる事があるけど、何もないのは分かってる(書いた覚えがない)ってのがイライラする。引っかかるならなんか情報出せやってね。だから手に入れた情報は全部ネットに置いといて還元しないといけないなぁーと思う。こういうのとかロボコン関連の技術情報とか。wikiでも建てるかな?。。。
- そう言う意味でエントリー化する基準をもっと下げても良いのかなー。大昔厨二病の症状で始めた時(2006年?)のエントリーはほんとにどうでもいい日記だけだったからそれからどれだけ閾値を上げるか様子見してたらtwitterとかtumblrとかで細々した話題は済むようになっちゃって本当にブログに書くのはでかい話題しか無くなった。
- でも、でかい話題の中に埋もれてる事(今回でいえばXBee周りとか)とかがばっさり切り落とされてるからそれではまずい。情報源として役に立たない。
- そんなわけで、どうすればKnowledgeBase的なものが作れるか思案中。やっぱWikiかなぁ・・
[うp]wiiハンドルもどきでロボットを動かしてみた[回路編]
食らえ!ニコニコの限界画質!!!
・・・画質が良いのは良いけど、重いなんてもんじゃねぇよこれ。。ちなみに測ったら1042Kbpsだった。
ブログに解説を書くと動画の方に書いちゃったので以下解説
・動機
研究室に鎮座している人型ロボットを動かそうと思って、手に使うちっちゃいサーボとか無線モジュールとか加速度センサとかいろいろ買ってたので、まず無線からやってみるかと思って着手したものの、2つある片方がぶっ壊れて一時中断。次に加速度センサーでもやるかと思って、ブレッドボードの真ん中にセンサーを置いたら良い感じにハンドルっぽくなって気がついたらいつの間にかレースゲーが出来てたという流れ。
でもやっぱ画面の上のお友達ではロボコンチーム的に許されないと思ったのでちゃんと画面の外でロボットが動くようにしたのがこれ
・何故うpした
部活勧誘会でお披露目したら新入生たちから世間の冷たい視線を浴びせられたのでついカッとなってやった。反省はしていない。正確に言うと新入生以外からも冷たい目線で見られたような気がしたが気にしない。
新歓モード。この下にあれが入っている。
ちなみに羽は電飾されてて埋め込まれてるLEDが光ります(白鳥っていうと学校ばれそうな気がするがどうなんだろ)
・具体的な仕組み
・加速度センサ周り
使用しているのは秋月で買える3軸加速度センサ。やっぱり5v入力対応してるってのは良いですね。プロトタイピングのときは5vってのは都合が良い電圧なので。(電源装置が使用中でも空いてるUSBポートから5vが取り出せるから)
このそれぞれの軸の出力をPIC12F675でADコンバート、データをUARTでXBeeに送っています。
真ん中が加速度センサ。右にPIC。左にレギュレータ。上はXBee。
ブレッドボードとはいえ見せ物だから部品をシンメトリーに配置した上でなるべく綺麗に配線してみた。
・駆動系周り
自作XBeeシールド+Arduino 2009+TA8429(x2個,右側)
こっちはかなり無茶苦茶な回路。なんというスパゲッティ。白・黒のペアになったケーブルがPWM用で、確かTA8429の出力をON/OFFする12番ピンにつながっています。
本当はArduinoのTXピンをXBeeのDINにつなぐときレベル変換(5v->3.3v)にしなくちゃいけないんですが、抵抗で分圧して適当にごまかしています。前はその辺に気付いていなかったんで5vを適当につないでしまったり、更にモータードライバのノイズも原因になって見事にXBeeが死亡しました。
だから本当はモータードライバと共存させたくないしきちんとしたレベル変換の出来るシールドが欲しいんですけどね。。
いっぺんここで記事切ります。ソフトウェア編はまた後日。
イラッときたのでニコニコプレミアム登録してみた
![]()
こともあろうに12/24にプレミアム登録
終わってんな俺
18未満だけどクレカ払い(VISAデビット)でいけた
会員になった時点では引き落としがされて無いから月末?20日?もしくは解約時に引き落としされるっぽい
自動更新だから1月23日あたりに手動で解約すれば
1か月のみクレカでニコニコプレミアムできるのかな
未成年からクレカ払いで金が取れるんならイーバンクとタイアップして金をむしる施策でも考えれば良いんじゃないかなぁ>運営
proxomitronオン
プレミアムになってもオミトロンが捨てられないニコニコ爆発しろ!
とりあえずプレミアム一番の利点がエコノミー無しで高速ダウンロード。
確かにエコノミー無しで重いはずなのにロードで詰まることが無くなったし、
ページ読みこんでから即再生されるようになった
でもγの時はそんくらい普通だったんだけどね^^
お布施するなら今のニコニコよりγのニコニコにお布施したい。くそう。
とりあえず聖夜性夜はプレミアムコマンドで憂さ晴らしをするのであった
Tags: ニコニコ
MGS4のプレイ動画見てる
とりあえず遊びすぎわろたって点を列挙。ネタバレの塊注意。
- トラップ武器を警戒して慎重に武器をとると小島秀夫の文字
- チ○コ隠すモーションやってるとチ○コ取れる 「お前人のモノを」
- 兵士を味方側に付けると「!」が「?」に、、アッー!
- タイアップアイテム山盛り iPod、リゲイン、湿布・・
- エロ本 ページ数が増え、「主観で見ると気力が回復する」
- 武器洗浄屋ドレビン=「893」???
- M4試し撃ち出来なかったので気力ダウン
- ドレビン「お客さん(プレイヤー)には、初心者も多いからな」 (こっち見んな)
- 「注射は嫌いか・・・?痛くないぞ・・・」「照れるなよ・・・」
- コーラonly自販機onトラック
- 試射で気力回復
- 「ドラム缶isトイレ」 ジョニー
ここで堪忍袋の限界
なんだこの金持ち厨のオナニー動画は
マイリスト メタルギアソリッド4プレイ動画‐ニコニコ動画(SP1)
http://www.nicovideo.jp/mylist/7083699
イライライライラ
別なうp主の探します。えぇ。
もう寝る
Call of Duty 2 クリア
テクテク従軍記→Call of Duty 4→Call of Duty 2という流れで来ますた
グラフィック設定をそれっぽくすれば、かなり軽くなる。
CoD4もこんだけ軽けりゃなぁ・・・
まぁ4~5年前のものなんでしょぼいと言えばそこまでだが
そこそこのグラフィック。キャラがみんな無表情とか細かいこと言わなければ。
あとノルマンディーあたりから急に難易度がアップするので
ノーマルでプレイしたければレギュラー、
ハードでプレイしたければノーマル、と選択しておいたほうが吉。
イージーモードはファシストまでだよねー、と。
(よく味方軍が「キル ザ ファシ-スト!」とか叫んでる)
CoD4のプレイ後なので、なんかCoD4に比べるとストーリー性がない感じ。
4はZakhaevとかAl-Asadとかを倒すという「目標」があったけど
2は淡々とミッションをクリアしていく感じ。なんかワケワカンネ。
あとフルオートな銃があまり無いしグレネードランチャもRPGも
フラッシュボムも無い時代だから(パンツァーファウストは当然ある)
ちょっとつまらんかも。
CoD4で超扱いやすかったドットサイトのありがたみがもっと分かった気がする。
あと気づいたけど、Price大尉ってCoD2にも出てるんだね
ヒゲのあたりにデジャヴを感じた俺は末期。

miyabo (miyabo) on Twitter
みやぼーたんぶら