Giter Club home page Giter Club logo

eurekaproject-xycar-5's Introduction

EurekaProject-Xycar-5

  • 국민대학교 창업연계공학설계입문, 유레카프로젝트 강의의 실습, AD 프로젝트 과제, 유레카 프로젝트 자율주행 대회 등의 내용을 담고 있습니다. 😄

창업연계공학설계입문 / 유레카 프로젝트 5조

학번 이름 github username
조장 20191564 김신건 shinkeonkim
조원 20191550 곽다윗 dawit0905
조원 20191549 고현성 cokwa
조원 20191545 강경수 gomtang3274
조원 20191565 김예리 yeringii

Video 📺

사람 시점 🤔

Xycar 주행 영상-사람 시점

로봇 시점 🤖

Xycar 주행 영상-로봇 시점

eurekaproject-xycar-5's People

Contributors

cokwa avatar dawit0905 avatar gomtang3274 avatar shinkeonkim avatar yeringii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

dawit0905

eurekaproject-xycar-5's Issues

과제2 - 1차테스트(12월 4일/창연공)

1차

obs = 70

  • 주행에는 큰 무리가 없으나 마지막 정차 구간에서 충돌

2차

obs = 85

  • 4~5회 정차해버림

3차

obs = 30 이상(중간) 77 이하

속도 = 140

  • (120,60,?) 들어와서 주행 중 원치 않는 정차
  • 초음파 센서 값이 50 -> 80 으로 껑충 뛰는 현상 발견

4차

obs = 85이하

속도 = 140

정차 시, 장애물 실존 여부에 따른 정차 시간 고려

  • 튀는 값 1회 정차, 사람 5회 정차, 장애물 1회 정차
  • 총 90초 주행

5차

4차 재시도

  • 총 1분 8초 ~ 4초 주행
  • 튀는 값 3회 정차, 사람 1회 정차

6차

튀는 값 최소화 대책

우회전 최초 시 이후부터 초음파 정지 적용

  • 주행 시 문제 해결됨
  • 총 62초 주행
  • 문제: 정차 시에, 일정시간 정차후 다시 주행하는 문제

7차

정차시 autodirve.py 종료

  • 문제 해결

과제2 - 2차테스트(11월 22일 금요일/유레카)

정리

유레카프로젝트 및 창업연계공학설계입문 Xycar의 극좌표계에 따른 theta의 값 적용

테스트

  • 극좌표계

1차

  • 변수 사용 갯수
    ㄴ angle, speed(2개)

  • angle 조정 상수
    (-0.8, 0.8) K = 0
    (-5, 5) K =1.3
    (-10 10) K = 1.5
    그외 1,75

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 목적

  • 문제점
    구불구불한 구간에서 회전을 인식못하고 직진하는 상황 발생

2차

  • angle 조정 상수
    (-0.8, 0.8) K = 1
    (-5, 5) K =1.3
    (-10 ,10) K = 1.5
    그외 1,75

  • 직진 시 각 변경
    93로 변경

3차

  • angel조정 상수
    (theta <-10)K = 1.6으로 변경

  • LineDetector 임계치 상수 변경: 50
    하얀색 선인지 판단하는 상수역할, 초기값: 100

4차

  • LineDetector 임계치 상수 변경: 80

5차

  • autodrive 코드 직진 없이 좌,우회전 반복

6차

  • 변수 4개

  • autodrive
    (-0.8, 0.8) K = 1
    (-5, 5) K =1.3
    (-10 ,10) K = 1.6 ,1.75
    (theta < =-10) K =1.6
    그 외 =1.5

  • 직선 주행 시, 가중치 사용 곡선 주행 시 theta값 사용

7차

  • LinerDetetor right:93 -> right:90 으로 변경
  • 문제점: 너무 왼쪽으로 편향되어 주행한다.

8차

  • autodrive 가중치 weigth:15-> weight:10으로 변경
  • 문제점: Xycar가 직선으로 가는 도중에도 왼쪽으로 꺾는다.

9차

  • autodrive theta 구간 변경
    (-20,20)K=1.6
    (theta>=20)K=1.75
    (theta<=-20)K=1.6
    그 외 = 1.5

10차

  • autodrive theta 구간 변경, K값 변경
    (-5,5)K=2.5
    (15,15)K=1.5
    (-20,20)K=1.7
    (theta>=20)K=1.75
    (theta<=-20)K=1.6
    그 외 = 1.5

11차

  • autodrive 직진 값 91.8변경, K값 변경
    (-4,4)K=2.5
    (-20,20)K=1.5
    (theta>=20)K=2.0
    (theta<=-20)K=2.5
    그 외 = 1.5

12차

  • autodrive K값 변경
    (-4,4)K=2.5
    (-20,20)K=1.5
    (theta>=20)K=2.2
    (theta<=-20)K=2.7
    그 외 = 1.5

13차

  • autodrive K값 변경, 속도 변경
    theta&K값 12차와 동일
    속도 값:130 -> 140으로 조정

  • 문제점:속도가 너무 빨라서 Xycar가 탈선함.

14차

  • autodrive K값 변경, 속도 변경
    (-4,4)K=2.5
    (-20,20)K=1.5
    (theta>=20)K=2.3
    (theta<=-20)K=2.8
    그 외 = 1.5
    속도 값 : 다시 130으로 변경

-문제점:Xycar가 너무 왼쪽으로 치우쳐짐.

15차

  • autodrive K값 변경
    (-0.8,0.8)K=1.4
    (-4,4)K=2.5
    (-20,20)K=1.5
    (theta>=20)K=2.3
    (theta<=-20)K=2.8
    그 외 = 1.5

16차

  • autodrive K값 변경
    (-0.8,0.8)K=3.0
    (-4,4)K=2.5
    (-20,20)K=1.5
    (theta>=20)K=2.3
    (theta<=-20)K=2.8
    그 외 = 1.5

17차

  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-20,20)K=1.5
    (theta>=20)K=2.3
    (theta<=-20)K=3.0
    그 외 = 1.5

18차

  • autodrive theta&K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=2.0
    (theta>=20)K=2.3
    (theta<=-20)K=3.0
    그 외 = 1.5

19차

  • autodrive theta&K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=1.75
    (theta>=20)K=2.3
    (theta<=-20)K=3.0
    그 외 = 1.5

20차

  • linedetector 코드 수정
  • 우회전 시, filter 이용해 theta 값의 변화 속도를 느리게 받아오도록 함.
  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=3.0
    그 외 = 1.5

21차

  • linedetector theta 값의 변화 속도를 20차시보다 조금 빠르게 받아오도록 함.

22차

  • 좌회전 시, Angle 조정 상수를 낮춤.
  • theta 변화 속도를 20 & 21차시의 중간값으로 수정함.
  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.0
    그 외 = 1.5

23차

  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.3
    그 외 = 1.5

24차

  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.15
    그 외 = 1.5

25차

  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.1
    그 외 = 1.5

26차

  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (4,15)K=1.75
    (-15,-4)K=2.0
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.1
    그 외 = 1.5

27차

  • autodrive K값 변경
    (-0.8,0.8)K=5.0
    (-4,4)K=2.5
    (4,15)K=1.75
    (-15,-4)K=1.86
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.1
    그 외 = 1.5

28차

  • autodrive K값 변경
    (-0.8,0.8)K=8.0
    (-4,4)K=2.5
    (4,15)K=1.75
    (-15,-4)K=1.8
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.1
    그 외 = 1.5

29차

  • autodrive K값 변경
    (-0.8,0.8)K=8.0
    (-4,4)K=2.5
    (4,15)K=1.75
    (-15,-4)K=1.86
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=1.7
    그 외 = 1.5

