この記事は note に書いた記事を Qiita に移植したものです(内容はほぼ同じです).
LEGO 部品を利用した回転型倒立振子のレシピを公開!
- 第 1 回:組み立て
- 第 2 回:電子工作
- 第 3 回:運動方程式 ― MATLAB / Symbolic Math Toolbox
- 第 4 回:パラメータ同定 ― MATLAB / Simulink
- 第 5 回:現代制御 ― MATLAB / Simulink …… 未完成
- 第 6 回:アドバンスト制御 ― MATLAB / Simulink …… 未完成
おまけ
補足
1. はじめに
ここでは,工作に自信がない人でも,比較的,簡単???に「回転型倒立振子」を製作するできることを目指して,本記事を書きます.
なお,モノによっては,発注してから届くまで1ヶ月半程度を要します.これは,輸入品であったり,受注生産であったりするためです.届くまで,気長にお待ち下さい.
「回転型倒立振子」は,海外では発案者の古田勝久先生(東京工業大学名誉教授)の名にちなんで Furuta Pendulum とも呼ばれています.
2. 部品の調達
2.1 LEGO 部品の調達
「回転型倒立振子」の筐体は,LEGO 部品を利用して製作をします.
- 部品表の Excel ファイルはこちらから入手できます.
- 部品表の PDF ファイルはこちらから入手できます.
- EV3 replacement pack3 以外はブリッカーズさんから購入できます.
- EV3 replacement pack3 はアフレルさんから購入できます.
下表に示すように,EV3 replacement pack3 以外の LEGO 部品をブリッカーズさんで購入すると,約 9,000 円(2022/05/30)となります.
また,下表の部品は,アフレルさんから購入可能な EV3 replacement pack3(1,320 円)に含まれています.EV3 replacement pack3 にはこれらが 2 個ずつ入っています(2022/05/30 に確認).
【EV3 replacement pack3 について】
土台が動かないようにするためのおもりとして,EV3 replacement pack3 を利用しています.2022/05/30 現在,アフレルさんに在庫がありますが,在庫がなくなり次第,販売終了です.Amazon などからでもしばらくは購入できるかもしれませんが… 入手できなかったら,土台に金属製の何か(四角い 9V 電池とか)を両面テープで貼り付けるなどして,土台が動きにくくなるように工夫してください.単なるおもりですので.
EV3 replacement pack3 |
ちなみに,私は教育用 LEGO MINDSTORMS EV3 の基本セットと拡張セットを多数,所有しているので,その中から部品を調達しました.
2.2 モータと関連部品の調達
まずは,調達する部品のリストです.
製品名・仕様等 | 製造元 | 個数 | 購入先 | |
---|---|---|---|---|
エンコーダ付ギヤード DC モータ | FIT0481: Micro Metal Geared motor w/Encoder - 6V 530RPM 30:1 | DFRobot 社 | 1 | スイッチサイエンス,Digi-Key |
モータブラケット | Micro Metal Gearmotor Bracket Pair - Black〔黒,2 個入〕 | Pololu 社 | 1 | 朱雀技研工房ストア |
D カット 3mm 軸用アダプタ | Motor Shaft Adapters〔2 個入〕 | Tenka 社 | 1 | Tenka 社 から輸入,もしくはポートトラストから購入 |
バインド子ねじ | M2 × 18 | ― | 2 | モノタロウ(50 個入です) |
ワッシャー | M2 | ― | 2 | モノタロウ(50 個入です) |
六角ナット | M2 | ― | 2 | モータブラケットに付属のものを利用 |
それでは,個別に説明します.
まず,モータについてです.
DFRobot 社のモータ〔Micro Metal Geared motor w/Encoder〕 |
エンコーダ付きのギヤード DC モータとしては,DFRobot 社の Micro Metal Geared motor w/Encoder を使用しています.ギヤ比(減速比)に応じて 7 種類が用意されています.今回は,アームや振子が軽量であるので,速応性を考慮して 30:1 のモータを使うことにしました.
国内では,DFRobot 社のモータを,スイッチサイエンスさんなどから購入できます.スイッチサイエンスさんの場合,輸入取り寄せの商品なので,納期は 1 ヶ月半程度だそうです.
スイッチサイエンスさんから購入する場合のコード番号 | Digi-Key さんから購入する場合のメーカー製造番号 |
---|---|
DFROBOT-FIT0481 | FIT0481 |
DFROBOT-FIT0482 | FIT0482 |
DFROBOT-FIT0483 | FIT0483 |
DFROBOT-FIT0484 | FIT0484 |
DFROBOT-FIT0485 | FIT0485 |
DFROBOT-FIT0486 | FIT0486 |
DFROBOT-FIT0487 | FIT0487 |
私は利用したことがありませんが,米国の会社である Digi-Key さんは,日本語のサイトがあるだけでなく,日本語での電話,メールをサポートしているようで,在庫に応じて即日出荷してもらえるようです.
DFRobot 社のモータ (Micro Metal Geared motor w/Encoder) は,エンコーダが最初から取り付けられているという,うれしい仕様です.電源が供給されると,エンコーダ基板の緑色の LED が点灯し,おしゃれ???です.磁気式のインクリメンタル型であり,分解能は 7 PPR(パルス / 回転)です.モータのギヤ比 (減速比) は 30:1 なので,4 逓倍でカウントすると,$$
30 \times 7 \times 4 = {\bf 840}\ \bf\mbox{[カウント/回転]}
$$ なので,$$
360/840 \simeq {\bf 0.42}\ \bf\mbox{[度/カウント]}
$$ となります.
【Pololu 社のモータとの比較】
DFRobot 社のモータ (Micro Metal Geared motor w/Encoder) は Pololu 社のモータ (Micro Metal Gearmotor) と酷似しています.本家 Pololu 社のモータはギヤ比や定格電圧などの種類が豊富です.種類の一覧はこちらに公開されています.
Pololu 社のモータ (Micro Metal Gearmotor) は,エンコーダが取り付けられていませんので,オプションのエンコーダ(磁気式,インクリメンタル型)を購入し,自分で半田付けをする必要があります.また,分解能は 6 PPR(パルス / 回転)ですので,DFRobot 社のものより分解能が劣ります.
価格についてですが,スイッチサイエンスさんで購入すると,DFRobot 社のモータが 1,500 円程度であるのに対し,Pololu 社のモータは 2,700 円程度(これにプラスして,オプションのエンコーダが 1,200 円程度)と少々,お高いです.
Pololu 社のモータ〔Micro Metal Gearmotor〕
モータ軸の長さを除くと,DFRobot 社のモータは Pololu 社のモータとほぼ同じサイズです.したがって,Pololu 社のモータ用の様々なアクセサリを利用することができます.今回は,Pololu 社の「モータブラケット」を利用して,モータを LEGO 部品で製作された土台部に結合します.また,Tenka 社の「3mm 軸用アダプタ」を介して,モータ軸と LEGO 部品で製作されたアーム部を結合します.
Pololu 社のモータブラケット〔2 個入り〕付属のねじは不使用ですが,六角ナットは使用します |
Pololu 社の「モータブラケット」は,たとえば,朱雀技研工房ストアさんから購入できます.これは,「ブラケット」が 2 個,M2 の「なべ小ねじ」が 4個,「六角ナット」が 4 個,入っています.
DFRobot 社のモータと LEGO 部品の結合 |
本来の使用方法は,「ブラケット」のねじ穴に「六角ナット」をはめ込み,「ブラケット」の反対側から「なべ小ねじ」で締めるというものですが,この実験装置の製作では,異なる使用方法となります.
「LEGO 部品」と「ブラケット」の穴の間隔は,少しずれています.そこで,「ブラケット」のねじ穴に M2 x 18 の「バインド小ねじ」を通し,反対側に取り付けられた「LEGO 部品」の穴も貫通させます.そして,LEGO 部品側の穴に M2 の「ワッシャー」をはめ込み,M2 の「六角ナット」で締めます.詳しくは,後述します.
ねじ類 |
M2 x 18 の「バインド小ねじ」や M2 の「ワッシャー」は,大きなホームセンターであれば,売っているかもしれません.ネットで購入するには,たとえば,モノタロウさんの場合,M2 x 18 の「バインド小ねじ」はここから,M2 の「ワッシャー」はここから購入してください.M2 の「六角ナット」は,Pololu 社の「モータブラケット」に付属しているものを利用します.
Tenka 社の D カット 3mm 軸用アダプタ〔Motor Shaft Adapters,2 個入〕 |
モータ軸に LEGO 部品で作られたアームを取り付けるために,Tenka 社の「D カット 3mm 軸用アダプタ (Motor Shaft Adapter)」 を利用します.Motor Shaft Adapters は日本国内では販売していないので,Tenka 社から直接,購入する必要があります.2 個入で 0.99 ドルなので安いのですが,送料が 26.36 ドルですので,余裕をもった個数を購入するのが良いでしょう.ちなみに,私は 30 セット(60 個)も購入しました …
… って記述していましたが,最近は,ポートトラストさんから購入できるようになったようです.
さて,このアダプタは Pololu 社のモータ用に製品化されたものなので,D カットの 3mm 軸に合うよう設計されています.DFRobot 社のモータは Pololu 社のモータと軸の形状は同じなので,このアダプタを利用できます.
D カットに対応しているので,負荷がかかった状況で使用しても,力をロスすることなく回転させることができます.
2.3 エンコーダと関連部品の調達
まずは,調達する部品のリストです.
製品名・仕様等 | 製造元 | 個数 | 購入先 | |
---|---|---|---|---|
光学式エンコーダ | E20S2-360-3-V-5-R | AUTONICS 社 | 1 | ミスミ社 |
LEGO ホイール用 2mm 軸用アダプタ | 2mm Shaft Adapter for LEGO Wheels (Pair)〔2 個入〕 | Pololu 社 | 1 | 朱雀技研工房ストア |
なべ子ねじ | M2 × 8 | ― | 2 | モノタロウ(160 個入です) |
ワッシャー | M2 | ― | 2 | 前節でモータ用に購入 |
エンコーダ軸に LEGO 部品を取り付けるため,Pololu 社の 「2mm 軸用アダプタ」を利用することにします.Pololu 社からは「3mm 軸用アダプタ」も販売されていますが,これは,六角軸に対応したものですので,エンコーダに利用することが困難です.
「2mm 軸用アダプタ」を利用するために,
- 軸径が 2mm
- 分解能がある程度高い
- エンコーダ側のねじ穴の間隔が LEGO 部品の穴の間隔とほぼ同じである
という条件を満足するエンコーダを選定する必要があります.これらの条件を満足するエンコーダをいろいろと探しましたが,最終的に,AUTONICS 社の「インクリメンタル型の光学式エンコーダ (E20S2-360-3-V-5-R)」を利用することにしました.価格は 9,160 円です(2022/05/30 現在).
AUTONICS 社のエンコーダ E20S2-360-3-V-5-R |
なお,受注生産のようで,購入手続きをしてから届くまで,1 ヶ月半くらいを要します.
このエンコーダの分解能は,360 PPR(パルス / 回転)です.4 逓倍でカウントすると,$$
360 \times 4 = {\bf{1440}\ \bf\mbox{[カウント/回転]}}
$$ なので,$$
1440/360 = {\bf{0.25}}\ \bf\mbox{[度/カウント]}
$$ となります.振子の角度検出用としては,十分の精度でしょう.
3. 組立図
3.1 振子部の組立図
振子部の組立図の PDF ファイルは以下から入手できます.
振子部の組立図 |
振子部は非常に単純な構造で,4 個の LEGO 部品で構成されています.
LEGO なので,振子の長さを変えたり,重さを変えたりすることも容易です.
3.2 土台部の組立図
土台部の組立図の PDF ファイルは以下から入手できます.
- ステップ 1:body_step1.pdf
- ステップ 2:body_step2.pdf
- ステップ 3:body_step3.pdf
- ステップ 4:body_step4.pdf
- ステップ 5:body_step5.pdf
- ステップ 6:body_step6.pdf
土台部の組立図において,ステップ 1 からステップ 3 まで(body_step1.pdf,body_step2.pdf,body_step3.pdf)は,指示にしたがって組み立ててください.
土台部の組立図(ステップ 1) |
土台部の組立図(ステップ 2) |
土台部の組立図(ステップ 3) |
ステップ 3 では,EV3 replacement pack3 に含まれる部品を「おもり」として装着していますが,購入していない場合は,無視してください.
つづいて,ステップ 4 に進む前に,モータを LEGO 部品と結合します.
まず,Pololu 社の「モータブラケット」に DFRobot 社のモータをはめ込みます.モータブラケットは向きがありますので,注意をしてください.
Pololu 社のモータブラケットの向き |
モータをモータブラケットに装着 |
つぎに,モータブラケットのねじ穴に,M2 x 18 の「バインド小ねじ」を貫通させます.
モータブラケットに M2 x 18 の「バインド小ねじ」を貫通させる |
さらに,LEGO 部品 (デザイン ID:99773)
LEGO 部品(Technic, Liftarm, Modified Triangle Thin 3 x 5 with Short Supports,デザイン ID:99773) |
を 2 個,用意し,穴に M2 x 18 の「バインド小ねじ」を貫通させます.
LEGO 部品に「バインド小ねじ」を貫通させる |
そして,M2 の「ワッシャー」と M2 の「六角ナット」をはめ込み,M2 x 18 の「バインド小ねじ」を締めます.
「ワッシャー」,「六角ナット」をはめ,「バインド小ねじ」を締める |
最後に,Tenka 社の「D カット 3mm 軸用アダプタ (Motor Shaft Adapter)」 を,モータ軸に差し込みます.
Tenka 社の D カット 3mm 軸用アダプタをモータ軸に差し込む |
以上でステップ 4 の下準備は終了です.
ステップ 4 からステップ 6 まで(body_step4.pdf,body_step5.pdf,body_step6.pdf),指示にしたがって組み立ててください.
土台部の組立図(ステップ 4) |
土台部の組立図(ステップ 5) |
土台部の組立図(ステップ 6) |
以上で土台部が完成です.
土台部 |
3.3 アーム部の組立図
アーム部の組立図のPDF ファイルは以下から入手できます.
アーム部を組み立てる前の下準備として,エンコーダを LEGO 部品と結合します.
まず,エンコーダ,LEGO 部品 (デザイン ID:99773) と M2 x 8 の「なべ子ねじ」2 個,M2 の「ワッシャー」2 個を準備します.
LEGO 部品(デザイン ID:99773),なべ小ねじ,ワッシャー |
そして,LEGO 部品の穴に「ワッシャー」と「なべ小ねじ」を通し,エンコーダの前面のねじ穴にしっかりと取り付けます.
LEGO 部品(デザイン ID:99773)に「ワッシャー」と「なべ小ねじ」を通し,エンコーダに取り付ける |
つぎに,LEGO 部品 (デザイン ID:99773)
LEGO 部品(デザイン ID:99773) |
を 2 個,用意し,エンコーダのコードを LEGO 部品の穴に通します.
エンコーダのコードを LEGO 部品の穴に通す |
エンコーダのコードは硬いので,アームを回転させると,バネのような反力を生じてしまいます.そこで,ワイヤーストリッパーで断片的(1 cm くらいごとに)に外皮部分を剥がしてください.
ワイヤーストリッパーで外皮を断片的に剥がす |
つぎに,エンコーダ軸にPololu 社の「2mm 軸用アダプタ」を装着します.
Pololu 社の「2mm 軸用アダプタ」の製品紹介を見ると,説明文に
https://www.pololu.com/product/1001
(原文)
Instructions
- Fit the adapter onto the metal output shaft of one of the four gearmotors linked above. You will need to push quite hard; be careful not to damage the gearmotor.
- Slide the adapter into a LEGO wheel of your choice.
(日本語訳)
<略>
かなり強く押し込む必要がありますが,ギヤモータを傷つけないように注意してください.
<略>
とあります.かなりどころか,元のままでは,どんなにがんばっても,モータ軸の先端しか「2mm 軸用アダプタ」の穴に入りません.「2mm 軸用アダプタ」の穴が狭すぎるのです.
「2mm 軸用アダプタ」の穴が狭いので,モータ軸を奥まで挿し込めない |
したがって,「2mm 軸用アダプタ」の穴を少しだけ拡げる必要があります.少しだけです.拡げすぎるとガバガバになってしまい,エンコーダ軸が空転してしまいます.つまり,「2mm 軸用アダプタ」の少しだけ拡げられた穴にエンコーダ軸を挿し込み,摩擦で固定しなければなりません.
## 心配なら,接着剤を使ってみても良いかも.
「2mm の精密ドライバー」の先端を「2mm 軸用アダプタ」の穴に挿し込み,左右に何回か回転させることで,穴を少しだけ拡げる |
「2mm 軸用アダプタ」の穴を少しだけ拡げるために,穴に「2mm の精密ドライバー」の先端をまっすぐに挿し込み,左右に何回か回転させます.このとき,先端は奥に入れすぎないようにしてください.穴を拡げすぎてガバガバになってしまいますので.『少し削っては挿し込めるかを確認』し,慎重に作業を進めてください.
「2mm 軸用アダプタ」の穴を少しだけ拡げると,エンコーダ軸の根本付近まで挿し込める |
なお,「2mm 軸用アダプタ」の根本が LEGO 部品 (デザイン ID:99773) に接触しないように注意してください.
「2mm 軸用アダプタ」の根本が LEGO 部品 (デザイン ID:99773) に接触しないようにする |
以上の下準備が終了したら,arm.pdf にしたがって,アーム部を完成させてください.
アーム部の組立図 |
アーム部 |
3.4 完成図
以上でそれぞれの部分ができあがったので,合体させてください.
完成図 |
4. おわりに
今回の記事では,LEGO 部品と汎用のモータ,エンコーダを利用して,「回転型倒立振子」を製作する手順を説明しました.
次回は,MinSeg.com 社から販売されている車輪型倒立振子のキット に含まれている,MinSegShield M2V5(Arduino 互換マイコン+シールド)との接続について説明する予定です.これ,簡単に Simulink と連携できる優れものです.
さて,いつになることやら…
(終わり)
参考文献
-
K. Furuta, M. Yamakita, and S. Kobayashi: Swing-up Control of Inverted Pendulum Using Pseudo-state Feedback, Journal of Systems and Control Engineering, Vol.206, pp.263-269 (1992)
$\cdots\cdots$ https://doi.org/10.1243/PIME_PROC_1992_206_341_02 -
K. J. Åström, and K. Furuta: Swinging Up a Pendulum by Energy Control, Automatica, Vol.36, Issue 2, pp.287-295 (2000)
$\cdots\cdots$ https://doi.org/10.1016/S0005-1098(99)00140-5 -
杉江俊治, 岡田昌史:並列倒立振子システムの H∞ 制御,Vol.6, No.12, pp.543-551 (1993)
$\cdots\cdots$ https://doi.org/10.5687/iscie.6.543 -
川田昌克:MATLAB/Simulink と実機で学ぶ制御工学 ― PID 制御から現代制御まで ―,TechShare (2013)
-
川田昌克:LEGO MINDSTORMS を利用した回転型倒立振子の開発,計測と制御,Vol.54,No.3,pp.192-195 (2015)
$\cdots\cdots$ https://doi.org/10.11499/sicejl.54.192