HelloWorld 実装の概要

ROS のプログラミングは主に C++ と Python を使います。ほとんどのプログラムはどちらの言語でも実装できます。各チュートリアルでは C++ と Python の両方の例を示し、ユーザが自身に合った実装方法を選べるようにしています。

ROS における全体的な実装の流れは、言語が違っても似ています。HelloWorld プログラムを例にすると、ステップは次の通りです。

  1. ワークスペースを作成する。
  2. パッケージを作成する。
  3. ソースファイルを編集する。
  4. 設定ファイルを編集する。
  5. ビルドして実行する。

C++ と Python の主な違いはステップ 3 と 4 にあります。以下のセクションでは両実装に共通する手順を詳しく説明し、C++ と Python それぞれ専用のセクションも設けています。

HelloWorld(C++ 版)

  1. ワークスペースの作成と初期化

    bash
    mkdir -p <workspace_name>/src
    cd <workspace_name>
    catkin_make

    例:

    bash
    mkdir -p seeed_ws/src
    cd seeed_ws
    catkin_make
  2. ROS パッケージの作成と依存関係の追加

    bash
    cd src
    catkin_create_pkg <package_name> roscpp rospy std_msgs

    例:

    bash
    cd src
    catkin_create_pkg hello_world roscpp rospy std_msgs
  3. ソースファイルの編集

    パッケージの src ディレクトリに移動し、新しい C++ ソースファイル(例: hello.cpp)を作成します。

    bash
    cd ~/<workspace_name>/src/<package_name>/src
    touch hello.cpp

    例:

    bash
    cd ~/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;
    }

    J3010

  4. CMakeLists.txt の編集

    パッケージの CMakeLists.txt の末尾に次を追加します。

    cmake
    add_executable(<node_name> src/hello.cpp)
    target_link_libraries(<node_name> ${catkin_LIBRARIES})

    例:

    cmake
    add_executable(hello src/hello.cpp)
    target_link_libraries(hello ${catkin_LIBRARIES})

    J3010

    J3010

    注: ここで言う CMakeLists.txt ファイルは、作成したパッケージのディレクトリにあるものであり、ワークスペースのディレクトリにあるものではありません。

  5. ワークスペースのビルド

    bash
    cd <workspace_name>
    catkin_make

    例:

    bash
      cd ~/seeed_ws
      catkin_make
  6. プログラムの実行

    ターミナルを 1 つ開き、ROS core を起動します。

    bash
    roscore

    別のターミナルを開き、ワークスペースを source してノードを実行します。

    bash
    cd <workspace_name>
    source devel/setup.bash
    rosrun <package_name> hello

    例:

    bash
    cd ~/seeed_ws
    source devel/setup.bash
    rosrun hello_world hello

    J3010

Hello World! という出力が表示されるはずです。

HelloWorld(Python 版)

  1. ワークスペースの作成と初期化

    bash
    mkdir -p <workspace_name>/src
    cd <workspace_name>
    catkin_make

    例:

    bash
    mkdir -p seeed_ws/src
    cd seeed_ws
    catkin_make
  2. ROS パッケージの作成と依存関係の追加

    bash
    cd src
    catkin_create_pkg <package_name> roscpp rospy std_msgs

    例:

    bash
    cd src
    catkin_create_pkg hello_world roscpp rospy std_msgs
  3. scripts ディレクトリの追加と Python ファイルの作成

    パッケージのディレクトリに移動し、scripts ディレクトリと新しい Python ファイル(例: hello.py)を作成します。

    例:

    bash
    mkdir ~/seeed_ws/src/hello_world/scripts
    cd ~/seeed_ws/src/hello_world/scripts
    touch hello.py
    python
    #!/usr/bin/env python
    
    import rospy
    
    if __name__ == "__main__":
        rospy.init_node("hello")
        rospy.loginfo("Hello World!")
  4. 実行権限を追加

    bash
    sudo chmod +x hello.py
  5. CMakeLists.txt の編集

    パッケージの CMakeLists.txt の末尾に次を追加します。

    cmake
    catkin_install_python(PROGRAMS scripts/hello.py
      DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
    )

    J3010

  6. ワークスペースのビルド

    bash
    cd <workspace_name>
    catkin_make

    例:

    bash
    cd ~/seeed_ws
    catkin_make
  7. プログラムの実行 ターミナルを 1 つ開き、ROS core を起動します。

    bash
    roscore

    別のターミナルを開き、ワークスペースを source してノードを実行します。

    bash
    cd <workspace_name>
    source devel/setup.bash
    rosrun <package_name> hello.py

    例:

    bash
    cd ~/seeed_ws
    source devel/setup.bash
    rosrun hello_world hello.py

    Hello World! という出力が表示されるはずです。

注意

ワークスペースの setup ファイルをより簡単に source できるようにするには、.bashrc に追加します。

bash
echo "source ~/<workspace_name>/devel/setup.bash" >> ~/.bashrc

これにより、新しいターミナルを開くたびにワークスペースが自動で source されます。