7.1.3 ROS アーキテクチャ
ROS ファイルシステム
ハードディスク上の ROS ファイルシステムの構造は次のように整理されます。
WorkSpace --- カスタムワークスペース
|--- build: CMake と catkin のキャッシュ、設定、その他中間ファイルを格納するコンパイル用スペース。
|--- devel: ヘッダ、動的・静的ライブラリ、実行ファイルなどコンパイル済みターゲットを格納する開発用スペース。
|--- src: ソースコード
|-- package: ROS パッケージ(ROS の基本単位)。複数のノード、ライブラリ、設定ファイルを含む。パッケージ名は小文字で、英数字とアンダースコアで構成する。
|-- CMakeLists.txt: ソースファイル、依存関係、ターゲットファイルなどコンパイルルールの設定。
|-- package.xml: 名前、バージョン、作者、依存関係などのパッケージ情報。
|-- scripts: Python ファイル用ディレクトリ。
|-- src: C++ ソースファイル用ディレクトリ。
|-- include: ヘッダファイル。
|-- msg: メッセージ通信フォーマットファイル。
|-- srv: サービス通信フォーマットファイル。
|-- action: アクションフォーマットファイル。
|-- launch: 複数ノードを一括起動するための launch ファイル。
|-- config: 設定ファイル。
|-- CMakeLists.txt: コンパイルの基本設定。これらのディレクトリやファイルの一部はすでに紹介済みです。例えば、パッケージの作成、src と scripts ディレクトリでの C++ や Python ファイルの記述、launch ディレクトリでの launch ファイルの作成などです。package.xml と CMakeLists.txt もすでに設定されています。他のディレクトリは後のチュートリアルで紹介します。
package.xml
package.xml ファイルは、名前、バージョン、作者、メンテナ、依存関係といったパッケージのプロパティを定義します。形式は次の通りです。
<?xml version="1.0"?>
<package format="2">
<name>hello_world</name>
<version>0.0.0</version>
<description>The hello_world package</description>
<maintainer email="xuzuo@todo.todo">xuzuo</maintainer>
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<export>
</export>
</package>CMakeLists.txt
CMakeLists.txt は CMake ビルドシステムへの入力で、パッケージのビルドに使用されます。C++ と Python ファイルのコンパイル設定や依存関係の定義を含みます。
cmake_minimum_required(VERSION 3.0.2)
project(demo01_hello_vscode)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
catkin_package(
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(hellow src/hello.cpp)
add_dependencies(hellow ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(hellow
${catkin_LIBRARIES}
)
catkin_install_python(PROGRAMS
scripts/hello.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)ROS ファイルシステムコマンド
ROS ファイルシステムを操作するためのよく使うコマンド:
- パッケージの作成:
catkin_create_pkg <package_name> <dependency_1> <dependency_2> ... - パッケージのインストール:
sudo apt install <package_name> - パッケージの削除:
sudo apt purge <package_name> - パッケージ一覧:
rospack list - パッケージの検索:
rospack find <package_name> - パッケージへ移動:
roscd <package_name> - パッケージのファイル一覧:
rosls <package_name> - パッケージ検索:
apt search <package_name> - パッケージファイルの編集:
rosed <package_name> <file_name>
ROS コマンドの実行
- ROS Core 起動:
roscore - ROS ノードの実行:
rosrun <package_name> <executable_file_name> - ROS ファイルの起動:
roslaunch <package_name> <launch_file_name>
ROS 計算グラフ
ROS の計算グラフは、ROS システムの実行時構造を表し、ノード間のデータフローを示します。rqt_graph で可視化できます。
rosrun rqt_graph rqt_graph未インストールの場合:
sudo apt install ros-<distro>-rqt
sudo apt install ros-<distro>-rqt-common-plugins<distro> をご自身の ROS バージョン(例: kinetic、melodic、noetic)に置き換えてください。
計算グラフのデモ
次に、ROS に組み込まれているカメシミュレーションを使って計算グラフをデモします。
-
例の実行: 前述の手順に従ってカメシミュレーションを実行します。
-
計算グラフの表示: 新しいターミナルを開いて入力します。
bashrqt_graphまたは
bashrosrun rqt_graph rqt_graph
下の画像のように、ノード間の関係を示すネットワークトポロジが表示されます。
