Topic 프로그래밍에 앞서 기본적인 C++ ROS2 개발에 대한 지식을 익혀봅니다.
C++은 언어 자체가 Python과 비교하여 난이도가 있습니다. 그렇기에 빠른 구현을 희망하신다면 Python 강좌만을 먼저 수강하시고 C++ 강의는 추후 차근차근 듣는 것을 추천드립니다.
강의 후반부의 실제 로봇을 만드는 과정에서도 Python 개발이 주력이기 때문에 수강 완료에는 지장이 없도록 구성하였습니다.
$ rosfoxy
$ cbp cpp_first_pkg
# Windows
> colcon build --symlink-install --packages-select cpp_first_pkg
> install\\setup.bat
# New Terminal
$ ros2 run cpp_first_pkg simple_node
[INFO] [1621571601.351868900] [simple_node]: Logger Test
$ ros2 run cpp_first_pkg simple_loop_node
[INFO] [1621571623.628317300] [simple_loop_node]: Simple Loop Node
[INFO] [1621571624.137430000] [simple_loop_node]: Simple Loop Node
[INFO] [1621571624.637388900] [simple_loop_node]: Simple Loop Node
...
$ ros2 run cpp_first_pkg simple_oop_node
[INFO] [1621571658.158510000] [simple_oop_node]: I am Simple OOP Example, count : 7340132
[INFO] [1621571658.658082100] [simple_oop_node]: I am Simple OOP Example, count : 7340133
[INFO] [1621571659.152032000] [simple_oop_node]: I am Simple OOP Example, count : 7340134
...
$ ros2 run cpp_first_pkg lifecycle_node
[WARN] [1621571766.599589500] [simple_oop_node]: Node Constructor
[INFO] [1621571767.102470700] [simple_oop_node]: I am Simple OOP Example, count : 1
[INFO] [1621571767.600820400] [simple_oop_node]: I am Simple OOP Example, count : 2
[INFO] [1621571768.022392500] [rclcpp]: signal_handler(signal_value=2)
[INFO] [1621571768.023429800] [simple_oop_node]: ==== Spin Done ====
==== After Shutdown ====
[WARN] [1621571768.025122300] [simple_oop_node]: Node Destructor
간략한 개요는 다음과 같습니다.
simple_node
: Node의 생성 후 Log를 출력하는 예제입니다.simple_loop_node
: Node의 생성 후 주기적으로 Log를 출력하는 예제입니다.simple_oop_node
: Node Composition을 위한, 그리고 좀 더 유연한 ROS2 프로그래밍을 위해 상속을 통한 Node 생성에 대해 배웁니다.lifecycle_node
: Node가 생성되고 소멸되는 시점과 rclcpp이 시작되고 종료되는 시점, lifecycle에 대해 배워봅니다.