PSPのゲーム「カルネージハート」(とロボゼロとプチロボXとArduinoと1/200ガンプラ)の雑記
ROBOXERO(11) ゼロベース
2012年01月28日 (土) | 編集 |

ロボゼロの上半身だけある状態なので、
「RX-7.5 ゼロタンク」を作ってみたいと思います。

遠い昔に買ったタミヤの工作シリーズのキャタピラの部分を捨てずに持っていたので、そやつをHSWB04Fから制御してみたいのであります。

th_CIMG0002.jpg
(RX-6.0 ゼロベース)



PWMをモータードライバーを使った制御に関しては、過去にarduinoで試したことがありました。
(「PWM」「モータードライバー」「arduino」というキーワードが何のことかさっぱりわからない方は、検索してみるか、先のリンクの前後が私が始めてそれに出くわした時の記事ですので参考になるかもしれません。)

記事を見ると動画がありますが、その時勢いで作ったものなので作り方は忘却のかなたです。
が、よく見ると作り方が全部自分のブログに書いてありますね。手間が省けました!



HSWB04FのボードからPMWが出力できればもう完成したも同然です。
さっそく姫路さんに問い合わせてみました。

・・・即答いただきましたが、ロボゼロボードのHSWB04FにはPWMの出力機能はないとのことでした。
JO-XEROに関してはアップデートでPWMの可能性もあるとのことでしたが、時期未定だそうです。



次に、多少強引ですが、サーボ用の電源コネクタに直接モーターをつなぎ、プログラム上からサーボのオンオフすることで物理的に制御できないかという検証。
これはさすがに無理のようでした。特定のサーボのパワーをオフに指定しても、ボードに電源が来ていればそのサーボの電源は生きています。



今回はHSWB04Fからの足回り制御にこだわりたいです。
なぜこだわるかといえば、簡単な話で、
「無線・カメラ・移動・射撃」という本来の目的を遂行させるためならば上半身のロボットが不要だからです。
それはガンダンクの兵器・機能としての無意味さ、非合理性に通じるものであり、背景には変形合体という玩具販売優先の大人の事情がそうさせたわけですが、当方はすでに大人であり、この計画が14万円を超える大金を叩いて遊ぶという「最終人型決戦遊具」であるということこそを本質として捉えるならば、このRX計画の実現なしに連邦の勝利など望めるべくもないのであります!



・・・ということで、HSWB04Fから何らかの信号を出力し、それをarduinoで受信してベース部分の制御に使ってみたいと思います。
サーボ用のコマンドとしてTTL信号?とかいうのが出ているらしいので、それをarduinoのシリアルで受け、arduinoの条件分岐にしてみたいと思います。

TTLを正確に受信できれば、aruduinoから何でも実行できるようになりそうです。
シリアル通信に触れるのはこれが初めてになるので右も左もわかりませんが、
足のパーツが来るまでに完成させないと意味がないのでがんばります。

(ちなみに、シリアルのショートパケットをarduinoに格納するところでさっそくつまづいています。)
ROBOXERO(10) アンビリカル2
2012年01月27日 (金) | 編集 |

電源ですが、さすがに400mAでは低すぎるので、もう少し高いアンペアのものが欲しいところです。

何度か遊んでみてわかったのですが、やはりアンペアが足りないと、いくつかのサーボを素早く動かした時に電力不足でリセットがかかり、サーボもめちゃくちゃでムリな方向にミーッと動いてしまい少々危険です。鉄の爪に指挟んだりしてしまいそうです。

前回のトライで、7.5Vでも行けそうだということがわかり、その切りのよいボルト数であれば秋葉原でジャンク品が手に入るのではないかと思えたのでした。



電気街の奥の方のジャンクショップゾーンに寄り道。
ジャンクACアダプタはゴロゴロ売っていますが、基本はPC用なので16Vや19Vがほとんどです。
7.5Vはかなりのレアもののようで、なかなか見つかりません。
さすがに7.5Vで6Aという特殊なものは出回っていなさそうです。



ようやく見つけた7.5Vは、ソニーの古いビデオカメラ用。
1.6Aなので理想からはちょっと遠いですが、400mAと比べれば大助かりのアンペア数です。
しかも300円とお手頃価格でした。



配線を調べたり無駄な穴を塞いだりするのにちょっと時間がかかってしまいました。
ACアダプタのジャックから2本ではなくて3本線が出ており、プラスとマイナス・・・あともう一つは何?と当惑しましたが、
ネットで調べてみたところ、プラグが刺さっていない時にバッテリなどの別電源を使えるようにするための定番ギミックのための線のようです。勉強になります。



出来上がり例。
抜けやすいプラグで延長コード方式にしてあります。これは引っ張ったりなどの無理な力がかかった時に、自然と抜けることでコードに負担をかけないというつもりの仕組みであります。
上半身のすべてのサーボを素早く動かしても大丈夫です。


th_P1080187.jpg
(すごいぞ、4倍のエネルギーゲインだ!)



電子パーツショップにいけない方も、1本1.2Vの単三充電池を使用すれば、6本で7.2Vまでいけます。
スタンダードタイプのエネループだと1900mA、エボルタも1950mAの容量なので、連続20分可動するという純正品の780mAhバッテリーの約2.4倍長くテストできるということになるかもしれません。
ただしそれでもコネクターの問題だけは残ります。(お店で買えれば1個数十円のものですが・・・)

また、スマホ用などの3.7Vバッテリーは市場に大量に出回っているようです。直列したらロボに使えるのかもしれませんが、危険かもしれません。まだよくわかりません。



無線や電源まわりが揃ってきたので、
次はRoboXeroをラジコン化しようと思います。

