ROS2本を１日でやってみたお話し『ROS2とPythonで作って学ぶAIロボット入門 』

# ROS2本を１日でやってみたお話し『ROS2とPythonで作って学ぶAIロボット入門 』
## はじめに
ROS2アドベントカレンダーの8日目を担当する。
るっとです。
[私のツイッターアカウントはこちらへ。](https://twitter.com/MeRTcooking
)

本記事にアクセスしてくださりありがとうございます！
何かしら皆様にとって有益な情報になると幸いです。

https://qiita.com/advent-calendar/2022/ros2

### ROS2とPythonで作って学ぶAIロボット入門
本記事で使用する本は[ROS2とPythonで作って学ぶAIロボット入門](https://www.kspub.co.jp/book/detail/5289563.html)となります。
私自身も購入してみましたが、大変良い本でした。お近くの本屋さんで皆様も一度手にとって頂けると幸いです。

## ROS2本を１日でやってみたお話し

### 開始日時 2022年10月6日 21:30
そもそも当初は１日でやろうともしていなかったです...

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">朝から論文や資料作成ばかりだったので、息抜きにやります！！！！！<br>『手を動かしてこその学び🤖！』<a href="https://twitter.com/hashtag/ROS?src=hash&amp;ref_src=twsrc%5Etfw">#ROS</a> <a href="https://t.co/GnyL2ftcFO">pic.twitter.com/GnyL2ftcFO</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1577999614019371009?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


### 終了日時 2022年10月7日 1:07
だいだい3時間30分で一通りやったらしいです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【終了：AIロボット ブートキャンプ】<br>実際に手を動かすと理解力が倍増でした。<br>今後困った時には辞書の様な感じでも使えそうです。<br>(*サポートサイトを使用させて頂きました！)<br>この分量と丁寧な解説をこの１冊にまとめるのは、膨大な時間が費やされていそうで、著者様に感謝です😀🙇<a href="https://twitter.com/hashtag/MeRT%E3%81%AE%E9%80%B2%E6%8D%97%E9%80%B2%E6%8D%97?src=hash&amp;ref_src=twsrc%5Etfw">#MeRTの進捗進捗</a> <a href="https://t.co/2qvreRCl3u">https://t.co/2qvreRCl3u</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578054403428581376?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### そもそも何故このような事をしたのか・・・

でべさんがROS2本、実況してて刺激をうけたからです笑（単純...）

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">講談社サイエンティフィク様(<a href="https://twitter.com/kspub_kodansha?ref_src=twsrc%5Etfw">@kspub_kodansha</a>) より御恵贈いただきました<br>「ROS2 と Python で作って学ぶ AI ロボット入門」 <br><br>遅くなりましたが、この本で ROS2 初めて入門していきます！<br><br>出村公成／萩原良信／升谷保博／タン ジェフリー トゥ チュアン・著<br><br>公式サイト<a href="https://t.co/g72W5C7UZM">https://t.co/g72W5C7UZM</a> <a href="https://t.co/xacQcLTSvH">pic.twitter.com/xacQcLTSvH</a></p>&mdash; でべ (@devemin) <a href="https://twitter.com/devemin/status/1577886648091774977?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


## 本題へ
### ROS2本の構成
以下の目次の様に、ROS2やAIロボットに関することが盛りだくさんです！

”目次引用元 https://www.kspub.co.jp/book/detail/5289563.html”
目次
第1章　AIロボットをつくろう！
1.1 AIロボット
1.2 ハードウェア
1.3 ソフトウェア

第2章　はじめてのROS2
2.1 ROS2の基礎知識
2.2 ROS2のシミュレータ
2.3 ROS2を動かしてみよう！
2.4 はじめてのROS2プログラミング
2.5 ROS2プログラムのつくり方
2.6 トピック通信プログラムのつくり方
2.7 サービス通信プログラムのつくり方

第3章　音声認識・合成
3.1 音声認識
3.2 音声合成
3.3 音声認識と音声合成の統合

第4章　ナビゲーション
4.1 ナビゲーション
4.2 差動駆動ロボットの運動学
4.3 自己位置推定と地図
4.4 ナビゲーション
4.5 制御
4.6 障害物回避
4.7 経路探索

第5章　ビジョン
5.1 ビジョンとは
5.2 ビジョンシステム
5.3 OpenCVとROSによる画像処理
5.4 カメラモデルとキャリブレーション
5.5 特徴検出
5.6 マーカ検出
5.7 深層学習による物体検出

第6章　マニピュレーション
6.1 マニピュレーションとは
6.2 ロボットアームの運動学
6.3 位置の運動学
6.4 CRANE+のモデル化
6.5 CRANE+を動かす
6.6 ROSの機能を利用したモデル化
6.7 MoveIt
6.8 他のノードから指令を受けて動作するプログラム

第7章　プランニング
7.1 プランニングの基礎
7.2 ステートマシン
7.3 Smachによるステートマシンのつくり方
7.4 Smachによる実装

付録A ローンチファイルの書き方

付録B アクション通信のプログラム
B.1 アクションサーバのプログラム
B.2 アクションクライアントのプログラム
B.3 ハンズオン

付録C ロボットアームの速度の運動学
C.1 位置の運動学の表記の一般化
C.2 速度の運動学

付録D 座標系と姿勢の表現
D.1 3次元の物体配置
D.2 座標系
D.3 座標変換
D.4 回転行列
D.5 同次変換行列
D.6 ロール・ピッチ・ヨー
D.7 クォータニオン
D.8 Pythonで回転変換

付録E tf：座標系の管理
E.1 tfとは
E.2 tfの特徴
E.3 tfの仕組み
E.4 tfのブロードキャスタ・リスナの例
E.5 URDFとの組み合わせ・センサデータの座標変換

## ブートキャンプの様子
実際にROS2本をやっている状況をお伝えします！


### 1. Docker（環境構築）
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Downloading........... <a href="https://t.co/CmHQS07aaf">pic.twitter.com/CmHQS07aaf</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578002458915532801?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="zxx" dir="ltr">http://127.0.0.1:6080と入力で起動！ <a href="https://t.co/Ir2Vg28c0C">pic.twitter.com/Ir2Vg28c0C</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578005649040224256?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


### 2. ROS2
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ご対面！！！！！ <a href="https://t.co/HZKDhb6GKV">pic.twitter.com/HZKDhb6GKV</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578013340739465217?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


↓意外とこれ嬉しかったです。
<blockquote class="twitter-tweet"><p lang="tr" dir="ltr">turtlesim <a href="https://t.co/9gPzBZy0qX">pic.twitter.com/9gPzBZy0qX</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578016266203598850?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 3. 音声認識

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">オウム返し　やふー<br>※音声でるので気をつけてください <a href="https://t.co/eFyvzgCIX5">pic.twitter.com/eFyvzgCIX5</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578023156433854471?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 4. Navigation
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【4章:Navigation】<br>様々なサンプルや手法についての記載があり、とても勉強になりました！！！ROS2 Navigationに私の手法もいつか取り入れてみよう。 <a href="https://t.co/T9QAlm24Rv">pic.twitter.com/T9QAlm24Rv</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578035373045092357?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 5. Vision
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【5章：ビジョン】<br>appleのつもり..........<br>とても勉強になりました！！！ <a href="https://t.co/YGQIGPQCSr">pic.twitter.com/YGQIGPQCSr</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578049005002850305?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 6. マニピュレーション
<blockquote class="twitter-tweet"><p lang="et" dir="ltr">CRANE+V2 <a href="https://t.co/f9yh5S4yJu">pic.twitter.com/f9yh5S4yJu</a></p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578051642486030336?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


### 7. ステートマシン＆付録

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【付録】<br>めちゃ良い付録が盛りだくさん！</p>&mdash; るっと🐨 Ph.D. 🤖 (@MeRTcooking) <a href="https://twitter.com/MeRTcooking/status/1578052477941059586?ref_src=twsrc%5Etfw">October 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 総括
実際に手を動かすと理解力が倍増でした。
今後困った時には辞書の様な感じでも使えそうです。
この分量と丁寧な解説をこの１冊にまとめるのは、膨大な時間が費やされていそうで、著者様に感謝です😀🙇
簡単な記事となりましたが、目を通して頂き誠にありがとうございました！

# 謝辞
本記事を執筆するあたりに『ROS2とPythonで作って学ぶAIロボット入門 』を使用させて頂きました。
ご関係者様に深く感謝を申しあげます。

# 参考文献
[ROS2とPythonで作って学ぶAIロボット入門](https://www.kspub.co.jp/book/detail/5289563.html)