MDUI란?
MDUI는 MDROBOT에서 제공하는 로봇 중간 제어기로, 다양한 센서의 데이터를 수집하고 로봇을 시리얼 통신으로 제어할 수 있도록 해주는 핵심 장치입니다.
이 MDUI를 ROS 기반 환경에서 제어하고 데이터를 받아오는 시스템을 직접 구현하여, 로봇과 센서 통합을 보다 유연하게 할 수 있습니다.
ROS 패키지 구성
본 시스템은 ubuntu 20.04, ros noetic 에서 테스트하였고, 아래의 주요 파일은 ROS에서 MDUI와 통신을 담당합니다:
1. settings.py
MDUI 통신에 필요한 PID 코드, 주소, 명령 데이터 구조를 정의합니다.
- pid_robot_monitor(mode) → 센서 정보 요청 프레임 생성
- pid_robot_cmd(mode) → 로봇 제어 명령 프레임 생성
- 내부 필드인 RingBF, rc_d0~d5는 송신 버퍼나 속도 데이터 저장 등에 사용됨
2. robot_global_navi.py
MDUI와 양방향 시리얼 통신을 통해 제어 및 센서 수신을 수행하는 메인 노드입니다.
- turtlebot에서 제공하는 teleop 의 /cmd_vel 토픽을 구독하여 속도 명령을 수신하고, MDUI 명령 형식으로 변환하여 전송
- /odom, /tf를 통해 로봇의 위치와 방향을 퍼블리시
- /robot/state, /robot/monitor에 센서 데이터 및 상태 정보를 발행
- 초당 20회 반복으로 지속적인 통신을 유지하며 실시간 제어 가능
3. robot_monitor_parser.py
로봇 제어 없이, 모니터링 전용으로 MDUI 센서 데이터를 수신하는 테스트용 노드입니다.
- /robot/state와 /robot/monitor를 통해 위치, 배터리, 범퍼 상태 등을 주기적으로 수신
- 터미널에서 rostopic echo /robot/state 또는 rqt_graph로 확인 가능
실제 ROS 통신 흐름
ROS 환경에서는 다음과 같은 방식으로 MDUI와 통신이 이루어집니다:
- 명령 송신 흐름
- 사용자가 /cmd_vel 토픽에 Twist 메시지를 퍼블리시
- robot_global_navi.py가 이를 감지해 시리얼로 MDUI에 속도 명령 전송
- MDUI는 로봇에 실제로 속도를 전달
- 상태 수신 흐름
- MDUI는 주기적으로 위치, 배터리, 초음파, 상태 비트 등을 반환
- 이 데이터를 파싱하여 /odom, /tf, /robot/state, /robot/monitor 토픽으로 퍼블리시
rostopic 및 rosgraph로 확인하기
아래 명령어들을 통해 ROS에서 MDUI 연동 상태를 실시간으로 확인할 수 있습니다:
rostopic echo /robot/state
rostopic echo /robot/monitor
rostopic echo /odom
rosrun rqt_graph rqt_graph
- /robot/state → 위치(x, y), 배터리 상태, 범퍼 여부, 속도 등 확인
- /odom, /tf → RViz 시각화 가능
- /cmd_vel → turtlebot teleop 제어 시 실제 명령 확인 가능
rostopic echo /robot/state
header:
seq: 1
stamp:
secs: 1750585939
nsecs: 486754417
frame_id: "base_link"
x: 57
y: 0
theta: 358.70001220703125
battery: 67
ultrasonic: [41, 226, 79, 0]
emergency_switch: False
moving: False
charger_connected: False
front_bumper: False
rear_bumper: False
fully_charged: False
linear_velocity: 0.0
angular_velocity: 0.0
---
이 패키지를 기반으로 실내 자율 주행 로봇을 졸업 프로젝트로 제작하였습니다.
MDUI를 통해 로봇 제어 및 센서 통신을 구현했고, GitHub에 업로드한 ROS 패키지에서는
RPLiDAR A2M8과 Karto SLAM을 활용한 지도 작성까지 포함되어 있습니다.
📂 GitHub Repository: https://github.com/sstonne/mdrobot_slam_setup
📹 자율 주행 데모 영상: https://www.youtube.com/shorts/OtdrrEtIUno?feature=share
'MD로봇 로봇플랫폼 프로젝트' 카테고리의 다른 글
MD로봇 로봇플랫폼 안내로봇 프로젝트_turtlebot3 teleop (11) | 2024.12.27 |
---|---|
MD로봇 ros noetic 패키지 빌드하기 (4) | 2024.12.26 |