東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

玉乗りロボット

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

MakerFaireTokyo2016に出展します

どうも、井土です。

今週末の8月6日、7日にいよいよMakerFaireTokyo2016が開催されます。 
 
Tokyo-MF_logo_outlined

ロボット技術研究会はE-02-08で展示をします

両日とも展示をしていますので、皆さん見に来てください


今回は一足早く、展示予定の作品の一部を紹介します。


① 玉乗りロボット
ボールの上でバランスをとり、玉乗りをするロボットです。
加速度センサ、ジャイロセンサを使ってロボットの傾きを計測し、
いい感じにモータを回すことでバランスを保っています。
(展示者:井土)



続きを読む

新 玉乗りロボット

井土です。

去年あたりからちょくちょく玉乗りロボットを製作していました。
↓こんなのです。
tamanori_robot_overview

以前も玉乗りロボットを製作していたのですが、今作っているのはその改良版です。
ちなみに以前の玉乗りロボットに関する記事はこちらをご覧ください。
新しい玉乗りロボットはまだまだ制御関連で詰められていないところがたくさんありますが、最近とりあえず玉乗りができるようになりました。
実際に動いている動画はこちらになります。



最大の改良点はタイヤです。
以前はKORNYLAKのオムニホイールを使っていましたが、
今回はvstoneのなめらかオムニホイールを使っています。
この2つの大きな違いはオムニホイールの周囲の樽が1重であるか2重であるかの違いです。
1重のオムニホイールだと常にタイヤの接点と回転中心が同じ距離になるので、
タイヤが回転してもガタガタしません。

この画像を見ると違いがよくわかると思います。
omni
※画像はvstonさんから引用させていただきました
http://www.vstone.co.jp/robotshop/images/4571398310089_2.jpg

また以前はバスケットボールの上で動かしていたのですが、
今回は東急ハンズに売っていたプラスチック球ラバースプレー を塗って使っています。
なめらかオムニホイールは直径55mmなのでバスケットボールは大きすぎる気がし、
ちょうどいい大きさで安い玉を探していると東急ハンズにありました。
しかし、この玉もなめらかオムニホイールの樽も表面がつるつるなので全くグリップしません。
そこでラバースプレーを玉の表面に塗ることで解決しました。
玉の表面にラバースプレーを塗ってグリップを増す方法は熊谷先生も使っていた方法です。 

==========================================
まだ応募段階ですが、今年の8月に行われるMakerFaireTokyo2016にて
この玉乗りロボットを展示できたらと思っています。
もっと制御面を詰めていき、硬い机の上でも安定して玉乗りができるところを目指していきます。
また、外装をつけるなどして見た目も完成度を上げていけたらと思います。 

玉乗りロボット(4) 制御について

井土です。
玉乗りロボットがとりあえず動きました。
今回はその動画と制御についてです。

まずはこちらの動画をご覧ください。
4月の新入生歓迎展示でのデモの様子です。
一緒に映っているのは、
去年作ったNAND(74HC00)ロジックのみで作ったNAND計と後輩の作った電源装置です。




ふらふらしていたり、座布団を敷いていますがバスケットボールにちゃんと乗っています。
とりあえずはこれで完成です。

今回は今までに紹介してきた回路・機械を統合して、
どう制御しているかに焦点を当てたいと思います。
このロボットは下の図のような感じでセンサの値を使って制御をしています。

 ctrl

加速度センサとジャイロセンサからいい感じにx方向の傾きとy
方向の傾きを計算し、
PIDコントローラでその傾きが0になるようにxy方向それぞれへの出力(トルク)を計算します。
最後に、このロボットはオムニホイールを3つ使っているので
x,y方向の出力をオムニホイール×3の出力に変換してモーターに出力します。

ここに出てきたPID制御相補フィルタとは何でしょうか。
今回の玉乗りロボットの制御に関してはその2つが特徴であるので、どんなものかを簡単に説明します。


◯PID制御
まずPID制御とはフィードバック制御の一つの手法です。
そもそもフィードバック制御とは何なのでしょうか。

