WEEK2 - dingdongdengdong/astra_ws GitHub Wiki

pedal.
lift.

2์ฃผ์ฐจ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ๋ชฉํ‘œ

๋ชฉํ‘œ

์นด๋ฉ”๋ผ ๋น„์ „ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑ๋œ ์ƒ์„ธ ๋กœ๋ด‡ ํŒ” ์›€์ง์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Astra ๋กœ๋ด‡ ํŒ”์˜ ๋‹ค์ค‘ ์กฐ์ธํŠธ๋ฅผ ๋™์‹œ์— ์ œ์–ดํ•˜๋„๋ก teleop_node ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ํŽ˜๋‹ฌ ์ž…๋ ฅ์„ ํ†ตํ•ด ํ•˜๋ถ€ ์ด๋™ ๋ฐ ๊ทธ๋ฆฌํผ๋ฅผ ํ†ตํ•ฉ ์ œ์–ดํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์„ Launch ํŒŒ์ผ๋กœ ํ†ตํ•ฉํ•˜๊ณ  MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ •์ ์œผ๋กœ ์‹คํ–‰ ๋ฐ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ธฐ์ˆ 

  • Python ๊ธฐ๋ฐ˜ ROS2 ๋…ธ๋“œ ๊ธฐ๋Šฅ ํ™•์žฅ
  • ๋น„์ „ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ(์ƒ์„ธ ๋กœ๋ด‡ ํŒ” ์›€์ง์ž„ ๋ฐ์ดํ„ฐ) ํ™œ์šฉ
  • ROS2 Parameter ๊ด€๋ฆฌ
  • ROS2 Launch ํŒŒ์ผ ํ†ตํ•ฉ
  • MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋””๋ฒ„๊น… ๋ฐ ๊ฒ€์ฆ

2์ฃผ์ฐจ ๊ณผ์ œ ์ƒ์„ธ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ

๊ณผ์ œ 2.1: ๋น„์ „ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋‹ค์ค‘ ๋กœ๋ด‡ ํŒ” ์กฐ์ธํŠธ ๋ฐ ์ „์ฒด ๋กœ๋ด‡ ์ œ์–ด ๊ตฌํ˜„

๋ชฉํ‘œ

