ラベル とうロボ の投稿を表示しています。 すべての投稿を表示
ラベル とうロボ の投稿を表示しています。 すべての投稿を表示

2012年10月3日水曜日

とうロボとCAD



みなさまこんにちは、前回指名されました2年ハード班のかみです。
今日は、自分の担当したとうロボのロボットをハード班の視点から少し紹介したいと思います。

まず、「とうロボ」って何?という話を、簡潔に説明いたします。
「とうロボ」は「東海地区交流ロボコン」の略称で、NHKロボコンに向けて東海地区のロボコンサークルのレベルアップを図ろう!ということで毎年夏休みに開催している大会です。
とうロボは今年で2回目の開催で、名古屋工業大学さんや豊橋技術科学大学さんや岐阜大学が中心となって学生の間で自主的に開催されています。
詳しくはとうロボの公式ページに書いてありますのでそちらをご覧ください(´∀`)


早速ですが、こちらが自分が担当したロボットの「稲葉貴志 mkII」です。


2本のアームで地面に置いた3本の缶を、中央についた平行並行リンクアームで95cm先にある3つのバケツを一気にとることができたり、20cmの段差を乗り越えたりできる素敵なロボットです。
ソフト班21人、ハード班22人+11人の計4人がメインとなって制作しました。

さて、少し技術的な話になりますが今回はロボットの設計について紹介します。
当サークルでは、ロボットの設計に3DCAD(製図ソフト)SolidWorksを使用しています。
SolidWorksを選んだ理由はいくつかありまして、
①年間約1万円という低価格で学生版を自分のPCで使うことができる
②学生版でも解析ソフトを利用することができる
③大学が採用していて授業でも使用するため、サークルに扱える人が多い
などの理由があります。また、便利な時代になったものでクラウドサービスなどと組み合わせることにより大学や家などいつでもどこでも、部員同士で協力しながら設計を進めていくことができます。

3DCADなので、実際にロボットを組み立てるように簡単に画面上で部品を配置していくことができます。
実際にロボットを作る前に部品同士の干渉に気付けたり、手計算だと泣きたくなるような重量の計算だとか、たわみや応力の計算などが簡単にできるので、ここだけの話ズボラなハード班としては非常に重宝しています(;´Д`)



画像は、SolidWorksの解析の機能を使ってバケツを取る平行リンクアームの強度計算をしてみたものです。

そして出来上がったアセンブリがこちら。



実物とほぼ一緒。(のはず)
画像なんでわかりにくいですが、これちゃんと画面上でアームとか実際と同じように動くんです(*´∀`)
他の部員に自分が作ろうとしているものを一発で理解してもらえます。

でもまだ、自分が知らないだけの便利な機能はたくさんあると思うので、これからもっともっと勉強していかなくては(‘A`)


長くなりましたが、ここまで読んでいただいた方ありがとうございました。
設計以外のハードのことはきっと他のハード班の人がまた記事を書いてくれるはず!
以上、長文には慣れていないハード班かみでした(´∀`)

次にブログを更新してくれるのは、最近頑張って回路の勉強をしているらしいソフト班1年のかとすんです♪


P.S. 現在サークルの活動内容を紹介するポスターを私かみが制作しているので、出来次第また掲載します(`・ω・´)


2011年10月1日土曜日

とうロボを機にマイコンについて考える 其ノ弐

其ノ壱を書いた勢いで其ノ弐を書いたのだが、保存したはずのテキストファイルが見つからず、アレだけの長文を書き直すとなるとモチベーションを高くしないと書けないので其ノ弐を投稿するのが長くなってしまった。

前回の話を振り返るととにかく現状ではAVRマイコンが最も使いやすいのではないかと言う結論になったがそれがどうしてなのか、「そもそもお前は何をしたのか?」といった事を書いておきたい。

