Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ros_basic_cpp

ROS2 C++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ํ•™์Šต์šฉ ํŒจํ‚ค์ง€

ํŒจํ‚ค์ง€ ๊ฐœ์š”

ros_basic_cpp๋Š” C++ ๊ธฐ๋ฐ˜์œผ๋กœ ROS2 ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ๋ฅผ ํ•™์Šตํ•˜๊ณ , ์‹ค์ œ ๋กœ๋ด‡ ์†Œํ”„ํŠธ์›จ์–ด์— ์‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ญ๋Ÿ‰์„ ๊ธฐ๋ฅด๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  • ํ‘œ์šด์„ ์ €์ž์˜ ใ€ŽROS2๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋กœ๋ด‡ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€ ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผํ•˜๋ฉฐ ROS์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ํ•™์Šต
  • C++ ์–ธ์–ด์˜ ๊ธฐ์ดˆ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ROS ํ™˜๊ฒฝ์— ์ ์šฉํ•ด๋ณด๋Š” ์‹ค์Šต
  • ์—ฌ๋Ÿฌ ๊ธฐ๋ณธ ํŠœํ† ๋ฆฌ์–ผ ํŒจํ‚ค์ง€๊ฐ€ ์กด์žฌํ•จ!
  • QOS ๋ฐ DDS ์ด๋ก  ๊ณต๋ถ€
  • ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ

ํŒจํ‚ค์ง€ ๋ชฉํ‘œ

  1. cpp_study ํŒจํ‚ค์ง€์—์„œ ํ•™์Šตํ•œ C++ ๋ฌธ๋ฒ•๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ROS ํ™˜๊ฒฝ์—์„œ ์‹ค์ œ๋กœ ์ ์šฉ
  2. 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_)

๊ณต๋ฐฑ ๋ฌธ์ž vs ํƒญ

  • ๊ณต๋ฐฑ(Space) ์‚ฌ์šฉ (ํƒญ ๋ฏธ์‚ฌ์šฉ)
  • ๊ธฐ๋ณธ ๋“ค์—ฌ์“ฐ๊ธฐ(Indent)๋Š” ๊ณต๋ฐฑ ๋ฌธ์ž(space) 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค(Tab ๋ฌธ์ž ์‚ฌ์šฉ ๊ธˆ์ง€).
  • Class์˜ ์ ‘๊ทผ ์ง€์ •์ž(public, protected, private)๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ด„ํ˜ธ(Brace)

  • 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.bash

๐Ÿ“ ์ฐธ๊ณ  ๋ฌธ์„œ

ROS2 ๊ณต์‹ ๋ฌธ์„œ

Google C++ Style Guide

ํ‘œ์šด์„, ใ€ŽROS2๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋กœ๋ด‡ ํ”„๋กœ๊ทธ๋ž˜๋ฐใ€

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages