はじめに
高専に在籍している私の学科では、4年生になると小型自立移動ロボットを開発します。それも、どのような社会の課題を解決するのかから決めます。このような自由度の高いロボット開発は自分にとって良い体験になったので、開発記としてQiitaに残しておこうと思います。
目次
- 概要
- プログラムについて
概要
私たちのロボット開発では、アイデアやスライド発表などの表向きの部分を統括するプロジェクトマネージャ(PM)と、ロボット全体の技術面を統括するチームリーダ(TL)を筆頭に、メカ班、エレキ班、ソフト班に分かれ、担当の開発を行います。1班の構成員は8人程度です。4年生のうち、前期は1コマ、後期は4コマ(本来ならば前期2コマ、後期3コマ)と時間のある放課後を使って開発します。私は、TLになりソフト班に入って開発をしました。
ロボット開発において、メカ、エレキ、ソフト各班は何をするのかを以下に示します。
メカ
メカはロボットの外観を作る役割があります。アイデアにってはその実現に向けた機構作成もしなくてはなりません。基本的に加工前に設計書を作らねばならず、3DCADを利用して図面や外観図を作成します。
設計書が通ったら、作成する室内の工作機械や3Dプリンター、校内の工場の工作機械で部品の加工を行います。加工方法はレーザーやコンタマシンでの切断やボール盤での穴あけがメインで、旋盤をする班もあります。エレキ班が作成する回路基板を実装する穴もあけなくてはなりません。
メカ班は外装を作るので、できなければ他の班は動作テストをすることができません。よって、メカ班はスピードが大事になります。現実は基本的に他の班より遅れがちです。
エレキ
エレキはロボットのマイコンのシールド基盤の作成と、基盤上のコネクタとセンサの配線を行います。必要ならば複数のセンサを基盤にまとめなければなりません。ロボットの大きさによっては、配線ケーブルも自作する必要があります。また、ソフト班に余裕がなければ、購入したセンサの動作確認プログラムも作ります。
エレキは設計書として、マイコン(Raspberry PiのGPIOピンやArduinoのピン)のピン番号とどのセンサをつなぐかを書かなければなりません。これをもとにソフト班はプログラムを作成します。
エレキ班は基本的には他の班よりも仕事が少ないです。自分の仕事が終わった場合は他の手伝いをすることが多いです。
ソフト
ソフトはひたすらにコーディングかと思うかもしれませんが、実はそうでもありません。コーティングの前の仕様決めが案外面倒くさかったりします。メカ、エレキ班は図面や配線図といった作成に関するものを仕様書にまとめればいいのですが、ソフト班はどのようなモジュールを作るかに加えて、どのような動作をさせるのか、単体テストは何をするのかといった全体寄りなことも仕様書に書かなければなりません。
また、メカやエレキの作成の遅れの影響をもろに受けるので、終盤に忙しくなりがちです。
プログラムについて
私はソフト班に所属したのでプログラムの技術面について説明します。プログラムははじめ直進や旋回といった最低限の走行や超音波センサやタッチセンサの値を読み取ることをできるようにした標準プログラムが渡されます。これを利用したり、一から作ったりして自分たちが作りたいロボットに合わせたプログラムを作成します。この標準プログラムについての技術的な概要を以下に示します。
Arduinoプログラム
- 用途 ・・・ モータのPID制御、PWM出力、アナログ入力、、Raspberry Piとの通信
- 言語 ・・・ Arduino言語(Cに近い)
Raspberry Piプログラム
- 用途 ・・・ デジタル入出力、超音波センサとのI2C通信、Arduinoとの通信、数字認識
- 言語 ・・・ C言語
- ライブラリ ・・・ 標準ライブラリ、OpenCV、Wiring Pi、(pthread)
最近のロボットでは、ここにPythonプログラムを作成して、物体検知で何かアクションをするものが多くなっています。
私も、ここにPythonプログラムを作成し、Raspberry Piプログラムとソケット通信して情報のやり取りをするようにしました。また、Raspberry Piプログラムの一部をC++クラスベースに書き直し、さらに自分たちが必要な機能も追加しました。
おわりに
今回は私が学校で作成しているロボット製作の概要について記事にしました。
どういうプログラムを作成したかなどの詳細については続きとして別の記事で書こうと思います。