2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« 2014年3月 | トップページ | 2014年5月 »

2014年4月

2014年4月29日 (火)

ジャイロコンパス+測距輪でのナビゲーション(4)

ROSさんお手やわらかに/花岡ちゃんのウィークエンド

今回の実験機にはPIC24FJ64GA002-I/SPを使用し、スタンドアロンで自己位置推定をさせています。まず、その部分の概要を説明します。

最初に実験機の座標系です。移動面の座標系と方位の関係は図のようになっています。

Photo

つまり、方位0がY軸方向、方位90がX軸方向になっています。自己位置推定のコードは、シェーキーのモノを流用しました。ROSでの座標系と合わせようかとも思いましたが、手早く実験したかったので効率優先です。

目標位置への方位計算(目標方位計算)のコードもシェーキーのものを流用しましたが、遠距離射撃方式のシェーキーとは異なり、測距輪の1カウントごとに自己位置と目標方位を再計算させています。実験機がシェーキーのようにきちんと直進できないためですが、もちろん、このほうが普通の方式です。シェーキーは60年代のテクノロジーを再現したものなので、当時の計算機で処理できるよう、計算量の少ない方式をとっているのです。

計算はdoubleの変数を使い、三角関数を使っていますが、PIC24Fで実時間的に処理が出来ています。安いマイコンにしてはなかなかの性能ではと思います。

このシンプルなアルゴリズムで、もう少し複雑な経路を動かしたときの動画を撮りました。14の目標地点を順番にたどらせています。どの目標地点もまあまあの精度でクリアしていきます。目標点を中心に半径15cmほどの円を描いたとき、ロボットの中心がだいたいその中に収まる程度ですが、実用上は何とか使えそうです。ジャイロコンパスを使用しているため、旋回誤差が累積しないのが効いています。

次回は、回路図やソースコードを紹介します。

2014年4月23日 (水)

ジャイロコンパス+測距輪でのナビゲーション(3)

ROSさんお手やわらかに/花岡ちゃんのウィークエンド

今回は測距輪です。以前の投稿で概要を書いていますので、まずはそちらを見てください。下の写真はロボットに組み込んだ様子です。QTR-1Aのピンにはソケットケーブルを差し込み、ブレットボードに引き込んでいます。

Dscn2786

部品一式の写真です。金色のシャフトは2mmのシンチュウ線、Oリングは内径55mmのもの、成型品は3Dプリンタで製作しました。

Dscn2752

フォトリフレクタQTR-1Aはアーム状の部品にはめ込みますが、クリアランスがゼロなので、はめ込む溝をカッターで少し広げる必要があります。また、Oリングをはめる黒いホイールは、黒い材料で作るか、プラカラーで塗装する必要があります。

組み立ての様子です。

Dscn2749

組み立てに必要なビスは3X30mmです。シンチュウのシャフトは、ホイールに固定し、アーム側で空転する仕様になっていますが、ホイール側の穴が小さいので、打ち込みには気をつけてください。シンチュウは曲がるので、2mmの鉄シャフトが手に入るなら、これを打ち込んだ方がよいでしょう。

白い歯車状の部品は、黒いホイールにしっくりはまるようになっています。裏表の歯車状の部品の位置関係は、下の写真くらいにします。(あまりシビアではありません)

Dscn2757

手でホイールを回し、オシロで波形を見たところです。

Dscn2756

スムーズに回り、ぶれが無いように組み立てるには、コツがいります。3Dプリンタでも最近のプラモデルを組むようには行きません。60年代のプラモのように追加工や調整が必要です。参考のため123Dのファイルを公開します。

「odometer.zip」をダウンロード

次回はマイコン周りを説明します。

2014年4月21日 (月)

ジャイロコンパス+測距輪でのナビゲーション(2)

ROSさんお手やわらかに/花岡ちゃんのウィークエンド

今回から主要部分について解説していきます。まずは心臓部のジャイロコンパスです。このブログでは何回か取り上げているLEGO用のXG1300Lを使用しています。

Dscn2783

基本的な機能は以前の投稿にあります。(おしまい、の4投稿をご覧ください)

これだとわかりにくいので、おもちゃのレーシングカーの進行方向を制御した動画が、この投稿にあります。

これらの投稿でも触れていますが、ジャイロセンサで計測した角速度を積分して、安定したジャイロコンパスを製作するのはかなり困難です。以前、ジャイロコンパスを自作する実験もやりましたが、結果、旋回の角度制御のような短期間のコンパス機能は実現出来たものの、機械的ノイズに強い、長期間安定なジャイロコンパスは作れませんでした。だからこのXG1300Lのように、安定した方位を読み出せるデバイスは貴重なのです。

