ROS を用いたラジコン作成：ハードウェア制作編

# 概要
この記事は[RaspberyPi , Arduino , ROS を使ってラジコンを作る！！](https://qiita.com/take4eng/items/0b21c4927d42b3d7cd62)のハードウェア制作編です。
全体の概要や流れに関しては、本編をご覧ください。

[ROS を用いたラジコン作成：本編 (全体まとめ)](https://qiita.com/take4eng/items/0b21c4927d42b3d7cd62)
[ROS を用いたラジコン作成：要件定義編](https://qiita.com/take4eng/items/916fbbc68e2f7e34e384)
[ROS を用いたラジコン作成：ROS環境構築編](https://qiita.com/take4eng/items/70f167320ede46e4139c)
[ROS を用いたラジコン作成：Arduino制御編](https://qiita.com/take4eng/items/527793c9a1f902a0a62c)
[ROS を用いたラジコン作成：コントローラー制御編](https://qiita.com/take4eng/items/e067628971fa171d6d5a)
[ROS を用いたラジコン作成：ハードウェア設計編](https://qiita.com/take4eng/items/271924b986e072378439)
[ROS を用いたラジコン作成：ソフトウェア設計編](https://qiita.com/take4eng/items/1d5007ab623c3f7d3ad4)
[ROS を用いたラジコン作成：ソフトウェア制作編](https://qiita.com/take4eng/items/99df06b0e28d7c601632)
[ROS を用いたラジコン作成：ハードウェア制作編](https://qiita.com/take4eng/items/21d34d5bf56f99aba54e) **← 今ここ**
![S__24641539.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/b0d59ec3-4226-c14b-6730-acd771a44b9d.jpeg)

## 今回やること

- **車体を作成する**
- **設計通りに全パーツを組み立てる**
- **動作確認**

## 今回できるもの

- **完成品！！**

# ハードウェア制作
ついに最終工程まで辿り着きました！！
最後は**『これまでの内容を組み上げていく』**工程となります！！

## 車体の作成
まずは、全ての土台となる**『車体』**を作成していきます。

### 車体構造の把握
早速で大変申し訳ないのですが、今回は**車体の設計をしていません・・・**

[ハードウェア設計編](https://qiita.com/take4eng/items/271924b986e072378439)で決めたことは『何を使用するか』と『各パーツの接続』についてであり、寸法や強度に関しては行き当たりばったりで作成しました。

> 『割りばしで車体を作る』とか言ってる時点で雑なのは確定していたので、そこは個人開発という事で多めに見ていただければと思います。

そうは言っても、何となくの構造は考えていました。
それが下図のような感じです。
![車体.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/d7b54fcb-5b29-49b0-e363-b4862cb06f07.png)
つまり、**ブレッドボードが載るような車体を作成すれば、あとはその上に重ねて何とかなるだろう**的な感じです！！

という事で、上記の設定で車体を作成していきます！！

### 車体作成パーツ
[『ハードウェア設計編』]()でも記載したように、車体の肝となる『タイヤ』や『ギヤ』は**ダイソーのラジコンを分解(破壊)して取得したもの**を使用します。
今回はそれらの再構成を目的とし、骨組みは**『割りばし』や『アイスの棒』**を加工して作成します。

割りばしは家にあるものを、アイスの棒はAmazonで購入したものを使用しました。
> 後で見たらアイスの棒もダイソーに売っていました。
ダイソーのやつの方が安かった・・・

### 車体作成の様子
車体を作成するためのパーツが揃ったところで、さっそく取り掛かっていきます。
この辺は行き当たりばったりで作ったので、特に解説することはありません。

せっかくなので、その時の様子でも見て行ってください。
![S__24641541.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/23326330-3d97-11d2-41b0-e3de7761f696.jpeg)
![S__24641542.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/13fc30f8-5c23-d0c1-9449-49896cd37de8.jpeg)
![S__24641547.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/e4129d0f-625a-129b-f571-beaeac7b9fa9.jpeg)


### 車体完成
出来ました！！
中学生レベルの工作ですね(笑)
今回はこれで良しとしましょう・・・
![S__24641543.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/8420070a-7a8e-7508-075c-389c9d9cea61.jpeg)

## 全パーツ組み立て
車体が完成したので、あとはその上に全てを載せ、各パーツを接続していくのみです！！

**という事で、組み立てました！！**
![S__24641544.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/4f9a65ef-cd6c-3e11-2382-ab211100c1ac.jpeg)
![S__24641545.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/88c70fe5-10a2-ae4a-f558-9c38c7aa21a7.jpeg)
全てを載せてジャンパワイヤー等で接続するだけなので、非常に簡単ですね。
こだわるようなら、ユニバーサルボードにはんだ接続などで省スペース化や見栄えも多少良くなるでしょう。

# ラジコン完成！！
ついに完成しました！！
ROSを用いて制御するラジコンです！！
![S__24641539.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/b0d59ec3-4226-c14b-6730-acd771a44b9d.jpeg)
仕組みは単純ですが、ここまで書いてきたように、気にしなければならない点は多いですね。

では早速動かしてみましょう！！

## 動作確認
ラズパイの電源をバッテリーに切り替え、起動後にROSのlaunchファイルを実行します。
実行後はコントローラーでの操作が有効となるので、モニターやキーボードを切り離して床に設置しましょう。

```
roslaunch ros_car ros_car.launch
```



それではファーストランです！！

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【悲報】<br>DCモーターの出力が足りません。<br>くっそトロい…(笑) <a href="https://t.co/WgcCi2o6es">pic.twitter.com/WgcCi2o6es</a></p>&mdash; かくとー🤖ロボット開発 (@take4eng) <a href="https://twitter.com/take4eng/status/1340636792127557632?ref_src=twsrc%5Etfw">December 20, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

とまぁ、こんな感じでした(笑)

前輪を左右に動かすと、推進力よりも負荷が大きくなって止まっちゃいますね。
モーターの出力(トルク)に対して、バッテリー等が重すぎたようです。

ただ、当初の目的である**『ROSを用いて何かを作る』**という内容は達成できました！！

# 振り返り
ラジコンも完成したことですし、これまでの制作内容に関して振り返っていきます。

## 反省点・課題
ご覧の通り、制作物は動きはしたものの、とてもラジコンと呼べるような代物ではありません。
今回の制作の中で、何が悪かったのか、何が原因だったのか、解決するにはどうすればいいのか、考えていきます。

### 有線接続による操作
これは[要件定義編](https://qiita.com/take4eng/items/916fbbc68e2f7e34e384)の必須項目を満たせていないので論外ですね。
ROSを用いて複数PC間の通信がしたかったのですが、私の環境では上手くいっていない状況です。

ただ、ROSでの通信ができるという情報が出回っている以上、学習を続けていれば必ずできるはずです。
確実にリベンジするので、バージョン2ができたら更新するかもしれません。

### 動作が遅い・止まる
ここに関しては完全にモーターの選定が悪いです。
必要トルクの見極めをしていなかったので、設計不足という事になりますね。

ロボット開発において、トルクの計算は必要不可欠だと感じました。
いくらプログラムが完成されていても、それを実現できるハードウェアが無いと話にならないという事です。

次回の制作では、しっかり仕様の分かるモーターを使用し、ギヤ比や電圧を変更しつつトルクと積載重量の関係について見に付けたいと思います。

モーターを変更するとなると、それに合う電圧電流を出力できるバッテリーや、対象モーターのギヤボックス等を用意しなければならないので、今回よりも確実に費用がかかりますね(笑)

### ケーブルが多すぎる
見た目が悪すぎますね(笑)

配線方法や見た目に関しては、今回の趣旨から外れるので気にしないようにしていましたが、いざ完成品を見るとケーブルの多さに驚きました。

正直、この程度の設計規模なら多少のケーブルなんて気にならないと思っていました。
ですが、長すぎるケーブルや多すぎるジャンパワイヤーは邪魔にしかならないですね。

適切な配線を行う事の重要性を知ることができたのは、いい勉強になりました。

## 今後の予定
ラジコン制作のリベンジをします！！

改良したい点は、主に上記の『無線操作』と『まともな動作』ですね。
ケーブルに関しては他2つよりも優先度が低いため、余裕があればコネクタ等の作成から考える、程度に考えています。

あとは、せっかくをROS用いているので自動運転やSLAMなんかもさせてみたいですね。
カメラやLiDARを使うとなると、技術力や費用の関係でどこまでできるかは不明ですが・・・

ともかく、今回の制作によってROS開発の大きな土台が完成しました！！
今は小規模なラジコンですが、様々な要素を追加していくことで、いずれ良い感じに強いラジコンにしていこうと思います！！