概要
この記事はRaspberyPi , Arduino , ROS を用いたラジコン作成の要件定義編です。
全体の概要や流れに関しては、本編をご覧ください。
ROS を用いたラジコン作成:本編 (全体まとめ)
ROS を用いたラジコン作成:要件定義編 ← 今ここ
ROS を用いたラジコン作成:ROS環境構築編
ROS を用いたラジコン作成:Arduino制御編
ROS を用いたラジコン作成:コントローラー制御編
ROS を用いたラジコン作成:ハードウェア設計編
ROS を用いたラジコン作成:ソフトウェア設計編
ROS を用いたラジコン作成:ソフトウェア制作編
ROS を用いたラジコン作成:ハードウェア制作編
今回やること
- 何を実現したいのか考える
- 自分自身や身の回りについて現状を把握する
- 実現するために必要な機能を考える
要件定義
実現したいこと
今回の開発で最も実現したいことは、**『ROSを使って何かしらのハードウェアを作成したい!!』**です。
せっかくロボットに関する内容を学んでいるのなら、ロボット作っちゃおうぜ!!っていうのが将来の目標となりました。
しかし本編にも記載しているように、個人でROSの学習を行うには成果物がなかなか見られず、ちょっとモチベーションを維持し辛いことがあります。
そこで、今回のコンセプトとして表明しているのが**『できる限り安くROSで遊ぼう!!』**です。
まずは超簡単な内容でいいから、1つの成果物を制作してみることが重要だと考えました。
何を制作するのか
さて、それでは何を作りましょうか?
超簡単な内容とは言っても、人によって制作の難易度は異なります。
ROS初学者ですから、構想時点で**『できること』『できないこと』の区別も必要ですね。
できないことの中には、『技術的にできない』のか、『ハードが足りないからできない』のか、『どんな要素があればできるようになる』**のか・・・
などなど、この辺も考える必要があります。
一旦、自身の学習状況や利用できそうなものをまとめてみました。
できること
- ROSの基本的な操作 (パッケージや各プログラムの作成)
- ROSの簡単なシミュレーション
- ROSを用いたジョイスティックコントローラーの操作
- Arduinoを用いた電子工作
できないこと
- ROSの本とかに載ってる、高価なハードの制御
- いっぱい
知っていること
- ROSでArduinoを制御することができること
- 複数のPC間でROSを用いた通信ができること
- 画像処理関連のパッケージがあること
- 自動運転や自己位置推定など、SLAM関連のパッケージがあること
使えそうなもの
- RaspberryPi
- ラスパイのカメラモジュール
- WSL内のROS
- Arduino
- 電子工作関連のパーツ、道具
- ジョイスティックコントローラー
ラジコンを制作する!!
上記の内容を一通り考えた結果、**『電子工作の延長線上としてROSを用いて制御を行う』**ことに落ち着きました。
今の私には十分な課題でしょう。
(電子工作すら初心者レベルですので・・・)
とりあえずモーターを回しておけば動きそうなラジコンカーを題材としました。
簡単すぎますかね?
いいんです。まずは土台を固めていきましょう!!
難しくしたいなら、この後に色んなオプションを付けていけばよいでしょう。
機能要件
上記の内容により、制作するものが決まりました。
では次に、その条件を満たすために**『必要な機能』を考えましょう。
また同時に、『無くてもいいけどあったらいい機能』**も挙げていくと、本当に必要な機能が絞れて本質を見極めやすくなります。
必須項目
『ラジコンカー』を満たすための項目を考えてみます。
これさえあれば成り立つ!といった、最低限の内容を挙げてみます。
- 車体、タイヤ、動力源がセット
- 前後左右の移動が可能
- 無線で操作可能
こんなもんでしょうか?
私にはこれくらいしか思いつきません。
逆に、これだけを満たせばラジコンカーとして成り立つワケです!!
任意項目
次に、『あったらいいな』という機能を挙げていきます。
こんなもん考えだすと無限に出てくるので、余力があれば実装できそうなものに留めておきます。
- スピード調節機能
- バック時のブザー
- 自動ブレーキシステム
- ハザードランプやウインカー
市販のラジコンにある機能といえばこれくらいでしょうか?
制作時に余力があれば実装したいですね。
不要項目
最後に、今回は不必要な項目について考えます。
任意項目と似てはいますが、**『何を捨てるのか決める』**ことは非常に重要です。
- 見た目、外装
今回は見た目に関しては完全に捨てます。
機能や制御システムに関与してこない部分は無視していきます。
完成したもの
こちらはネタバレにはなるのですが、最終的に盛り込んだ機能について説明していきます。
実装した機能
- 車体、タイヤ、動力源がセット
- 前後左右の移動が可能
- 有線での操作
- ハザードランプやウインカー
必須項目の『無線操作』が入ってねぇじゃん!!
と思った方々、すみません… 技量不足により実装することができませんでした…
ROSを用いた複数PC間の通信を試してみたのですが、どうも上手くいかず断念しました。
Arduinoや無線モジュールを使用すれば無線操作は可能でしょうが、ROS学習という今回の趣旨と外れるために実装しておりません。
近日中にリベンジします!!
実装していない機能
- 無線での操作
- スピード調節機能
- バック時のブザー
- 自動ブレーキシステム
無線操作以外の項目は任意項目ですね。
実装自体は可能でしたが、ROSの学習ではなく電子工作のオマケにしかならないと判断し、今回は実装を断念しました。
それこそ余力があれば、上記の機能も盛り込んだものを制作していきます!!