30차

  • autodrive K값 변경
    (-0.8,0)K=8
    (0,0.8)K=15
    (-4,4)K=2.5
    (4,15)K=1.75
    (-15,-4)K=1.86
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=2.1
    그 외 = 1.5

31차

  • 직진 시 91.8값을 92.0으로 수정

32차

  • linedetector theta 값의 변화 속도를 조금 더 느리게 받아오도록 함.
  • 직진 시 92.0을 91.8로 다시 수정

33차시

  • autodrive K값 변경
    (-0.8,0)K=8
    (0,0.8)K=15
    (-4,4)K=2.5
    (4,15)K=1.75
    (-15,-4)K=1.86
    (-15,15)K=1.75
    (theta>=20)K=3.0
    (theta<=-20)K=1.8
    그 외 = 1.5

34차

  • theta의 절댓값이 감소할 때는 변화율이 느리지만 theta 의 절댓값이 커지면 변화율이 커짐

과제1 - 3차 테스트 + 추가사항 (10월 30일 수요일)

기본설정

중간값 필터: 초음파 센서의 값을 큐(FIFO)방식으로 5개
전진속도(임계값): 110(40) 117(50) 123(64)
후진속도(임계값): 70(43)

1차

변경사항)

  • 10Hz를 100Hz로 변경

감상평)

  • 속도가 가장 빠를 때(123) 멈추는 구간이 들쑥날쑥함

2차

변경사항)

  • 전진 임계값 변경 35 45 55

감상평)

  • 100Hz는 포기

3차

변경사항)

  • 초반 중간값필터 값 5개 받고 시작

감상평)

  • 점수 10 / 10 / 7 / 10 / 5 / 10 52점
  • 후진은 80%정도 정화성
  • 제일 빠를 때의 멈추는 구간 들쭉날쭉

4차

변경사항)

  • while순환문 내에 print(front/back 리스트) 추가

감상평)

  • Xycar 모터 작동 안함 -> 모터 충전 필요

5차

변경사항)

  • 100Hz로 변경
  • callback에서 front와 back에 append
  • 임계값 변경 40 55 70

감상평)

  • .

6차

변경사항)

  • print문으로 중간값 필터 혹인

감상평)

  • .

7차

변경사항)

  • 전진속도 변경 100 110 120

감상평)

  • 100은 속도가 안되는 걸로

8차

변경사항)

  • 전진속도 변경 110 115 120
  • 전진 임계값 변경 55 65 80

감상평)

  • 후진 값 조정필요
  • 전진 값 세번째 조정필요

9차

변경사항)

  • 후진 임계값 53 변경

감상평)

  • .

10차

변경사항)

  • 전진 임계값 변경 50 65 80
  • 후진 임계값 변경 58

감상평)

  • 첫 번째 전진이 너무 가까움
  • 후진이 너무 빨리 멈추는 듯

11차

변경사항)

  • 전진 임계값 변경 48 65 80
  • 후진 임계값 변경 56

감상평)

  • 세 번째 전진 착지 지점이 들쭉날쭉함
  • 후진이 불안정함

12차

변경사항)

  • 세 번쨰 전진 시 역주행(1초) 걸어줌

감상평)

  • 세 번째 여전히 들쭉날쭉
  • 후진이 살짝 불안정함 널럴한 느낌

13차

변경사항)

  • 강의 노트에 있는 방향 전환 for loop 과 정지를 5초동안하는 코드의 순서를 변경함.
  • 역주행 삭제

감상평)

  • 관성(반동) 없어짐 ( 멈출 때 바로 멈춤)
  • 임계값 변경 필요

14차

변경사항)

  • 세 번째 전진 임계값 변경 83

감상평)

  • 후진 불안정
  • 관성이 없을 때 멈추는 과정이 미묘함

15차

변경사항)

  • 후진 관성 제어 (속도 110)
  • 세 번째 전진 임계값 85
  • 후진 임계값 54

