캡스톤디자인2 - 도서관 환경에서 사람을 인식하고 자율 운반 임무를 수행하는 로봇 시스템
Raspberry Pi ──TCP 소켓──▶ Jetson Nano
│
┌──────────┼──────────┐
▼ ▼ ▼
카메라 YDLidar Arduino
(사람 추적) (장애물 감지) (모터 제어)
| 하드웨어 | 역할 |
|---|---|
| Jetson Nano | ROS2 노드 실행, 비전 처리 |
| Raspberry Pi | 명령 전송 (TCP 클라이언트) |
| Arduino | 모터 드라이버 제어 (시리얼 통신) |
| YDLidar | 라이다 기반 장애물 감지 |
| USB 카메라 | 사람 인식 및 추적 |
| 패키지 | 노드 | 설명 |
|---|---|---|
camera_driver_node |
camera_driver_node |
USB 카메라 영상 퍼블리시 |
person_tracking_pkg |
person_follower |
YOLOv4 + KCF 추적기로 사람 따라가기 |
motor_control |
motor_control_node |
/cmd_vel → Arduino 시리얼 변환 |
lidar_publisher |
ydlidar_publisher |
YDLidar 스캔 데이터 퍼블리시 |
obstacle_detector |
obstacle_detector_node |
전방 40cm 이내 장애물 감지 |
cmd_vel_mux |
cmd_vel_mux_node |
cmd_vel 우선순위 멀티플렉서 |
object_tracking_node |
object_tracking_node |
객체 추적 (YOLOv4) |
| 토픽 | 타입 | 설명 |
|---|---|---|
/camera/image_raw |
sensor_msgs/Image |
카메라 영상 |
/scan |
sensor_msgs/LaserScan |
라이다 스캔 데이터 |
/cmd_vel |
geometry_msgs/Twist |
이동 명령 |
/odom |
nav_msgs/Odometry |
오도메트리 |
/obstacle_detected |
std_msgs/String |
장애물 감지 이벤트 |
- ROS2 Foxy (Python 3.8)
- OpenCV (DNN 모듈 포함)
cv_bridge,transforms3d,pyserial
모델 파일은 크기 제한으로 저장소에 포함되지 않습니다. 아래 경로에 직접 배치하세요.
src/person_tracking_pkg/person_tracking_pkg/models/yolov4.weights
src/person_tracking_pkg/person_tracking_pkg/models/yolov4.cfg
src/person_tracking_pkg/person_tracking_pkg/models/coco.names
src/object_tracking_node/object_tracking_node/models/yolov4.weights
src/object_tracking_node/object_tracking_node/models/yolov4.cfg
src/object_tracking_node/object_tracking_node/models/coco.names
cd ~/ros2_ws
colcon build
source install/setup.bashpython3 jetson_server.py# 터미널 1 - 카메라
ros2 run camera_driver_node camera_driver_node
# 터미널 2 - 사람 추적
ros2 run person_tracking_pkg person_follower
# 터미널 3 - 모터 제어
ros2 run motor_control motor_control_node# 터미널 1 - 라이다
ros2 run lidar_publisher ydlidar_publisher
# 터미널 2 - 장애물 감지
ros2 run obstacle_detector obstacle_detector_nodesrc/motor_control/motor_control/motor_control_node.py에서 포트 수정:
self.serial_port = '/dev/ttyACM1' # 환경에 맞게 변경
self.baud_rate = 9600jetson_server.py에서 포트 수정:
server_port = 5000