まず、具体的な話になるが、今回のロボコンで自分が使ったマイコンはATMEGA168Pである。ちなみにお値段は秋月電子通商さんで1個200円であり、最近何かとよく名前を聞くArduinoのArduino Diecimilaでも使用されているマイコンで有るのでその入手性の良さや使いやすさには問題は無いはずである。
ちなみにスペック的にはFlashROM:16kバイト、RAM:1kバイトでマイコンのピン数は28ピンである。ここで其ノ壱を読んでいただいた人は「『64kバイトまでしか…』、『I/Oピンは100本くらいは…』とかお前は言っていたじゃないか」とお思いでしょう。その通りで、ポートも3ポートくらいしか無く、このままでは簡単なライントレーサくらいしか作れない(アイデア次第でもっとイロイロとできるが)。

半年くらい前にどうしようかと考えていたところ、先輩がたまたまFPGAとマイコンをシリアル通信させて動作させるという仕事をしているのを見て、その時「You,通信しちゃいナよ!!」という天の声が聞こえたとか、聞こえなかったとか。単純にマイコンの数を増やしてしまえばポート数が増えるじゃないかという安易な思いつきであるが。確実に自分の中でその瞬間「それダァッ」とは思った。

そこで実際にマイコンを通信させようとなるが、もちろんそこはシリアル通信である。(そもそもピンの数が足りないっていうのにパラレルで通信するようなヤツは居ない。)しかし簡単に通信と言ってもその手順はキッチリと規格化されているので、それに従わなければならない。今回はI2C(アイ・スクエアド・シー)という通信方法で通信してみた。なぜかといえば過去にEEPROMとマイコン間でI2Cを使って通信したことがあり、ある程度は把握していたからであるのと、1対1の通信というよりも1対多、1つのMasterに対して複数のSlaveを接続できるのでその方が多くのマイコンを同時に制御できるのではと思ったからであった。I2Cとはシリアルデータ (SDA) とシリアルクロック (SCL)という2本の線だけで通信が可能な通信方式で上記の様に2本のI2Cバス上でMasterと複数のSlaveが繋がっている。

MEGA168でプログラムを書き始めようと色々と調べてみるとI2Cに関してはマイコンに機能として含まれている事がわかった。場合によってはすべてプログラムでソフトウェア的に書かなければと身構えていたのでそこは意外とラッキーであった。実際にプログラムを書いてみると思っていたよりもすんなりと通信ができてしまった。(通信が出来なかった場合にそれをデコード、解析できるようなオシロスコープなんて持ち合わせてないので出来なかった時の方が問題ではあるが…)
プログラムに関してはエレキジャックの中尾司さん記事のソースを参考にしました。
ちなみに、I2Cがどのように通信しているかはこの連載を読んで頂いたほうが、自分が説明するよりも解りやすいと思います。
ちなみに2、エレキジャックと言えば高校時代の恩師がインドアプレーンに関して書いていたりするのでよろしくお願いします。m(_ _)m

大会ではセンサーを受けるためのSlaveとしてのマイコンとモータードライブを動かすためのSlaveとしてのマイコンそれらをまとめるためのMasterのマイコンという形にしてみました。通信内容もセンサー側のマイコンで3ポートの状態をそのまま3バイトの値として送り、モータードライブ側のマイコンの出力もそのままポートの状態を受けるというものでした。
本来であれば通信内容(データ)に意味をもたせる、あるいは仕様をを決める、例えばセンサー側ではA/D変換した値を送る、モーター側ではPWMのデューティー比を受けそれに応じた出力をするといった、Slave側にもう少し処理をさせるような、言い換えれば仕様さえ決めてしまえばあとはそれに合わせて通信するだけでイイといったような形に出来ればよかったのかと思いますが、結果として自分だけだったということ、そこまで時間が無かったといった事で出来ませんでした。

またMaster側ではありふれた処理としてwhile文で処理を行わたりさせますがその間while文の処理の中で通信処理をさせておかないと、そもそもwhile文を抜ける条件に至らない、待ってる間にモーターが暴走するといった事になり、1回完全にはまってしまったのでそれだけは気を付けなければなりません。

っと、言った感じに今回のロボコンではポートの数が足りないマイコンでその数を増やし、マイコン間で通信してしまおうという事をコンセプトにやった見ました。ある意味回路とプログラムを一人でやったので思うように出来たということかもしれませんが。

