[ROS2]ワークスペース作成と実行ファイルの生成 - graspPlugin/wiki GitHub Wiki

はじめに

ROS2開発用のワークスペースを作成し,PythonまたはC++で構成されたパッケージを作製する手順を解説します.

環境

- version
Ubuntu 20.04
ROS2 Foxy

目次

任意の場所でワークスペースの大元となるディレクトリを作成し,そこに移動します.

今回はホームディレクトリ直下に作成します.ディレクトリ名はros2_wsとします.

cd ~
mkdir ros2_ws && cd ros2_ws

ワークスペースディレクトリ内にsrcディレクトリを作成します.

mkdir src && cd src

パッケージのひな型を作成します.パッケージ名はmy_pkgとします.

C++のソースファイルから実行ファイルを生成するまでの手順を解説します.

今回はC++の標準ライブラリのみを用いて文字列を出力するプログラムを作ります.

build-typeオプションでC++を用いてビルドするように指定します.

ros2 pkg create --build-type ament_cmake my_pkg

パッケージディレクトリ内のsrcディレクトリに移動し,ソースファイルhello_world.cppを作成します.

cd my_pkg/src/
touch hello_world.cpp

hello_world.cppの内部に,以下のような文字列を出力するプログラムを記述します.

#include <iostream>

int main() {
  std::cout << "hello world!!" << std::endl;
  return 0;
}

パッケージディレクトリmy_pkg直下のCMakeLists.txtの最後尾に以下を追記します.

add_executable(hello_world src/hello_world.cpp)

add_executableは指定したソースファイルを用いて実行ファイルを生成するcmakeの命令です.

ここでは,src/hello_world.cppを使ってhello_worldという名前の実行ファイルを生成するようにしています.

更に端末上のros2コマンドから生成した実行ファイルを指定できるようにするため以下を記述します.

install(
  TARGETS hello_world
  DESTINATION lib/${PROJECT_NAME}
)

ワークスペースディレクトリ内にsrcディレクトリを作成します.

mkdir src && cd src

パッケージのひな型を作成します.パッケージ名はmy_pkgとします.

今回はPythonで文字列を出力するプログラムを作ります. build-typeオプションでament_pythonを用いてビルドするように指定します.

 ros2 pkg create --build-type ament_python my_pkg

パッケージディレクトリ内のmy_pkgディレクトリに移動し,ソースファイルmain_function.pyを作成します.

cd my_pkg/my_pkg/
touch main_function.py

main_function.pyの内部に,以下のような文字列を出力するプログラムを記述します.

def main():
    print("Hello, World!")
if __name__ == '__main__':
    main()

一つ前のディレクトリにあるsetup.pyを編集します. これはC++開発におけるCMakeLists.txtに相当します.

setup.pyを開き,以下の内容に変更します.

from setuptools import setup, find_packages

package_name = 'my_pkg'

setup(
    name=package_name,
    version='0.0.0',
    packages=find_packages(),
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
    ],

    entry_points={
        'console_scripts': [
            'hello_world = '+ package_name +'.main_function:main',
        ],
    }
)

ROS2からはビルドツールにcolconが採用されています.このツールにより指定した依存関係から適切な順序でビルドを行ってくれます.

ビルドはワークスペースディレクトリで行いますので,ros2_wsに移動します.

cd ~/ros2_ws/

ビルドを実行します.

colcon build

以下のように出力されたら成功です.失敗した場合は間違った箇所がないかもう一度確認しましょう.

Starting >>> my_pkg  
Finished <<< my_pkg [0.17s]                  

Summary: 1 package finished [0.30s]

実行ファイルまでのパスを通します.ros2_ws内のinstallディレクトリにセットアップ用のスクリプトが配置されているので読み込みます.

source install/local_setup.bash

なお,local_setup.bashはワークスペースディレクトリごとに存在し,各々読み込む必要があります.

そのため予め~/.bashrcに上記のコマンドを記述しておき,端末を立ち上げたときに自動で読み込むようにするのをおすすめします.

ここまでの手順でros2コマンドで実行ファイルを指定できるようになります.以下のコマンドを入力しましょう.

ros2 run my_pkg hello_world

プログラム内で指定した文字列が端末に出力されたら終了です.

Hello, World!

お疲れ様でした.

⚠️ **GitHub.com Fallback** ⚠️