ROSのプログラムは、パッケージとして作成します。パッケージの作成方法を確認するため、定番の「Hello World!」を表示するだけのプログラムのパッケージを作成してみます。
このページのパッケージのソースは、https://github.com/joe-ash/my_helloにアップしてあります。
以下のコマンドで、ビルドするためのワークスペースを作成します。
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
$ cd ~/catkin_ws
$ catkin_make
パッケージは、下記のコマンドで作成します。
$ cd ~/catkin_ws/src
$ catkin_create_pkg my_hello std_msgs roscpp
$ cd my_hello
$ ls
include → インクルードファイルフォルダ
src → ソースファイルフォルダ
CMakeLists.txt → ビルド設定ファイル
package.xml → パッケージ設定ファイル
パッケージ設定ファイル(package.xml)を下記のように修正します。
<?xml version="1.0"?>
<package>
<name>my_hello</name>
<version>0.0.0</version>
<description>Hello world package</description>
<maintainer email="joe@ash.jp">joe</maintainer>
<license>BSD</license>
<url type="website">http://joe.ash.jp/</url>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>std_msgs</build_depend>
<build_depend>roscpp</build_depend>
<run_depend>std_msgs</run_depend>
<run_depend>roscpp</run_depend>
<export></export>
</package>
ビルド設定ファイル(CMakeLists.txt)を下記のように修正します。
cmake_minimum_required(VERSION 2.8.3)
project(my_hello)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
catkin_package(
CATKIN_DEPENDS roscpp std_msgs
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(my_hello src/my_hello.cpp)
target_link_libraries(
my_hello
${catkin_LIBRARIES}
)
#include <ros/ros.h>
int main(int argc, char **argv) {
ros::init(argc, argv, "my_hello");
ROS_INFO("Hello world");
return 0;
}
$ cd ~/catkin_ws
$ catkin_make
rosrunコマンドで、パッケージ名とノード名を指定して、プログラムを起動すると、「Hello world!」が表示されます。
$ source ~/catkin_ws/devel/setup.bash
$ rosrun my_hello my_hello
[ INFO] [1551417712.766162913]: Hello world!
パッケージを削除する場合は、ワークスペースのsrcディレクトリから、パッケージのディレクトリを削除します。次に、buildとdevelディレクトリを削除します。ディレクトリを削除したら、catkin_makeを実行し、buildとdevelを再作成します。
$ cd ~/catkin_ws
$ rm -rf src/my_hello
$ rm -rf build devel
$ catkin_make