Skip to content

Theunkillabledemonking/My_self_driving

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš— Self-Driving Car ν”„λ‘œμ νŠΈ

Self-Driving Car

이 ν”„λ‘œμ νŠΈλŠ” Jetson Nano와 λ―Έλ‹ˆ RCμΉ΄λ₯Ό ν™œμš©ν•˜μ—¬ 라인 νŠΈλž˜ν‚Ήμ„ μˆ˜ν–‰ν•˜λŠ” μžμœ¨μ£Όν–‰ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
Jetson Nano의 카메라와 GPIOλ₯Ό 톡해 데이터λ₯Ό μˆ˜μ§‘ν•˜κ³ , PilotNet λͺ¨λΈμ„ μ‚¬μš©ν•΄ μ£Όν–‰ 경둜λ₯Ό ν•™μŠ΅ 및 μ œμ–΄ν•©λ‹ˆλ‹€.


πŸ—‚οΈ λͺ©μ°¨

  1. ν”„λ‘œμ νŠΈ κ°œμš”
  2. 폴더 ꡬ쑰
  3. μ‹œμž‘ κ°€μ΄λ“œ
  4. 기술 μŠ€νƒ
  5. μ£Όμš” κΈ°λŠ₯
  6. κ²°κ³Ό 및 μ„±λŠ₯
  7. 개발자 μ†Œκ°œ
  8. μΆ”κ°€ 팁

πŸš€ 1. ν”„λ‘œμ νŠΈ κ°œμš”

  • ν”„λ‘œμ νŠΈ 이름: Self-Driving Car ν”„λ‘œμ νŠΈ
  • λͺ©μ : Jetson Nano 기반 λ―Έλ‹ˆ RC카둜 라인 νŠΈλž˜ν‚Ήμ„ μ™„μ£Όν•˜λŠ” μžμœ¨μ£Όν–‰ μ‹œμŠ€ν…œ κ΅¬ν˜„
  • 개발 κΈ°κ°„: πŸ“… 2024λ…„ 9μ›” ~ 2024λ…„ 12μ›” 18일
  • μ‚¬μš©λœ 기술:
    • πŸ› οΈ ν•˜λ“œμ›¨μ–΄: 카메라, DC λͺ¨ν„°, μ„œλ³΄ λͺ¨ν„°, Jetson Nano
    • πŸ’» μ†Œν”„νŠΈμ›¨μ–΄:
      • JetPack 4.6.5
      • Python 3.6.9
      • OpenCV 4.1.1
      • PyTorch 1.10.0
      • Torchvision 0.11.1
      • Scikit-learn
      • CUDA 10.2

πŸ“ 2. 폴더 ꡬ쑰

Self-Driving-Car-Project/
β”‚
β”œβ”€β”€ data/                       # 데이터 디렉터리
β”‚   β”œβ”€β”€ raw/                    # 원본 데이터
β”‚   β”‚   β”œβ”€β”€ images/             # 이미지 파일
β”‚   β”‚   └── training_data.csv   # μ‘°ν–₯각 데이터
β”‚   β”œβ”€β”€ processed/              # μ „μ²˜λ¦¬λœ 데이터
β”‚       β”œβ”€β”€ resized_images/     # λ¦¬μ‚¬μ΄μ¦ˆλœ 이미지
β”‚       └── training_data_resized.csv
β”‚
β”œβ”€β”€ data_preprocessing/         # 데이터 μ „μ²˜λ¦¬ μ½”λ“œ
β”‚   β”œβ”€β”€ 1image_dataset.py       # 이미지 및 각도 μΆ”μΆœ
β”‚   β”œβ”€β”€ 2dataset_path.py        # 데이터 경둜 μˆ˜μ •
β”‚   β”œβ”€β”€ 3reset_data.py          # 데이터 κ²€ν†  및 μ‚­μ œ
β”‚   β”œβ”€β”€ 4distribution_plot.py   # μ‘°ν–₯κ°’ 뢄포 μ‹œκ°ν™”
β”‚   β”œβ”€β”€ 5oversample_data.py     # 데이터 μ˜€λ²„μƒ˜ν”Œλ§
β”‚   └── 6resize_images.py       # 이미지 λ¦¬μ‚¬μ΄μ¦ˆ
β”‚
β”œβ”€β”€ models/                     # λͺ¨λΈ κ΄€λ ¨ 디렉터리
β”‚   └── best_pilotnet_model.pth # ν•™μŠ΅λœ λͺ¨λΈ
β”‚
β”œβ”€β”€ training/                   # ν•™μŠ΅ μ½”λ“œ
β”‚   └── train_pilotnet.py       # PilotNet λͺ¨λΈ ν•™μŠ΅ μ½”λ“œ
β”‚
β”œβ”€β”€ testing/                    # μ‹€μ‹œκ°„ ν…ŒμŠ€νŠΈ μ½”λ“œ
β”‚   └── test.py                 # μ‹€μ‹œκ°„ μΆ”λ‘  및 ν…ŒμŠ€νŠΈ
β”‚
β”œβ”€β”€ README.md                   # ν”„λ‘œμ νŠΈ μ„€λͺ… 파일
└── requirements.txt            # μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λͺ©λ‘

