ROSロボットで学ぶ

次世代のIoTアーキテクチャ
和哉 著

社

田胡

コ

ロ
ナ

工学博士

コロナ社

【本書のご利用に当たって】
本書で解説している内容を実行・利用したことによる直接あるいは間接的な損害に対して，著作者およびコロナ社は一切の責任を負いかねます。利用はすべて利用者個人の責任において行ってください。
本書に掲載されているソフトウェアおよび Web ページ URL に関する情報は，本書執筆時点のものです。将来にわたって保証されるものではありません。特に，ROS
パッケージは仕様や実行条件の変更が頻繁にあります。これによっては，本書で解説しているサンプルなどが正常に動作しなくなることもあるので，あらかじめご了承ください。
本書の発行に当たって，読者の皆様に問題なく実践していただけるよう，できる限あらかじめご了承ください。

社

りの検証を行っていますが，以下の環境以外では構築・動作を確認していないので，
PC 本体：Windows10 Education 64 bit（CPU：Intel Core i7―9700，メモリ：32 GB）
開発環境：WSL2 Ubuntu 22 . 04 . 1 LTS，Docker Desktop V4 . 18 . 0，VSCode 1 . 77 . 3，

ロナ

その他環境は，docker 内で随時インストール

また，上記環境を整えたいかなる状況においても動作が保証されるものではありません。ネットワークやメモリの使用状況および同一 PC 上にあるほかのソフトウェアの動作状況によって，本書のプログラムが動作できなくなることがあります。併せてご了承ください。

本書の購入者に対する限定サービスとして，本書に掲載している参考文献リンク，コ

Python のソースコードと必要なデータファイルは，以下の Web ページからダウンロードできます。ぜひご利用ください。
https://momoi.org/books/iot

ま

え

が

き

本書の執筆中に，米国の電気自動車メーカのテスラが，作業に用いることができる人型ロボットの開発を表明しました。ロボットの新しい時代の幕開けとも捉えられます。
これまで，工業用ロボットや FA（Factory Automation）の分野で，わが国社は主導的な立場を保ってきました。また，本田技研工業の ASIMO は二足歩行技術に関して驚くべき先進性を示しました。世界と歴史に誇るべき大きな成果だと考えられます。しかしながら世界では，さらに新しい方向性に基づく技術

ロ
ナ

が着実に育ってきています。そこでは，クラウドや深層学習などの新しい技術が採用されているばかりでなく，技術開発の手法自体も変化しつつあります。
これを例えれば，スマートフォン（以降スマホと表記）の出現に比肩しうる，非常に大きな変革と新たな可能性が近付いているともいえます。スマホとクラウドによって，技術だけでなく IT 産業の構造自体が変わったといってもコ

過言ではありません。同等の規模の変化が近付いているのであれば，ぜひチャ
レンジしてみようではありませんか。うまく波に乗れるのと取り残されるのでは，雲泥の差があります。
そのためには，まず全体として何が起きつつあるのか把握することがたいへん重要です。例えば，IoT（Internet of Things）という言葉におけるThingsとは，最初はセンサを指していましたが，最近では，ロボットのようなセンサ
情報に基づいて自分で環境に働きかけることができる能力を持った機構も含まれるようになっています。そうなると，自動運転も IoT 技術の一つとなります。また， Internetとは，単なるデータ通信機構ではなく，情報や価値の共有の意味合いが含まれており，そのような視点が必要になります。このように， IoTは非常に広い領域をまとめて指す言葉となっており，基本的な骨格

ま

ii

え

が

き

をまず明確に把握する必要があります。個々の技術を深めることは，その後でも遅くはありません。
そこで本書では，自律移動ロボットに焦点を絞り，これに関連するすべての技術を山に登って周囲の地形を確認するように，全体的に俯瞰できるようになることを試みます。自律移動ロボットとは，車輪や無限軌道を用いて自分の知能で移動する機能を持ったロボットで，倉庫などの屋内で物を移動するために利用が広がっています。ここではさらに，作業するためのアームを持つ場合も含めます。
この分野では，最近，ROS（Robot Operating System）が利用されることが社

増えてきました。しかしながら ROS は，この分野全体ではありません。本書
では，ROS を道具の一つとして捉え，全体を従来よりさらに具体的かつ手軽に見通せるようにすることを試みました。

ロナ

また，各章末には「チャレンジしよう」と題し，その章で理解した知識をより深く自分のものにするための課題を準備しました。解答は準備しておりませんが，ヒントや手順を掲載しています。ぜひ取り組んでみてください。
さらに本書の最後では，エンジニアや研究者の勉強とキャリアについても触れます。受験勉強のように，いろいろな技術についてひたすら詳しくなること

