All pages
Powered by GitBook
1 of 1

Loading...

λ…Έλ“œ(Node) μ΄ν•΄ν•˜κΈ°

μ €μž‘κΆŒ: μΏΌλ“œ(QUAD) λ“œλ‘ μ—°κ΅¬μ†Œ https://smartstore.naver.com/maponarooo

κ°œμš”

ROS2 κ·Έλž˜ν”„

ROS κ·Έλž˜ν”„λŠ” λ™μ‹œμ— 데이터λ₯Ό ν•¨κ»˜ μ²˜λ¦¬ν•˜λŠ” ROS 2 μš”μ†Œμ˜ λ„€νŠΈμ›Œν¬μž…λ‹ˆλ‹€. λͺ¨λ“  μ‹€ν–‰ νŒŒμΌμ„ λ§€ν•‘ν•˜κ³  μ‹œκ°ν™”ν•˜λ €λŠ” 경우 λͺ¨λ“  μ‹€ν–‰ 파일과 μ‹€ν–‰ 파일 κ°„μ˜ 연결을 ν¬ν•¨ν•©λ‹ˆλ‹€.

λ…Έλ“œ μ΄ν•΄ν•˜κΈ°

ROS의 각 λ…Έλ“œλŠ” 예λ₯Ό λ“€μ–΄ 휠 λͺ¨ν„°λ₯Ό μ œμ–΄ν•˜κ±°λ‚˜ λ ˆμ΄μ € 거리 μΈ‘μ •κΈ°μ—μ„œ μ„Όμ„œ 데이터λ₯Ό κ²Œμ‹œν•˜λŠ” 것과 같은 단일 λͺ¨λ“ˆ λͺ©μ μ„ λ‹΄λ‹Ήν•΄μ•Ό ν•©λ‹ˆλ‹€. 각 λ…Έλ“œλŠ” 주제, μ„œλΉ„μŠ€, μž‘μ—… λ˜λŠ” λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 λ‹€λ₯Έ λ…Έλ“œμ™€ 데이터λ₯Ό 주고받을 수 μžˆμŠ΅λ‹ˆλ‹€.

전체 λ‘œλ΄‡ μ‹œμŠ€ν…œμ€ ν•¨κ»˜ μž‘λ™ν•˜λŠ” λ§Žμ€ λ…Έλ“œλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. ROS 2μ—μ„œ 단일 μ‹€ν–‰ 파일(C++ ν”„λ‘œκ·Έλž¨, Python ν”„λ‘œκ·Έλž¨ λ“±)은 ν•˜λ‚˜ μ΄μƒμ˜ λ…Έλ“œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μŠ΅

1. ROS2 μ‹€ν–‰

이 λͺ…령은 νŒ¨ν‚€μ§€μ—μ„œ μ‹€ν–‰ νŒŒμΌμ„ μ‹œμž‘ν•©λ‹ˆλ‹€.

Turtlesim을 μ‹€ν–‰ν•˜λ €λ©΄ μƒˆ 터미널을 μ—΄κ³  λ‹€μŒ λͺ…령을 μž…λ ₯ν•˜μ‹­μ‹œμ˜€.

μ—μ„œ λ³Έ κ²ƒμ²˜λŸΌ Turtlesim 창이 μ—΄λ¦½λ‹ˆλ‹€ .

μ—¬κΈ°μ„œ νŒ¨ν‚€μ§€ 이름은 turtlesim이고 turtlesim_nodeλŠ”μ‹€ν–‰ 파일 이름은 μž…λ‹ˆλ‹€ .

κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” μ—¬μ „νžˆ λ…Έλ“œ 이름을 λͺ¨λ¦…λ‹ˆλ‹€.

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ…Έλ“œ 이름을 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.ros2 node list

2. ROS2 λ…Έλ“œ λͺ©λ‘

ros2 node list

μ‹€ν–‰ 쀑인 λͺ¨λ“  λ…Έλ“œμ˜ 이름이 ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λŠ” λ…Έλ“œμ™€ μƒν˜Έ μž‘μš©ν•˜λ €λŠ” 경우 λ˜λŠ” λ§Žμ€ λ…Έλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” μ‹œμŠ€ν…œμ΄ 있고 이λ₯Ό 좔적해야 ν•˜λŠ” κ²½μš°μ— 특히 μœ μš©ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ ν„°λ―Έλ„μ—μ„œ turtlesim이 μ‹€ν–‰ 쀑일 λ•Œ μƒˆ 터미널을 μ—΄κ³  λ‹€μŒ λͺ…령을 μž…λ ₯ν•©λ‹ˆλ‹€.

