•  

コラム

  1. TOP
  2. コラム
  3. コラム
  4. 第3回 ROSとは?ROSのパッケージ構成を分かりやすく解説

第3回 ROSとは?ROSのパッケージ構成を分かりやすく解説

ROS
  • LINEで送る
  • このエントリーをはてなブックマークに追加
第3回 ROSとは?ROSのパッケージ構成を分かりやすく解説

第3回 ROS【Robot Operating System】解説 コラム

このコラムでは数回に分けて、ROS(Robot Operating System)とは?についてご紹介します。連載3回目は「ROSのパッケージ構成」について解説します。

ROSとは?の関連コラム
連載コラム 実践編を読むには
Eureka Box 無料会員登録
本文書の目的
本連載は、次のような想定・目的で記述しています。
想定する読者
  • ROS/ROS2の存在を知っていて興味がある人
  • 世の中の情報を調べたが、コマンドやコードなどオペレーションレベルの情報が多く、基本的な概念を体系的に理解できていない人
  • ROS/ROS2を使用するイメージや享受できるメリットがわからないので、自分のプロジェクトに取り入れられるかが判断できない人
想定する読者の
知識レベル
  • 組込みシステムや制御系開発でプログラムを書いたことがある
  • TCP/UDP等を使ったネットワークプログラミングを知っていることが望ましい
本連載を読んだ後に得られる期待値
  • ある程度体系的に知識の理解・整理ができ、それをベースに、世の中の公知の情報を参照しながら、ROS/ROS2を使ったプログラミングを始めることができるようになる
  • ROS/ROS2を使った開発がどのようなものか、なかったときとどう違うかを想像でき、利点を理解できる


1. ROSの構成

ROSのパッケージ構成

次にROSの構成です。ROSの公式サイトでは、次のように描かれています。

ROSのパッケージ構成

画像出典:http://wiki.ros.org/APIs(参照 2020/11/27)


インストールパッケージがカテゴリごとに分類されています。
カテゴリ
説明
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

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は、エンジニアの現場の声から生まれたツールです。

エンジニア独学、オンライン学習、ソフトウェア開発独学、エンジニア教材、無料コンテンツ、Eureka Box ユーリカボックス



ROS(Robot Operating System)を正しく理解した上で、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。

Eureka Box会員登録特典(無料)
  1. 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
  2. USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
  3. ソフトウェア開発に関わる無料お試しコンテンツも充実

デジタル人材が不足している今の時代、特にソフトウェア開発の現場では「上流技術」のスキルを持つ人が必要とされています。

そのスキルが効率よく身につくように設計されたのが「オンライン学習のEureka Box(ユーリカボックス)」

Eureka Boxの運営企業であるエクスモーションは、日本を代表する大手自動車メーカー、医療機器メーカー等、ソフトウェア開発の支援を実際に行っている企業だからこそ、現場で活かせる学びに焦点をあてたプログラムに構成されています。

「Eureka Box(ユーリカボックス)」を是非ご活用ください。

次回は、ROSを使って実際の開発をどう行うかをご紹介します。
株式会社エクスモーション シニアスペシャリスト 玉木 淳治

執筆者プロフィール

株式会社エクスモーション シニアスペシャリスト

玉木 淳治

専門分野:

レガシーシステムの可視化と改善、ソフトウェア品質診断
コード解析、ツール開発



トップ企業をサポートしてきた技術と知見を1冊に「ソリューションガイドブック」

私達エクスモーションが行った、日本を代表する企業へのコンサルティングやトレーニングとは?
オンライン学習 Eureka Box誕生のベースとなった技術や知見が満載!
実際に支援を行ったお客様からのメッセージも掲載し、読み応えある1冊に仕上げています。



関連コラム

ROSとは?の関連コラム
連載コラム 実践編を読むには
Eureka Box 無料会員登録
  • LINEで送る
  • このエントリーをはてなブックマークに追加

技術別コラム一覧

要求の定義と仕様化(USDM)

ROS

システムズエンジニアリング

クラウド技術
(AWS Greengrass)

Docker

モデルベース開発(MBD)

派生開発(XDDP)

SPL

用語集