例えば今、モーターを10の速さで回す制御するとします。
自分がモーターを"10の速さ"で回そうとしていても、
外乱によって"7の速さ"でしか回っていないかもしれません。
そこでモータの速さをセンサで検出して目標値とのズレを考慮して制御するのが
フィードバック制御です。
今回の例では、目標値("10の速さ")とセンサから得られた実際の状態("7の速さ")
ズレは"3の速さ"なので、
そのズレ3が0になるように制御をします。

ズレた値を使ってそのズレが0になるようにするにはどうしたら良いのでしょうか?
そこでPID制御です。
色々な手法がありますが、PID制御はとても良く使われます。
(とある先生によると工業製品に使われる制御の9割がPID制御だとか)
PIDとは比例(P),積分(I),微分(D)のことで、ズレを比例,積分,微分した値を制御出力としてモーターなどに出力します。

pid

・比例(P)は今のズレを制御に反映
・積分(I)は今までのズレを制御に反映
・微分(D)はこれから起こりそうなズレを制御に反映 
  します。

この3つの成分には重み付けができ、それが
KP,KI,KDという3つのパラメータです。
これをうまく決めてやることで制御できるようにします。
制御対象をモデル化できればKP,KI,KDの値をある程度計算やシミュレーションで
決められるのですが、
今回はいきなり玉乗りロボットに実装して
パラメータを色々変えて試行錯誤することでいい感じの値を決めました。

一応限界感度法ステップ応答法といったPIDパラメータを決める手法がありますが、
うまくいかない場合はロボットの動きなどをよく観察してパラメータを調整していきます。 

イメージとしては
・P成分:不安定にならない程度になるべく上げる
・I成分:ズレが定常的に残るときに上げる
・D成分:ちょっとズレた時、すぐに戻したいときに上げる 

みたいな感じです。


◯相補フィルタ
3軸ジャイロから得られる角速度を積分すればそれ一つでロールピッチヨー全ての角度を得られそうですが、
センサの出力にオフセットが乗っていたり、温度変化でズレたり(温度ドリフト)、積分誤差で
正確な値を計算するのは難しいです。
そこで加速度センサも用いて最もらしい値を推定します。
加速度センサを使えば、重力の方向を計算することでヨー以外の姿勢角を知ることはできます。
ただ、並進運動をした時に並進加速度の分だけズレてしまします。

これらを見方を変えて、以下の様な仮定をします。
・ジャイロセンサの定常値はオフセットが乗っていたりするが、変化成分は正確
・加速度センサの定常値は正確だが、変化成分は並進運動が加わっている可能性がある


定常値は低周波成分であり、変化分は高周波成分です。
これらのセンサの特徴を活かして
加速度センサにはLPF(ローパスフィルタ)を掛けて低周波成分を取り出し
ジャイロセンサにはHPF(ハイパスフィルタ)を掛けて高周波成分を取り出して
この2つを足す。
ということをすると割といい感じの値が得られます。
comp_filter

相補フィルタとは、このように複数の信号にフィルタを掛けて
足しあわせ、より精度の高い計測を行う信号処理です。
(ただし任意の周波数においてフィルタの利得の和は1になるようにする) 

複数のセンサを組み合わせて精度よく計測する方法は
センサフュージョンとか言われていて、
他にもカルマンフィルタパーティクルフィルタなど色々あります。
今回は実験してみた結果、相補フィルタが一番いい感じだったので採用しました。 


現状の玉乗りロボットの制御はPIDパラメータを試行錯誤で適当に決めた適当制御です。
ロボットの物理モデルを解析したわけでもなく、よくわからないけど立っている状態です。
動画でもロボットはまだふらふらしていて、もっと安定化させたいと思っています。 
今度は現代制御理論を用いてちゃんと制御し、定量的に制御する予定です(秋か冬くらい)。 
 

玉乗りロボット(3) 機械工作

井土です。
今回は玉乗りロボットの機械部分についてです。

じつはフライスとか旋盤を使ってものを作るのは初めてなのですが、
ロ技研の詳しい人に教えてもらいながらでできちゃいました。
今回は製作過程を紹介していきます。

