Jetson Nano
과목소개
Jetson Nano 보드는 Nvidia에서 개발한 임베디드 시스템으로 64비트 CPU와 고성능 GPU를 내장하고 있어 Linux기반의 고사양(High end) 임베디드 시스템 교육용으로 적당함
컴퓨터 비전, AI, 자율주행 등 임베디드 기반의 제어시스템 개발에 응용하는 법을 배운다.
보드에는 Linux가 설치되어 있어 Linux환경에서 소프트웨어 개발하는 데 필요한 지식이 필요하다. 따라서, Linux의 개요, 기본명령어, ssh를 이용한 원격제어, Samba를 이용한 저장공간 공유, gcc, make 사용법 등을 배운다.
Jetson Nano 보드의 GPU와 OpenCV를 이용한 컴퓨터 비전 프로그래밍 기법을 배운다.
실습과제로 적외선센서를 이용한 라인트레이서, 비전기반 라인트레이서, 딥러닝 기반 자율주행로봇 제작 등을 수행한다.
3. 강의교재
https://www.nvidia.com/ko-kr/autonomous-machines/embedded-systems/
이것이 우분투 리눅스다, 개정판, 우재남지음, 한빛미디어, 2020.11
리눅스 시스템 프로그래밍, 개정2판, 로버트러브 지음, 김영근옮김, 한빛미디어, 2015.1
윤성우의 열혈 TCP/IP 소켓프로그래밍, 개정2판, 윤성우지음, 오렌지미디어, 2010(윈도우즈/리눅스용)
TCP IP 윈도우 소켓 프로그래밍, 김선우지음, 한빛아카데미, 2013.1(윈도우즈용)
쉽게배우는 운영체제, 조성호지음, 한빛아카데미, 2018
Managing Projects with make 유닉스리눅스 필수 유틸리티, 이석주역, 한빛미디어, 2002
Modern CMake for C++, Rafal swidzinski저, Packt Publishing, 2022
4. 강의내용
Jetson Nano: Nvidia에서 개발한 GPU를 내장한 개발보드
Linux : 리눅스역사, 기본 명령어, 시스템관리도구, 네트워크 관리도구 학습
CUDA : Nvidia에서 개발한 GPU용 라이브러리
cuDNN : Nvidia에서 개발한 CUDA 기반의 DNN 라이브러리
make, Cmake : 빌드자동화 도구
GCC : GNU 컴파일러 컬렉션
OpenSSH : 원격제어 관리툴
Samba : 리눅스와 윈도우즈 사이의 파일시스템 공유
OpenCV를 이용한 컴퓨터비전 프로그램 개발
Jetson nano GPIO 프로그래밍
Linux Timer Event를 이용한 프로그래밍
Linux Multi-Thread 프로그래밍
실습용 로봇플랫폼 : 터틀봇3 버거
TCP/IP 소켓프로그래밍(Windows/Linux)
Gstreamer를 이용한 영상 스트리밍
Darknet과 Yolo를 이용한 custom data를 이용한 객체검출
TensorRT를 이용한 추론 속도개선
5. 개발환경
기본적으로 모든 작업은 Windows 상에서 원격제어를 통하여 처리한다.
Samba를 통한 Windows에서 소스파일 편집(Visual Studio 이용)
원격제어를 통한 Linux에서 빌드 & 실행(make, gcc 이용)
Windows상의 X server를 이용한 Linux의 GUI 프로그램 실행
Visual Studio Code를 이용한 개발환경 구축(소스편집, 빌드 모두 가능, 삼바 필요없음)
6. 실습과제
Jetson nano보드, 적외선센서, 스텝모터를 이용한 라인트레이서 제작
Jetson nano와 Opencv를 이용한 비전기반의 라인트레이서 제작( Jetson nano + IMX219 Wide angle camera + Dynamixel + Opencv )