本書の詳細
「はじめに」「本書の構成」「目次」をPDFファイルでご覧いただけます。
これからの社会基盤を支える「ロボット技術者」を目指そう!
世界中の多くの分野で活用されているオープンソースのロボット開発プラットフォーム「ROS」(Robot Operating System)には、アプリケーションやドキュメント、さまざまなノウハウといった膨大な資産が蓄積されています。本書では、これらを用いてROSの基礎をステップ・バイ・ステップで学ぶことができます。
また、リアルタイム3D開発プラットフォームである「Unity」とROSを連携させることで、ロボット制御をより効率よくシミュレートし、さらには人工知能(AI)による自律制御にも活用できます。本書では「ROS」と「Unity」を用いて、ロボット制御を行うためのノウハウを盛り込みました。
なお、本書ではリアルロボットの制御についても取り上げていますが、多くのサンプルは実際のロボットを購入しなくても、無償で公開されているシミュレータを使っての動作確認が可能です。
本書の特徴
- ROSに蓄積された資産やリソースを使って、ロボット制御の基礎を学ぶことができます。
- 「Unity Robotics Hub」でROSとUnityを繋いで、ロボットアプリケーション開発をより効率よく行えるようになります。
- 移動ロボット、ロボットアームのモデルを使って、シミュレータでの制御の詳細をマスターできます。
- キューブ型ロボット「toio」とアーム型ロボット「myCobot」の2つのリアルロボットを、シミュレータおよび実機で操作することができます。
- 人工知能(AI)でロボットを自律動作させるための「Unity ML-Agents」の活用法を学ぶことができます。
ダウンロードデータは、ZIP形式で圧縮されています。WinZip(Windows)やStuffit(Macintosh)等のアプリケーションで解凍してご使用ください(ファイルサイズ:8KB)。
■P.193の手順2に以下の文章を追加
ROS2の場合は、ファイル名に合わせて3行目の「RosMessageTypes.MyCustomTopic.MyMessageMsg;」を「RosMessageTypes.MyCustomTopicMsg.MyMessageMsg;」に変更します。
■P.194の手順3に以下の文章を追加
ROS2の場合は、ファイル名に合わせて3行目の「RosMessageTypes.MyCustomTopic.MyMessageMsg;」を「RosMessageTypes.MyCustomTopicMsg.MyMessageMsg;」に変更します。
■P.199の手順2に以下の文章を追加
ROS2の場合は、ファイル名に合わせて3行目の「RosMessageTypes.MyService」を「RosMessageTypes.MyServiceSrv」に変更します。
■P.200の手順3に以下の文章を追加
ROS2の場合は、ファイル名に合わせて3行目の「RosMessageTypes.MyService」を「RosMessageTypes.MyServiceSrv」に変更します。
■P.174の手順1
誤:「~/colcon_ws/src/my_parameter/launch/my_parameter.launch」を作成し、
↓
正:「~/colcon_ws/src/my_parameter/launch/my_parameter_launch.py」を作成し、
■P.176の手順1
誤:「~/colcon_ws/src/my_parameter/launch/my_parameter.arg.launch」を作成し、
↓
正:「~/colcon_ws/src/my_parameter/launch/my_parameter_arg_launch.py」を作成し、
■P.145の下から6行目
誤:「helloフォルダ」が生成され、
↓
正:「my_custom_topic_msg」フォルダが生成され、
■P.149の1行目
誤:「~/colcon_ws/src/my_topic/my_custom_topic/my_publisher_node.py」
↓
正:「~/colcon_ws/src/my_custom_topic/my_custom_topic/my_piblisher_node.py」
■P.150の4行目
誤:「~/colcon_ws/src/my_topic/my_custom_topic/my_subscriber_node.py」
↓
正:「~/colcon_ws/src/my_custom_topic/my_custom_topic/my_subscriber_node.py」
■P.152の下から3行目
誤:「~/colcon_ws/src/my_service_srv/srv/MyService」を生成し、
↓
正:「~/colcon_ws/src/my_service_srv/srv/MyService.srv」を生成し、
■P.338の手順3
誤:「mycobot_style_arm」を選択して、
↓
正:「my_robot_arm」を選択して、
■P.339の図8-3-17の左側の画面
正しくは、この画面になります(図8-3-17の左側の画面)。
■P.117の手順3のファイル名のパス
誤:my_service
↓
正:my_action
■P.108の手順1のファイル名のパス
誤:my_servce
↓
正:my_service
■P.109の手順2のファイル名のパス
誤:my_servce
↓
正:my_service
■P.054のコマンド
誤:$ rosversion -d
galactic
↓
正:$ echo $ROS_DISTRO
galactic
■P.102の下から2行目
誤:~/catkin_ws/src/hello/msg/MyMessage.msg
↓
正:~/catkin_ws/src/my_custom_topic/msg/MyMessage.msg
■P.087、P.130、P.180、P.181のWindows用のマウントコマンド
「:cached」オプションを削除して、実行してください。
■P.320の最終行のコマンド
誤:$ catkin build my_move_group rospy
↓
正:$ catkin_create_pkg my_move_group rospy
■P.344の上から5行目に以下の原稿とリストを追加
そして、ゴール状態を移動できる位置に変更します。
・pose_planner.py(24行目あたり)
—-
pose_goal.position = Vector3(0.6, 0.2, 0.6)
q = tf.transformations.quaternion_from_euler(pi, 0, 0)
—-
↓
—-
pose_goal.position = Vector3(0.7, 0.0, 0.7)
q = tf.transformations.quaternion_from_euler(0, 0, 0)
—-
目次
第1章 ROSとUnity
1-1 ROSの概要
1-2 Unity Robotics Hubの概要
1-3 Unity ML-Agentsの概要
第2章 はじめてのROSアプリケーション
2-1 ROSの開発環境の準備
2-2 はじめてのROSアプリケーションの実行
2-3 ROSのデータ通信の仕組み
2-4 ROS1のデータ通信の確認
2-5 ROS2のデータ通信の確認
第3章 ROS1のデータ通信
3-1 ROS1のパッケージの作成
3-2 ROS1のトピックによる通信
3-3 ROS1の独自型のトピックによる通信
3-4 ROS1のサービスによる通信
3-5 ROS1のアクションによる通信
3-6 ROS1のパラメータの利用
3-7 ROS1のlaunchファイルの利用
第4章 ROS2のデータ通信
4-1 ROS2のパッケージの作成
4-2 ROS2のトピックによる通信
4-3 ROS2の独自型のトピックによる通信
4-4 ROS2のサービスによる通信
4-5 ROS2のアクションによる通信
4-6 ROS2のパラメータの利用
4-7 ROS2のlaunchファイルの利用
第5章 ROS-Unity間のデータ通信
5-1 ROS-Unity間のトピックによる通信
5-2 ROS-Unity間の独自型のトピックによる通信
5-3 ROS-Unity間のサービスによる通信
第6章 URDFによるロボットモデルの作成
6-1 URDFによる移動ロボットモデルの作成
6-2 URDFへの衝突属性と慣性属性の追加
6-3 URDFによるロボットアームモデルの作成
6-4 Xacroによるロボットモデルの作成
6-5 UnityへのURDFデータの読み込み
6-6 UnityのJointコンポーネント
6-7 UnityのArticulationBodyコンポーネント
第7章 移動ロボットの操作
7-1 移動ロボットの操作の流れ
7-2 ROSメッセージの可視化
7-3 地図の作成
7-4 地図によるナビゲーション
第8章 ロボットアームの操作
8-1 rvizによるMoveItの操作
8-2 PythonによるMoveItの操作
8-3 MoveIt Setup Assistantの利用
8-4 UnityによるMoveItの操作
第9章 リアルロボットの操作
9-1 toioの開発環境の準備
9-2 Unityによるtoioの操作
9-3 ROSによるtoioの操作
9-4 myCobotの開発環境の準備
9-5 PythonによるmyCobotの操作
9-6 UnityによるmyCobotの操作
9-7 myCobotのURDFモデルの作成
第10章 人工知能によるロボットの操作
10-1 Unity ML-Agentsの開発環境の準備
10-2 Unity ML-Agentsの学習環境の作成
10-3 学習と推論
10-4 人工知能によるtoioの操作
10-5 ロボットサッカーの強化学習
付録 ローカルマシンのPython環境の構築
A-1 ローカルマシンのPython環境の準備
A-2 Pythonの仮想環境の作成
A-3 Pythonスクリプトの実行