このサイトでは、LEGO用のジャイロセンサとソフトで構成したコンパスと、XG1300Lを比較しています。動画をみればわかるように、その差は歴然です。(液晶にMINFと表示されているのがXG1300Lの出力です)

次回は測距輪を解説します。

2014年4月20日 (日)

ジャイロコンパス+測距輪でのナビゲーション(1)

ROSさんお手やわらかに/花岡ちゃんのウィークエンド

今回のウィークエンドは、今までとは違う方法で、自律移動ロボットの基礎技術を試してみます。

多くの移動ロボットには、自己位置推定という基礎技術が必要です。これは、そのロボットが、想定される活動エリアの、どこに居てどちらを向いているのかを推定する機能です。

このブログで取り上げたロボットでは、シェーキーroombaプラットフォームがこの機能を持っています。これらのロボットは、左右の駆動輪の回転数から、自己位置推定を行っています。当然、車輪がスリップすれば位置や方位に誤差が発生します。シェーキーは重量もあり、走行路面がフローリングの床に限られるので、誤差はそれほど大きくなりませんが、roombaプラットフォームのように、カーペットなどを乗り越えて進まなければならないものは、どうしても誤差が大きくなります。

そこで、今回の実験では、方位をジャイロコンパスで、移動距離を測距輪で計測する方式を試してみます。この方式の利点は、理論的に駆動輪のスリップによる計測誤差がないということです。滑りやすい路面や障害物の抵抗で駆動輪がスリップしても、ロボット自体が動かなければ測距輪は回りません。方位は駆動系から独立したジャイロコンパスで測定しますから、もとよりそのような誤差は発生しません。ラフな構造のロボットでも、自己位置推定機能を持たせられそうです。

試作機はこうなりました。ロボタで使った外国製のキャタピラシャーシを流用しています。プラのキャタピラは滑りやすく、また、硬い路面ではガタガタ振動するという体なので、今回の実験にはぴったりです。

Dscn2795

写真の右側が前です。前方にはみ出している"M"のマークのある箱が、心臓部のジャイロコンパスです。小さな液晶は秋月の小型I2C液晶で、現在座標などのデバッグ情報を表示します。後ろに引っ張っているのが測距輪で、2個のフォトリフレクタで1回転72パルスの分解能があります。これは0.2945cmに当ります。

下の動画はナビゲーションの様子です。

一辺100cmの正方形の各頂点の座標を与えて、それらを順番にたどらせています。キャタピラはプラ製で滑りやすく、また古雑誌を乗り越える時に方向が変わりやすいといった悪条件でも、そこそこ元の位置に戻っているのがわかるかと思います。

次回は試作機の各部を説明します。

2014年4月 8日 (火)

またコーヒーブレイク(rospeexのことなど)

ROSさんお手やわらかに:ROS奮闘編

まず、ThinkPad T61のメモリを4Gに増やし、64bit版のubuntuをインストールし直した。それにともない、hydoroも再インストール。開発環境の近代化だ。一からの再インストールとなったが、まだ、それほどのROSの資産がないので、ゲームパッドパッケージなどを手作業でいちいち再構築した。

Dscn2361

もう一つ、日本語環境とは縁が薄いROSだが、こんな日本語対話キットを見つけた。rospeexというクラウド型の音声認識・合成サービスだ。研究目的なら無償で使えるようだ。それにしても、HPトップのデモ動画はひどい。とりあえず作っときましたという感じがありありだ。ロボットの動きと音声の関係がとてもつかみにくい。ロボットは音声コマンドを受領した際に、明らかにそれとわかるレスポンスをとるべきだ。それだけで製品のパフォーマンスが伝わりやすくなるのではないか。開発元が「音声コミュニケーション研究室」となっているけど、コミュニケーションの研究室にしてはお粗末な感じだ。「紺屋の白袴」ということわざを思い出す。

また、デモではマイクと話者の位置関係などがわからないので。音声認識がどの程度の性能なのかはわからないが、ROSからは比較的簡単に使えそうなのはわかる。ただ、クラウドなので、運営会社の倒産やポリシーの変更などで、突然サービスが打ち切られるという心配はある。
rospeexについては、ここに詳しい説明がある。

同じクラウド型でも、googleの音声認識APIのほうが、突然使えなくなる心配は少ないが、ROSとのインターフェイスは自作しなくてはならない。

« 2014年3月 | トップページ | 2014年5月 »