ROS2 Driver Tutorials#

What you’ll do

  • Driver 기반 예제를 ROS2 노드 형태로 구성합니다.

  • /cmd_vel 입력을 setCommand(v, omega)로 매핑하고, 필요한 상태를 토픽으로 발행합니다.

Prerequisites

Next


이 섹션은 선택 사항입니다

ROS2를 사용하지 않는다면 이 페이지는 건너뛰어도 됩니다. ROS2 노드 형태로 붙이고 싶은 경우에만 참고하세요.

1. 빌드 (colcon)#

source /opt/ros/$ROS_DISTRO/setup.bash

cd KAIST_Mobility_Challenge_SDK/examples/Driver_ROS2

colcon build --symlink-install
source install/setup.bash

CMake로 직접 빌드 (선택)#

colcon 없이도 노드 실행 파일만 빌드할 수 있습니다. 이 경우 ros2 run 대신 실행 파일을 직접 실행합니다.

source /opt/ros/$ROS_DISTRO/setup.bash

cd KAIST_Mobility_Challenge_SDK/examples/Driver_ROS2

cmake -S . -B build_cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build_cmake -j

예: driver_observe 노드 실행

./build_cmake/kmc_hardware_driver_observe_node \
  --ros-args -p port:=/dev/ttyKMC -p baud:=115200 -p battery_hz:=1.0

2. 노드 실행#

2.1 Driver Demo#

/cmd_vel을 받아 Driver::setCommand(v, omega)로 전달하고, 들어온 명령을 /cmd_echo로 그대로 되돌려 주는 가장 단순한 송신 데모

ros2 run kmc_hardware_driver_node kmc_hardware_driver_demo_node \
  --ros-args -p port:=/dev/ttyKMC -p baud:=115200

2.2 Driver Observe (속도/배터리)#

명령 송신과 동시에 수신 큐를 비워서 /vehicle_speed, /battery_voltage를 publish합니다.

ros2 run kmc_hardware_driver_node kmc_hardware_driver_observe_node \
  --ros-args -p port:=/dev/ttyKMC -p baud:=115200 -p battery_hz:=1.0

2.3 Driver Read AllState#

Allstate (0xAF)를 주기적으로 요청하고, 수신된 상태를 텍스트로 요약해 /allstate_text로 publish합니다.

ros2 run kmc_hardware_driver_node kmc_hardware_driver_read_allstate_node \
  --ros-args -p port:=/dev/ttyKMC -p baud:=115200 -p allstate_hz:=10.0

2.4 High Rate Control#

고속 제어 전송용 노드입니다. Driver::setCommand(v, omega)를 주기적으로 갱신하고 초당 갱신 횟수를 /cmd_updates로 publish하며, 속도도 /vehicle_speed로 내보냅니다.

ros2 run kmc_hardware_driver_node kmc_hardware_high_rate_control_node \
  --ros-args -p port:=/dev/ttyKMC -p baud:=1000000

3. 제어 입력 (/cmd_vel)#

geometry_msgs/msg/Twist에서 linear.x\(v\)(\(\mathrm{m/s}\)), angular.z\(\omega\)(\(\mathrm{rad/s}\))입니다.

ros2 topic pub /cmd_vel geometry_msgs/msg/Twist \
  '{linear: {x: 0.5}, angular: {z: 0.0}}' -r 50

4. 속도 확인 (/vehicle_speed)#

ros2 topic echo /vehicle_speed

5. 트러블슈팅#

ros2 run에서 패키지를 못 찾는 경우:

source /opt/ros/$ROS_DISTRO/setup.bash
source KAIST_Mobility_Challenge_SDK/examples/Driver_ROS2/install/setup.bash
ros2 pkg list | grep kmc_hardware_driver_node