μ μκΆ: μΏΌλ(QUAD) λλ‘ μ°κ΅¬μ https://smartstore.naver.com/maponarooo
ROS κ·Έλνλ λμμ λ°μ΄ν°λ₯Ό ν¨κ» μ²λ¦¬νλ ROS 2 μμμ λ€νΈμν¬μ λλ€. λͺ¨λ μ€ν νμΌμ λ§€ννκ³ μκ°ννλ €λ κ²½μ° λͺ¨λ μ€ν νμΌκ³Ό μ€ν νμΌ κ°μ μ°κ²°μ ν¬ν¨ν©λλ€.
ROSμ κ° λ Έλλ μλ₯Ό λ€μ΄ ν λͺ¨ν°λ₯Ό μ μ΄νκ±°λ λ μ΄μ 거리 μΈ‘μ κΈ°μμ μΌμ λ°μ΄ν°λ₯Ό κ²μνλ κ²κ³Ό κ°μ λ¨μΌ λͺ¨λ λͺ©μ μ λ΄λΉν΄μΌ ν©λλ€. κ° λ Έλλ μ£Όμ , μλΉμ€, μμ λλ λ§€κ°λ³μλ₯Ό ν΅ν΄ λ€λ₯Έ λ Έλμ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μ μμ΅λλ€.
μ 체 λ‘λ΄ μμ€ν μ ν¨κ» μλνλ λ§μ λ Έλλ‘ κ΅¬μ±λ©λλ€. ROS 2μμ λ¨μΌ μ€ν νμΌ(C++ νλ‘κ·Έλ¨, Python νλ‘κ·Έλ¨ λ±)μ νλ μ΄μμ λ Έλλ₯Ό ν¬ν¨ν μ μμ΅λλ€.
μ΄ λͺ λ Ήμ ν¨ν€μ§μμ μ€ν νμΌμ μμν©λλ€.
Turtlesimμ μ€ννλ €λ©΄ μ ν°λ―Έλμ μ΄κ³ λ€μ λͺ λ Ήμ μ λ ₯νμμμ€.
μμ λ³Έ κ²μ²λΌ Turtlesim μ°½μ΄ μ΄λ¦½λλ€ .
μ¬κΈ°μ ν¨ν€μ§ μ΄λ¦μ turtlesimμ΄κ³ turtlesim_nodeλμ€ν νμΌ μ΄λ¦μ μ
λλ€ .
κ·Έλ¬λ μ°λ¦¬λ μ¬μ ν λ Έλ μ΄λ¦μ λͺ¨λ¦ λλ€.
λ€μμ μ¬μ©νμ¬ λ
Έλ μ΄λ¦μ μ°Ύμ μ μμ΅λλ€.ros2 node list
ros2 node list
μ€ν μ€μΈ λͺ¨λ λ Έλμ μ΄λ¦μ΄ νμλ©λλ€. μ΄λ λ Έλμ μνΈ μμ©νλ €λ κ²½μ° λλ λ§μ λ Έλλ₯Ό μ€ννλ μμ€ν μ΄ μκ³ μ΄λ₯Ό μΆμ ν΄μΌ νλ κ²½μ°μ νΉν μ μ©ν©λλ€.
λ€λ₯Έ ν°λ―Έλμμ turtlesimμ΄ μ€ν μ€μΌ λ μ ν°λ―Έλμ μ΄κ³ λ€μ λͺ λ Ήμ μ λ ₯ν©λλ€.
ν°λ―Έλμ λ Έλ μ΄λ¦μ λ°νν©λλ€.
λ€λ₯Έ μ ν°λ―Έλμ μ΄κ³ λ€μ λͺ λ Ήμ μ¬μ©νμ¬ teleop λ Έλλ₯Ό μμν©λλ€.
μ¬κΈ°μλ λ€μ turtlesimν¨ν€μ§λ₯Ό μ°Έμ‘° νμ§λ§ μ΄λ²μλ turtle_teleop_keyμ΄λΌλ μ€ν νμΌμ λμμΌλ‘ ν©λλ€ .
νλ©΄ λ
Έλ μ΄λ¦, μ£Όμ μ΄λ¦, μλΉμ€ μ΄λ¦ λ±κ³Ό κ°μ κΈ°λ³Έ λ
Έλ μμ±μ μ¬μ©μ μ μ κ°μ μ¬ν λΉν μ μμ΅λλ€. μ§λ νν 리μΌμμ remapping onμ μ¬μ©νμ¬ turtle_teleop_keycmd_vel ν ν½μ λ³κ²½νμ΅λλ€ .
μ΄μ λ
Έλμ μ΄λ¦μ λ€μ ν λΉνκ² μ΅λλ€ /turtlesim. μ ν°λ―Έλμμ λ€μ λͺ
λ Ήμ μ€νν©λλ€.
λ€μ turtlesimμ νΈμΆνκΈ° λλ¬Έμ λ λ€λ₯Έ turtlesim μ°½μ΄ μ΄λ¦½λλ€. κ·Έλ¬λ μ΄μ λ₯Ό μ€νν ν°λ―Έλλ‘ λμκ°μ λ€μ μ€ννλ©΄ μΈ κ°μ λ Έλ μ΄λ¦μ΄ νμλ©λλ€.
μ΄μ λ Έλμ μ΄λ¦μ μμμΌλ―λ‘ λ€μμ μ¬μ©νμ¬ λ Έλμ λν μμΈν μ 보μ μ‘μΈμ€ν μ μμ΅λλ€.
μ΅μ my_turtleλ
Έλλ₯Ό κ²μ¬νλ €λ©΄ λ€μ λͺ
λ Ήμ μ€ννμμμ€.
ros2 node infoλꡬλ
μ, κ²μμ, μλΉμ€ λ° μμ
λͺ©λ‘μ λ°νν©λλ€. μ¦, ν΄λΉ λ
Έλμ μνΈ μμ©νλ ROS κ·Έλν μ°κ²°μ
λλ€. μΆλ ₯μ λ€μκ³Ό κ°μμΌ ν©λλ€.
μ΄λ κ²λ Έλμ μ 보λ₯Ό λ³Ό μ μμ΅λλ€.
ros2 run <package_name> <executable_name>ros2 run turtlesim turtlesim_noderos2 node list/turtlesimros2 run turtlesim turtle_teleop_key/turtlesim
/teleop_turtleros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle/turtlesim
/teleop_turtle
/my_turtleros2 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: