robo8080のブログ

ロボット製作や電子工作など。

mbed FRDM-KL25Z版 2輪倒立振子ロボット作成。

2014年04月17日 | 倒立振子ロボット

半日で作る倒立振子」のArduino用のソースを、mbed FRDM-KL25Z用に書き直してみた。

Arduinoからmbedへの書き替えの概要はこんな感じ。

・I/Oアクセス部分を、Arduino書式からmbed書式へ変更

・アナログ入力部の変更

  Arduino : 0 ~ 1023 (0 ~ 5V) ーーー> mbed : 0.0 ~ 1.0 (0 ~ 3.3V)

・PWM出力部の変更

  Arduino : 0 ~ 255 ーーー> mbed : 0.0 ~ 1.0

・定周期処理の変更

 Arduino : MsTimer2 ーーー> mbed : Ticker

元々のプログラムがシンプルなので移植はそれ程難しくなかった。

 


Arduinoの代わりにFRDM-KL25Z、通称”黒mbed”を搭載した様子。

 

 


立った。

入出力の仕様をオリジナルの「半日で作る倒立振子」に合わせたので、ゲイン調整もほとんど不要だった。

 

動画はこちら。 

  

  

 


モバイルバッテリーを付けてコードレス化してみた。

マウスパッドの上に載せているのは撮影に気を取られているうちに動き回って転落しない様にするため。

  

 


モバイルバッテリーを付けてコードレス化し、XBee経由で内部状態をモニターできるようにした。

動画はこちら。 

  

 


XBeeを付けて内部状態をモニター、Processingでグラフ表示するようにしてみた。

グラフのスケールは適当。(^^;)

 


 mbed KL25Z版の2輪倒立振子ロボット、mbed LPC1114にも移植してみようかな。

づづく...

 


関連する記事

2輪倒立振子ロボットを作ってみた。

2輪倒立振子ロボット2号機作成。

LEGO Mindstorms EV3でGyro Boyを動かしてみた。(その1) 

LEGO Mindstorms EV3でGyro Boyを動かしてみた。(その2)

参考リンク

半日で作る倒立振子

 


2輪倒立振子ロボット2号機作成。

2014年03月29日 | 倒立振子ロボット

2輪倒立振子ロボット2号機作成の準備。

今度はモーターシールドを使ってシンプルにできないかを試す。

使用したのは、

・Arduino Duemilanove (使っているシールドがUNO R3対応でないため。I2Cを使わないならUNOでもOKのはず。)

小型圧電振動ジャイロモジュール

2Aモーターシールド

プロトタイピングボード

・タミヤ ユニバーサルプレート

・タミヤ ダブルギヤボックス

写真ではツインモーターギヤーボックスだが、ダブルギヤボックスに替えた。

ツインモーターギヤーボックスはガタが大きいのでこういう用途には向かないかも...

 

組み立て完了。モーターシールドを使ったので配線がすっきりした。

うまく立つかな~

 

 


ゲインを調整して一応立つようにはなった。ソフトは1号機と同じ。

モーターシールドの特性のせいなのか、左右に同じ値を出力しているのに旋回してしまう。

左右でモーター出力を調整する必要あり。

 

 


ジャイロをアナログ出力からI2C接続のMPU-6050に替えてみる。

シールドにしたので交換は簡単。

MPU-6050についてはここを参考にさせていただく。

Self balancing robot  Robotics - Electronics - Physical Computing

 

 


MPU-6050版、ここのソースを少し修正したらあっさり動いた。

Its alive!  Asaphix

ただし立つところまでは行っていない。ゲインを調整しないと... 

やたら動きがカクカクするなと思って調べたら、出力が飽和して単なる正転/逆転の2値制御と同じになっていたことが判明。orz

まぁ2値制御でもそこそこ立つところまで持っていける事がわかったのは収穫。

 


MPU-6050版もやっと立つようになってきた。

MPU-6050のDMPを使うと自分でジャイロの補正処理を書かなくて済むので楽ちん。

モーターシールドを使ったので配線がすっきりした。

 