コを目指すのではなく，何のためのどのような知識をどうやって獲得するのかをよく考える必要があるのは，分野を問いません。特に，エンジニアとして成功するためには，ビジネスの方向性と技術の全体像の双方を併せて考えられるよ
うになっていることが重要です。自律移動ロボットを例にとって，これについて考えてみることを通じて，全体のまとめとします。
なお，本書に関連したプログラムや訂正など，追加の内容をhttps://momoi.org/books/iotに掲示しますので，併せてご利用ください。
2023 年 9 月

田胡

和哉

目

1.

次

準

備

作

業

1 . 1 本 書 の 構 成 ････････････････････････････････････････････････････････････････ 1
1 . 2 試行に必要な準備 ･････････････････････････････････････････････････････････････ 4
1 . 3 実際の準備作業 ････････････････････････････････････････････････････････････････ 6
足資料 ･････････････････････････････････････････････････････････････････････ 10

2.1

自律移動ロボットの事例

ロ
ナ

2.

社

補

自律移動ロボットとは何か･･････････････････････････････････････････････････ 12

2.1.1

自 律 移 動 機 能････････････････････････････････････････････････････････････ 12

2.1.2

外界に働きかける機構 ････････････････････････････････････････････････････ 15

2.1.3

タスクプランニング ･･･････････････････････････････････････････････････････ 16

2.1.4

ロボットの機構････････････････････････････････････････････････････････････ 17

コ2 . 2 自律移動ロボットの利用 ････････････････････････････････････････････････････ 18
2 . 3 自律移動ロボットのハードウェア例 ･･･････････････････････････････････････ 19
2 . 4 ア ー ム の 例 ･･･････････････････････････････････････････････････････････････ 20
2.4.1

軽量なロボットアーム ････････････････････････････････････････････････････ 20

2.4.2

試作用自走型ロボットアーム ･････････････････････････････････････････････ 21

補

足

資

料 ･････････････････････････････････････････････････････････････････････ 22

チャレンジしよう ･･･････････････････････････････････････････････････････････････････ 22

3.
3.1

ロボットハードウェア

アクチュエータとその制御 ･･････････････････････････････････････････････････ 24

目

iv

次

3 . 1 . 1 アクチュエータを用いる IoT デバイス ････････････････････････････････････ 24
3.1.2

IoT デバイスに使用されるモータ ･････････････････････････････････････････ 25

3.1.3

モータの制御とサーボ機構････････････････････････････････････････････････ 28

3.1.4

モ ー タ の 形 状････････････････････････････････････････････････････････････ 29

3.1.5

I2C ･････････････････････････････････････････････････････････････････････････ 30

3.2 セ

ン

サ ･･･････････････････････････････････････････････････････････････ 31

3 . 3 伝統的なエッジ構成技術 ････････････････････････････････････････････････････ 34
3.3.1

Arduino ････････････････････････････････････････････････････････････････････ 34

3.3.2

メ イ ン CPU････････････････････････････････････････････････････････････ 35

3.3.3

エッジ基板の実装 ･････････････････････････････････････････････････････････ 36

3.3.4

処

理

性

能････････････････････････････････････････････････････････････ 38

補

足

資

社

3 . 4 新しいエッジ構成技術 ･･･････････････････････････････････････････････････････ 40
料 ･････････････････････････････････････････････････････････････････････ 45

4.
4.1

ロ
ナ

チャレンジしよう ･･･････････････････････････････････････････････････････････････････ 49

ROS と自律移動ロボットのソフトウェア

自律移動機能の実装･･････････････････････････････････････････････････････････ 51

4.1.1

想定するハードウェア ････････････････････････････････････････････････････ 51

4.1.2

実現すべき機能････････････････････････････････････････････････････････････ 52

コ

4 . 2 ROS のプログラミング･･･････････････････････････････････････････････････････ 55
4.2.1

ド キ ュ メ ン ト････････････････････････････････････････････････････････････ 56

4.2.2

イ ン ス ト ー ル････････････････････････････････････････････････････････････ 57

4.2.3

ROS のプログラム実行 ････････････････････････････････････････････････････ 58

4.2.4

ROS の 通 信････････････････････････････････････････････････････････････ 58

4.2.5

プログラムの実行 ･････････････････････････････････････････････････････････ 60

4.2.6

ROS の開発環境 ･･･････････････････････････････････････････････････････････ 62

4.2.7

Python による通信プログラム ････････････････････････････････････････････ 62

4 . 3 ROS による自律移動の実現 ･････････････････････････････････････････････････ 64
4.3.1

ROS におけるモータの制御 ･･･････････････････････････････････････････････ 66

