Raspberry Pi Catを使用して屋外自律移動チャレンジに挑んだ話

#目次
[1.この記事の内容について](#1-この記事の内容について)
[2.津田沼チャレンジでの課題について](#2-津田沼チャレンジでの課題について)
[3.Raspberry Pi Catの構成および性能（ハードウェア）](#3-Raspberry Pi Catの構成および性能（ハードウェア）)
[4.Raspberry Pi Catの構成（ソフトウェア（ROS））](#4-Raspberry Pi Catの構成（ソフトウェア（ROS）)
[5.ナビゲーションのやり方](#5-ナビゲーションのやり方)
[6.Raspberry Pi Catを使用した理由 & 完走までの流れについて(お話)](#6-6. Raspberry Pi Catを使用した理由 & 完走までの流れについて(お話))
[7.実際の走行動画](#7-実際の走行動画)
[8.おわりに](#8-おわりに)


# 1. この記事の内容について
こんにちは、12月2日を担当させていただく、BEIKEです。
つくばチャレンジが中止になったことから、規模は違いますが大学の敷地内で代わりとして千葉工業大学 林原研の屋外自律移動ロボットチーム主体で津田沼チャレンジを開催しました。
そこで、Raspberry Pi Catを使用して完走したことについて書きました。(全部で4チーム出ました)
屋外自律移動にチャレンジしてみたいという方々や、屋外自律移動チャレンジャーの方々にも参考になると幸いです。

# 2. 津田沼チャレンジでの課題について
今回、私達が開いた大会の課題内容については以下のとおりです。
(今回、Raspberry Pi Catのチームは、開発期間が1ヶ月しかなかったので、必須課題のみに絞りました)

* 必須課題
 * 自律走行：スタートからゴールまで、約 700m の課題コースを自律走行すること。
 
* 選択課題
 * A 事前走行なしエリア：ある大学の建物内(2号館)、事前走行なしで自律走行すること。
 * B 白線検知:大学の敷地内の決められた場所（地面）にある白線を認識すること。
 * C 探索対象発見：公園内の探索エリアで、探索対象である複数のマネキン人形発見すること。

<img width="600" alt="Raspberry-Pi-Cat.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280989/7bebd502-cb26-8693-e6d6-76ad2d0b1069.png">

# 3. Raspberry Pi Catの構成および性能（ハードウェア）
####[Raspberry Pi Catについての詳細はこちら](https://rt-net.jp/products/raspberry-pi-cat/)
(今は生産中止になっていますが、後継機を検討されているようです。)

* ハードウェア仕様および性能

|速度 | 0.3m/s から 1.6m/s 程度|
|:-----------|------------:|
|    ペイロード    |    5kg     |
| サイズ        |      490×305×210(mm)     |

15型PCがちょうど上に乗る大きさです。コンパクトで小さいロボットです。

* ハードウェア構成(おおまか)

|制御コンピュータ | Raspberry Pi 3B､ 3B+ ＆ ノートPC|
|:-----------|------------:|
|    PC接続方法    |    有線LAN     |
| 2D LiDAR         |      UTM-30LX     |

試していないので、断言できませんがRaspberry Pi 3B+のみでも、700mを完走出来たと思います。
今回は、開発性の観点からPCを載せて走らせていました。
またPCの電源が少ない場合は、搭載してあるポータブル電源から給電を行えます。

<img width="600" alt="Raspberry-Pi-Cat.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280989/58eda503-00c7-b6c3-542d-3006a985a4f9.jpeg">

# 4. Raspberry Pi Catの構成（ソフトウェア（ROS））
#### Raspberry Pi 3B,3B+
* OS
  * [Ubuntu 'classic' 18.04 LTS Server](https://wiki.ubuntu.com/ARM/RaspberryPi)
* ROS
  * [Melodic](https://wiki.ros.org/melodic/Installation/Ubuntu)
* ROS Packages
  * [rt-net/raspicat_ros](https://github.com/rt-net/raspicat_ros)（コア)
  * [rt-net/raspicat_gamepad_controller](https://github.com/rt-net/raspicat_gamepad_controller)（ゲームパッドでコントロールする用）
  * [rt-net/raspicat_slam](https://github.com/rt-net/raspicat_slam)（マップ作成用）
  * [uhobeike/raspicat_navigation](https://github.com/uhobeike/raspicat_navigation)（ナビゲーション用）

#### Remote PC
* OS
  * [Ubuntu 18.04 LTS Desktop](https://www.ubuntulinux.jp/News/ubuntu1804-ja-remix)
* ROS
  * [Melodic](https://wiki.ros.org/melodic/Installation/Ubuntu)
* ROS Packages
  * [rt-net/raspicat_slam](https://github.com/rt-net/raspicat_slam)（マップ作成用）
  * [uhobeike/raspicat_navigation](https://github.com/uhobeike/raspicat_navigation)（ナビゲーション用）

## ・主なシステム構成図
![無題のプレゼンテーション(6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280989/722a18d3-7d8f-030d-535d-7f484ca59723.png)


## ・使用したNavigation Stack & 使用したnodeの関係について
![rosgraph_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280989/9349e6ce-f57a-634a-8b33-801dded7485f.png)
画像をクリックして表示しないと、見づらいです。（すみません）

自己位置推定用にamclを使用し、動作計画用にmove_baseとwaypoint_navigationを使用しました。
# 5. ナビゲーションのやり方

Raspberry Pi 3B,3B+

```
~$ roscore
```
```
~$ roslaunch raspicat_navigation raspicat_bringup.launch
```

Remote PC

```
~$ roslaunch raspicat_navigation raspicat_navigation.launch 
```
以上の操作を終えたらRemote PC上でrvizが立ち上がるので、2D Nav Goalで目標位置を指定し、ナビゲーションを開始します。

# 6. Raspberry Pi Catを使用した理由 & 完走までの流れについて(お話)
なぜ、Raspberry Pi Catを使用したの？という疑問の声があると思うので、お話します。
今回の津田沼チャレンジでは、チーム分けを行ってチームそれぞれの機体で出場することになったのですが、私の研究室は自作した自律移動ロボットを所有しておらず、どの機体で出場をしようか迷っていました。
そんなときに、ちょうど、研究室にはア－ルティから購入したRaspberry Pi Catというものがあることを知り、その機体で出場することにしました。しかし、その時はnavigationパッケージが開発されておらず、あと1ヶ月後には本番ということになっていました。それから、1ヶ月間、使えるnavigationパッケージにするために何度も走行を重ねて、なんとか完走することが出来ました。
# 7. 実際の走行動画

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">大学内で自律走行させました🚗<a href="https://twitter.com/hashtag/%E6%B4%A5%E7%94%B0%E6%B2%BC%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8?src=hash&amp;ref_src=twsrc%5Etfw">#津田沼チャレンジ</a><a href="https://t.co/dbzmDXqtx5">https://t.co/dbzmDXqtx5</a></p>&mdash; BEIKE (@BEIKE_RE) <a href="https://twitter.com/BEIKE_RE/status/1322502752983871488?ref_src=twsrc%5Etfw">October 31, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

# 8. おわりに
今回、話の内容的には、Raspberry Pi Catというロボットである程度の屋外自律移動が出来たよ、という話でした。この話を聞いて、少しでも屋外自律移動界隈で盛り上がっていただければ嬉しいです。最後まで読んでくださって、ありがとうございました。