βš™οΈ 3. μ‹œμž‘ κ°€μ΄λ“œ

▢️ 3.1 μ„€μΉ˜ 및 μ‹€ν–‰

1) ν”„λ‘œμ νŠΈ 클둠

λ¨Όμ € GitHub μ €μž₯μ†Œλ₯Ό ν΄λ‘ ν•©λ‹ˆλ‹€.

git clone https://github.com/theunkillabledemonking/Self-Driving-Car-Project.git
cd Self-Driving-Car-Project

2) Docker ν™˜κ²½ μ„€μ •

Dockerλ₯Ό μ‚¬μš©ν•΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ €λ©΄ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜, docker-compose.yml νŒŒμΌμ„ ν™œμš©ν•˜μ„Έμš”.

Bash λͺ…λ Ήμ–΄
sudo docker run -it \
  --ipc=host \
  --runtime=nvidia \
  --restart=always \
  -v $(pwd):/workspace \               # 둜컬 디렉토리 μ—°κ²°
  --device /dev/video0:/dev/video0 \   # 카메라 λ””λ°”μ΄μŠ€ μ—°κ²°
  --device /dev/gpiomem:/dev/gpiomem \ # GPIO λ””λ°”μ΄μŠ€ μ—°κ²°
  -e DISPLAY=$DISPLAY \                # X11 λ””μŠ€ν”Œλ ˆμ΄ ν™˜κ²½ λ³€μˆ˜ 전달
  -e QT_X11_NO_MITSHM=1 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \   # X11 μœ λ‹‰μŠ€ μ†ŒμΌ“ μ—°κ²°
  --shm-size=1g \                      # 곡유 λ©”λͺ¨λ¦¬ 크기 μ„€μ •
  --privileged \                       # 특ꢌ λͺ¨λ“œ ν™œμ„±ν™”
  --name my_camera_gpio_container \    # μ»¨ν…Œμ΄λ„ˆ 이름
  ultralytics/ultralytics:latest-jetson-jetpack4 /bin/bash
Docker Compose μ‚¬μš©

docker-compose.yml νŒŒμΌμ„ μƒμ„±ν•˜κ±°λ‚˜, μ•„λž˜ λ‚΄μš©μ„ ν”„λ‘œμ νŠΈ 디렉토리에 μΆ”κ°€ν•˜μ„Έμš”.

version: "3.8"
services:
  my_camera_gpio_service:
    image: ultralytics/ultralytics:latest-jetson-jetpack4
    container_name: my_camera_gpio_container
    runtime: nvidia
    ipc: host
    privileged: true
    restart: always
    shm_size: 1g
    volumes:
      - ./workspace:/workspace
      - /tmp/.X11-unix:/tmp/.X11-unix
    devices:
      - /dev/video0:/dev/video0
      - /dev/gpiomem:/dev/gpiomem
    environment:
      DISPLAY: $DISPLAY
      QT_X11_NO_MITSHM: "1"

Docker Compose둜 μ‹€ν–‰ν•˜λ €λ©΄ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ„Έμš”:

docker-compose up -d

3) μ»¨ν…Œμ΄λ„ˆ 접속 및 μ‹€ν–‰

μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ ν›„ μ•„λž˜ λͺ…λ Ήμ–΄λ‘œ 내뢀에 μ ‘μ†ν•˜μ—¬ ν”„λ‘œμ νŠΈλ₯Ό μ‹€ν–‰ν•˜μ„Έμš”.

docker exec -it my_camera_gpio_container /bin/bash
python train_pilotnet.py

βš™οΈ μΆ”κ°€ μ„€μ •

X11 λ””μŠ€ν”Œλ ˆμ΄ ν™œμ„±ν™”

xhost +local:docker

Jetson μž₯치 확인

NVIDIA Jetson ν™˜κ²½μ—μ„œ CUDA와 JetPack 버전이 ν˜Έν™˜λ˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”.

ν™˜κ²½ λ³€μˆ˜ μ„€μ •

.env νŒŒμΌμ„ μ‚¬μš©ν•΄ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ •μ˜ν•˜κ³  μ»¨ν…Œμ΄λ„ˆμ— 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ› οΈ 4. 기술 μŠ€νƒ

πŸš€ 기술 μ„€λͺ…
Jetson Nano Edge AI ν•˜λ“œμ›¨μ–΄ ν”Œλž«νΌ
OpenCV 이미지 처리 및 뢄석 라이브러리
PyTorch λ”₯λŸ¬λ‹ λͺ¨λΈ ν•™μŠ΅ 및 μΆ”λ‘ 
Torchvision 이미지 데이터셋 지원 도ꡬ
Scikit-learn 데이터 μ „μ²˜λ¦¬ 및 뢄석
CUDA GPU 기반 μ»΄ν“¨νŒ… 지원

🌟 5. μ£Όμš” κΈ°λŠ₯

  1. 라인 νŠΈλž˜ν‚Ή: RCμΉ΄κ°€ μ§€μ •λœ 라인을 따라 μ£Όν–‰
  2. μ‹€μ‹œκ°„ 데이터 μˆ˜μ§‘: 카메라 및 GPIOλ₯Ό 톡해 데이터 μˆ˜μ§‘
  3. λͺ¨λΈ ν•™μŠ΅: PilotNet λͺ¨λΈμ„ ν•™μŠ΅ν•˜μ—¬ μ£Όν–‰ 경둜 예츑
  4. μ‹€μ‹œκ°„ μΆ”λ‘ : ν•™μŠ΅λœ λͺ¨λΈμ„ 기반으둜 μ‹€μ‹œκ°„ μ£Όν–‰ μ œμ–΄
  5. 데이터 μ „μ²˜λ¦¬: 이미지 λ¦¬μ‚¬μ΄μ¦ˆ 및 데이터 증강 μˆ˜ν–‰
  6. λͺ¨λΈ 검증: μ„±λŠ₯ 검증 및 μ΅œμ ν™”

πŸ“Š 6. 데이터 및 κ²°κ³Ό

데이터 뢄포

원본 데이터 뢄포

Steering Angle Distribution

  • 뢄석 κ²°κ³Ό: 원본 λ°μ΄ν„°λŠ” νŠΉμ • μ‘°ν–₯각에 데이터가 κ³Όλ„ν•˜κ²Œ λͺ°λ €μžˆμœΌλ©°, κ· ν˜•μ μΈ ν•™μŠ΅μ„ μœ„ν•΄ 좔가적인 μ „μ²˜λ¦¬κ°€ ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€.

μ˜€λ²„μƒ˜ν”Œλ§ 데이터 뢄포

Oversampled Steering Angle Distribution

  • κ°œμ„ λœ 뢄포: μ˜€λ²„μƒ˜ν”Œλ§μ„ 톡해 μ‘°ν–₯각 데이터가 κ· λ“±ν•˜κ²Œ λΆ„ν¬λ˜λ„λ‘ μ‘°μ •ν•˜μ—¬, λͺ¨λΈ ν•™μŠ΅ μ„±λŠ₯을 κ°•ν™”ν–ˆμŠ΅λ‹ˆλ‹€.

ν•™μŠ΅ κ²°κ³Ό

Training and Validation Loss

Training and Validation Loss

  • Train Loss: μ΅œμ’…κ°’ 0.1794
  • Validation Loss: μ΅œμ’…κ°’ 0.3982
  • Test Accuracy: 88.75%

μ„±λŠ₯ μš”μ•½

  1. μ˜€λ²„μƒ˜ν”Œλ§ κΈ°λ²•μœΌλ‘œ 데이터 λΆˆκ· ν˜• 문제λ₯Ό ν•΄κ²°.
  2. PilotNet λͺ¨λΈμ˜ μ΅œμ ν™” κ²°κ³Ό Test Accuracyκ°€ μ•½ 2.27% κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  3. ν•™μŠ΅ κ³Όμ • 쀑 Validation Loss와 Train Loss κ°„μ˜ 간극을 쀄이며 과적합 문제λ₯Ό μ™„ν™”ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ‘€ 7. 개발자 μ†Œκ°œ

이 ν”„λ‘œμ νŠΈλŠ” theunkillabledemonking에 μ˜ν•΄ κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

theunkillabledemonking
theunkillabledemonking

πŸš— 개발자

πŸ’‘ 8. μΆ”κ°€ 팁

  • Jetson Nano에 μ΅œμ ν™”λœ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•΄μ£Όμ„Έμš”.
  • PilotNet λͺ¨λΈμ˜ ꡬ쑰λ₯Ό λ³€κ²½ν•˜μ—¬ μΆ”κ°€ μ„±λŠ₯을 ν–₯상할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 데이터 μˆ˜μ§‘ μ‹œ μΆ©λΆ„ν•œ μ£Όν–‰ 데이터λ₯Ό ν™•λ³΄ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

πŸš€ 성곡적인 ν”„λ‘œμ νŠΈ 진행을 κΈ°μ›ν•©λ‹ˆλ‹€! πŸš—πŸ’¨

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •