| |
|
|
|
|
|
大庭慎一郎のレゴマインドストームNXT研究室 ~お絵描きロボットを作ろう - 設計・組み立て編
|
|
|
Reported by
大庭慎一郎
|
|
|
|
|
|
|
● レゴブロックでオリジナルロボットを作ろう
レゴ マインドストームNXTは、すべてがレゴブロックでできているため、ソフトウェアだけでなくハードウェアも自由に組めるロボットキットになっている。あらかじめ用意されているロボットを組んだだけでは、その魅力のすべてを体験したとはいえないだろう。そこで、今回からはオリジナルのロボットを作ってみることにする。
とはいえ、マインドストームではじめてレゴブロックに触る人が最初から思い通りのロボットが作れるかというと、それもなかなか難しいと思う。そのような読者にとって少しでも力になれるように、このコラムでは、どのようなロボットを作るかをイメージするところからはじめ、設計、組み立て、プログラミングと順を追って説明していく。オリジナルロボットを作る際の参考になればと思う。
● どんなロボットを作ろうか
今回は玩具用または教育用NXT1セットで作ることができるロボットを考えてみる。1セットではモーターが3つ、センサーが4つまでしか使えないので、複雑なロボットを作ることはできない。ただし、このような制限の中で工夫するのもレゴブロックの醍醐味、そして教育効果の高さではある。さて、どんなロボットを作ろうか。
いろいろ思いついたが、制御の面白さなどからロボットアーム、しかも絵を描くロボットを作ってみることにした。イメージは【画像1】のような感じだ。
|
|
【画像1】今回作るロボットアームのイメージ。このようにラフでもいいのでイメージを描くことが大事
|
【画像2】制御方法や拡張のアイディア。コントローラーやハンド部分の拡張など、思いつくまま描いてみよう
|
人間の肩と肘にあたる部分に可動軸を持ち、絵を描くためのペンを上下させるギミックが手の部分に装備されたロボットだ。腕を動かしながらペンを上げたり下ろしたりすることで、描画の開始位置を決め、筆跡を残す。うまく作れば腕の可動範囲内だったら好きな絵を描けるようになるだろう。
なお、センサーは制御コントローラーに使いたいので、ロボットアーム自体には使わないようにする。この時点で【画像2】のように、残りのセンサーを使ってどのようにコントローラーを作るのか、他の制御方法はどんなのが考えられるか、などもある程度考えておくよい。最終的にはNXTのセットを複数使って制御するつもりだが、NXTでは何を入力として使えるのか改めて考えてみよう。
● ラフ組みしながらモーターの配置を考える
|
【写真1】マインドストームシリーズに付属の新旧モーター。隣の青いパーツは旧回転センサー。NXTでは回転センサーを内蔵して大きくなった分、組み方も変化してきている
|
マインドストームが次世代のNXTになったことにより、これまでと大きく変わったのがモーターの組み込み方だ。回転センサーを内蔵しパーツ自体が巨大化したことにより、モーターをどのように配置しどのように使うか、がロボット作成の1つのポイントになってきた。これまでは外装の中にモーターを内蔵する感じで組んでいたのが、NXTからはモーター自体をロボットの形の一部として組み込んでいく必要がある。また、ポッチが一切なくなったので、基本的にペグで接続するようになったのも大きな変更点だ。
オリジナルロボットを作る際には、可動軸に対してこのモーターをどのように配置するのかがキモである。ロボットの形はもちろんのこと、可動部分の動き方やギア比などにも影響を受けるため、ロボットの性能をある程度想定しておく必要がある。動きに干渉しないように、かつロボットの形にうまく取り込めるように、構想の初期段階でモーターの配置(とNXTの配置)を考えるようにしよう。
配置の検討には、絵を描いてみたり、実際にレゴブロックでラフに組んでみたり、レゴ用CADソフトを使ってみたりと色々な方法がある。今回は以下のようなコンセプトのもと、【写真2】【写真3】のようにラフ組みしながら検討してみた。可動範囲や強度も頭に入れながら考えてみよう。
・人間の肩と上腕にあたる部分にモーターを1つずつ配置
・構造の簡素化とマスター・スレーブ操作することを考えて、可動軸はモーター直結
・前腕にハンド駆動用のモーターを1つ配置
・ペンを上下に動かせるように、直線運動のギミックを仕込む
・NXTは肩側において全体の土台になるようにする
・上腕(肩~肘)と前腕(肘~ペン先)がほぼ同じ長さになるようにする
・腕の可動範囲を広くするために、モーターは上下に段違いに配置する
・腕を接地させながら水平に動くようにすることで、関節部分の強度不足を補う
|
|
【写真2】ロボットアームのラフ組みをしているところ。モーターと可動軸の関係や各パーツの重量、各部の長さ、スペースなどを考えながら検討していく
|
【写真3】全体のラフ組みがほぼ終了したところ。ここから先は、各部ごとに機構と強度を考えながら本格的に組み立てていく
|
ラフ組みの段階で配置と寸法がある程度決まればベストだが、組んでいくにつれて変更が必要になる場合もある。また、ロボットが完成していざ制御する段階で設計ミスに気づくこともある。そのときはまた作りなおせばいいだけなので、何も心配はいらない。何回も納得がいくまで作り直すことができるのもマインドストームの特徴だ。
● ハンド部分のギミックを作る
今回のお絵描きロボットで一つの難関は、ペンを上下に動かす直線運動のギミックの作成だ。モーターの回転運動を直線運動に変える方法はいくつかある。前回のコラムで利用したクランク機構もその一つだ。今回はペンの上下を往復運動にしたくなかったので、ラックギアを使ったギミックを使うことにした。
しかし、玩具用または教育用NXTのセットには、残念ながらラックギアが付属していない。レゴブロックには【写真4左】のようなラックギアが存在するのだが、今回は代わりにウォームギアを使って同じギミックを実現することにした。【写真4右】のようにウォームギアを固定して動かないようにすれば、立派にラックギアの役目を果たすようになるのだ。どちらを使っても4ポッチにつき歯が10枚のラックギアになるので、例えば【写真4】の構成で8枚歯を1回転させると、3と1/5ポッチ直進移動するようになる。
ペンを固定する部分はゴムパーツと輪ゴムを組み合わせて作成した。これにより、ペンの形や太さに柔軟に対応できるようになった。ペンの上下位置も微調整できる。このように、レゴブロックじゃないモノを組み合わせる場合は、その用途や設置位置に応じて固定方法を工夫しよう。
|
|
【写真4】左がNXTのセットには付属しないラックギアとそれを使った直線運動ギミック。右がウォームギアを使って今回作成した上下移動ギミック
|
【写真5】ペンを固定する仕組み。ゴム状のパーツを輪ゴムを使って、ペンの太さや位置に柔軟に対応できるようにした
|
ペンを上下するギミックができたら、今度はそこに動力を伝達する方法を考える。一番簡単なのは、これまで何回も組んできたようにギアを並べる方法だ。この方法は動力を確実に伝えるため力強くきっちり制御できる利点があるが、今回のように直線移動に限界点がある場合は制御に気をつけないといけない。限界を超えて動かそうとすると、ロボットを破壊してしまう可能性があるからだ。
一方で、【写真6】のようにプーリーと輪ゴムを組み合わせたり、同じギアでもある程度の力がかかると回転軸が空転するタイプのギアを使う方法もある。この方法だと動力を無理矢理伝達しなくなるので、パワーは劣るが限界点をあまり気にせず楽に制御できるようになる。プーリーと輪ゴムの組み合わせは、回転軸がずれていても動力を伝達可能なところも利点だ。今回はペンが上下に行き過ぎると困るので、このプーリーと輪ゴムを使った仕組みを採用することにした。
【写真7】がハンド部分から前腕部分までの完成形だ。ハンド部分を上下する機構は【写真8】のようになっている。実際に制御すると【動画1】のような動きをする。モーターの回転に合わせてペンが上下し、紙に点を打っている様子がわかる。ペンの初期位置やモーターの回転量とペンの上下量の関係は、ギア比やプーリーの大きさなどから計算するか、試しに適当に動かしてその場で合わせるようにしよう。
|
|
【写真6】動力伝達の方法はギアの他に、プーリーと輪ゴムを組み合わせた方法、同じギアでも回転軸が空転するギアを使った方法などが考えられる
|
【写真7】ハンド部分から前腕部分までが完成したところ。前腕が地面に水平になるように先端に足をつけている
|
|
|
【写真8】ハンド部分を上下する機構のアップ。ギアやプーリーをうまく使って、モーターの動力を上下の直線運動に変えている
|
【動画1】ハンド部分を制御している様子。ちゃんと点が打てているのがわかる。タッチセンサーや光センサーで位置制御をしても面白い
|
● お絵描きロボット完成!
一番の難関であるハンド部分のギミックが完成したら、あとはそれほど難しくない。ラフで組んでいたモノから無駄なパーツを省いたり、必要な強度を保つように補強したりすればよい。今回は構造を簡略化するために、あまり強度を重視せず最小限のパーツ構成となるようにした。完成したお絵描きロボットは【写真9】から【写真12】だ。補強を増やす場合には可動範囲も考慮しよう。
|
|
【写真9】完成したお絵描きロボット。写真の右半分が肩と土台になる。アームをまっすぐ伸ばすとかなりの長さになる
|
【写真10】アームを横からみたところ。上腕部分をモーターの高さぶん上にずらし、可動範囲を稼いでいる
|
|
|
【写真11】お絵描きロボットを裏から見たところ。最小限のパーツ構成で非常にシンプル
|
【写真12】アームを分解したところ。各関節をペグ2つだけで固定しているため、分解は簡単な反面壊れやすい
|
本体ができたらさっそく動かしてみよう。今回は動作テストなので、【画面1】のような簡単なプログラムで動かしてみた。【動画2】が動かしている様子だ。ペンを上下しながらアームを動かし、なんとか線を描画できているようだ。これまでにロボットを数えきれないくらい制御をしているが、自分の作ったロボットが思った通りに動いたときはいまだに感動する。これを読んでいる人にも、この感動をぜひ味わってほしい。
|
|
【画面1】動作テスト用の制御プログラム。モーターAがハンド部分の上下、Bが肘関節、Cが肩関節に該当する。変数ブロックを使ってモーターのパワーを一括設定しているのがポイントだ。プログラムのダウンロードはこちら
|
【動画2】テストプログラムで制御している様子。描画はかなり荒いがなんとか線は描けている
|
今回作成したロボットでは関節にモーターを直結しているので、モーターパワーを低めにして制御している。しかし、正確に描画するためにより低いパワーにすると、腕を動かす力が足りなくなる。また、関節周りの強度が足りていないせいか動き方が雑な感じもする。このままでは、もしかすると本格制御するときに問題がでてくるかもしれない。ただ、うまく制御できそうになかったらあとでギア比を変えるなり強度を増せばいいので、とりあえず先に進めることにする。ソフトウェアとハードウェアの両方からロボットをチューニングできるのは、マインドストームならではの利点だ。どんどん作ってどんどん改良しよう。
● 次回は本気で動かしてみる
次回は今回作ったお絵描きロボットを本格的に制御する。プログラミングによる制御、教示機能による制御、センサーを使ったコントローラーによる制御、などを予定している。最終的にはマインドストームNXTをもう1セット使って人間の腕の動きをトレースするコントローラーを作り、Bluetooth通信によるマスター・スレーブ制御をしてみる予定だ。
次回以降プログラムが複雑になっていくので、本格的に取り組みたい人は拙著「入門LEGO MINDSTORMS NXT ~ レゴブロックで作る動くロボット」などを参考にしていただければと思う。また、今年の2月に出版した2冊目のNXT本「LEGO MINDSTORMS NXTグレーブック ~ プログラムノツヅラ」でも似たようなロボットアームを色々な方法で動かす例を紹介している。こちらの本はプログラミングの応用や便利なフリーウェアの使い方紹介、強力なプログラミング言語「NBC」の解説など、よりディープで応用的な内容になっている。興味のある人は合わせてご覧いただければと思う。
■URL
レゴジャパン
http://www.legoeducation.jp/mindstorms/index.html
マインドストーム
http://mindstorms.lego.com/
レゴ マインドストーム NXT 体験ブログ
http://nxt.typepad.jp/lego_mindstorms_nxt/
協力:株式会社アフレル
http://www.afrel.co.jp/
■ 関連記事
・ 大庭慎一郎のレゴマインドストームNXT研究室(2007/03/06)
2007/06/11 12:01
- ページの先頭へ-
|
|
|
|
|