ROS 2の初学者向け資料まとめ

# はじめに
「ROSおよびROS2で遊んでみたいけど何から始めればいいか分からない」といった人向けに、参考となる資料を集めてみました。執筆時点の2023年6月の情報ですが、随時更新していきます。
一番最初の概要の理解には、ROS Japan UGが作成＆公開している[説明資料](https://docs.google.com/presentation/d/1BZU3nFDiSrUU7wAMpqgY4kU6-65wxzvfHVRZigsHlDI/edit#slide=id.p)がおすすめです。

:::note info
本記事について
- 本記事では主に"ROS 2"を対象にしています。
- 本記事では技術的なことは扱わず、あくまで資料の紹介にとどめようと思います。
- 採用基準として、なるべく「日本語で書かれていて」、「網羅的な資料」を集めました。
:::

## 一覧
ROSのバージョンについては、書籍の上2冊がFoxy、Web上の資料はHumbleです。

|名称|種類|著者/作成者|備考|
|:--|:--:|:--|:--|
|[ROS2ではじめよう 次世代ロボットプログラミング](#ros2ではじめよう-次世代ロボットプログラミング)|書籍|[youtalk](https://twitter.com/youtalk)さん||
|[改訂新版 ROS2ではじめよう 次世代ロボットプログラミング](#ros2ではじめよう-次世代ロボットプログラミング)|書籍|[youtalk](https://twitter.com/youtalk)さん||
|[ROS2とPythonで作って学ぶAIロボット入門](#ros2とpythonで作って学ぶaiロボット入門)|書籍|[demura.net](https://twitter.com/NetDemura)さんほか||
|[【参考】Tutorials : ROS 2 Documentation](#参考tutorials--ros-2-documentation)|Web|ROS公式|情報量が多すぎて初学者には不向きかもしれません|
|[５分でワカル!? ROSとはなにか](#５分でワカル-rosとはなにか)|Web|[ROS Japan UG](https://twitter.com/ros_japan_ug)|概要だけならこれがおすすめです！|
|[ROS 2ハンズオン資料](#ros-2ハンズオン資料)|Web|[片岡大哉](https://twitter.com/hakuturu583)さん||
|[RaspberryPi OSではじめるROS2](#raspberrypi-osではじめるros2)|Web|[Ar-Ray](https://twitter.com/ray255ar)さん||
|[ROS講座(Qiita)](#ros講座qiita)|Web|[srs](https://qiita.com/srs)さん||
|[「ROS」の基礎とROS2プログラミングによるシステム開発への応用](#rosの基礎とros2プログラミングによるシステム開発への応用)|Web|[Hideki Takase](https://twitter.com/takasehideki)さん||
|[Choreonoid ROS 2モバイルロボットチュートリアル](#choreonoid-ros-2モバイルロボットチュートリアル)|Web|[中岡 慎一郎](https://twitter.com/s1nakaoka)さんほか||
|[【参考】Turlebot3 e-Manual](#参考turlebot3-e-manual)|Web|[ROBOTIS](https://github.com/ROBOTIS-GIT)||
|[ロボットの作り方-移動ロボットの制御とROSによる動作計画実習-](#ロボットの作り方-移動ロボットの制御とrosによる動作計画実習-)|講習会|日本ロボット学会|有料ですが基礎から学べます|


## ROSの前提知識について
ROSおよびROS 2は、基本的にはLinux OSでの開発が中心になります。
ROS 2ではWindowsも公式にサポートされていますが、ユーザが少ない印象です。
ユーザが少ない≒出回る情報も少ないため、初学者でもLinuxでの開発をおすすめします。
本記事で説明する書籍やWebページは、Linuxや一部Dockerの導入自体の記載は少ないものもあります。


## 書籍
### ROS2ではじめよう 次世代ロボットプログラミング
- 著者：[youtalk](https://twitter.com/youtalk)さん
- ROSのバージョン：Foxy
- 日本語で書かれたROS2についての書籍の代表作。ROS1の知識が必要な個所もありますが、ROS 2について、全体的に知識を得ることができます。

https://amzn.asia/d/09MRxAJ

### 2024/9 改訂新版が出ました！
- 著者：[youtalk](https://twitter.com/youtalk)さん
- ROSのバージョン：Jazzy
- 上記書籍の改訂版。ROS 2について、2024年時点の状況含め全体的に知識を得ることができます。
- 具体的には、ROS1説明箇所の削減、ROS 2エコシステム、実践プログラミングのコンテンツの追加

https://amzn.asia/d/0Wt10In

- また、初版のROS 1部分は、著者の[youtalk](https://twitter.com/youtalk)さんの個人ブログ内で公開されています。
https://www.youtalk.jp/2024/09/12/ros1-tour.html

### ROS2とPythonで作って学ぶAIロボット入門
- 著者：[demura.net](https://twitter.com/NetDemura)さんほか
- ROSのバージョン：Foxy
- 2022年9月に出版された比較的新しめのROS2に関する書籍。Python×ロボットはもちろん、座標変換や運動学など、ロボット工学の内容も記載されています。

https://amzn.asia/d/b9IOVE6

## Web
以下の資料は基本的に無料です。
Web上の資料は一部の技術要素をかいつまんで説明する資料が多く、初学者の方にはとっつきにくいかもしれません。
そこで、以下にはある程度網羅的に情報が整理されている資料を集めました。

### 【参考】Tutorials : ROS 2 Documentation
- 作成者：ROS 2公式
- ROSのバージョン：すべて
- ROS 2公式のチュートリアル資料です。もちろん情報量は多いのですがこれからROSを初めて触る方には分かりにくいかもしれません。
- ROSの通信の仕組みや概念的な個所はGIFなどもあり分かりやすいです。そのあたりの説明は参考にしつつ、つまづいた際の辞書的に活用するのがいいと思います。
- 英語が苦手という方は必ずしも読まなくてもよいと思っています。

https://docs.ros.org/en/humble/Tutorials.html


### ５分でワカル!? ROSとはなにか
- 作成者：[ROS Japan UG](https://twitter.com/ros_japan_ug)
- ROSのユーザコミュニティの公式の資料です。「５分でワカル」というだけあって、情報が凝縮されています。まずはこの資料で概要をつかむことをおすすめします。

https://docs.google.com/presentation/d/1BZU3nFDiSrUU7wAMpqgY4kU6-65wxzvfHVRZigsHlDI/edit#slide=id.p

### ROS 2ハンズオン資料
- 作成者：[片岡大哉](https://twitter.com/hakuturu583)さん
- ROSのバージョン：Humble
- ROS 2のハンズオン資料。ROS2についての説明と、実際に手を動かしてシミュレータでロボットの操作やナビゲーション、簡単な自律移動ソフトウェアの開発までが載っている資料です。

https://ouxt-polaris.github.io/ros_handson/

### RaspberryPi OSではじめるROS2
- 作成者：[Ar-Ray](https://twitter.com/ray255ar)さん
- ROSのバージョン：Humble
- Raspberry Pi上でのROS 2の開発方法。センサの使用についても記載されているため実機の開発もしたい方におすすめです。説明がとても丁寧でびっくりします。(スクショやGIFが逐一あるイメージ)

https://zenn.dev/array/books/5efdb438cf8be3


### ROS講座(Qiita)
- 作成者：[srs](https://qiita.com/srs)さん
- ROSのバージョン：Humble
- ROS講座では134記事も投稿していて、基礎から応用まで内容がとても豊富です。ROS 2の講座も最近始まったようです！

https://qiita.com/srs/items/5f44440afea0eb616b4a

https://qiita.com/srs/items/5f0d765343ca78f524ed

### 「ROS」の基礎とROS2プログラミングによるシステム開発への応用
- 作成者：[Hideki Takase](https://twitter.com/takasehideki)さん
- ROSのバージョン：Humble
- [ROS2のセミナー資料](https://www.j-techno.co.jp/seminar/seminar-51794/)。ROS2とは何かの説明からシミュレータの実行、ROSノードの作成まで一通り揃っています。

https://drive.google.com/drive/u/1/folders/1_FTBO9PogTKTzP-dEH3jYEuI1GFgAwWk

### Choreonoid ROS 2モバイルロボットチュートリアル
- 作成者：[中岡 慎一郎](https://twitter.com/s1nakaoka)さんほか
- ROSのバージョン：Humble
- Choreonoidを使用した、ROS2のチュートリアルです。250ページ程度にもなる実習用の丁寧な[資料](https://github.com/choreonoid/choreonoid_ros2_mobile_robot_tutorial/blob/main/doc/ros2_mobile_robot_tutorial_ja.pdf)(pdf/pptx)付きで、Choreonoid上で移動ロボットを動かしながらROS 2とChoreonoidについてのチュートリアルをすることができます。

https://github.com/choreonoid/choreonoid_ros2_mobile_robot_tutorial/tree/main


### 【参考】Turlebot3 e-Manual
- 作成者：[ROBOTIS](https://github.com/ROBOTIS-GIT)
- ROSのバージョン：Foxy、Humble
- Turtlebot3というロボットのマニュアルです。実機のマニュアルかと思いきや、シミュレータでも実行できるので実機を持っていなくても動かすことができます。マニュアル内には移動ロボットのSLAMやナビゲーション、さらにロボットアームの操作方法の記載もあります。

https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/#overview

## 講習会

### ロボットの作り方-移動ロボットの制御とROSによる動作計画実習-
- 主催：[日本ロボット学会](https://www.rsj.or.jp/event/seminar/news/2022/S142.html)
- ロボット学会が主催する講習会(有料)です。お金に余裕がある方には最もお勧めします。自分はROSをある程度知った状態でしたが一度参加しました。
- ロボット学会と自分は何も関係ないですが以下におすすめの理由を記載します。
    - Ubuntuのセットアップから資料が用意されていて、本当に何も知らなくても参加できる
        - cdやlsのコマンドから教えてくれます(という記憶)
    - 実機とシミュレータどちらも動かせる
    - ロボット関係の研究者の方の講義を受けられる

ただ、以下の開催回(2022/9)が最新ですが、以下の懸念点もあります。
- ROS1の講習
- Turtlebot3を購入することが前提なので10万円程度かかる

https://www.rsj.or.jp/event/seminar/news/2022/S142.html

### 日本テクノセンターのセミナー
- 主催：日本テクノセンター
- 主催は日本テクノセンターのようですが、講師はソフトウェア関係の会社や大学教員等から選ばれるようです。下記の開催回では実際に実機を使用できるようで、上記の高瀬先生の資料を見るに、基礎から学ぶことができそうです。

https://www.j-techno.co.jp/seminar/seminar-56297/


## おわりに
ROS 2の資料はROS1と比較すると多いとは言えません。ただ、以下にもある通り、ROS 1の最後のバージョンであるROS noeticも2025年にはEOLとなります。

http://wiki.ros.org/Distributions

この記事がROS 2をこれから触る人に少しでも参考になれば幸いです！

また、本記事の修正、資料の追加の必要はまだまだあるかと思います。本記事のコメントか[Twitter](https://twitter.com/ko1_baseba11)等に連絡いただければと思います。