4.3.2

モータ制御のシミュレーション ･･･････････････････････････････････････････ 67

4.3.3

MCU との連携方法 ････････････････････････････････････････････････････････ 68

目

次

v

4.3.4

odometry ･･････････････････････････････････････････････････････････････････ 68

4.3.5

tf 2 ･････････････････････････････････････････････････････････････････････････ 70

4.3.6

Python による tf 2 の利用 ･･････････････････････････････････････････････････ 72

4.3.7

障害物検出とコストマップ････････････････････････････････････････････････ 75

4.3.8

Navigation2 ････････････････････････････････････････････････････････････････ 78

4.3.9

自律移動のシミュレーション ･････････････････････････････････････････････ 81

4 . 3 . 10

ROS の使いこなし････････････････････････････････････････････････････････ 89

4 . 4 ROS ナビゲーション機構利用のまとめ ････････････････････････････････････ 90
4 . 5 自律移動機構の原理入門 ････････････････････････････････････････････････････ 92
自 己 位 置 推 定････････････････････････････････････････････････････････････ 92

4.5.2

SLAM ･･････････････････････････････････････････････････････････････････････ 95

足資

料 ･････････････････････････････････････････････････････････････････････ 97

社

補

4.5.1

チャレンジしよう ･･････････････････････････････････････････････････････････････････ 102

ロボットアームの制御ソフトウェア

ロ
ナ

5.

5 . 1 制 御 の 目 標 ･･････････････････････････････････････････････････････････････ 103
ロボットが行う作業 ･･････････････････････････････････････････････････････ 103

5.1.2

マニピュレータのモデル化･･･････････････････････････････････････････････ 104

5.1.3

パスプランニング ････････････････････････････････････････････････････････ 105

5.1.4

トラジェクトリプランニング ････････････････････････････････････････････ 106

5.1.5

アームのモーションプランニング ･･･････････････････････････････････････ 107

5.1.6

把持プランニング ････････････････････････････････････････････････････････ 107

コ

5.1.1

5 . 2 ROS を用いたアーム制御 ･･･････････････････････････････････････････････････ 108
5.2.1

全 体 の 構 造･･･････････････････････････････････････････････････････････ 108

5.2.2

形状のモデリング ････････････････････････････････････････････････････････ 109

5.2.3

試

行･･･････････････････････････････････････････････････････････ 110

5 . 3 ROS による把持動作の実現 ････････････････････････････････････････････････ 113
5 . 4 ロボットのモーションプランニングの原理入門 ･････････････････････････ 114
5.4.1

C―Space ･･････････････････････････････････････････････････････････････････ 114

5.4.2

自律移動のモーションプランニング ･････････････････････････････････････ 115

5.4.3

トラジェクトリプランニングの枠組み･･･････････････････････････････････ 117

目

vi
5.4.4 経

補

足

資

路

計

次

画･･･････････････････････････････････････････････････････････ 119

料 ････････････････････････････････････････････････････････････････････ 120

チャレンジしよう･･････････････････････････････････････････････････････････････････ 121

6.
6.1

アプリケーション

ピッキングロボットによる在庫管理の思考実験 ･････････････････････････ 122

6.1.1

全 体 の 構 成･･･････････････････････････････････････････････････････････ 122

6.1.2

在庫管理システム ････････････････････････････････････････････････････････ 123

6.1.3

入出庫システム･･･････････････････････････････････････････････････････････ 124

6.1.4

実

方

法･･･････････････････････････････････････････････････････････ 126

社

装

6 . 2 Behavior Tree によるタスク実行 ･･･････････････････････････････････････････ 127
ロボットの自律行動 ････････････････････････････････････････････････････････ 129
6.3.1

テ ィ ー チ ン グ ････････････････････････････････････････････････････････ 129

6.3.2

行 動 の 自 律 化 ････････････････････････････････････････････････････････ 129

6.3.3

自律行動の必要性 ･･････････････････････････････････････････････････････ 130

ロ
ナ

6.3

6.4

全 体 シ ス テ ム ･･････････････････････････････････････････････････････････････ 131

補

足

資

料 ････････････････････････････････････････････････････････････････････ 132

コチャレンジしよう･･････････････････････････････････････････････････････････････････ 133

7.

AI とコンピュータビジョン

7 . 1 本章で触れる事柄 ･･･････････････････････････････････････････････････････････ 135
7 . 2 コンピュータビジョンとロボット ･････････････････････････････････････････ 137
7.2.1

OpenCV ･･･････････････････････････････････････････････････････････････････ 137

7.2.2

ROS からの OpenCV 利用 ････････････････････････････････････････････････ 139

