ROS2 Driver Tutorials#
What you’ll do
Driver기반 예제를 ROS2 노드 형태로 구성합니다./cmd_vel입력을setCommand(v, omega)로 매핑하고, 필요한 상태를 토픽으로 발행합니다.
Prerequisites
ROS2 설치 및 빌드/실행 환경
기본 동작 확인: Driver Tutorials
Next
공개 API 상세: C++ API Reference
이 섹션은 선택 사항입니다
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