Ubuntu 22.04 + RTX 5050에서 Docker로 TensorFlow sm_120 소스 빌드와 YOLO11 GPU 환경 구축하기 #2

24. YOLO11은 별도의 Docker 환경 사용 TensorFlow와 YOLO11을 같은 Docker에 모두 설치할 수도 있습니다. 하지만 여기에서는 분리합니다. 구조는 다음과 같습니다. TensorFlow는 TensorFlow 학습에 사용합니다. YOLO Docker는 PyTorch와 Ultralytics YOLO에 사용합니다. 이렇게 분리하면 문제가 발생했을 때 원인을 찾기 쉽습니다. 24. YOLO Dockerfile 만들기 다음 파일을 만듭니다. 다음 내용을 입력합니다. 파일을 저장합니다. 1) Ubuntu 기본 패키지 설치 … Read more

Wego LIMO에서 딥러닝으로 로봇이 보는 방법

신경회로망의 탄생부터 TensorFlow CNN, YOLO11 객체검출까지 ROS 2를 이용하면 로봇의 센서, 모터, 카메라, LiDAR, Navigation2 같은 기능을 하나의 시스템으로 연결할 수 있습니다. 하지만 ROS 2 자체가 카메라 영상 속 사물이 무엇인지 판단하거나 도로의 진행 방향을 스스로 학습하는 것은 아닙니다. 이 역할을 담당하는 대표적인 기술이 머신러닝(Machine Learning)과 딥러닝(Deep Learning)입니다. 이번 과정에서는 LIMO 로봇의 카메라 영상을 이용하여 … Read more

Ubuntu 22.04 + RTX 5050에서 Docker로 TensorFlow sm_120 소스 빌드와 YOLO11 GPU 환경 구축하기 #1

Ubuntu 22.04 노트북에서 NVIDIA GeForce RTX 5050 Laptop GPU를 이용해 TensorFlow와 YOLO11을 실행하려고 하면 기존 RTX 30, RTX 40 시리즈와는 조금 다른 문제가 발생합니다. RTX 5050은 NVIDIA Blackwell 계열이며 CUDA Compute Capability가 12.0, 즉 sm_120입니다. 일반적인 Python 가상환경에 TensorFlow를 설치하면 다음 단계까지는 정상적으로 진행될 수 있습니다. GPU가 검색되거나 CUDA 라이브러리가 로딩되는 것처럼 보여도 실제 Conv2D, … Read more

Limo EKF 파라미터

EKF 설정 파일에서는 주로 다음 내용을 지정합니다. 평면을 주행하는 LIMO는 일반적으로 two_d_mode를 활성화해 Z축 위치, Roll, Pitch 등 불필요한 3차원 상태를 제한할 수 있습니다. 2D 지상 로봇을 대상으로 /odom과 /imu를 융합해서 odom → base_link 기준의 부드러운 로컬 위치 추정을 만드는 EKF 설정입니다. robot_localization의 EKF 상태 벡터는 15개입니다. 모든 _config, process_noise_covariance, initial_estimate_covariance는 아래 순서를 사용합니다. 즉, … Read more

Limo 구동 모드

ROS2 드라이버 소스에서 구분하는 주행 모드는 3개입니다. AgileX 공식 LIMO Pro 매뉴얼에서도 Track 모드는 four-wheel differential과 동일한 방식의 slip/skid steering을 사용한다고 설명합니다. 즉 ROS 측에서는 4륜 차동과 무한궤도를 구분할 필요가 없습니다. 1. 가장 먼저 볼 곳: 주행 모드 정의 파일: 97~102행: 이 부분이 전체 주행 모드의 기준입니다. 값 모드 실제 의미 0x00 MODE_FOUR_DIFF 4륜 차동 … Read more

Wego LIMO 딥러닝 모델 학습과 TensorRT 최적화 방법 #2

5. YOLO 객체 인식 모델 학습 YOLO 모델은 표지판, 신호등, 보행자처럼 이미지 안에서 위치를 특정해야 하는 객체 인식 작업에 사용합니다. Wego LIMO에서 수집한 YOLO 데이터셋은 이미지와 라벨이 학습용과 검증용으로 나뉘어 있어야 합니다. 권장 폴더 구조는 다음과 같습니다. 각 이미지 파일에는 동일한 이름의 라벨 파일이 필요합니다. YOLO 라벨 파일은 일반적으로 다음 형식을 사용합니다. 좌표값은 이미지 크기를 … Read more

Wego Limo로 구현하는 ROS 2 카메라 기반 차선 주행 시스템 #2

7. detect_line 1) 전체 소스 코드의 역할 먼저 이 노드의 핵심 목적을 정리하면 다음과 같습니다. 카메라 영상에서 노란색 계열의 차선을 찾은 뒤, 해당 차선의 중심 좌표 cx를 계산합니다. 그리고 미리 설정된 기준 위치인 reference_distance와 비교하여 다음 값을 계산합니다. 예를 들어 기준 위치가 170이고 실제 검출된 차선 중심이 150이라면 다음과 같습니다. 반대로 실제 차선 중심이 190이라면 … Read more

TurtleBot3에서 Google Cloud Text-to-Speech를 사용하기 위한 Google Cloud 설정 방법

ROS 2 Humble이 설치된 TurtleBot3 Burger에서 Google Cloud Text-to-Speech API를 사용하려면 먼저 Google Cloud 프로젝트, 결제 계정, API, 서비스 계정, 인증 키를 설정해야 합니다. 이번 설정의 최종 목표는 다음과 같습니다. 이 글에서는 Python 코드에서 다음 방식으로 인증하는 것을 기준으로 설명합니다. TextToSpeechClient()는 Application Default Credentials, ADC 방식을 사용하여 인증 정보를 자동으로 찾습니다. TurtleBot3에서는 서비스 계정 JSON … Read more

현재 작업 중인 소스를 기존 GitHub 저장소에 업로드하는 방법 #2

14. 방법 3: 여러 명이 사용하는 팀 저장소에 업로드하는 경우 팀원들이 이미 사용 중인 저장소라면 main 브랜치에 직접 Push하지 않는 것이 좋습니다. 저장소의 main 브랜치가 보호되어 있다면 직접 Push가 차단되고 Pull Request와 리뷰가 요구될 수도 있습니다. 권장 순서는 다음과 같습니다. 1) 저장소를 Clone합니다 2) 작업 브랜치를 생성합니다 현재 브랜치를 확인합니다. 다음처럼 작업 브랜치 앞에 *가 … Read more

현재 작업 중인 소스를 기존 GitHub 저장소에 업로드하는 방법 #1

로컬 컴퓨터에서 개발하던 프로젝트를 GitHub에 올릴 때는 단순히 파일을 복사하는 것이 아니라 다음 과정을 거칩니다. 다만 GitHub 저장소가 완전히 비어 있는지, README 파일이 이미 들어 있는지에 따라 방법이 달라집니다. 초보자가 가장 먼저 확인해야 할 내용은 다음 두 가지입니다. GitHub 공식 문서에서도 기존 로컬 프로젝트를 처음 Push할 때 오류를 줄이려면 GitHub 저장소를 README, 라이선스, .gitignore 없이 … Read more