Hanaokacyan Robotic Interface?
ロボット作ろう:新リモートブレイン
本題に入る前に、前回の投稿の補足を。
ブレットボードの下には駆動用のサーボをシャーシに止めているビスがあります。これは皿ビスを使ってシャーシとほぼツライチになるようにし、ブレットボードを載せる邪魔にならないようにしています。
さて本題。
Hanaokacyan Robotic Interface(HRI)とは大げさな呼び名ですが、中身は簡単です。HANA-BASICでフラッシュメモリが接続されているI2Cバスにぶら下がって、移動やラジコンサーボ、センサのハンドリングを行うサブシステムです。通常のI2Cスレーブデバイスとして機能します。PICマイコンに実装し、デバイスアドレスは0x01(0000 001X)を割り当てました。
HRIには48本の16ビットレジスタがあり、それぞれサーボの位置や移動コマンド、センサの読み出し情報などに対応しています。これに値を書き込んだり読み出したりすることで、ロボットボディを制御するわけです。
HANA-BASICからはアドレス参照子@で読み書きできるようにしました。レジスタのアドレスは@50~@97までを割り当てています。
現在、下記の機能に対応しています。
■ラジコンサーボ6台の位置、回転速度の制御
■2台のコンティニュアスローテーションサーボによる指定距離の前後進、指定角度の旋回
(移動時にホイールエンコーダによる直進補正あり)
■8CHの10ビットAD変換
■PSDのAD変換値から距離への変換
■オドメータによるヘディング情報
たとえばサーボ0はレジスタ@50に割り当てられ、0~255の数値で位置を指定するようになっています。これを中点にもっていきたいならば、BASICプログラムで@50=127とやればいいわけです。
「ヘディング情報」とは、左右の駆動輪のオドメータを比較することで、ロボットが向いている方向を示したものです。キッドナップ(ロボットを持ち上げて他の場所に移動させること)されない限り、方位センサのように使えるので何かと便利です。
もっともオドメータの元情報は、前にも書いたように分解能1.7mmほどの荒っぽいホイールエンコーダですし、駆動輪のゴムタイヤはシェーキーで使ったOリングに比べて幅広なので、しばらく動き回るとヘディングの誤差が目立ってくるとは思いますが、モノは使いようではないかと思います。
これらの機能を、16F886よりポートの多い16F887に搭載しました。容量的にはスカスカです。
次回はロボットボディのまとめです。
« XBeeの通信速度が早くなるハナシ | トップページ | こんな感じのロボットです »
「ロボット作ろう」カテゴリの記事
- Raspberry Pi3でturtlebotを動かしたいのだけど(2016.06.11)
- STM32F4のAD変換トラブル(その2)(2013.03.29)
- TrueSTUDIOからEclipseへ乗り換える(拾遺)(2012.07.14)
- TrueSTUDIOからEclipseへ乗り換える(その3)(2012.07.13)
- TrueSTUDIOからEclipseへ乗り換える(その2)(2012.07.07)
コメント