ROS2のTutorialsをやります。暫くはTutorialsそのままをやります。
ディレクトリ構成を理解します。この記事はC++を使います。
環境はUbuntu 22.04です。ROS2 Humbleです。
ディレクトリ構成
ホームディレクトリに移動します。
$ cd ~
ここでは作業ディレクトリ名をros2_studyとします。
$ mkdir ros2_study
$ cd ros2_study
workspaceを作成します。
colcon buildは必ずここで実行します。
$ mkdir hello_world_cpp_ws
$ cd hello_world_cpp_ws
workspaceの中にsrcディレクトリを作成してcleanに保ちましょう、とされています。
$ mkdir src
$ cd src
srcの下にpackageを作ります。
packageはROS2 codeの構成の単位との説明があります。
一般的にもROS2の場合にもsrcの隣りにはincludeなどのディレクトリを作ります。
ros2 pkg create
helloという名前のpackageを作ります。
$ ros2 pkg create hello --build-type ament_cmake --node-name hello_node
簡単なやつなら--node-name
使うと便利だよ、と公式に書いてあります。
念の為、整理しておきます。
hello : package name
hello_node : node name
ディレクトリ構成を確認します。
- ros2_study/
- hello_world_cpp_ws/
- src/
- hello/
- include/
- hello/
- src/
- hello_node.cpp
- CMakeLists.txt
- package.xml
- include/
- hello/
- src/
- hello_world_cpp_ws/
hello_node.cpp
viで確認します。
$ vi ~/ros2_study/hello_world_cpp_ws/src/hello/src/hello_node.cpp
hello_node.cpp
#include <cstdio>
int main(int argc, char ** argv)
{
(void) argc;
(void) argv;
printf("hello world hello package\n");
return 0;
}
CMakeLists.txt
生成されるCMakeLists.txtです。
CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
project(hello)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# find_package( REQUIRED)
add_executable(hello_node src/hello_node.cpp)
target_include_directories(hello_node PUBLIC
$
$)
target_compile_features(hello_node PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17
install(TARGETS hello_node
DESTINATION lib/${PROJECT_NAME})
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# comment the line when a copyright and license is added to all source files
set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# comment the line when this package is in a git repo and when
# a copyright and license is added to all source files
set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()
ament_package()
colcon build
$ cd ~/ros2_study/hello_world_cpp_ws
buildできる一覧を表示。
$ colcon list
$ colcon build --packages-select hello
ディレクトリ構成を確認します。
- ros2_study/
- hello_world_cpp_ws/
- build/
- install/
- log/
- src/
- hello/
- include/
- hello/
- src/
- hello_node.cpp
- CMakeLists.txt
- package.xml
- include/
- hello/
- hello_world_cpp_ws/
install
の下のsetup.bash
を読み込みます。
$ . install/setup.bash
ros2 run
実行します。
$ ros2 run hello hello_node
広告
IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』さくらのレンタルサーバ
ムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト