はじめに
ROSをインストールする際には,ROS Wikiの記載通り,以下のいずれかのコマンドを実行していると思います.
Desktop-Full Install: (Recommended) : ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
sudo apt-get install ros-kinetic-desktop-full
Desktop Install: ROS, rqt, rviz, and robot-generic libraries
sudo apt-get install ros-kinetic-desktop
ROS-Base: (Bare Bones) ROS package, build, and communication libraries. No GUI tools.
sudo apt-get install ros-kinetic-ros-base
説明書きの通り,それぞれ必要なパッケージがインストールされるのですが,それぞれのコマンドで具体的にどのパッケージがインストールされるのか気になったので,まとめてみました.
本記事はROS Kinetic Kameに基づいています.
ざっと確認した限りでは,Melodic Moreniaでも同じですが,見落としがあるかもしれません.
調査方法
ROSインストールのためのコマンドで指定しているdesktop-full
やdesktop
,ros-base
は,それぞれメタパッケージになっています.
ですので,それぞれのメタパッケージ内のpackage.xmlに記載されている必須パッケージを見ていけばいいことになります.ROS Wikiを見るか,githubのソースを見るとわかります.
なお,パッケージ名のアンダースコア(_)は,インストールの際はハイフン(-)に置き換わることに注意してください.
インストールの際は,
sudo apt-get install ros-kinetic-ros_base
ではなく,
sudo apt-get install ros-kinetic-ros-base
になります.
ROS Wikiでパッケージの詳細を見たい場合は,アンダースコアで見てください.例えば,
http://wiki.ros.org/ros-base
ではなく,
http://wiki.ros.org/ros_base
になります.
メタパッケージ間の関係性
メタパッケージdesktop_fullを頂点としたメタパッケージの関係性を表したのが以下の図です.左側が上位メタパッケージで,右側の線がつながったメタパッケージがインストールされます.
たとえば,ros-kinetic-desktop
でインストールされるのは,vizとrobot,そしてros_baseとros_coreになり,simulatorsとperceptionに含まれるパッケージはインストールされないことになります.ROS Wikiの説明の通りです.
各メタパッケージでインストールされるパッケージ
各メタパッケージでは,下位のメタパッケージとともに個別のパッケージがインストールされます.
desktop_full
基本的に下位のメタパッケージであるdesktop,simulators,perceptionがインストールされるだけなのですが,なぜかurdf_sim_tutorialというチュートリアルが入っています.未確認ですが,おそらく,perceptionやsimulatorsで入るパッケージが必要なチュートリアルになっているのだと思います.
desktop
チュートリアル用のパッケージがほとんどで,あとはユーティリティの類です.
1. angles
ラジアンと度の変換,正規化($-\pi~\pi$に変換),2つの角度の短い方の差分の計算などといった角度の処理に関するユーティリティパッケージです.
2. common_tutorials
3. geometry tutorials
4. ros_tutorials
5. roslint
ROSパッケージのCMake lintを行うことができます.C++とPythonの両方のコードをチェックしてくれるようです.
6. urdf_tutorial
7. visualization_tutorials
simulators
rqt/gazebo/stage用のパッケージ群です.
1. gazebo_ros_pkgs
2. rqt_common_plugins
3. rqt_robot_plugins
4. stage_ros
perception
センサーによる認識に必要なパッケージ群です.
1. image_common
2. image_pipeline
3. image_transport_plugins
4. laser_pipeline
5. perception_pcl
6. vision_opencv
viz
rviz関連のパッケージ群です.
1. rqt_common_plugins
2. rqt_robot_plugins
3. rviz
robot
ロボットを動かすために必要なパッケージ群です.
1. control_msgs
2. diagnostics
3. executive_smach
4. filters
5. geometry
6. joint_state_publisher
7. kdl_parser
8. kdl_parser_py
9. robot_state_publisher
10. urdf
11. urdf_parser_plugin
12. xacro
ros_base
アクション通信やプラグインなど,ros_coreをベースにして,より高度な仕組みを提供するパッケージ群です.
1. actionlib
2. bond_core
3. dynamic_reconfigure
4. nodelet_core
5. class_loader (Melodicからros_coreに移動)
6. pluginlib (Melodicからros_coreに移動)
ros_core
ROSの中核をなすパッケージ群です.ROS特有のノードやトピック通信,サービス通信などが実装されています.
多岐に渡り,参照関係も複雑ですので,詳細な中身は記事を改めて書きたいと思います.
まとめ
ROSでインストールされるパッケージ群についてまとめました.
ある程度理解が進めば,用途に合わせて,ros_base(場合によってはros_core)と他にご自身が必要なパッケージをインストールするという方法が良いでしょう.本当の初心者にはおすすめできないですが,それほど難しい構成でもありませんので,チュートリアルを一通り終えたら,トライしても良いと思います.
特にラズパイやその他の組み込みボードのように,計算資源が限られており,可視化ツールなどが必要ない場合には,必須になる知識かと思います.
今後は,ROSの基本仕様であるros_coreとros_baseの中身について記事にしていきたいと思います.