Windowsにインストールしたもの
週末から自宅のデスクトップパソコンにWindows8.1をインストールして、環境を新しく構築中。とりあえず、現時点でインストールしたものをメモ。
- ツール系
- 開発系
- Visual Studio 2013 Professional
- Xamarin Studio
- Cygwin
- LeapMotionSDK
- MotionJoy(ナビゲーションコントローラをWindowsから使うため)
- Python3.4
- Unity
netduino plus + Androidでロボットを操作
netduino plusにVS-BT001と自作のモータドライバとかの基板をつけてロボットを制御できるようにして、Androidアプリとロボットを操作できるようにしてみた。
ロボットのアクチュエータは次のような感じ
- 移動用モータx2
- 左右の車輪
- カメラ角度用RCサーボx2
- 垂直角度
- 水平角度
- カメラ
- ウェブカメラ
netduino plusからの入出力は次のような感じ。
- モーター制御x2
- 正転
- 反転
- PWM
- RCサーボ制御2
- PWM
- シリアル通信x1
- RxD
- TxD
アンドロイドアプリの仕様は次のような感じ。
- 接続ボタン
Bluetoothのペアリングとウェブカメラからの画像取得状態を切り替え。
- 移動方向ボタン
ロボットの車輪を動かす。
- スピードボタン
ロボットの移動速度を変更する。
- カメラ方向ボタン
カメラの撮影方向を動かす。
基本的な構造はVS-WRC103LVの時と変わらないけど、カメラの角度調整をRCサーボを使うようにしただけ。netduinoを使うようになり、電源をmobile boosterを使えるようになったのでカメラの電源もCR2からUSBによる給電に変更。
実際に動かすとこんな感じ。
netduino plus買ってみた
Vstone社のビュートローバーARMに付属していたVS-WRC103LVというボードを使ってロボットの製作をしてきた。小型のマブチモーター程度を動かすには十分なボードで、便利なCPUボードだとは思う。けど、乾電池2本で動かして、3.3V、5Vへ昇圧して使っているので、拡張していくと電源が不安定になりがち。なので、新しいボードが欲しいなー、といろいろと検討した結果、netduino plusを購入。netduino plusを選択した理由は次のような感じ。
最初、Arduinoかmbedで迷ったんだけど、Auduinoの方が出力ピンが多くてロボット向きかなと思いAuduino UNO辺りを攻めようかと思っていたところ、netduino plusを発見。イーサネットやMicorSDがあること、C#で開発できるのは使っていく上で面白そうというのが購入に至った理由。
パーツショップを見ていると、Auduinoはボード本体だけでなく、シールドとか結構周辺機器も充実しているようで、互換品であるnetduino/plusも使えるのが便利。実際、ロボット用の回路を載せるユニバーサル基板はAuduino UNOと同サイズの基板を使ってnetduinoに挿してる。しばらくはこれで遊べそう。
カメラの仰角を変更できるようにしてみた
昨年作ったロボット、そのリモコンとなるAndroidアプリを改造して見ました。改造内容は以下の通り。
- ウェブカメラを搭載し、ウェブカメラの仰角を変更できるように。
- 操作をボタンを押下している間のみに変更。
ウェブカメラの仰角はモーターに直結させただけなので、物理限界に達してもモーターは止まらないようになってるので、センサを付ける、あるいは、ラジコンサーボに変更するなどの改良は必要。
実際に操作している動画はこちら
ロボットを作りました(2)
BluetoothでPCやAndroidと繋がるロボットのハードが手に入ったので、とりあえずは簡単に動かすということを目標に2〜3日かけてソフトを作って見ました。大体の仕様は次のような感じ。
- Androidをマスター、ロボットをスレーブとしてBluetoothでペアリングして、SPPを使って通信を行う。
- Androidアプリはボタンを押すと、対応する1バイトのコマンドをロボットに送信する。
- ロボットはメインループの先頭でシリアル受信バッファを確認して、受信内容に応じた処理を実行する。
- コマンド処理の実行後、現在の状態をシリアル送信バッファに書き込み、Bluetoothモジュールを通してAndroidに送信する。
- Androidはデータを受信すると内容を解析して操作ボタンの状態に反映する。
- コマンドは、前進、後退、右旋回、左旋回、停止、スピードアップ、スピードダウン。
- 動作方向は駆動輪の方向で設定。
- スピードは10段階でPWMの出力を変更することで実現。
- ロボットの状態は、「(方向1バイト),(スピード1バイト)」の3バイトで定義。
これを、AndroidのBluetoothChatサンプルアプリと、BeautoRoverのシリアル通信/モーター駆動サンプルアプリを元に改造して作ってみた。まーまー、簡単にできたほうかも。しれない。