HelloWorld 実装の概要
ROS のプログラミングは主に C++ と Python を使います。ほとんどのプログラムはどちらの言語でも実装できます。各チュートリアルでは C++ と Python の両方の例を示し、ユーザが自身に合った実装方法を選べるようにしています。
ROS における全体的な実装の流れは、言語が違っても似ています。HelloWorld プログラムを例にすると、ステップは次の通りです。
- ワークスペースを作成する。
- パッケージを作成する。
- ソースファイルを編集する。
- 設定ファイルを編集する。
- ビルドして実行する。
C++ と Python の主な違いはステップ 3 と 4 にあります。以下のセクションでは両実装に共通する手順を詳しく説明し、C++ と Python それぞれ専用のセクションも設けています。
HelloWorld(C++ 版)
-
ワークスペースの作成と初期化
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_make例:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
ROS パッケージの作成と依存関係の追加
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgs例:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
ソースファイルの編集
パッケージの
srcディレクトリに移動し、新しい C++ ソースファイル(例:hello.cpp)を作成します。bashcd ~/<workspace_name>/src/<package_name>/src touch hello.cpp例:
bashcd ~/seeed_ws/src/hello_world/src touch hello.cpp次のコードを
hello.cppにコピーします。cpp#include "ros/ros.h" int main(int argc, char *argv[]) { ros::init(argc, argv, "hello"); ros::NodeHandle n; ROS_INFO("Hello World!"); return 0; } -
CMakeLists.txtの編集パッケージの
CMakeLists.txtの末尾に次を追加します。cmakeadd_executable(<node_name> src/hello.cpp) target_link_libraries(<node_name> ${catkin_LIBRARIES})例:
cmakeadd_executable(hello src/hello.cpp) target_link_libraries(hello ${catkin_LIBRARIES})注: ここで言う
CMakeLists.txtファイルは、作成したパッケージのディレクトリにあるものであり、ワークスペースのディレクトリにあるものではありません。 -
ワークスペースのビルド
bashcd <workspace_name> catkin_make例:
bashcd ~/seeed_ws catkin_make -
プログラムの実行
ターミナルを 1 つ開き、ROS core を起動します。
bashroscore別のターミナルを開き、ワークスペースを source してノードを実行します。
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hello例:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello
Hello World! という出力が表示されるはずです。
HelloWorld(Python 版)
-
ワークスペースの作成と初期化
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_make例:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
ROS パッケージの作成と依存関係の追加
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgs例:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
scriptsディレクトリの追加と Python ファイルの作成パッケージのディレクトリに移動し、
scriptsディレクトリと新しい Python ファイル(例:hello.py)を作成します。例:
bashmkdir ~/seeed_ws/src/hello_world/scripts cd ~/seeed_ws/src/hello_world/scripts touch hello.pypython#!/usr/bin/env python import rospy if __name__ == "__main__": rospy.init_node("hello") rospy.loginfo("Hello World!") -
実行権限を追加
bashsudo chmod +x hello.py -
CMakeLists.txtの編集パッケージの
CMakeLists.txtの末尾に次を追加します。cmakecatkin_install_python(PROGRAMS scripts/hello.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) -
ワークスペースのビルド
bashcd <workspace_name> catkin_make例:
bashcd ~/seeed_ws catkin_make -
プログラムの実行 ターミナルを 1 つ開き、ROS core を起動します。
bashroscore別のターミナルを開き、ワークスペースを source してノードを実行します。
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hello.py例:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello.pyHello World!という出力が表示されるはずです。
注意
ワークスペースの setup ファイルをより簡単に source できるようにするには、.bashrc に追加します。
echo "source ~/<workspace_name>/devel/setup.bash" >> ~/.bashrcこれにより、新しいターミナルを開くたびにワークスペースが自動で source されます。