2017年4月29日土曜日

ロボットのコンソールを作ろう -概要編-

書く内容が多いので何本かの記事にわけて書きたいと思います。
今回は連載一回目の概要編です。

作ったもの

こんなの作ってみました。マイクロマウスの調整用コンソールです。
以下が可能です。
 ・ロボットの各種パラメータを常に表示
 ・ロボットからのデバッグメッセージ(printfの内容)を表示
 ・迷路の情報リアルタイムに表示
 ・gamepadの入力をロボットに送信





コンセプト

何を作りたいのか?

「自分で作ったロボットの調整および、開発の補助ツールとしてロボットのデータを表示するターミナルのようなものを作りたい」

こんなことを数年前からずっと考えていました。そして、これがある程度形になってきたので苦労したところや勘所になりそうなところをブログにまとめてみることにしました。


私が、作っているのはマイクロマウスと呼ばれるロボットですが、開発時間の大多数はプログラムのデバッグ及び、走行パラメータの調整です。そのため、少ない開発時間で効率的にロボットを開発するためには開発環境の整備はクリティカルに効いてきます。(私はツールを作るのが好きなので、開発環境を作ることが目的になってる気がしないでもない。)

多くのロボットを作っている人はこのような自分用ツールを作っていると思います。
そこで、私も作ってみようと作り始めてみたのです。

要件としては、こんなところを設定してみました。

 ・printfの結果を出力
 ・ロボットの内部パラメータをリアルタイムに表示
 ・ロボットとの接続は無線接続
 ・無線部分のハードウェアはできるだけ小型にする
 ・アプリを明示的に立ち上げるのは面倒なので、勝手につながる
 ・接続が切れても勝手に再接続
 ・Webアプリで実現
 ・ロボットが複数あっても対応可能

htmlやjavascript、サーバーやlinuxの知識が作ろうと思い立ったときにあまりなかったので、習作の意味もあります。


使った技術

恥ずかしながら、組み込みのC言語以外はあまり得意ではないので正しい使い方をしていないものもあると思います。
 ・Node             Webサーバを立てるのに使用
  (最近mosquittoがWebsocketに対応していることに気づく、Webサーバいらないな)
 ・MQTT           ラズパイ同士の通信に使用 
 ・Websocket   ブラウザで表示しているアプリとサーバー間の通信に使用
 ・Bluetooth     マイコンのUARTとBluetoothの変換
   ・html5           Webアプリの見た目部分
 ・javascript     Webサーバーの記述、html内での通信ロジックの記述
 ・python          Bluetoothへの入出力、gamepadへの入力を取得



システム図

システムはラズパイ2匹が裏方で、人が見る画面はWebアプリとして実現しています。



連載予定

 ・マイコン(UART) - Bluetooth間の通信
 ・Bluetoothの出力をlinux(ラズパイ)で取得 (pythonを利用)
 ・gamepadの出力をlinux(ラズパイ)で取得  (pythonを利用)
 ・MQTTで遊ぼう 
 ・Webserverを立てよう
 ・Webアプリを作ってみよう (そんな大げさではない... )
   ・printfの結果を出力するコンソールをWebアプリで実現
 ・スクリプトのデーモン化 (nodeのforeverを利用 )
 ・ノンブロッキングな通信を実現するには 
 ・three.jsで迷路を作ったよ




書きたいと思ったことをつらつらと並べてみました。私はこんなにたぶん書かないと思います。



0 件のコメント:

コメントを投稿