ROS2 C++ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด ํ์ต์ฉ ํจํค์ง
ros_basic_cpp๋ C++ ๊ธฐ๋ฐ์ผ๋ก ROS2 ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ฅผ ํ์ตํ๊ณ , ์ค์ ๋ก๋ด ์ํํธ์จ์ด์ ์์ฉํ ์ ์๋ ์ญ๋์ ๊ธฐ๋ฅด๊ธฐ ์ํ ํจํค์ง์
๋๋ค. ์ด ํจํค์ง๋ ๋ค์๊ณผ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ์ ์๋์์ต๋๋ค:
- ํ์ด์ ์ ์์ ใROS2๋ก ์์ํ๋ ๋ก๋ด ํ๋ก๊ทธ๋๋ฐใ ์์ ๋ฅผ ๋ฐ๋ผํ๋ฉฐ ROS์ ๊ธฐ๋ณธ ๊ฐ๋ ํ์ต
- C++ ์ธ์ด์ ๊ธฐ์ด์ ์๊ณ ๋ฆฌ์ฆ์ ROS ํ๊ฒฝ์ ์ ์ฉํด๋ณด๋ ์ค์ต
- ์ฌ๋ฌ ๊ธฐ๋ณธ ํํ ๋ฆฌ์ผ ํจํค์ง๊ฐ ์กด์ฌํจ!
- QOS ๋ฐ DDS ์ด๋ก ๊ณต๋ถ
- ์ฝ๋ ์ ๋ฐ์ดํธ
cpp_studyํจํค์ง์์ ํ์ตํ C++ ๋ฌธ๋ฒ๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ROS ํ๊ฒฝ์์ ์ค์ ๋ก ์ ์ฉ- ROS2 Developer Guide, ROS2 ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋, Google C++ Style Guide๋ฅผ ์ค์ํ๋ฉฐ ํด๋ฆฐ ์ฝ๋ ์์ฑ ์ฐ์ต
- ROS2 ๊ธฐ๋ณธ ๋ ธ๋ ์์ฑ ๋ฐ ์คํ
- ROS2์์ Publisher / Subscriber ๊ตฌ์ฑ
- ROS2์์ C++ ์๊ณ ๋ฆฌ์ฆ ํ์ฉ
- ๋ฉ์์ง ์ ์ ๋ฐ ์ปค์คํ ์ธํฐํ์ด์ค ์ฌ์ฉ
rclcpp๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ ๋ฑ
- C++14 ํ์ค ์ค์
- ํ ์ค์ ์ต๋ 100์๊น์ง ํ์ฉ
| ํญ๋ชฉ | ๊ท์น ์ ํ | ์์ |
|---|---|---|
| ํ์ / ํด๋์ค / ๊ตฌ์กฐ์ฒด / ์ด๊ฑฐํ | CamelCased |
MyRobot, SensorType |
| ๋ณ์ / ํจ์ / ๋ฉ์๋ / ๋ค์์คํ์ด์ค | snake_case |
compute_path(), odom_data |
| ํจํค์ง / ํ์ผ ์ด๋ฆ | snake_case |
ros_basic_cpp, main_node.cpp |
| ์์ / ๋งคํฌ๋ก | ALL_CAPITALS |
MAX_SPEED, PI |
- ์์ค ํ์ผ ํ์ฅ์:
.cpp - ํค๋ ํ์ผ ํ์ฅ์:
.hpp - ์ ์ญ ๋ณ์:
g_์ ๋์ด ์ฌ์ฉ (g_global_data) - ํด๋์ค ๋ฉค๋ฒ ๋ณ์: ๋ณ์๋ช
๋์
_์ ๋ฏธ์ด ์ฌ์ฉ (position_)
- ๊ณต๋ฐฑ(Space) ์ฌ์ฉ (ํญ ๋ฏธ์ฌ์ฉ)
- ๊ธฐ๋ณธ ๋ค์ฌ์ฐ๊ธฐ(Indent)๋ ๊ณต๋ฐฑ ๋ฌธ์(space) 2๊ฐ๋ฅผ ์ฌ์ฉํ๋ค(Tab ๋ฌธ์ ์ฌ์ฉ ๊ธ์ง).
- Class์ ์ ๊ทผ ์ง์ ์(public, protected, private)๋ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ์ง ์๋๋ค.
- if, else, do, while, for ๊ตฌ๋ฌธ์ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ค.
# ์ํฌ์คํ์ด์ค ์์ฑ ๋ฐ ๋น๋ ์์
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/์ฌ์ฉ์๋ช
/ros_basic_cpp.git
cd ~/ros2_ws
colcon build
source install/setup.bashROS2 ๊ณต์ ๋ฌธ์
Google C++ Style Guide
ํ์ด์, ใROS2๋ก ์์ํ๋ ๋ก๋ด ํ๋ก๊ทธ๋๋ฐใ