7 . 3 visual SLAM ･･････････････････････････････････････････････････････････････････ 143
7.3.1

開発現状の把握･･･････････････････････････････････････････････････････････ 145

7.3.2

対象画像の特徴点抽出による方法 ･･･････････････････････････････････････ 145

7.3.3

画素の直接比較による方法･･･････････････････････････････････････････････ 147

7.3.4

ロボットへの応用 ････････････････････････････････････････････････････････ 149

目

7.4

次

vii

機械学習と深層学習 ････････････････････････････････････････････････････････ 149

7.4.1

機

械

学

習･･･････････････････････････････････････････････････････････ 150

7.4.2

深

層

学

習･･･････････････････････････････････････････････････････････ 150

7.4.3

深層学習のフレームワーク･･･････････････････････････････････････････････ 155

7 . 5 物体検出，セグメンテーションと Spatial AI･･････････････････････････････ 156
7.5.1

物

体

検

出･･･････････････････････････････････････････････････････････ 156

7.5.2

セグメンテーション ･･････････････････････････････････････････････････････ 157

7.5.3

visual SLAM への深層学習の導入 ････････････････････････････････････････ 157

7.5.4

Spatial AI ･････････････････････････････････････････････････････････････････ 158

7 . 6 深層強化学習とその活用 ･･･････････････････････････････････････････････････ 159
強化

学

習･･･････････････････････････････････････････････････････････ 159

7.6.2

深 層 強 化 学 習･･･････････････････････････････････････････････････････････ 161

7.6.3

深層強化学習の改良 ･･････････････････････････････････････････････････････ 161

7.6.4

深層強化学習の実装 ･･････････････････････････････････････････････････････ 162

社

7.6.1

補

足

資

ロ
ナ

7 . 7 現在できることとできないこと――AI 利用のまとめ―― ･･････････････ 164
料 ････････････････････････････････････････････････････････････････････ 166

チャレンジしよう ･･････････････････････････････････････････････････････････････････ 170

8.

ク ラ ウ ド 技 術 ･･････････････････････････････････････････････････････････････ 171

コ8.1

システム基盤

8.1.1

仮

8.1.2

VM ････････････････････････････････････････････････････････････････････････ 173

想

8.1.3

コ

8.1.4

コンテナオーケストレーション ･･････････････････････････････････････････ 175

ン

化･･･････････････････････････････････････････････････････････ 171

テナ･･･････････････････････････････････････････････････････････ 173

8 . 2 エッジのソフトウェア ･･････････････････････････････････････････････････････ 178
8.2.1

RTOS ･････････････････････････････････････････････････････････････････････ 178

8.2.2

開

8.2.3

専用ハードウェアへの対応･･･････････････････････････････････････････････ 181

8.2.4

深層学習を用いた現実的なエッジシステムの実現･･･････････････････････ 182

発

環境･･･････････････････････････････････････････････････････････ 179

8 . 3 QoS 管理とフォグコンピューティング････････････････････････････････････ 182
8.3.1

ネットワークとその仮想化･･･････････････････････････････････････････････ 183

目

viii

次

8 . 3 . 2 DDS ･･･････････････････････････････････････････････････････････････････････ 184
8.3.3

フォグコンピューティング･･･････････････････････････････････････････････ 185

8 . 4 分散処理モデル ･･････････････････････････････････････････････････････････････ 187
8 . 5 次世代の IoT 基盤と技術課題 ･･････････････････････････････････････････････ 189
8.5.1

解 く べ き 課 題･･･････････････････････････････････････････････････････････ 189

8.5.2

シ ス テ ム 像･･･････････････････････････････････････････････････････････ 190

補

足

資

料 ････････････････････････････････････････････････････････････････････ 193

チャレンジしよう･･････････････････････････････････････････････････････････････････ 195

9.1

エンジニアによる価値創造の具体像

社

9.

エンジニアとしてすべきこと ･･････････････････････････････････････････････ 197
エンジニアの職種 ････････････････････････････････････････････････････････ 197

9.1.2

製品・サービスの提供におけるエンジニアの役割･･･････････････････････ 199

9.1.3

エンジニアとして何をすべきか ･･････････････････････････････････････････ 201

9.1.4

試 作 の 勧 め･･･････････････････････････････････････････････････････････ 202

ロ
ナ

9.1.1

9 . 2 自律移動ロボットによる社会の変革 ･･････････････････････････････････････ 203
9.2.1

対象となる産業分野 ･･････････････････････････････････････････････････････ 203

9.2.2

ロボットによる物流業の変革 ････････････････････････････････････････････ 204

新しい開発エコシステムの出現 ･･･････････････････････････････････････････ 208

コ

9.3

9.3.1

ROS の生かし方 ･･････････････････････････････････････････････････････････ 209

9.3.2

コンテナの持つ意味 ･･････････････････････････････････････････････････････ 210

9 . 4 Technology Outlook ･････････････････････････････････････････････････････････ 210
9 . 4 . 1 ロボットによる物流革命の可能性 ･･･････････････････････････････････････ 210
9 . 4 . 2 技術開発スタイルの変化 ････････････････････････････････････････････････ 211
9.4.3 戦補足資

略 ･･････････････････････････････････････････････････････････ 211

料 ････････････････････････････････････････････････････････････････････ 213

チャレンジしよう ･･････････････････････････････････････････････････････････････････ 213

あ
索

と

が

き･･････････････････････････････････････････････････････････････････ 215
引･･････････････････････････････････････････････････････････････････ 216

1

準

備

作

業

本章では，学習の準備を行います。本書の全体構成を理解してください。
各章は相互に密接に関連した内容なので，部分だけを取り出して理解することは困難ですが，必ずしも最初の章から順番に読む必要はありません。ま社

た，実際のプログラムによる試行を行うので，環境の整備が必要です。標準
的には，Windows10, 11 による PC を用いることを想定しています。

本 書 の 構 成

ロ
ナ

1.1

本書は，アーム付きの自律移動ロボットを例にとり，それを構成する全技術を見ることにより，IoT システムの具体的全体像を描き出すことを主目的としています。これに対応して，要素ハードウェア，ナビゲーション機構，アーム

コ制御機構，機械学習，システムアーキテクチャを取り上げ，なるべく原理に遡った理解を，できうる限り現実的な対象を用いて理解できるように試みます。
2 章では，試作目的を中心にロボットの具体像を紹介します。
3 章では，要素ハードウェアとして，センサ，アクチュエータのほかに，ロボット実現に用いるエッジ用 GPU（Graphics Processing Unit），FPGA（Field
Programmable Gate Array），RISC―V についても触れます。
4 章では，自律移動を実現するナビゲーション機構を見ます。自律移動機能とは，人間の助けを借りずに自らの判断で目的地まで移動できる機能を指します。 こ の た め の 機 構 と し て，ROS2 を 例 に と り，SLAM（Simultaneous
Localization And Mapping）について触れます。また，自律移動機能の一般的な原理について，数式によらない入門的な解説を試みます。

2

1.

準

備

作

業

5 章では，アーム機構の制御に関して ROS2 を例にとり，アームを動かす計
画を作成するモーションプランニング技術について触れます。また，その一般的な原理について，数式によらない入門的な解説を試みます。
6 章では，アームを持った自律移動ロボットの具体的なアプリケーションの例として，倉庫への適用を思考実験として検討します。これを通じ，ナビゲー
ション機構とアーム機構を組み合わせて，意味のある仕事を実行するための方法について，タスクプランニングを主体になるべく具体的に解説します。
7 章では，機械学習に関して，深層学習を用いた画像処理と強化学習の実現について触れます。

社

8 章では，ロボットをクラウドから制御するためのアーキテクチャ関連技術
として，コンテナとそのオーケストレーション，フォグコンピューティング（fog computing）などに触れます。本書でテーマとなる IoT の観点から，ロロナ

ボット機能を単体ではなく，クラウドも含めたシステム全体で実現するものと考えて検討を進めます。

9 章では，特に物流を例にとり，技術とビジネスの関係，および動向予測を試みます。また，これに対応してエンジニアのキャリアについても考えます。
学習の動機となるので，ここから読み始められても結構です。

コ

このように，対象を限定することによって，初めて詳細な全体像を具体的に描 き 出 す こ と が 可 能 に な り ま す。 そ の 過 程 で，ROS（Robot Operating
System）やフォグコンピューティングなどのプラットフォームとなりうるものについても触れます。プラットフォームとは，技術的な側面を超え，その上で開発や利用のためのエコシステムを生み出して，活動させるためのものです。プラットフォームの方向性を見据えて行動することは，自分の技術を生かすためにきわめて重要です。
ROS は，ロボットのソフトウェアを実現するためのプラットフォームです。これまでの ROS1 に続いて ROS2 が出現しています。ROS1 は，要素技術の研究開発プラットフォームとしての利用法が主でしたが，その成功を受け，ROS2 では商業利用にも適用できるようにすることが目的となっており，本格1.1

本 書 の 構 成

3

的な利用が始まると予想されます。以下では，ROS1 でも ROS2 でも成り立ち，
特に区別する必要のない事柄では ROS と表記します。
ROS は，ロボットを実現するために必要な機能のすべてを提供するスイー
トではなく，新たな機能を後からプラグインの形式で追加できるロボット実装のための技術プラットフォームとしての役割を持ちます。オープンソースに基づいて，多くの有効な技術開発の成果が ROS 上で使えるようになったのが，ROS が成功した理由です。今後，このような性格のプラットフォームをビジネスの場でどのように生かすべきか，技術の全体像を把握することによって継続的に検討してゆくことがきわめて重要です。

社

同様に，クラウドベンダもクラウドというプラットフォームを提供するプ
ラットフォーマとして，新しいハードウェアや深層学習に関する技術を取り込行っています。

ロ
ナ

んで，どのように IoT に関連するビジネスに対応してゆくか，熾 烈 な競争を本書では，このような現状認識に基づいて，ビジネスへの適用も視野に入れながら説明を行ってゆきます。各章の最後では，「補足資料」として，文献を掲げたり，補足説明を行ったりします。文献などの数を増やすのではなく，テーマごとにまとめてなるべく解説を付すようにしています。

コ

各章の最後には，さらに「チャレンジしてみよう」として，章ごとの学習内
容の振返りと課題出題を行います。演習などに用いることも考え，課題の正解は掲載しません。また，正解が限定されない課題もあり，よく考えていただく
ことを目標としています。その代わり，調査方法など，解答のための道筋をなるべく解説するようにします。自分なりに試行し，考えた成果を書き下すことは学習においてきわめて重要ですので，積極的に実施するようにしてください。
課題のなかには，多くの手数がかかるものもあります。通常のレポート課題のように，すべてを完全に実施することが目的ではなく，自分で考えて挑戦してみることが趣旨であり，簡単に解けるようには設定されていません。あきら
めることなく，粘り強い対応をお願いします。
本書に関連したプログラムや訂正など，追加の内容を

4

1.

準

備

作

業

https://momoi.org/books/iotに掲示しますので，併せてご利用ください。

1.2

試行に必要な準備

本書では，以下の各章で，ここで述べた各技術要素を見てゆきます。各要素に関しては，なるべく具体的な試行が行えるようにします。そのような試行では，特に ROS の利用が有効です。
ROS を用いた試行においては，Linux を利用するためのリテラシーがある程社

度必要です。あらかじめこれを身に付けるようにしておいてください［補足］†。
試行の目的の一つは，アルゴリズムを具体的に理解することです。さらに，関係する要素を網羅することが可能となり，ロボット技術に関する全体像が見ロナ

えてきます。説明を読むより，自分でプログラムを動かしてみたほうが，はる
かによく理解できます。この目的には，ROS を動かせる PC があれば，そのシミュレータを用いて実際にプログラムを動かしてみることが可能です。個人が勉強する目的では，この環境でも十分役に立ちます。
これを可能にする標準的な環境として，Windows10 以上の OS が動き，

コ

WSL2 が 有 効 化 さ れ て い る PC が 挙 げ ら れ ま す。 さ ら に，Windows 側 に
VSCode をインストールし，WSL2 上で利用するためのプラグインもインストー
ルしてください。以下では，WSL2 を単に WSL と表記します。
WSL を利用する場合，X ウィンドウが必須になります。X ウィンドウは，画面を表示する X サーバと，表示を要求する X クライアントから成り立って
おり，ROS には最初から X クライアント機能が組み込まれています。例えば，
ROS のロボットシミュレーション結果は，多くが X ウィンドウ上にグラフィ
カルに表示されます。
したがって，今回は X サーバを用意する必要があります。Windows11 の新†章末の補足資料を参照して下さい。

1.2

試行に必要な準備

5しいバージョンでは，別途 X サーバをインストールする必要はありませんが，そうでない場合は，Winodws 用の X サーバである VcXsrv の利用が便利です。
深層学習のプログラムを試してみる場合には，できるだけ高性能な GPU が付けられた PC を利用することが望ましいです。
さらに，docker 環境をインストールすると効果的な場合もあります。Windows 環境では，Docker Desktop が利用可能で簡単にインストールできます。
ROS のプログラムがインストール済みの docker イメージが配布されているので，非常に簡単に ROS プログラムを試してみることが可能になります。ま易に行えるようになります。

社

た，バージョンなど，条件の異なる複数のインストールを試してみることも容最初に，WSL の有効化，VSCode，X ウィンドウ，Docker Desktop のインス
トールを行っておいてください。ROS の動かし方については，必要になった

ロ
ナ

時点で，4 章で説明します。

ロボットを実際に使用するにはシミュレータによる準備だけでは不足であり，センサの性能や制御プログラムの能力を，実際にロボットを運用して確かめてみる必要があります。これらをすべて本番用のロボットで行うことは効率的でない場合があり，そのときには試作用のロボットを用います。ソフトウェ