最終人型決戦遊具シリーズその1 : 開発コード RX-7.5 ゼロタンク

・・・足が届くまでに完成させます。
ROBOXERO(9) 無線化まとめ
2012年01月26日 (木) | 編集 |

無線化についてまとめのページを作りました。

接続するボードのコネクタ位置と配線は、こちら。



VS-C1のボタン配置は、以下のような感じです。(クリックで拡大します。)

vsc1.jpg
ROBOXERO(8) 無線化成功!
2012年01月25日 (水) | 編集 |

VS-C1 + REV-1 + HSWB-04F の接続について。
方々にメールで問い合わせた結果、

・JO-ZEROは近藤科学のKRCシリーズに対応している。
・REV-1はKRCシリーズの受信機と同じ信号を出力する。
→よって、JO-ZEROではKRCシリーズと同じプログラムを使用できる。

ということのようでした。
低速シリアルに設定する必要があるようです。



KRCシリーズと同様という気持ちで姫路さんの
「汎用ホビーロボット用無線機(送受信機)接続方法説明書」をよーくみますと、

無線送受信機は標準として株式会社RT様のWiz- XR-RCB-Cを採用しております。
␣ KONDO様のKRC-3無線コントロールセットも設定を低速シリアル2400bps、アナログジョイスティックモード にすることで使用可能になります。


と書いてあるではないですか。
低速シリアルモードも一応前回試したはずだよなとボードをよーく見ますと、
どうやら2番と3番を間違えていた模様!

正解は1番から順に ON-ON-OFF-ONです。
ボンボンバカボンのリズムでございます。



とはいえ、ボタンと変数の対応は確認作業が必要です。
これからロボゼロを無線化される初心者の方も多いと思いますので、
検証できたら接続方法も含め、まとめて発表したいと思います。

関係者の方々ご迷惑おかけしました!
ROBOXERO(7) VS-C1 & REV-1 間違い探し
2012年01月25日 (水) | 編集 |

RXコントローラーの使い方がなんとなくわかってまいりました。
見切り発車的にVS-C1&REV-1を購入してしまいましたが、資料なしに進めるのは素人には難しいです。

VS-C1のことをご存知ない方のために一応説明しますと、
PS2用の無線コントローラーです。
送信機のコントローラーと、受信機のセットで、PS2に受信機を挿せばすぐ使えます。
(実際にPS2に試してみましたが、バッチリ使えました。)

つまり無線パートはVS-C1のセットがペアリング設定まで全て担ってくれます。
いろんなものをラジコン化してみたくなりますが、それはまた別の日に。

受信機から出た信号をROBOXEROのボードが理解できる信号&コネクタに変換する仕組みがもうひとつ必要で、
それがREV-1になります。


▼接続

で、このREV1-をHSWB-04Fに接続するのですが、資料がないので一番あやしい下列の白いコネクタに挿します。
下から、グランド・信号・電源と想定して接続してみましたが、VS-C1受信部のレッドが点滅し、接続できているようです。
ディップスイッチは、ON-OFF-OFF-ONに設定します。


▼プログラム

無線信号がどの変数のどこにどう格納されるかがわからないので、(汎用ホビーロボット用無線機(送受信機)接続方法説明書と同じかと思いましたが違うようです。)
しらみつぶし的に調べて見ようとプログラミングしてみました。



結果は、ダメでした。何かが入力されたら反応する、という風にしてみたのですが・・・。
RXコントローラーのプログラムエディターで実行し、右下のコマンドデータ送信を試してみると確かに動くので、接続か格納場所に問題があるようです。いまのところお手上げです。
どこが間違っているのでしょう??



作ったプログラム。私と近いレベルの方のために分かりやすい解説入りで^^


WAIT(200)←一時停止。1カウント=5/1000秒。200(=1秒)が最大値。
MOTORSPEED(1)←モータの動作時間を3秒に固定
V00=1 ←電源のアンペアが足りないので1番の肩のサーボのみON
V01=0 ←以降24番サーボまでOFF。変数とサーボ番号の数値は1コずれる。
V02=0
V03=0
V04=0
V05=0
V06=0
V07=0
V08=0
V09=0
V10=0
V11=0
V12=0
V13=0
V14=0
V15=0
V16=0
V17=0
V18=0
V19=0
V20=0
V21=0
V22=0
V23=0←V23という変数ですが24番サーボのこと。
POWER←V00〜V23でオンオフを指定したサーボに通電
WAIT(200)
WAIT(200)
WAIT(200)
MOTORSPEED(0)←モータの動作時間固定を解除
WAIT(50)
HomeSet(600,1500,1500,1500,1500,1950,2180,1050,600,1500,1040,1500,1500,1960,1500,2
400,1950,820,1500,1500,1500,1500,1500,20000)←初期サーボ位置設定
HOMEPOS←初期サーボ位置に移動

:LOOP←ラベル宣言。リモコン待機のループ。
JUMPIF(V120,>,0,UDEAGE)←変数V120に何かが入力されたらUDEAGEにジャンプ。以下同じ。
JUMPIF(V121,>,0,UDEAGE)
JUMPIF(V122,>,0,UDEAGE)
JUMPIF(V123,>,0,UDEAGE)
JUMPIF(V124,>,0,UDEAGE)
JUMPIF(V125,>,0,UDEAGE)
JUMPIF(V126,>,0,UDEAGE)
JUMP(LOOP)

:UDEAGE←UDEAGEのラベル。腕をあげる動き。
R01=1000←R01サーボの位置を1000に指定&移動。
WAIT(200)
JUMP(LOOP)