さて、また長くなってしまったので其ノ参へ続く。
どうしても長い文章は書き慣れていないので。グダグダと書いてすいません。

2011年9月24日土曜日

とうロボを機にマイコンについて考える 其ノ壱

今週のアタマに「とうロボ」がありました。とうロボと言うのは東海地区のロボコンをやっている大学で技術交流を兼ねてロボコンをやろうというもので、今年初めての開催です。
偉いことを言ってますが、たまたまお声を掛けて頂いたので、出ない理由はないと出場しました。夏休みと引換に…

結果を言えば惨敗だぜ…まー一年生主体で作ったロボットを幾ら俺でも2、3日じゃ完璧には動かせないぜ。(プログラムを詰め切れないという意味で)
ちなみに正面中央のタッチセンサが完璧に動作さえすればすべて動きはプログラムしてあったので得点はできたはずなんだけど、やっぱり接触系のセンサの方が確実だと思ったのが誤算か。

そんなこんなであったのですが、詳しい結果やロボットに関してはウェブサイトや他の人が上げてくれると思うので、今回は自分の話を。

今回、自分の目標として幾つか新機軸(?)を考えていました。その中で、ロータリーエンコーダ以外はやってみたい事は殆どできたので良かったのかと思っています。
その内の一つとしてどうやってマイコンで制御するかということがありました。そう聞くと随分大雑把な、あるいは初歩的な事かと思われますが 、個人的には画期的だと思ったけれど、大会後の交流会でも誰も気がついてくれなかったので。
自分の印象としてどうしても相手のロボットを見ても機構的なところや外見で判断しやすいところにばかり目が行きあまりプログラムや制御の話題というのはそういった場所では聞かないのでしょうがないのかと。

自分が知っている限りロボコンに使われるマイコンは基本的にH8やSH2、R8Cといったルネサス系のマイコンが多い様に思える。もちろん場合によってはARMやPICといったものを使っているかもしれないがそれほど見たことはない(自分の近くがたまたまそうなだけかもしれないが)。なぜかと言ったら入手性の良さとポート数であると思う。H8/3048F、3052Fであれば100pin近くのピンが有る。複数のセンサから入力し、複数のモータなどに出力を行う場合そのぐらいは必要となる。あるいは内蔵の機能、A/D変換、PWM出力、タイマ、パルスカウンタ、etc…といった機能が要件を満たすだけ搭載されていなければならない。最近ではいっそのことFPGA上に組んでしまえばとも言うが値段的にも技術的にも難しい。

そういった事から昨年までも自分はH8マイコンを使ってロボットを動かしていたが、ここで幾つかの問題に立ち当たった。個人的にやっている分にはコレでも全く問題ないのだが、技術を後輩に伝えていく場合には若干の問題があった。何かといえば、マイコンは買ったらプログラムをしなければ動かないが、どうやってプログラミングをするかとした時に開発環境という問題が出てくる。ここで言う開発環境とはもちろんIDEの問題である。少し前までや、マイコンの入門書などではテキストエディタで書いてコマンドプロンプト上でコンパイルというのが普通であったが、最近ではほとんのマイコンで専用のIDEが用意されており、その上でデバッカも含めた環境でプログラムするのが普通になっている。しかしそのソフトが意外に高かったり、フリー版は使用期限、容量制限がある。例えばルネサスの統合開発環境HEWなんかは評価版では60日を過ぎると64kバイトまでしかコンパイルできないなどといった制限がある。

結果として我がサークルではAVRマイコンを使用している。まず価格が安い、マイコン自体が数百円、開発環境であるAVRStudioも無償、コンパイラのWinAVRも無償、プログラムライターのAVRISPmkIIも3000円とすべての環境を揃えてもH8マイコンボードと同じ程度という最大の強みがあります。なので非常に敷居が低く始められる。自分のような定期的にマイコンを壊す人間も怖くない。という最大の特徴がある。

長くなってしまったので其ノ弐に続きます。