コ

アの環境は，シミュレータを用いる場合と同一です。
試作用には，Turtlebot3 のような ROS 対応のロボットを購入することになります。最近では，このような目的に用いることが可能なロボットが複数販売されています。このとき，ROS 対応であることを必ず確かめる必要があります。特に，車輪を駆動するモータの回転を検出するセンサであるロータリエン
コーダは必須です。シミュレータ上で試したプログラムは，ほぼそのまま実ロボットでも試すことが可能です。
これとは別に，企業での試作では，システムの実現可能性を検証する目的でハードウェアの試作を行う場合があります。最近の IoT 用 CPU や GPU は，メモリなどの中核部品と併せてモジュール形状で売られている場合が多く，そのモジュールを利用したロボットの制御基板などを自作することは比較的容易に

あ

と

が

き

本書では，ロボットを例にとった IoT 技術について，ハードウェアから AIに至るまで総括的に見てきました。また，これに基づいた，Technology Out-社

look を得ることを試みました。山の上から地域全体を俯瞰するような視点が得られたでしょうか。これは，技術に基づいて新たな価値を創成しようとする
際に，不可欠の作業です。皆さんも，ぜひここでの情報に基づいて戦略立案をロ
ナ

試みてください。わが国の IT 産業に最も欠けており，今後の充実が望まれる
作業領域がここです。著者自身も，本書の執筆の過程で，ロボット技術とその利用に関して，オープン化など，これまでのアプローチとは大きく異なる技
術，方法がとられるようになり，新しい事業の核が世界規模で構築されつつあることを強く感じました。

コ

一方，本書での記述は，技術提供を指向する研究，開発活動には不十分で，特定の技術領域に関するより突っ込んだ調査が必要になります。しかし，どの技術領域を指向するにしても，事前に，ここで提供したような，全体像を描いた上で取り組むのは，不可欠なことであると考えられます。本書を，このような目的にもご活用いただければ望外の幸いです。

索
【あ】

【く】
60 グラフベースの SLAM
12 クロスコンパイラ
15 グローバルプランナ【い】
インフレーション【け】
77 ゲート機構

【う】

96
180
55

コ

ロ
ナ

117 誤差逆伝播法
15276
コストマップ【え】173
コンテナ
212 コンピュータビジョン
エコシステム160
16, 135
エージェント17 コンボリューション層
153
エッジ
186
エッジサーバ【さ】
146
エピポーラ幾何15 再帰型ニューラルネット
エンドエフェクタ
154
ワーク
【お】
60
サービス
59
オーケストレーションツール サブスクライブ
175 サーボ機構
28
15, 29サーボモータ

【か】

開始姿勢
仮説検証
活性化関数

【き】
キーフレーム
逆運動学
強化学習
教師あり学習教師なし学習協働ロボット【し】16
199 四元数
151 自己位置推定
姿 勢
自由度
147 終了姿勢
117 出 荷150 順運動学
150 順伝播型ニューラル
150
ネットワーク17 ジョイント

106
1, 51
150
148

【す】

ステッピングモータ
154 スループット

【こ】

運動学

衝突検出
自律移動機能
深層学習
深度推定

社

アクション
アクチュエータ
アーム

引

27
38

【せ】

セグメンテーション
セマンティック SLAM

157
158

【そ】

倉庫管理システム
ソケット
測 距
疎な方法
ソフトウェアの部品化
ソフトコア
ソフトリアルタイム
損失関数

123
187
32
145
190
42
38
152

【た】

タスク
タスクプランナ
70 タスクプランニング78, 92 多様体
15
【ち】
105
16 超音波センサ
122 直流ブラシモータ
117

16
16
16
165

32
25

【て】

154 ティーチング
13

129

索
ハードリアルタイム
155 パブリッシュ
162 バンドル調整
34

【と】
59
トピック
トラジェクトリプランニング
106
123
トランザクション【な】
内発的な報酬
ナビゲーション

162
14

【に】

ネットワークの仮想化
ネットワークファイル
システム
ネットワークブート

【は】

183
180
180

114
185
16, 104
107
16, 107
105
42

コ

配位空間
パケットロス
把 持
把持点
把持プランニング
パスプランニング
ハードコア SoC

【A】
A―D コンバータ
AGV
AI
AMCL
AMR

38
【め】
59
25
147 メイン CPU
59
メッセージ
【ひ】
59
メッセージパッシング
19
ピッキング
【も】
123
ピッキングロボット13
ピック アンド プレイス 19 モーションプランナ
モーションプランニング 13【ふ】206
物のインターネット
205
フィンテックフォグコンピューティング
186
31
フォトインタラプタ
165
複雑系
156
物体検出
175
不 変
28
ブラシレス直流モータ
206
プラットフォーマ
153
プーリング層