1์ฃผ์ฐจ์—์„œ ๋‹จ์ผ ์กฐ์ธํŠธ ์ œ์–ด๋ฅผ ํ™•์žฅํ•˜์—ฌ, non_ros_src/astra_teleop์—์„œ ์ƒ์„ฑ๋œ ์ƒ์„ธ ๋กœ๋ด‡ ํŒ” ์›€์ง์ž„ ๋ฐ์ดํ„ฐ(์˜ˆ: ๋ชฉํ‘œ ์กฐ์ธํŠธ ๊ฐ’, ์—”๋“œ์ดํŽ™ํ„ฐ pose)๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์ค‘ ์กฐ์ธํŠธ๋ฅผ ๋™์‹œ์— ์ œ์–ดํ•˜๋„๋ก teleop_node.py๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜๋‹ฌ ์ž…๋ ฅ์œผ๋กœ ํ•˜๋ถ€ ์ด๋™๊ณผ ๊ทธ๋ฆฌํผ ์ œ์–ด๋ฅผ ํ†ตํ•ฉ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์„ค๋ช…

  • teleop_node.py๋Š” ๋น„์ „ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ์ƒ์„ธ ๋กœ๋ด‡ ํŒ” ์›€์ง์ž„ ๋ฐ์ดํ„ฐ๋ฅผ sensor_msgs/msg/JointState๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์—”๋“œ์ดํŽ™ํ„ฐ pose์ผ ๊ฒฝ์šฐ ์—ญ๊ธฐ๊ตฌํ•™(IK) ๊ณ„์‚ฐ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽ˜๋‹ฌ ์ž…๋ ฅ์€ ํ•˜๋ถ€ ์„ ํ˜•/๊ฐ์†๋„(geometry_msgs/msg/Twist) ๋ฐ ๊ทธ๋ฆฌํผ ์—ด๋ฆผ/๋‹ซํž˜ ๋ช…๋ น์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์ „-์กฐ์ธํŠธ ๋งคํ•‘, ํŽ˜๋‹ฌ-๋ช…๋ น ๋งคํ•‘, ์Šค์ผ€์ผ๋ง ๊ณ„์ˆ˜, ์กฐ์ธํŠธ/์†๋„ ์ œํ•œ์€ ROS2 Parameter๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋‹จ๊ณ„

  1. src/astra_controller/astra_controller/teleop_node.py๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋น„์ „ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ์™€ ํŽ˜๋‹ฌ ์ž…๋ ฅ ์ˆ˜์‹  ๋กœ์ง์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋กœ๋ด‡ ํŒ” ์กฐ์ธํŠธ ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ์™€ ํ•˜๋ถ€/๊ทธ๋ฆฌํผ ํ† ํ”ฝ ๋ฐ ๋ฉ”์‹œ์ง€ ํƒ€์ž…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  4. sensor_msgs/msg/JointState ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. joint_state_cmd.header.stamp = self.get_clock().now().to_msg()๋กœ ํƒ€์ž„์Šคํƒฌํ”„ ์„ค์ •.
  6. ์กฐ์ธํŠธ ์ด๋ฆ„์„ joint_state_cmd.name์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  7. ๋น„์ „ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ์กฐ์ธํŠธ ๋ชฉํ‘œ ๊ฐ’(์œ„์น˜/์†๋„)์„ ๊ณ„์‚ฐํ•˜์—ฌ joint_state_cmd.position ๋˜๋Š” joint_state_cmd.velocity์— ์ฑ„์›๋‹ˆ๋‹ค. ์—ญ๊ธฐ๊ตฌํ•™ ๊ณ„์‚ฐ ๋˜๋Š” ํด๋ฆฌํ•‘ ์ ์šฉ.
  8. ํŽ˜๋‹ฌ ์ž…๋ ฅ์œผ๋กœ ํ•˜๋ถ€ ๋ฐ ๊ทธ๋ฆฌํผ ๋ช…๋ น์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  9. /leader_arm/commands, /cmd_vel, /gripper_command ํ† ํ”ฝ์— ๋ช…๋ น์„ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  10. ์„ค์ • ๊ฐ’์„ ROS2 Parameter๋กœ ๊ด€๋ฆฌํ•˜๊ณ  YAML ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  11. colcon build --packages-select astra_controller๋กœ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํŒŒ์ผ/๊ฐœ๋…

  • src/astra_controller/teleop_node.py
  • non_ros_src/astra_teleop
  • sensor_msgs/msg/JointState
  • ์—ญ๊ธฐ๊ตฌํ•™(IK)
  • ROS2 Parameter

์˜ˆ์ƒ ๊ฒฐ๊ณผ

teleop_node๊ฐ€ ๋น„์ „ ๋ฐ์ดํ„ฐ์™€ ํŽ˜๋‹ฌ ์ž…๋ ฅ์„ ๋ฐ›์•„ ๋‹ค์ค‘ ์กฐ์ธํŠธ, ํ•˜๋ถ€, ๊ทธ๋ฆฌํผ ์ œ์–ด ๋ช…๋ น์„ ๋ฐœํ–‰ํ•˜๋ฉฐ, ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ์ด ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ

  • ๋น„์ „ ๋ฐ์ดํ„ฐ์™€ ์กฐ์ธํŠธ ๋ณ€ํ™˜ ๋กœ์ง์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • MoveIt์˜ IK Solver ๋˜๋Š” non_ros_src/ModernRobotics๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ 2.2: ์ „์ฒด ์‹œ์Šคํ…œ ํ†ตํ•ฉ Launch ํŒŒ์ผ ๊ตฌ์ถ• ๋ฐ ์„ค์ • ๊ด€๋ฆฌ

๋ชฉํ‘œ

์นด๋ฉ”๋ผ ๋“œ๋ผ์ด๋ฒ„, ๋น„์ „ ์ฒ˜๋ฆฌ, ํŽ˜๋‹ฌ ์ž…๋ ฅ, teleop_node, moveit_relay_node, ํ•˜๋ถ€/๊ทธ๋ฆฌํผ ๋…ธ๋“œ, MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๋‹จ์ผ Launch ํŒŒ์ผ๋กœ ์‹คํ–‰ํ•˜๊ณ , ์„ค์ •์„ YAML ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์„ค๋ช…

  • Launch ํŒŒ์ผ์€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ Node ์•ก์…˜์œผ๋กœ ์ •์˜ํ•˜๊ณ , MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜(astra_moveit_config/launch/demo.launch.py)์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • YAML ํŒŒ์ผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ๋…ธ๋“œ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋‹จ๊ณ„

  1. astra_controller/launch/teleop_vision_sim.launch.py๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ์นด๋ฉ”๋ผ ๋“œ๋ผ์ด๋ฒ„ ๋…ธ๋“œ(์˜ˆ: usb_cam)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋น„์ „ ์ฒ˜๋ฆฌ ๋…ธ๋“œ(๋…๋ฆฝ์ ์ธ ๊ฒฝ์šฐ)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  4. ํŽ˜๋‹ฌ ์ž…๋ ฅ ๋…ธ๋“œ(๋…๋ฆฝ์ ์ธ ๊ฒฝ์šฐ)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  5. teleop_node์— YAML ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  6. moveit_relay_node, base_node, lift_node, ๊ทธ๋ฆฌํผ ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  7. MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜ Launch ํŒŒ์ผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  8. LaunchDescription์— ๋ชจ๋“  ์•ก์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  9. ๋นŒ๋“œ ํ›„ ros2 launch astra_controller teleop_vision_sim.launch.py๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  10. rqt_graph๋กœ ๋…ธ๋“œ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํŒŒ์ผ/๊ฐœ๋…

  • astra_controller/launch/teleop_vision_sim.launch.py
  • ์นด๋ฉ”๋ผ/๋น„์ „/ํŽ˜๋‹ฌ ๋…ธ๋“œ
  • MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ROS2 Parameters

์˜ˆ์ƒ ๊ฒฐ๊ณผ

๋‹จ์ผ Launch ํŒŒ์ผ๋กœ ์‹œ์Šคํ…œ์ด ์‹คํ–‰๋˜๋ฉฐ, ์„ค์ •์€ YAML ํŒŒ์ผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ

  • rqt_graph์™€ ros2 topic echo๋กœ ์—ฐ๊ฒฐ ๋ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • YAML ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ 2.3: MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋™์ž‘ ์ƒ์„ธ ๊ฒ€์ฆ

๋ชฉํ‘œ

ํ†ตํ•ฉ ์‹œ์Šคํ…œ์„ MoveIt ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ์‹คํ–‰ํ•˜๊ณ , ๋น„์ „ ๋ฐ ํŽ˜๋‹ฌ ์ž…๋ ฅ์— ๋”ฐ๋ฅธ ๋กœ๋ด‡ ์›€์ง์ž„์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์„ค๋ช…

  • RViz๋กœ ์‹œ๊ฐ์  ์›€์ง์ž„์„ ํ™•์ธํ•˜๊ณ , ROS2 ํˆด๋กœ ๋ช…๋ น๊ณผ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋‹จ๊ณ„

  1. ํ†ตํ•ฉ Launch ํŒŒ์ผ๋กœ ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. RViz์—์„œ ๋กœ๋ด‡ ์›€์ง์ž„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋น„์ „ ์ž…๋ ฅ์œผ๋กœ ๋‹ค์ค‘ ์กฐ์ธํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
  4. ํŽ˜๋‹ฌ ์ž…๋ ฅ์œผ๋กœ ํ•˜๋ถ€/๊ทธ๋ฆฌํผ๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
  5. ํŒ”, ํ•˜๋ถ€, ๊ทธ๋ฆฌํผ๋ฅผ ๋™์‹œ์— ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  6. rqt_plot์œผ๋กœ /leader_arm/commands์™€ /joint_states๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  7. ros2 topic echo๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  8. rqt_graph๋กœ ํ†ต์‹ ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  9. ๋ฌธ์ œ์ ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํŒŒ์ผ/๊ฐœ๋…

  • ํ†ตํ•ฉ Launch ํŒŒ์ผ
  • RViz
  • rqt_plot
  • /joint_states, /leader_arm/commands