まず3DCAD(inventor)で設計します。
今回はボールに上手く接することが重要なので面倒臭かったです。(結局ずれた)

名称未設定

設計データを元にアルミを加工していくのですが、
ロ技研の部室にはHAKUというNCフライスがあるので、
CADでデータを作ると自動でアルミ板を削ってくれます。
47

これはモーターを斜めに固定する部品です。
31

こんな感じで部品が削り終わるので、折り曲げて組み立てていきます。
03
 
次はタイヤの軸部品です。
タイヤの軸部品はフライス盤・旋盤で加工します。
21

 18
 
そして合体
ちなみにタイヤはこれ http://store.kornylak.com/ProductDetails.asp?ProductCode=FXA357
モーターはこれ http://www.robotshop.com/en/pololu-12v-50-1-gear-motor-encoder.html
を使用しました。
22
このタイヤはオムニホイールと呼ばれるもので、
モーターの回転方向にはグリップしますが軸方向にはフリー回転するので、
3つのタイヤを三角形みたいに並べると全方向に移動できます。

前回紹介した制御回路を上に乗せて、玉乗りロボットが完成です。
01

 
次回は実際の動作と制御関連の紹介をする予定です。 

玉乗りロボット(2) 制御回路

id研の井土です。
まず玉乗りロボットの進捗ですが、とりあえずハードウェアは完成しました。
44


今回はロボットを制御するための回路について書きます。
こちらがロボットを制御する回路たち
 07

左から順に
モータードライバ(マイコンからの指令を増幅してモーターを動かす)
メインボード(マイコンとモータードライバ、センサなどをつなぐ)
マイコンボードSTBee(マイコンが載ってる) 
となっています。

◯マイコン・メインボードについて
スペック
・CPUにSTM32F103VET6(ARM Cortex-M3 72MHz)を使用
・3軸加速度と3軸ジャイロ(MPU6050)を搭載
・SDmicroカードを搭載(SPI通信+FatFs)
・Bluetooth 通信可能(SBDBTを使用)
・ロータリーエンコーダ(タイヤの回転を計測)を3個接続可能
・モーターを4個まで動かす信号を出力可能

SDカードが使えると、センサのログとかがパソコンでも読めるファイルで残せるので色々と捗ります。
Bluetooth機能はスマホとかで操作できるようにするためです。

メインボードは今回しか使わないので、ユニバーサル基板(秋月のBサイズ)で作りました。
そのため基板の裏面はこんな感じ
18


◯モータードライバ(iDriver)について
モータードライバは基板を外注してみました。
名づけて『iDriver ver1.0』
12V10Aのモーターが4個動かせます。

回路自体は特に工夫のない普通なやつです。
22

ここからパターンを設計して
15

Elecrowという基板製造サービスに発注すると
05

こんな感じできれいな両面のプリント基板が届きます。
今回は10cm×10cm以下のカテゴリで10枚発注しましたが、料金はこんなかんじです。
$23.9(製造費) + $9.14(送料) = $33.04
Seeed StudioのFusionPCBとだいだい同じくらいの値段ですが、
Elecrowは追加料金なしで基板に色を付けられるのはいいですね。 
運送に関しては郵便小包で頼んだので安いのですが、2週間くらいかかりました。 

あとははんだ付けをして完成です。 
秋月のBサイズのユニバーサル基板と重ねられるようなサイズになっています。
42

iDriver ver1.0は動かしてみて色々ダメなところがあったので、そのうちアップグレードします。


次回は機械部分について書きます。

ギャラリー
  • 自作キーボードを作ろうver1.0
  • 自作キーボードを作ろうver1.0
  • 自作キーボードを作ろうver1.0
  • 自作キーボードを作ろうver1.0
  • 第14回ROBO-ONE Light 結果報告
  • ロボット技術研究会紹介
  • ロボット技術研究会紹介
  • rogy2016冬合宿 in 戸狩
  • rogyサバゲ:†革命†をもっと
記事検索
最新コメント