피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Unified Bridge 설계로 Serial Resource Busy 충돌 제거 및 20Hz Closed-Loop 제어 구현
Building a ROS 2 Hardware Bridge for Yahboom 520 Motor Drivers (Without Serial Conflicts!)
AI 요약
Context
ROS 2의 모듈형 설계를 적용해 Odometry와 Velocity 노드를 분리 운영 시, 단일 Serial 포트(/dev/ttyUSB0)에 대한 동시 접근으로 인한 Resource Busy 에러 발생. Linux 커널 수준의 시리얼 장치 독점 제약으로 인해 다중 노드 기반의 하드웨어 제어가 불가능한 구조적 한계 노출.
Technical Solution
- Single Shared File Handle 소유권을 가진 Unified Bridge Node를 설계하여 Serial 포트 경합 원천 차단
- STM32F103RCT6 기반 Coprocessor를 활용해 PID 제어 및 Encoder 카운팅 등 Time-critical 작업 오프로딩
- $ (Header)와 # (Footer) 기반의 Sentinel Protocol을 적용하여 데이터 패킷 손실 및 오염 방지
- 20Hz 주기의 Main Loop Timer를 통해 $read 폴링과 /odom 토픽 발행을 동기화하는 Closed-Loop 제어 루프 구축
- Inverse Kinematics를 적용하여 /cmd_vel의 선속도 및 각속도를 하드웨어 맵핑 범위인 -1000~1000 정수 값으로 변환
- udev rule 설정을 통한 하드웨어 고유 ID 기반의 Static Path(/dev/yahboom_driver) 할당으로 포트 스왑 문제 해결
실천 포인트
- 단일 하드웨어 리소스 접근 시 모듈 분리보다 Unified Bridge 패턴을 통한 단일 소유권 확보 검토 - 하드웨어 통신 시 데이터 무결성 보장을 위해 Start/Stop Sentinel을 포함한 프로토콜 설계 적용 - 물리 장치 연결 시 /dev/ttyUSBn 형태의 가변 경로 대신 udev rule을 통한 고정 심볼릭 링크 설정 권장 - 실환경 주행 오차 해결을 위해 지면 마찰력을 반영한 SCALE_FACTOR 캘리브레이션 프로세스 수행