์˜ˆ์ƒ ๊ฒฐ๊ณผ

๋น„์ „ ๋ฐ ํŽ˜๋‹ฌ ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋กœ๋ด‡์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์›€์ง์ด๋ฉฐ, ROS2 ํˆด๋กœ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ

  • ๋น„์ „ ๋ฐ์ดํ„ฐ ๋…ธ์ด์ฆˆ, ์ œ์–ด ์ฃผ๊ธฐ, MoveIt ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ 2.4: ๊ตฌํ˜„ ๊ฒฐ๊ณผ ์ •๋ฆฌ ๋ฐ ๋ณด๊ณ 

๋ชฉํ‘œ

ํ”„๋กœ์ ํŠธ ๊ณผ์ •์„ ์ •๋ฆฌํ•˜๊ณ , ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋™์ž‘์„ ๊ธฐ๋กํ•˜๋ฉฐ, ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์„ค๋ช…

  • ์ฝ”๋“œ ๋ณ€๊ฒฝ, Launch ํŒŒ์ผ ์‚ฌ์šฉ๋ฒ•, ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์ „ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ/ํ™œ์šฉ ๋ฐ ํŽ˜๋‹ฌ ๋งคํ•‘์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋‹จ๊ณ„

  1. Git์œผ๋กœ ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  2. Launch ํŒŒ์ผ ๋ฐ YAML ์‚ฌ์šฉ๋ฒ• ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋™์ž‘์„ ๋…นํ™”/์Šคํฌ๋ฆฐ์ƒท ์ดฌ์˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค:
    • ์„œ๋ก : ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ ๋ฐ ๊ฐœ์š”
    • ๊ตฌํ˜„ ๋‚ด์šฉ: ๋น„์ „/ํŽ˜๋‹ฌ ์ฒ˜๋ฆฌ, teleop_node, Launch ํŒŒ์ผ
    • ์‹คํ–‰ ๋ฐฉ๋ฒ•: Launch ํŒŒ์ผ ๋ฐ ์žฅ์น˜ ์„ค์ •
    • ๊ฒฐ๊ณผ ๋ฐ ๊ฒ€์ฆ: ์‹œ์—ฐ ๊ฒฐ๊ณผ, ์ œ์–ด ์„ฑ๋Šฅ
    • ๋ฌธ์ œ์  ๋ฐ ํ•ด๊ฒฐ
    • ํ–ฅํ›„ ๊ฐœ์„ ์ 
    • ๊ฒฐ๋ก 
  5. ์ฝ”๋“œ, ๋ฌธ์„œ, ์˜์ƒ/์Šคํฌ๋ฆฐ์ƒท์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํŒŒ์ผ/๊ฐœ๋…

  • teleop_node.py
  • Launch/YAML ํŒŒ์ผ
  • ๋น„์ „/ํŽ˜๋‹ฌ ํ™œ์šฉ ์„ค๋ช…
  • ์‹œ์—ฐ ์˜์ƒ/์Šคํฌ๋ฆฐ์ƒท
  • ๋ณด๊ณ ์„œ

์˜ˆ์ƒ ๊ฒฐ๊ณผ

๊ตฌํ˜„ ๊ฒฐ๊ณผ๊ฐ€ ์ •๋ฆฌ๋˜๊ณ , ์‹œ์—ฐ๊ณผ ๋ณด๊ณ ์„œ๊ฐ€ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ

  • ๋น„์ „ ๋ฐ์ดํ„ฐ ํ˜•์‹๊ณผ JointState ๋ณ€ํ™˜์„ ์ƒ์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์—ฐ ์˜์ƒ์— ๋น„์ „ ์ž…๋ ฅ ์†Œ์Šค๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.