[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!
お疲れ様でした.