1. 로그인
ssh -i ~/.ssh/id_ed25519 -Y quad@192.167.1.31
2. 파이썬 가상 환경을 만들어 준다...
sudo apt install python3-venv
python3 -m venv ~/venv_yolo
source ~/venv_yolo/bin/activate
3. 다음 라이브러리를 설치해준다.
pip install --upgrade pip
pip install ultralytics opencv-python pyrealsense2 numpy
sudo apt install nvidia-jetpack
4. pytorch설치
export TORCH_INSTALL=https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
export TORCH_URL="https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl"
pip install --no-cache-dir "$TORCH_URL"
4. 동작하는지 확인 ( 아래 사진과 같이 될거임 )
yolo detect predict model=yolov8n.pt source=https://ultralytics.com/images/bus.jpg

5. 이번에는 d455카메라를 가지고, yolo를 돌려본다.
- 아래의 py파일을 만들고 실행시킨다.
- python realsense_yolo_rt.py
#!/usr/bin/env python3
import time
import numpy as np
import cv2
import pyrealsense2 as rs
from ultralytics import YOLO
def main():
# 1) RealSense 파이프라인 설정
pipeline = rs.pipeline()
config = rs.config()
# 컬러 스트림만 사용 (640x480@30fps)
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
# 파이프라인 시작
pipeline.start(config)
# 2) YOLO 모델 로드
# - 이미 다운로드한 yolov8n.pt 사용 (같은 폴더에 있다고 가정)
# - yolo11n.pt 쓰고 싶으면 파일명만 교체하면 됨.
model = YOLO("yolov8n.pt") # 또는 "yolo11n.pt"
# GPU 세팅은 나중에 CUDA 버전 PyTorch 설치 후에:
# model.to("cuda")
print("[INFO] RealSense + YOLO 시작합니다. ESC 또는 q 를 누르면 종료합니다.")
try:
while True:
# 3) 프레임 읽기
frames = pipeline.wait_for_frames()
color_frame = frames.get_color_frame()
if not color_frame:
continue
# RealSense 프레임을 numpy 배열(BGR)로 변환
frame = np.asanyarray(color_frame.get_data())
t0 = time.time()
# 4) YOLO 추론
# - imgsz 줄이면 속도↑ (예: 512, 416 등)
results = model.predict(
source=frame,
imgsz=640,
device="cpu", # 나중에 "cuda:0" 로 변경
verbose=False
)
# 5) 결과 그리기
annotated = results[0].plot()
fps = 1.0 / (time.time() - t0)
cv2.putText(
annotated,
f"FPS: {fps:.1f}",
(10, 30),
cv2.FONT_HERSHEY_SIMPLEX,
1.0,
(0, 255, 0),
2,
cv2.LINE_AA,
)
cv2.imshow("YOLO + D455 (Jetson Orin Nano)", annotated)
key = cv2.waitKey(1) & 0xFF
if key == 27 or key == ord("q"): # ESC 또는 q
break
finally:
# 6) 리소스 정리
pipeline.stop()
cv2.destroyAllWindows()
print("[INFO] 종료합니다.")
if __name__ == "__main__":
main()

#!/usr/bin/env python3
import time
import numpy as np
import cv2
import pyrealsense2 as rs
from ultralytics import YOLO
import torch # 추가
def main():
# 1) RealSense 파이프라인 설정
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
pipeline.start(config)
# 2) YOLO 모델 로드
model = YOLO("yolov8n.pt")
# ---- 여기서 device 선택 ----
device = "cuda:0" if torch.cuda.is_available() else "cpu"
print("[INFO] device =", device)
print("[INFO] RealSense + YOLO 시작합니다. ESC 또는 q 를 누르면 종료합니다.")
print("torch.cuda.is_available():", torch.cuda.is_available())
try:
while True:
frames = pipeline.wait_for_frames()
color_frame = frames.get_color_frame()
if not color_frame:
continue
frame = np.asanyarray(color_frame.get_data())
t0 = time.time()
results = model.predict(
source=frame,
imgsz=640,
device=device, # ← 여기!
verbose=False
)
annotated = results[0].plot()
fps = 1.0 / (time.time() - t0)
cv2.putText(
annotated,
f"FPS: {fps:.1f}",
(10, 30),
cv2.FONT_HERSHEY_SIMPLEX,
1.0,
(0, 255, 0),
2,
cv2.LINE_AA,
)
cv2.imshow("YOLO + D455 (Jetson Orin Nano)", annotated)
key = cv2.waitKey(1) & 0xFF
if key == 27 or key == ord("q"):
break
finally:
pipeline.stop()
cv2.destroyAllWindows()
print("[INFO] 종료합니다.")
if __name__ == "__main__":
main()'px4_sim' 카테고리의 다른 글
| [Drone] realsense camera를 사용하여 서버로 실시간 스트리밍 (0) | 2025.12.29 |
|---|---|
| 맵 작성 2트 (0) | 2025.12.05 |
| 맵 작성 1트 ( 간소화 ) (1) | 2025.10.16 |
| 움직이기 2트 (0) | 2025.10.13 |
| [rtabmap] error 3개 (0) | 2025.10.02 |