터미널은 λ…Έλ“œ 이름을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ μƒˆ 터미널을 μ—΄κ³  λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ teleop λ…Έλ“œλ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œλŠ” λ‹€μ‹œ turtlesimνŒ¨ν‚€μ§€λ₯Ό μ°Έμ‘° ν•˜μ§€λ§Œ μ΄λ²ˆμ—λŠ” turtle_teleop_keyμ΄λΌλŠ” μ‹€ν–‰ νŒŒμΌμ„ λŒ€μƒμœΌλ‘œ ν•©λ‹ˆλ‹€ .

2.1 리맀핑

ν•˜λ©΄ λ…Έλ“œ 이름, 주제 이름, μ„œλΉ„μŠ€ 이름 λ“±κ³Ό 같은 κΈ°λ³Έ λ…Έλ“œ 속성을 μ‚¬μš©μž μ •μ˜ 값에 μž¬ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ§€λ‚œ νŠœν† λ¦¬μ–Όμ—μ„œ remapping on을 μ‚¬μš©ν•˜μ—¬ turtle_teleop_keycmd_vel 토픽을 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€ .

이제 λ…Έλ“œμ˜ 이름을 λ‹€μ‹œ ν• λ‹Ήν•˜κ² μŠ΅λ‹ˆλ‹€ /turtlesim. μƒˆ ν„°λ―Έλ„μ—μ„œ λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€.

λ‹€μ‹œ turtlesim을 ν˜ΈμΆœν•˜κΈ° λ•Œλ¬Έμ— 또 λ‹€λ₯Έ turtlesim 창이 μ—΄λ¦½λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이제 λ₯Ό μ‹€ν–‰ν•œ ν„°λ―Έλ„λ‘œ λŒμ•„κ°€μ„œ λ‹€μ‹œ μ‹€ν–‰ν•˜λ©΄ μ„Έ 개의 λ…Έλ“œ 이름이 ν‘œμ‹œλ©λ‹ˆλ‹€.

3. ROS2 λ…Έλ“œ 정보

이제 λ…Έλ“œμ˜ 이름을 μ•Œμ•˜μœΌλ―€λ‘œ λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ…Έλ“œμ— λŒ€ν•œ μžμ„Έν•œ 정보에 μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  my_turtleλ…Έλ“œλ₯Ό κ²€μ‚¬ν•˜λ €λ©΄ λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€.

ros2 node infoλŠ”κ΅¬λ…μž, κ²Œμ‹œμž, μ„œλΉ„μŠ€ 및 μž‘μ—… λͺ©λ‘μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 즉, ν•΄λ‹Ή λ…Έλ“œμ™€ μƒν˜Έ μž‘μš©ν•˜λŠ” ROS κ·Έλž˜ν”„ μ—°κ²°μž…λ‹ˆλ‹€. 좜λ ₯은 λ‹€μŒκ³Ό κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œλ…Έλ“œμ˜ 정보λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

이전 μžμŠ΅μ„œ
μž¬λ§€ν•‘μ„ μ‚¬μš©
ros2 run <package_name> <executable_name>
ros2 run turtlesim turtlesim_node
ros2 node list
/turtlesim
ros2 run turtlesim turtle_teleop_key
/turtlesim
/teleop_turtle
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
/turtlesim
/teleop_turtle
/my_turtle
ros2 node info <node_name>
ros2 node info /my_turtle
/my_turtle
  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /turtle1/cmd_vel: geometry_msgs/msg/Twist
  Publishers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /turtle1/color_sensor: turtlesim/msg/Color
    /turtle1/pose: turtlesim/msg/Pose
  Services:
    /clear: std_srvs/srv/Empty
    /kill: turtlesim/srv/Kill
    /reset: std_srvs/srv/Empty
    /spawn: turtlesim/srv/Spawn
    /turtle1/set_pen: turtlesim/srv/SetPen
    /turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
    /turtle1/teleport_relative: turtlesim/srv/TeleportRelative
    /my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
    /my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
    /my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
    /my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Action Servers:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
  Action Clients: