가상환경 env python

김민준·2025년 5월 27일

1. 초기 준비 (한 번만 수행)

1.1. python3-venv 패키지 설치 (시스템 전역 – 한 번만)

터미널(가상환경 미활성 상태)에서 실행

sudo apt update
sudo apt install python3.8-venv

※ Python 버전에 맞게 설치 (예: python3.8-venv 또는 python3.9-venv 등)

1.2. 가상환경 생성 (hi_ws 루트에서)

터미널(가상환경 미활성 상태)에서 hi_ws 디렉토리로 이동 후 실행

cd ~/hi_ws
python3 -m venv --system-site-packages yolov11_project

이렇게 하면 hi_ws/venv 폴더가 아니라 hi_ws/yolov11_project 폴더가 생성됩니다. (hi_ws/src 안에 생성하면 catkin 빌드 대상이 될 수 있으므로 피합니다.)


2. 가상환경 설정 및 패키지 설치 (매번 가상환경 활성 후)

2.1. 가상환경 활성화

매번 작업할 때 터미널에서 hi_ws 루트에서 실행 (가상환경 내 명령어)

source ~/hi_ws/yolov11_project/bin/activate

프롬프트 앞에 (yolov11_project)가 표시되면 가상환경이 활성화된 상태입니다.

2.2. 최신 ultralytics 및 OpenCV 설치

가상환경 내에서 실행

pip install --upgrade ultralytics opencv-python

필요한 다른 패키지가 있다면 이 단계에서 추가로 설치합니다.


3. ROS 환경 설정 (매번 작업 전에 ROS 노드를 실행할 때)

3.1. ROS 기본 환경 설정

가상환경 활성 상태에서, 혹은 별도의 터미널에서 실행 (시스템 전역 ROS 설치)

source /opt/ros/noetic/setup.bash

3.2. (옵션) Catkin Workspace 환경 설정

만약 hi_ws가 catkin workspace로 사용 중이라면:

가상환경 활성 상태에서 실행

source ~/hi_ws/devel/setup.bash

이 단계는 hi_ws에서 빌드 후 ROS 패키지를 사용할 경우에 필요합니다.


4. ROS 통합 코드 파일 작성 및 위치

4.1. 코드 파일 작성 위치

  • 권장 위치: hi_ws/src 내의 별도 ROS 패키지
    예를 들어, yolo_ros_pkg라는 패키지를 생성하고, 그 안의 scripts 폴더에 코드를 작성합니다.

(a) ROS 패키지 생성 (한 번만)

터미널(가상환경 미활성 상태, hi_ws/src에서 실행)

cd ~/hi_ws/src
catkin_create_pkg yolo_ros_pkg rospy std_msgs
mkdir -p yolo_ros_pkg/scripts

(b) 통합 코드 작성

예를 들어, 파일 이름을 yolo_tracking.py로 작성합니다.

파일 경로: ~/hi_ws/src/yolo_ros_pkg/scripts/yolo_tracking.py
아래 예제 코드를 붙여넣습니다:

#!/usr/bin/env python3
import cv2
from ultralytics import YOLO

Load the YOLO11 model (모델 파일은 hi_ws 내 또는 절대경로 지정)

model = YOLO("yolo11n.pt")

Open the video file (영상 파일 경로 수정)

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

5. 코드 실행 (매번 작업 시)

5.1. 터미널 열기

단계:
1. hi_ws 루트로 이동

cd ~/hi_ws
  1. 가상환경 활성화 (가상환경 명령어 – 매번 작업 시 필요)
    source ~/hi_ws/yolov11_project/bin/activate
  2. ROS 환경 설정 (매번 작업 시, 가상환경 내에서 실행)
    source /opt/ros/noetic/setup.bash
    source ~/hi_ws/devel/setup.bash   # catkin workspace 사용 시

5.2. ROS 노드 실행

옵션 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 창을 띄우는 데 문제가 없습니다.


6. 작업 종료 및 나중에 다시 작업할 때

6.1. 작업 종료 시

가상환경 내에서 실행한 경우:
작업이 끝나면 OpenCV 창이 닫히고 터미널에서 가상환경을 종료하려면 다음을 입력합니다.

deactivate

이렇게 하면 가상환경이 비활성화되어 원래 시스템 환경으로 돌아갑니다.

6.2. 나중에 다시 작업할 때 절차

  1. 터미널을 열고 hi_ws 디렉토리로 이동
    cd ~/hi_ws
  2. 가상환경 활성화
    source yolov11_project/bin/activate
  3. ROS 환경 설정 (필요 시)
    source /opt/ros/noetic/setup.bash
    source ~/hi_ws/devel/setup.bash
  4. 통합 코드 실행 (rosrun 또는 python3 명령어 사용)
    rosrun yolo_ros_pkg yolo_tracking.py
    또는
    python3 src/yolo_ros_pkg/scripts/yolo_tracking.py

요약

  • 초기 설치:
    • python3-venv 설치 → hi_ws 루트에서 가상환경 (yolov11_project) 생성
  • 매번 작업 시:
    • hi_ws 루트에서 가상환경 활성화 → ROS 환경 설정 → 코드 실행
  • 코드 파일 위치:
    • hi_ws/src 내의 별도 ROS 패키지(예: yolo_ros_pkg/scripts)에 저장
  • 작업 종료:
    • 가상환경 내에서 작업 후 deactivate 명령어로 종료
  • 다시 작업할 때:
    • hi_ws 루트로 이동 후 가상환경 재활성화, ROS 환경 설정, 코드 실행
profile
지금까지 해온 여러 활동들을 간략하게라도 정리해보고자 합니다.

0개의 댓글