mechatronics / robotics

ブログ

VEX IQ 車輪走行

VEXIQのプログラミングは、MODKIT for VEXIQというWEBベース(modkit.com)の開発環境で行ないます。こちらはビジュアル系の小中学生向けの環境ですが、別にROBOTCというC言語での高度な開発に対応したものもあります。今回はMODKITのサイトに初心者向けのチュートリアルがありますのでこれにそって進めていきます。まずはいきなりロボットを動かすことはせずに、コントロールボックス(VEXIQ Brain)の液晶画面に「HELLO」と表示させます。 プログラミングといってもMODKITの場合はいろいろなプログラム部品をぺたぺたと画面に貼付けていくだけですので、初めての人でも問題なくできると思います。Scratchの発展形ということです。 こちらは「HELLO」プログラムの画面で、「HELLO」と表示 -> 改行 -> 1秒待つ を永遠に繰り返すという内容です。初心者向けとはいえ、考え方は普通のプログラミング言語と同じです。 コントロールボックスへのダウンロードやプログラムの実行も画面上のボタンをクリックするだけです。ダウンロードは、コントロールボックスに(ソフト的な)スロットというのが4つあって、異なるプログラムを4種類入れておくことができます。最初のダウンロードはUSBケーブルで行ないますが、後からプログラムを実行するときにはUSBケーブルをはずしてコントロールボックス上のボタンを押します。 もちろん開発途中のプログラムをセーブすることもできます。 次に車輪ロボット(Drivetrain)を動かすプログラムです。まだセンサー類を何も使っていないこともありますがこちらも簡単で、直進(drive)と旋回(turn)のプログラム部品を貼付けるだけです。10cm進む -> 180度旋回 -> ストップ を繰り返すプログラムです。旋回角度はモーターボックス内のエンコーダーをカウントしているのだと思います。当然のことながらぴったりの角度にはなっていません。

VEX IQを入手。ファーストインプレッション

米国Innovation First社が販売する教育用ロボットシステムVEX-IQを入手しました。簡単に言うとLego Mindstormsに似たロボットシステムで、ブロック部品を組み立てプログラムして動かすことができます。グレーと青を基調とした渋い色使い、各種センサーとモーターを任意に接続できる12個のポートを持つコントロールボックスなど、玄人好みの構成となっています。今回入手したのは「Starter Kit With Sensors」というセットで$249.99+送料でした。 まずは基本となる台車を組み立てます。 衣類ケースのような大きめの箱に収められています。 中身は組み立てガイド、部品表などが3冊、あとはすべて部品です。割と無造作なパッケージングです。 取説にしたがって最初のロボット「Clawbot(ハサミムシロボット)」を組み立てていきます。説明は英語で書かれていますが、絵をみればわかるので英語がわからなくても全く問題ないでしょう。グレーの四角いものがモーターボックスです。これはエンコーダーを内蔵しておりさらにサーボ的な使い方もできるようです。 とりあえず最小限の部分が完成です。左右の後輪がモーター出力に直結、前輪は後輪からギアで駆動(減速比1:1)されます。初めてだったので部品さがしに手間取りながらもここまで20〜30分だったと思います。部品と部品の結合はスナップフィット(パッチン止め)のピンで行いますので組み立ての感触は良好です。 次回プログラムして動かします。

HMC5883Lでロボット方向制御(3)

前回ギアードモーターを使った車輪ロボットで正方形を描いてみましたが、良い結果は得られませんでした。地磁気センサー出力の直線性の悪さが主要因でした。それに加えてギアの減速比が小さくて車輪のトルク不足となっていたことがありました。 今回は駆動系にラジコンサーボを使ってみました。ラジコンサーボは通常出力軸と連動するボリュームの抵抗値を読んで目標値との差でサーボをかけています。ボリュームには最小値と最大値があってそこで値が不連続となりますから、機構的にも不連続部分を使わないように出力軸にストッパーを設けています。車輪のような連続回転で使用するためにはこのストッパー(ボス/突起)をカットする必要があります。 モーターの駆動はモーター端子から線を引き出して自分で制御してもよいですが、せっかくサーボ用の電子回路がありますのでこれを利用します。電気的な改造は、ボリュームにつながっている3本線(電源・信号・グランド)をはずして電源―信号間、信号―グランド間に同じ値の抵抗(例えば10kΩ)をつなぎます。この状態でいつものサーボ制御信号(PWM)を送れば、センター狙いのPWM幅(通常は1.5msecなど)なら停止、それ以外ならセンター値との差に応じたスピードで連続回転します。比例にはなりませんが、方向制御に使えるぐらいの相関関係です。ボリュームの読みと目標値との差を詰めようとして頑張って回転するけどいくらがんばっても差が縮まらないという、S系の制御方法です。 グラフの横軸はPWM幅、縦軸は回転スピード(目測)です。 正方形の描画結果はやはりダメです。走行感は向上したのですが方角のリニアリティの問題が残っているためです。

HMC5883Lでロボット方向制御(2)

HMC5883Lで車輪ロボットの方向制御を行ない、図形(正方形)を描かせてみました。センサーは地磁気センサーのみですので移動距離は時間管理です。やはり角度の誤差が大きすぎてまともな描画はできないようです。 ペンを支えている白い部品は3Dプリンターで製作しました。これぐらいのものですと、設計20分、製作30分といったところです。金型品のような質感はありませんが気軽に作れるので重宝しています。 下記はmbedのコードです。イニシャライズ->キャリブレーション->走行、と動作モードにより動かします。地磁気センサーは-PIからPIの値が出力されますので出力範囲の両端をまたいで回転した場合(値が極端に変化)はそれをカウントして連続的に何回転でも計測できるように工夫しています。

iPhoneでOptical Flow

*別ブログに既出記事の再掲です。 iPhoneでのオプティカルフローの参考例がネット上で見当たらなかったので、がんばって挑戦してみました。cvCalcOpticalFlowFarnebackを使っています。 下記のページなどを参考にさせていただきました。AVCapture関連のところはほぼそのままです。 ・OpenCVを利用したリアルタイムフィルタリングの基本 下記コードです。すべてViewControllerに入れています。

HMC5883Lでロボットの方向制御

  車輪型ロボットにHMC5883Lを取り付けて方向制御に使ってみました。最初に1回転させて地磁気センサーのキャリブレーションを行なっています。その後にイニシャルの方向に直進しているはずなのですが、いまいちですね。 マイコンはmbedですが今回はトラ技の付録基板(TG-LPC11U35)を使いました。 モーターは千石電商で扱っているギアードモーター(放出品?)です。減速比が小さいせいかやたらスピードがでて、ゆっくり動かそうとするとトルクが足りずにギア系の負荷で止まってしまいます。

HMC5883Lのキャリブレーション

地磁気センサーHMC5883LのモジュールがAmazonで480円で出ていましたので使ってみました。(eBayでは1ドルというのもありました。) Weaver氏提供のライブラリでとりあえず値を読みだしてみましたが、誤差が大きいようです。    0deg — 0.0 90deg — 2.2(1.57) 180deg — 4.2(3.14) 270deg — 5.1(4.71) * 単位はラジアン、( )内は正しい値 HMC5883Lからはx,y,z軸のraw dataを読み取り、このうちx,y軸の値をもとにatan()を計算して方角を知るようになっています。センサー基板を平面上で360°回転させて得られるx,y軸のraw dataをプロットしたのがしたの図です。 きれいな円(楕円)になりましたが、原点が中心からずれています。これを強制的に補正するコードを追加します。コードで補正といっても、実際に手で基板を回してやる必要があります。1回転する間のx軸、z軸の最大値、最小値を求めてその中心が円の中心となるように座標を移動します。 下が補正後のプロット図です。この状態でもまだ数度の誤差がみられました。楕円が斜めに傾いているのが原因かもしれません。

スマホからマイコンにデータ送信(3)

●マイコン側 オペアンプで増幅して矩形波としたものをmbedに入力し、インプットキャプチャで復調していきます。得られた8bitのデータをシリアルでパソコンに送ってターミナル画面で確認します。

スマホからマイコンにデータ送信(1)

●アンドロイド版 音声を利用してスマートフォンからマイコンにFSK方式でデータを送信する実験です。すでにいろいろな方が実施されていますし、BANDAIのスマートドッグという商品にも使われていた方法かと思います。 Baud Rateは630Hzとかなり低速ですが、マイコン側でWiFiやBTの通信手段が不要なのでコスト的には有利です。出力される音声信号は非常に微細なので、LM358でアンプしています。

スマホからマイコンにデータ送信(2)

●iPhone版 アンドロイドの場合はAudioTrackを使って割と簡単に実現できましたが、iPhoneでは単発でデータを音声にのせて送る例が見当たらず苦労しました。 AudioQueueを使って1byteのデータ(‘a’)を送信しています。 一応動いたコードを載せておきます。 ・ViewController.h ・ViewController.m ・AudioQueueSynth.h ・AudioQueueSynth.m

Page 14 / 15«131415
PAGETOP
Copyright © Meuse Robotics All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.