Skip to content

Gyeongjun22/library-robot-ros2

Repository files navigation

도서관 로봇 ROS2 프로젝트

캡스톤디자인2 - 도서관 환경에서 사람을 인식하고 자율 운반 임무를 수행하는 로봇 시스템

시스템 구성

Raspberry Pi  ──TCP 소켓──▶  Jetson Nano
                               │
                    ┌──────────┼──────────┐
                    ▼          ▼          ▼
                카메라      YDLidar    Arduino
             (사람 추적)  (장애물 감지) (모터 제어)
하드웨어 역할
Jetson Nano ROS2 노드 실행, 비전 처리
Raspberry Pi 명령 전송 (TCP 클라이언트)
Arduino 모터 드라이버 제어 (시리얼 통신)
YDLidar 라이다 기반 장애물 감지
USB 카메라 사람 인식 및 추적

ROS2 패키지

패키지 노드 설명
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)

ROS2 토픽

토픽 타입 설명
/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

YOLOv4 모델 파일 다운로드

모델 파일은 크기 제한으로 저장소에 포함되지 않습니다. 아래 경로에 직접 배치하세요.

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.bash

실행

Jetson Nano - TCP 서버 시작

python3 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_node

설정

Arduino 시리얼 포트

src/motor_control/motor_control/motor_control_node.py에서 포트 수정:

self.serial_port = '/dev/ttyACM1'  # 환경에 맞게 변경
self.baud_rate = 9600

TCP 서버 포트

jetson_server.py에서 포트 수정:

server_port = 5000

외부 라이브러리

About

도서관 로봇 ROS2 프로젝트 (캡스톤디자인2)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages