はじめに
前回の記事でROSのインストールの際のメタパッケージ群の関係性についてまとめました.
今回は,ROSの中核をなすros_coreパッケージについて中身をまとめていきます.
ros_coreパッケージに含まれるもの
ros_coreメタパッケージには,いくつかのメタパッケージが含まれ,パッケージ・ビルドシステムを提供するros,ノード間通信を提供するros_comm,代表的なメッセージ型を提供するcommon_msgsやros_comm_msgsがあります.これら以外に単独のパッケージとして,roslispやcatkinなど多数が含まれています.
ros
説明としては,ROSのパッケージ・ビルドシステムということになるのですが,ビルドシステムとしてcatkinが採用されて久しいので,エンドユーザが意識して使うのはツールとしてのrosbash(roscleanも?)ぐらいでしょうか.roscppなどクライアントライブラリからはroslibやroslangが呼ばれています.
Core
1. mk
2. rosbuild
3. roslang
4. roslib
Tools
1. rosbash
2. rosboost_cfg
3. rosclean
4. roscreate
5. rosmake
6. rosunit
ros_comm
ROSの中核となるノード間通信を提供するパッケージです.C++とPythonのクライアントライブラリと,ツールやユーティリティの類が入っています.rosbagやroslaunchのようなよく使われるもの以外にも,有用なツール(たとえばメッセージの同期ができるmessage_filters)があるので,初心者を脱してROSに対する理解を深める意味も含めて,見てみると良いと思います.
Client
1. roscpp
2. rospy
Tool
1. rosbag
2. rosgraph
3. roslaunch
4. rosmaster
5. rosmsg
6. rosnode
7. rosout
8. rosparam
9. rosservice
10. rostest
11. rostopic
12. topic_tools
Utilities
1. message_filters
2. roslz4
3. roswtf
4. xmlrpcpp
common_msgs
よく使われるROSメッセージを束ねたパッケージです.メッセージという名前ですが,トピック通信用のメッセージ型に限らず,サービス通信用のサービス型,アクション通信用のアクション型も定義されています.ROSのeco-systemの中でテストされ,使われてきた型ですので,独自の型を定義する前に一度確認すると良いですね.
1. actionlib_msgs
2. diagnostic_msgs
3. geometry_msgs
4. nav_msgs
5. sensor_msgs
6. shape_msgs
7. stereo_msgs
8. trajectory_msgs
9. visualization_msgs
ros_comm_msgs
下記2つのメッセージ型はros_commからの参照がある関係からか,ソースコード上まとめて(https://github.com/ros/ros_comm_msgs.git )管理されています.取り扱いはつぎの単独パッケージ群と同じです.
なお,rosgraph_msgsは,シミュレーション時刻やrosoutで使われるログ,トピックの統計情報(周期やメッセージ数)などをやり取りするためのLow-Levelメッセージ用の型です.エンドユーザには基本的に関係ないですね.
1. rosgraph_msgs
2. std_srvs
その他(単独パッケージ)
ビルドシステムとしてのcatkin,EigenやNumPyなどをcmake上でお手軽に使えるようにするcmake_modules,メッセージ関連のパッケージ,クライアントライブラリ関連のパッケージ,などがあります.
1. catkin
2. cmake_modules
2. gencpp
3. geneus
4. genlisp
5. genmsg
6. gennodejs
7. genpy
8. message_generation
9. message_runtime
10. rosbag_migration_rule
11. rosconsole_bridge
12. rosconsole (melodic以降)
13. roscpp_core
15. roslisp
15. rospack
16. std_msgs
まとめ
ROSの中核をなすros_coreパッケージの中身を見てきました.
この記事の内容はROS Wikiとgithubを追っていけばわかることなのですが,入り組んでいてどこに何があるかわかりにくいと感じたので,構造を整理してまとめてみました.