ROS2ではじめよう 次世代ロボットプログラミング

僕が半年かけて執筆してきた著書「ROS2ではじめよう 次世代ロボットプログラミング」が8月13日に技術評論社から出版予定です。

本日はその概要と本書の構成を紹介します。詳細な目次は確定次第、後日共有する予定です。

概要

amazon.co.jpより転載

Robot Operation System (ROS) の次世代バージョンであるROS2はロボットアプリケーション開発のためのミドルウェアです。ROS2は、ROS1で得られた経験をもとにほぼ再実装されたため、ROS1と直接的には互換性がありません。ROS1は通信内容が暗号化されておらず認証機能もありませんので、セキュリティ面で見ると商用ロボットの開発には不向きでした。ROS2ではセキュリティ、メンテナンス性、ライセンス、商業サポートなどのさまざまな観点から見直され、開発当初から製品への組み込みを目標にして再設計されています。

本書は今後のロボットアプリケーション開発のデファクトスタンダードになるROS2の入門書です。基本操作から、ROS1の資産を活用するための接続方法、パッケージの開発方法までを網羅します。本書のサンプルコードはC++ですが、それ以外のプログラミング言語を用いたクライアントライブラリについても解説します。ROS1ではUbuntuのみで利用できましたが、ROS2からはWindows、macOSで利用できるようになり、さらに利用者が増えると見込まれています。主なOSの開発環境のセットアップについても解説します。これからロボット開発をはじめたいと考える方だけでなく、ROS1ユーザにとっても有用な1冊です。

本書の構成

誌面より転載

  • はじめに: 本章です。ROSの概要を紹介します。

  • 1章 ROS1ツアー: ROS1を知らない方、使ったことがない方に向けて、ROS1の備える機能を駆け足で紹介します。ROS1をすでに使ったことがある方は読み飛ばしていただいても結構です。

  • 2章 ROS2の開発環境セットアップ: ROS2の開発環境をセットアップします。OSには一番セットアップが簡単なUbuntu 18.04を採用して進めますが、ROS2はWindows 10にもmacOSにも対応しています。その他のOSへのインストールは付録をご覧ください。

  • 3章 ROS2の基本機能: まず、ROS1とROS2との比較を行い、なぜROS2が必要になったかを理解します。その後、ROS2が備える改善されたメッセージ通信機能を一通り紹介します。また、そのメッセージ通信を支える技術であるDDS (Data Distribution Service) 、ROS2のコマンドラインインタフェースやビルドツールについても紹介します。

  • 4章 ROS2の応用機能: ROS2で新たに機能追加、改善された機能を紹介します。これらの概念を理解し使いこなせるようになれば、ROS2を習得したといっても良いのではないでしょうか。

  • 5章 ROS2に対応したツール/パッケージ: ROS2は正式リリースから2年以上が経過したとはいえ、すべてのROS1パッケージがROS2に移行しているわけではありません。現在移行が進んでいるパッケージの中から特に大切なものを選んで紹介します。

  • 6章 Roomba用ROS1ドライバのROS2移行: ROS1パッケージの開発経験者は、ROS2の基本機能、応用機能、既存パッケージの存在を学んだ後、次に自分のROS1パッケージをROS2に対応させたくなるはずです。本章ではiRobotのRoomba用ROS1ドライバをROS2に対応させる移行作業を通じて、実践的なROS2プログラミングを学びます。

  • 7章 Pythonクライアントライブラリrclpy: 本書ではソースコード例のプログラミング言語にC++14を用いています。ROS2の公式クライアントライブラリとして最も盛んにメンテナンスされているのが、C++版のクライアントライブラリ rclcpp だからです。それ以外のプログラミング言語の中から、本章ではスクリプト言語Python3のクライアントライブラリ rclpy を取り上げ、プログラミング方法を説明します。

  • おわりに: 本書に込めた熱い気持ちを最後にまとめました。本書を手にとって最後まで読み進んでいただいた読者の皆様と、本書を執筆するにあたってご協力いただいた様々な方々への感謝の言葉も綴っています。

  • 付録: 本文で扱わなかったUbuntu 18.04以外のOSへのインストール手順や、サンプルコードのライセンス条項を記載します。また、3章、4章で紹介した内容よりも、さらに上級者向けのROS2プログラミング手法をご紹介します。