第3回 ROSとは?ROSのパッケージ構成を分かりやすく解説
第3回 ROS【Robot Operating System】解説 コラム
このコラムでは数回に分けて、ROS(Robot Operating System)とは?についてご紹介します。連載3回目は「ROSのパッケージ構成」について解説します。
- 第1回 ROSとは?基本的概念とROS2が必要になった背景
- 第2回 ROSとROS2のプログラミング概念
- 第3回 ROSとは?ROSのパッケージ構成を分かりやすく解説
- 第4回 ROSアプリケーション開発のモデルケース
- ROS実践編、自作ロボットでROSを動かした様子とQ&A
※ROS技術が学べるオンライン学習 Eureka Box(ユーリカボックス)で公開中
想定する読者 |
|
想定する読者の 知識レベル |
|
本連載を読んだ後に得られる期待値 |
|
目次
1. ROSの構成
ROSのパッケージ構成
次にROSの構成です。ROSの公式サイトでは、次のように描かれています。
インストールパッケージがカテゴリごとに分類されています。
カテゴリ
|
説明 |
CLIENT (LANGUAGE) LAYER | プログラミング言語ごとの基本ライブラリ |
ROBOTICS APPLICATION | 標準的なアプリケーションパッケージ |
ROBOTICS APPLICATION FRAMEWORK | 個別のアプリケーションプログラム作成のためのフレームワーク |
COMMUNICATION LAYER | データ通信(メッセージ定義、ライブラリ、ユーティリティコマンド) |
HARDWARE INTERFACE LAYER | ハードウェア制御のためのインターフェイス |
SIMULATION | シミュレータ |
SOFTWARE DEVELOPMENT TOOLS | ソフトウェア開発支援ツール |
以下は、カテゴリごとに、パッケージと簡単な説明をまとめたものです。
CLIENT (LANGUAGE) LAYER
言語ごとのruntimeやsdkのようなものです。
パッケージ | 説明 |
roscpp | C++言語ライブラリ |
rospy | Python言語ライブラリ |
roslisp | Lisp言語ライブラリ |
rosjava | Java言語ライブラリ |
roslibjs | JavaScript言語ライブラリ |
ROBOTICS APPLICATION
高機能なアプリケーションです。前回触れたnavigationやMoveIt!が該当します。
パッケージ | 説明 |
MoveIt! | マニピュレータ動作制御の統合ライブラリ(動作計画、物体把持、逆運動学計算、制御、空間認識、障害回避) |
navigation | ナビゲーション(移動体の誘導) |
executive_smach | 行動計画と状態管理 |
descartes | マニピュレータの経路計画 |
rospeex | 音声コミュニケーション(音声認識・合成・対話処理) |
ar_track_alvar | ARタグを使った位置や姿勢の推定 |
(teleop pkgs) | キーボードやジョイスティックを使った遠隔操作 (デバイスに応じて同様のパッケージが複数存在) |
rocon | 複数ロボットの協調制御 |
mapviz | 2Dデータの可視化 |
people | 人の検出とトラッキング |
ROBOTICS APPLICATION FRAMEWORK
アプリケーションというよりも、機能を実現するためのライブラリのようなものです。たとえば、tfはロボットの座標変換をしてくれるパッケージ、ros_controlは軸制御を行うときの標準的なライブラリです。
パッケージ | 説明 |
dynamic_reconfigure | パラメータの動的変更 |
robot_localization | センサーフュージョンによる非線形状態推定 |
robot_pose_ekf | 拡張カルマンフィルタ(EKF)によるポーズ推定 |
industrial_core | 産業用ロボットコントローラ通信のノードとライブラリ |
robotwebtools | WEBベースのツール群 |
ros_realtime | リアルタイム制御のためのツール群 |
mavros | ドローンや小型航空機との通信プロトコル |
tf | 座標変換ライブラリ |
robot_state_publisher | ロボット状態(リンクの3Dポーズ)のブロードキャスト |
robot_model | ロボット構造のオブジェクトモデル |
ros_control | アクチュエータ制御 |
calibration | キャリブレーション |
octomap_mapping | 3D占有グリッドマップ |
vision_opencv | OpenCVとのインターフェイス |
image_pipeline | 画像データの変換処理 |
laser_pipeline | レーザー距離データの変換処理 |
perception_pcl | ポイントクラウドデータ処理 |
laser_filters | レーザー距離データのフィルタ処理 |
ecto | センサや画像処理のためのデータフローフレームワーク |
Eureka Boxは厚生労働省が実施している助成金、人材開発支援助成金の適用対象となります。
COMMUNICATION LAYER
ここには、通信のための便利ツールや標準的なメッセージのタイプの定義などが分類されています。
パッケージ | 説明 |
common_msgs | 共通メッセージの定義(アクション、エラー診断、幾何、ナビゲーション、センサー) |
rosbag | ログ情報の記録と再生 |
actionlib | アクション通信 |
pluginlib | プラグイン(実行時の処理交換) |
rostopic | トピック情報の取得、トピックのパブリッシュ |
rosservice | サービス情報の取得、サービスの要請 |
roslaunch | 複数ノードの実行と実行オプションの設定 |
rosnode | ノード情報の取得 |
ros_console | コンソールロギング |
rosparam | パラメータ情報の取得、パラメータの変更 |
rosmaster | マスタ(ネームサービス) |
rosout | stdout/stderr |
HARDWARE INTERFACE LAYER
ハードウェアドライバーです。
パッケージ | 説明 |
camera_driver | カメラ画像 |
(GPS/IMUdrivers) | 測位、加速度、ジャイロ |
(rangefinderdrivers) | 距離計測 |
(3Dsensordrivers) | 3D計測 |
diagnostics | ハードウェアのエラー管理 |
joystick_driver | ジョイスティック |
audio_common | 音声の録音再生 |
(Force/Torquesensordrivers) | 力・トルク |
(Powersupplydrivers) | 電源 |
rosserial | シリアル通信 |
(Ethercatdrivers) | 産業用オートメーション使用されるネットワーク |
ros_canopen | CANベースのネットワークプロトコル |
SIMULATION
物理シミュレータが含まれます。
パッケージ | 説明 |
gazebo_ros_pkgs | 3Dロボットシミュレータ |
stage_ros | 2Dロボットシミュレータ |
SOFTWARE DEVELOPMENT TOOLS
開発ツールです。パッケージ管理やビルドシステムが含まれます。
パッケージ | 説明 |
RViz | 3次元可視化 |
rqt | GUIの開発支援ツール |
wstool | ワークスペース操作 |
rospack | パッケージ管理 |
catkin | ビルドシステム |
rosdep | パッケージの依存関係管理 |
2.ROS(Robot Operating System)を実際に学んでみる
ROSの技術を実際に学んでみたいという方に、まずは無料でお試しいただけるオンライン学習プラットフォームを準備しています。
業務が多忙なエンジニアでも、スキマ時間で効率的に実践的な学習が出来るEureka Boxは、エンジニアの現場の声から生まれたツールです。
ROS(Robot Operating System)を正しく理解した上で、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。
- 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
- USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
- ソフトウェア開発に関わる無料お試しコンテンツも充実
デジタル人材が不足している今の時代、特にソフトウェア開発の現場では「上流技術」のスキルを持つ人が必要とされています。
そのスキルが効率よく身につくように設計されたのが「オンライン学習のEureka Box(ユーリカボックス)」
Eureka Boxの運営企業であるエクスモーションは、日本を代表する大手自動車メーカー、医療機器メーカー等、ソフトウェア開発の支援を実際に行っている企業だからこそ、現場で活かせる学びに焦点をあてたプログラムに構成されています。
「Eureka Box(ユーリカボックス)」を是非ご活用ください。
トップ企業をサポートしてきた技術と知見を1冊に「ソリューションガイドブック」
私達エクスモーションが行った、日本を代表する企業へのコンサルティングやトレーニングとは?
オンライン学習 Eureka Box誕生のベースとなった技術や知見が満載!
実際に支援を行ったお客様からのメッセージも掲載し、読み応えある1冊に仕上げています。
関連コラム
- 第1回 ROSとは?基本的概念とROS2が必要になった背景
- 第2回 ROSとROS2のプログラミング概念
- 第3回 ROSとは?ROSのパッケージ構成を分かりやすく解説
- 第4回 ROSアプリケーション開発のモデルケース
- ROS実践編、自作ロボットでROSを動かした様子とQ&A
※ROS技術が学べるオンライン学習 Eureka Box(ユーリカボックス)で公開中