감상평)

과제1 - 1차 테스트(10월 28일 월요일)

테스트

1차

front value 기준: 40
front speed : 110
back value 기준 : 40
back speed : 70

후진하고 정지 지점은 정확했음.
전진하고 정지 지점은 30cm 보다 더 가까웠음.

과제2 - 1차테스트(11월 21일 목요일/유레카)

정리

유레카프로젝트 및 창업연계공학설계입문 Xycar의 극좌표계에 따른 theta의 값 적용

테스트

  • 극좌표계

1차

  • 변수 사용 갯수
    ㄴ angle, speed(2개)

  • angle 조정 상수
    음수값: 1.6
    양수값: 1.75

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 목적
    차량의 이탈을 막기 위한 시도

  • 문제점
    영상에서 직선을 검출하지 못할 경우, 이전에 저장되어있는 세타를 이용하게끔 적용하였으나, 오히려 이탈 현상이 급증함

2차

  • 변수 사용 갯수
    ㄴ angle, speed(2개)

  • angle 조정 상수
    음수값: 1.6
    양수값: 1.75

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 목적
    차선의 중앙 위치로 주행하기 위한 시도

  • 문제점
    차량이 주행 중 직진마다 차량의 진행 방향이 왼쪽으로 치우치는 현상

  • 해결방안

  1. Xycar 본래의 오프셋에 따른 운명
  2. 코드 중 steer 메써드의 k * theta 의 과정을 theta가 특정 구간(직진)일 경우 단순무식하게 0을 곱하는 방식을 적용

3차

  • 변수 사용 갯수
    ㄴ angle, speed(2개)

  • angle 조정 상수
    음수값: 1.6
    양수값: 1.75
    theta가 특정 구간(-1<theta<1): 0

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 노드의 순환 주기
    rate(10) -> rate(100) 변경

  • 목적
    차량의 주행방향 조정을 위한 시도

  • 문제점
    노드의 순환 주기 변경으로 인해, theta의 값이 0인 상황의 출현 빈도가 급증

4차

  • 변수 사용 갯수
    ㄴ angle, speed(2개)

  • angle 조정 상수
    음수값: 1.6
    양수값: 1.75
    theta가 특정 구간(-1<theta<1): 0

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 노드의 순환 주기
    rate(100) -> rate(10) 변경

  • 목적
    노드의 순환주기 변경한 후 실행 확인

  • 문제점

5차

  • 코드 추가
    변수 추가 left, right
    가중치 추가 diff 추가

6차

  • 변수 사용 갯수
    ㄴ angle, speed, left, right(4개)

  • angle 조정 상수
    음수값: 변경예정
    양수값: 변경예정
    theta가 특정 구간(-1<theta<1): 0

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 노드의 순환 주기
    rate(100) -> rate(10) 변경

  • diff 범위 변경
    |diff| < 3 -> |diff| < 1

  • weight 가중치 변경
    -5, 5 -> -10, 10

  • 목적
    노드의 순환주기 변경한 후 실행 확인

  • 문제점

7차

  • 1차와 동일한 코드로 변경

  • 문제점
    구불구불한 구간에서 차선 인식 불가

8차

  • 6차와 유사한 코드로 변경

  • 변수 사용 갯수
    ㄴ angle, speed, left, right(4개)

  • angle 조정 상수
    음수값: 변경예정
    양수값: 변경예정
    theta가 특정 구간(-1<theta<1): 0

  • speed 조정 식
    speed = K - min(abs(theta)/2,10)

  • 노드의 순환 주기
    rate(100) -> rate(10) 변경

  • diff 값 변경
    diff = 55 - mid -> diff = 50-mid

  • 직진 각도 변경
    92도

  • 목적
    노드의 순환주기 변경한 후 실행 확인

  • 문제점

9차

  • 속도 조절 방해 원인 발견
    (speed + 90)

  • 문제점
    너무 큰 가중치 부여
    너무 저조한 속도

10차

  • 속도
    120 -> 130 변경

11차

  • weight 가중치 변경
    10 10으로 변경

  • angle 조정 상수
    양쪽: 1.5 -> 1.25 변경

  • 문제점
    차선이 한쪽 상실 시, K와 Weight의 이중으로 작용하였기에, 비교적 너무 큰값이 회전으로 작용

12차

  • weight와 angle 조정 상수 k 상호작용
    차선을 한쪽을 상실할 경우, weight의 미적용으로 변경

final

  • angle 조정 상수
    왼쪽: 1.75
    오른쪽: 1.5

  • speed
    130 시작 + 수식

  • weight 전체 미적용

  • 직진 각도
    92.5

  • theta 판단
    -3 < theta<3

과제1 - 2차 테스트 (10월 29일 화요일)

정리

속도가 변경 될 때, 경계값을 그대로 유지 하고 다른 값을 변경할 지, 경계 값을 수정할지 판단.
전체적인 안정도는 많이 올라옴.

  • 후진 3회, 전진 1,2회는 정확
  • 전진 3회는 때에 따라 다름.
  • 마지막 테스트때 55점 획득함.

필터

평균값 필터보다 중간값 필터가 비교적 깔끔함.
중간값 필터로 갈 거같음.

바퀴 조향각

테스트할 때 마다 바퀴 조향각이 이상해짐. 개선 필요.

테스트

중간값 필터: 초음파 센서의 값을 일정이상 리스트로 받아서, 정렬된 리스트의 중간값으로 판단.
평균값 필터: 초음파 센서의 값을 큐(FIFO)방식으로 5개

경계 값이 높을 수록 거리가 멀다.
경계 값이 낮을 수록 거리가 가깝다.

1차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 120, 130
전진 거리 경계 값: 40, 40, 40

후진 속도 값: 70
후진 거리 경계 값: 40

전진 속도 값 130일 때, 충돌 사고 있었음. - 속도가 증가 됐을 때에 경계 값 수정 필요.

2차

전진: 평균값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 120, 130
전진 거리 경계 값: 40, 50, 60

후진 속도 값: 70
후진 거리 경계 값: 40

전진 속도 값 130일 때, 충돌 사고 있었음. - 속도가 증가 됐을 때에 개선 필요.
전진 속도가 증가 될때, 경계 값을 변경해줬지만(더 크게 해줬지만) 더 가까워졌음. 개선 필요.

3차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 120, 130
전진 거리 경계 값: 40, 60, 80

후진 속도 값: 70
후진 거리 경계 값: 40

전진 속도 값 130일 때, 충돌 사고 있었다. - 속도가 증가 됐을 때에 개선 필요

계속해서 속도가 증가 됐을 때 충돌 사고가 있다.
초음파 경계 값을 올려서 멈추는 타이밍을 빠르게 하거나,
바퀴 모터 제어를 해야 될 거같다.

4차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 120, 130
전진 거리 경계 값: 40, 70, 90

후진 속도 값: 70
후진 거리 경계 값: 40

이번에는 전진 속도 값이 130일 때 +-5cm에 제대로 멈춤.

5차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 105, 112, 119
전진 거리 경계 값: 38, 40, 70

후진 속도 값: 70
후진 거리 경계 값: 40

6차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 116, 122
전진 거리 경계 값: 40, 50, 75

후진 속도 값: 70
후진 거리 경계 값: 40

5,6차 콜백 사용했는데 망함.

7차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 117, 123
전진 거리 경계 값: 40, 50, 60

후진 속도 값: 70
후진 거리 경계 값: 40

8차

전진: 중간값 필터 사용
후진: 중간값 필터 사용

전진 속도 값: 110, 117, 123
전진 거리 경계 값: 40, 50, 64

후진 속도 값: 70
후진 거리 경계 값: 43

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.