터미널(가상환경 미활성 상태)에서 실행
sudo apt update sudo apt install python3.8-venv※ Python 버전에 맞게 설치 (예: python3.8-venv 또는 python3.9-venv 등)
터미널(가상환경 미활성 상태)에서 hi_ws 디렉토리로 이동 후 실행
cd ~/hi_ws python3 -m venv --system-site-packages yolov11_project이렇게 하면 hi_ws/venv 폴더가 아니라 hi_ws/yolov11_project 폴더가 생성됩니다. (hi_ws/src 안에 생성하면 catkin 빌드 대상이 될 수 있으므로 피합니다.)
매번 작업할 때 터미널에서 hi_ws 루트에서 실행 (가상환경 내 명령어)
source ~/hi_ws/yolov11_project/bin/activate프롬프트 앞에
(yolov11_project)가 표시되면 가상환경이 활성화된 상태입니다.
가상환경 내에서 실행
pip install --upgrade ultralytics opencv-python필요한 다른 패키지가 있다면 이 단계에서 추가로 설치합니다.
가상환경 활성 상태에서, 혹은 별도의 터미널에서 실행 (시스템 전역 ROS 설치)
source /opt/ros/noetic/setup.bash
만약 hi_ws가 catkin workspace로 사용 중이라면:
가상환경 활성 상태에서 실행
source ~/hi_ws/devel/setup.bash이 단계는 hi_ws에서 빌드 후 ROS 패키지를 사용할 경우에 필요합니다.
터미널(가상환경 미활성 상태, hi_ws/src에서 실행)
cd ~/hi_ws/src catkin_create_pkg yolo_ros_pkg rospy std_msgs mkdir -p yolo_ros_pkg/scripts
예를 들어, 파일 이름을 yolo_tracking.py로 작성합니다.
파일 경로:
~/hi_ws/src/yolo_ros_pkg/scripts/yolo_tracking.py
아래 예제 코드를 붙여넣습니다:#!/usr/bin/env python3 import cv2 from ultralytics import YOLO
model = YOLO("yolo11n.pt")
video_path = "path/to/video.mp4"
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
success, frame = cap.read()
if success:
# Run YOLO11 tracking on the frame, persisting tracks between frames
results = model.track(frame, persist=True)
# Visualize the results on the frame (첫 프레임 결과 사용)
annotated_frame = results[0].plot()
cv2.imshow("YOLO11 Tracking", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()
> **참고:** 코드 상단의 shebang (`#!/usr/bin/env python3`)을 추가하면 rosrun 시 바로 실행할 수 있습니다.
#### (c) 파일 실행 권한 부여 (한 번만)
> **터미널에서 실행 (hi_ws/src/yolo_ros_pkg/scripts 디렉토리)**
```bash
chmod +x ~/hi_ws/src/yolo_ros_pkg/scripts/yolo_tracking.py
단계:
1. hi_ws 루트로 이동cd ~/hi_ws
- 가상환경 활성화 (가상환경 명령어 – 매번 작업 시 필요)
source ~/hi_ws/yolov11_project/bin/activate- ROS 환경 설정 (매번 작업 시, 가상환경 내에서 실행)
source /opt/ros/noetic/setup.bash source ~/hi_ws/devel/setup.bash # catkin workspace 사용 시
옵션 A: rosrun 사용 (ROS 패키지에 포함된 스크립트로 실행)
rosrun yolo_ros_pkg yolo_tracking.py옵션 B: 단순 Python 스크립트로 실행 (ROS와 통합되어 있지 않은 경우)
python3 ~/hi_ws/src/yolo_ros_pkg/scripts/yolo_tracking.py두 방식 모두 가상환경 내에서 실행되며, ROS 노드와 통신하거나 OpenCV 창을 띄우는 데 문제가 없습니다.
가상환경 내에서 실행한 경우:
작업이 끝나면 OpenCV 창이 닫히고 터미널에서 가상환경을 종료하려면 다음을 입력합니다.deactivate이렇게 하면 가상환경이 비활성화되어 원래 시스템 환경으로 돌아갑니다.
cd ~/hi_wssource yolov11_project/bin/activatesource /opt/ros/noetic/setup.bash
source ~/hi_ws/devel/setup.bashrosrun yolo_ros_pkg yolo_tracking.py또는python3 src/yolo_ros_pkg/scripts/yolo_tracking.pydeactivate 명령어로 종료