2輪倒立振子ロボットを作ってみた。(4)

 

 


タイヤをスリムタイヤからナロータイヤに替えてみた。

見た目がちょっとアンバランスなので...

 

 


ゲインを調整してだいぶ安定してきたが、チョットつつくと倒れてしまう。

これは今後の課題。

2輪倒立振子ロボットを作ってみた。(5)

  

2輪倒立振子ロボットを作ってみた。(6)

  

 


パラメータをシリアルモニタで書き換えられるように改造。

調整が楽になるはず...

 

 

つづく...


関連する記事

2輪倒立振子ロボットを作ってみた。

LEGO Mindstorms EV3でGyro Boyを動かしてみた。(その1) 

LEGO Mindstorms EV3でGyro Boyを動かしてみた。(その2)

Arduino + Processingで 「MPU-6050 3軸ジャイロ3軸加速度センサー モジュール」を使ってみた。

参考リンク

半日で作る倒立振子

 ・MPU-6050三軸加速度三軸ジャイロセンサーモジュール

 


2輪倒立振子ロボットを作ってみた。

2014年03月25日 | 倒立振子ロボット

以前から倒立振子ロボットを作りたいと思っていたが、この記事を見つけたのでやってみることにした。

半日で作る倒立振子

ほんとにできるのかな?

とりあえず手元のパーツを寄せ集めて作ってみる。

ジャイロとモータドライバ、ギヤボックスは同じものがなかったので今ある物を流用する。

”MPU-6050ジャイロセンサーモジュール”が使えるといいな。

 

 


手元のパーツを寄せ集めて形だけはできた。

使っているパーツが「半日で作る倒立振子」の物と違うのでソフトには手を加える必要がある。

ソースコードを読んでみたら予想外にシンプルなのでビックリ。

 

 


うーむ。やっぱり半日というわけにはいかないな。

アナログ出力ジャイロの挙動がおかしいのでI2Cのを試してみるかな。

 

 


ジャイロをMPU-6050に替えてみた。

まだ立つところまでは行ってないが、立とうとする意志は見え始めた。(^^)

 

 


「半日で作る倒立振子」と同じ「圧電振動ジャイロモジュール(K-04912)」が手に入ったので使ってみた。 

極短時間なら立つようになったがまだ先は長そう。

 

 


なかなかうまくいかないので「半日で作る倒立振子」と同じパーツで作ってみることにした。 

あっさりと立ってしまった...今までの苦労は。orz

ずいぶん回り道をしてしまったが、とりあえず記事の通りに作れば動くことはわかった。

 

2輪倒立振子ロボットを作ってみた。(1)

 

 


Arduino用にモバイルバッテリーを付けてケーブルレスにしてみた。

 

モバイルバッテリーを付けたので前後の重量バランスが良くなった。

 

2輪倒立振子ロボットを作ってみた。(2)

 

 


バッテリーを上に移して重心が高くなるようにしたバージョン。

 

まだ不安定だが立つようにはなった。

 

2輪倒立振子ロボットを作ってみた。(3)

 


作ってみた感想

確かに「半日で作る倒立振子」の記事と同じパーツをそろえてあれば半日で動かすのも可能かも... 。

最大の難関はジャイロモジュールのチップコンデンサーの加工かな。

老眼でチップコンデンサーに半田付けするのはつらい。(^^;)

半田付けに不慣れな人も苦労するかも... それ以外はそれほど難しいところは無いと思う。

 

やっと動くようになったので、USBホストシールドをつけてPS3コントローラで操縦できるようにしてみたい。

あとマイコンをmbedに替えたり。夢は広がる。

とりあえず、次はジャイロをMPU-6050に取り換えてみる。

2号機作成へつづく...

 


関連する記事

2輪倒立振子ロボット2号機作成。

LEGO Mindstorms EV3でGyro Boyを動かしてみた。(その1) 

LEGO Mindstorms EV3でGyro Boyを動かしてみた。(その2)

Arduino + Processingで 「MPU-6050 3軸ジャイロ3軸加速度センサー モジュール」を使ってみた。

参考リンク

半日で作る倒立振子