ロ
ナ

122
入 荷
ニューラルネットワーク
136

【ね】

217

【ゆ】

ユニオンマウント

【へ】

ベイズ統計

ポテンショメータ【ま】マイクロカーネル
マニピュレータマルコフ性

ラストワンマイルランドマークループクロージング
28

レジストリ
178 レスポンス
103
【ろ】
160

Arduino34

28
18 Behavior Tree
16 BT
92
18

CAN
127 CNN
127 C―Space

97

【れ】

密な方法

【B】

93
13
13

【る】

ローカルプランナ
ローコード
147 ロータリエンコーダ

【み】

204
94

【り】

粒子フィルタ
リンク
リンク構造

92

【ほ】

175

【ら】

社

ディープラーニング
フレームワーク
転移学習
点 群

引

175
38

55
132
28

【C】
31
153
114

218
【D】
60, 184
147
173
175
175
161
116
198

引

Linux
LSTM

4
154

【M】

【N】
【O】

205

【F】
FNN
FPGA

odometry
OMPL
154 OpenAI gym
1, 41 OpenCV

【G】

【P】

【H】

ロ
ナ

154 PID 制御
82 publish―subscribe
43 PWM
25
【Q】
1, 43

GAN
Gazebo
GPGPU
GPIO
GPU

QoS
Q 学習

181
56

コ

HDL
Humble

【I】

I2C
IMU
IoT

30
33
1, 24

【K】
Kubernetes

176

【L】
LiDAR

64

Navigation2

【E】
EC

92
25
33
108

MCL
MCU
MIPI
MoveIt2

12, 32

69
119
163
135

【S】
197
SE
60
server―client
197
SIer
43
SIMD
14, 95SLAM
96
グラフベースの――87
SLAM Toolbox
127
Smach ライブラリ
40
SoC
145
sparse な方法
158
Spatial AI
30
SPI
110
SRDF

社

DDS
dense な方法
dockerdockerfile
docker イメージ
DQN
DWA 法
DX

索

Task Constructor
Technology Outlook
53 tf 259 ToF
25 Turtlebot3

113
210
70
32
19

【U】
182 URDF
160【R】

RGB―D カメラ
RISC―VRMI
RNNROS
ROS ノード
ROS パッケージ
roscore
RPC
RTOS
Rviz2

【T】

34
41
188
154
2
55
55
60
188
178
82

82, 109【V】

visual SLAM
VLIW
VM
VPN

35, 143
44
171
35

【Y】
YOLO

156

―著 者 略 歴 ―社

1983 年 筑波大学大学院工学研究科博士前期課程修了（情報工学専攻）
1986 年 筑波大学大学院工学研究科博士後期課程修了（情報工学専攻）
工学博士
1986 年 筑波大学助手
1988 年 東京大学助手
1990 年 日本 IBM 株式会社東京基礎研究所研究員
2002 年 東京工科大学助教授
2010 年 東京工科大学教授
2021 年 東京工科大学名誉教授ロ
ナ

ROS ロボットで学ぶ次世代の IoT アーキテクチャ
Learning Next Generation IoT System Design with ROS Robots
2023 年 11 月 10 日

検印省略

Ⓒ Kazuya Tago 2023

初版第１刷発行
著
者
発 行 者

コ

印 刷 所
製 本 所

た

ご

かず

や

田
胡
和
哉
株式会社
コ ロ ナ 社
代 表 者
牛 来 真 也壮光舎印刷株式会社株式会社
グ リ ー ン

112―0011 東京都文京区千石 4―46―10発 行 所 株式会社 コ ロ ナ 社
CORONA PUBLISHING CO., LTD.
Tokyo Japan

振替00140―8―14844・電話（03）3941―3131（代）
ホームページ https://www.coronasha.co.jp

ISBN 978-4-339-02938-3

C3055

Printed in Japan（松岡）＜出版者著作権管理機構 委託出版物＞
本書の無断複製は著作権法上での例外を除き禁じられています。複製される場合は，そのつど事前に，出版者著作権管理機構（電話 03-5244-5088，FAX 03-5244-5089，e-mail: info@jcopy.or.jp）の許諾を得てください。

本書のコピー，
スキャン，デジタル化等の無断複製・転載は著作権法上での例外を除き禁じられています。
購入者以外の第三者による本書の電子データ化及び電子書籍化は，いかなる場合も認めていません。
落丁・乱丁はお取替えいたします。