$ catkin_create_pkg lane_detection OpenCV roscpp sensor_msgs std_msgs xycar_msgs
sudo chmod 777 /dev/ttyMOTOR
해주면 좋다!(11/14일)
-차선인식 알고리즘이 작동 안된다. 아마 crop 영역이 변경되어 그런것 같다.
cv::HoughLinesP(canny_crop, lines, 1, CV_PI / 180, 20, 20, 5);
int32_t left_range = frame_width * 0.7;
int32_t right_range = frame_width * 0.3;
수평선이 가끔 인식된다 -> 나중에 문제가 되면 조정 -> 문제가 된다ㅠㅠ
콘센트 부분이 노이즈로 인식된다ㅠ
이건 뭐지..
이전은 왼쪽, 오른쪽 차선을 나누는 기준이 0~70%, 30~100% 부분이었다.
이를 60%로 줄였다. -> 노이즈 제거 성공
차선, 직선을 아에 찾지 못하였을 경우, 초기화하는 방법 생각해보기
차선이 영상 안에 없는 경우, 과거의 값을 사용하여 아래와 같은 문제 발생
직선을 찾지 못한 경우 slope와 intercept를 0으로 초기화해준다. (온라인 차선인식 때 이렇게 했는데 클래스로 변경하는 과정에서 빠진듯하다)
차선이 계속 인식되지 않을 경우 초기화해주는 작업이 필요할 것 같다.
이상하다... 이러면 오른쪽으로 가는데....
뭔가 빨리 변하면 될것 같기도? 그러니까.. 이전값의 영향이 빨리 사라지도록...? 빨리 벗어나도록!!!!
문제 발생!
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 |
---|---|---|---|---|---|---|---|
25 | 10 | -0.015 | -3.0 | 0.6 | 0.03 | 0.0006 | U 구간에서 길을 잃는다/ 인코스를 밟는다 |
25 | 10 | -0.015 | -3.5 (빨리 옆으로 가게하기 위해서) | 0.6 | 0.03 | 0.0006 | U 구간에서 길을 잃는다 / 인코스를 밟는다 |
30 | 5 | -0.015 | -3.5 | 0.6 | 0.03 | 0.0004 | U 구간에서 길을 잃는다/ 회전시 속도가 너무 느리다 |
25 | 5 | -0.015 | -3.5 | 0.6 | 0.05 | 0.0004 | U 구간에서 길을 잃는다/ 속도가 빨라지면 바퀴가 흔들린다 |
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 | 영상 |
---|---|---|---|---|---|---|---|---|
25 | 5 | -0.05 | -5 | 0.6 | 0.05 | 0.0004 | 직선도 조금 벗어나고 회전할 때 너무 크게 돈다/ 너무 빠르다 | |
20 | 5 | -0.02 | -5 | 1.0 | 0.0 | 0.0 | 차선인식을 잘못한다.(직선에서도) / 차선이 예측되는게 너무 흔들린다 / SLOPE_DER를 -5로 한게 조금 큰것 같기도 하다(너무 급하게 양끝으로 가서 많이 회전해버리니 차선을 벗어난다) | |
20 | 5 | -0.02 | -5 | 1.0 | 0.005 | 0.0 | 너무 왔다갔다하는 것 같아서 D제어 추가/ DOWN_STEP_SPEED: 0.3/ 마지막 직선을 아에 인식 못한다 / 가속 속도가 빠른것 같다 / 여전히 흔들림 보정이 안된다 | |
15 | 5 | -0.02 | -4 | 1.0 | 0.005 | 0.0 | UP_STEP_SPEED 0.1 / 허프변환 결과 직선이 인식되는데 차선으로 인식이 안된다.(divide할때 뭔가 잘못된듯) / 회전할때 선을 다 밟는다. 더 안좋아졌다./좀느린가? / | |
25 | 5 | -0.015 | -3.5 | 0.6 | 0.05 | 0.0004 | 이상하다....차선을 왜 못 찾지?!?! | |
25 | 5 | -0.015 | -3.5 | 0.6 | 0.05 | 0.0004 | calculate pos원래대로.../ 허프변환 th가 20이여야되는데 30으로 되어있어서 차선을 못 잡았다ㅠㅠㅠ / 이제 u 빼고 제대로 간다 / 여전히 인코스는 밟는다 | |
25 | 5 | -0.015 | -5 | 0.6 | 0.05 | 0.0004 | start speed를 15로 / u 구간 제외 인코스 제외 다 잘된다 |
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 | 영상 |
---|---|---|---|---|---|---|---|---|
25 | 5 | -0.015 | -10 | 0.6 | 0.05 | 0.0004 | u구간 테스트 | test1 |
25 | 5 | -0.015 | -20 | 0.6 | 0.05 | 0.0004 | u구간 테스트/ 여전히 조금 늦게 640이 된다 | test2 |
25 | 5 | -0.015 | -50 | 0.6 | 0.05 | 0.0004 | u구간 테스트/ 너무 빨리 날아간다. 차선을 벗어난다 | test3 |
25 | 5 | -0.015 | -30 | 0.6 | 0.05 | 0.0004 | u구간 테스트/ 너무 빨리 날아간다. 차선을 벗어난다 | test4 |
25 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | u구간 테스트 /잘 놓으면 통과한다. 블록을 넘어뜨리지만ㅜ(-25로 결정) | test5 |
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 | 영상 |
---|---|---|---|---|---|---|---|---|
25 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | offset 내리기(OFFSET: 375, DOWN_STEP_SPEED: 0.1) 급가속 급감속을 한다, 근데 offset 문제가 아닌것 같다. ros에서 에러가 난다 | test6 |
25 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | offset 내리기(OFFSET: 370, DOWN_STEP_SPEED: 0.1) | test7 |
15 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | offset 원래대로(OFFSET: 365, DOWN_STEP_SPEED: 0.1) 그대로 급가속 확인하기 release mode여서 속도가 빨리빨리 적용되어서 생긴 문제다!! -> 다시 디버그 모드로...(아니 inshow 문제이다), 15로 줄이니 급가속 문제 해결 | 4 |
15 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | offset 375 : 코너에서 차선을 놓쳐버렸다. | test8 |
15 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | offset 370 : 여전히 이상하다..다시 원래대로 바꿔야지 | test9 |
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 | 영상 |
---|---|---|---|---|---|---|---|---|
15 | 5 | -0.015 | -25 | 4.0 | 0.05 | 0.000 | 바퀴 엄청 왔다갔다 | test 10 |
15 | 5 | -0.015 | -25 | 4.0 | 0.0 | 0.000 | 지글러 니콜스 방법 참고 / 여전히 바퀴 엄청 왔다갔다 | test 11 |
15 | 5 | -0.015 | -25 | 2.4 | 0.1625 | 1.0833 | 지글러 니콜스 방법 참고 / 바퀴가 크게 왔다갔다해서 차선을 벗어난다 -> pid 의 영향이 크구나 | test 12 |
15 | 5 | -0.015 | -25 | 2.4 | 0.1625 | 0.65 | 지글러 니콜스 방법 참고 / 여전히 바퀴가 크게 왔다 갔다 | test 13 |
20 | 7 | -0.015 | -25 | 5 | 0.007 | 0.0 | 너무 왔다갔다한다 | test 14 |
20 | 7 | -0.015 | -25 | 5 | 0.07 | 0.0 | 너무 왔다갔다한다 | test 15 |
20 | 7 | -0.015 | -25 | 5 | 2 | 0.0 | 너무 왔다갔다한다 | test 16 |
20 | 7 | -0.015 | -25 | 2 | 0.7 | 0.0 | 너무 왔다갔다한다 | test 17 |
20 | 7 | -0.015 | -25 | 1.2 | 0.7 | 0.0 | 너무 왔다갔다한다, 직진을 좀 오래하면 맞춰진다 | test 18 |
20 | 7 | -0.015 | -25 | 1.2 | 0.8 | 0.0 | 너무 왔다갔다한다, 직진을 좀 오래하면 맞춰진다 | test 19 |
20 | 7 | -0.015 | -25 | 1.0 | 0.8 | 0.0 | 너무 왔다갔다한다, 그치만 곧 안정 / 책상많은 코너가 안된다ㅠㅠ | test 20 |
20 | 7 | -0.015 | -25 | 0.8 | 0.8 | 0.0 | 구간 1 (오매 구간까지) / 코너에서 벗어난다 : 늦게 회전 각도가 부족해서 왼쪽 차선이 가운데로 온다 -> d제어 문제인가? | test 21 |
20 | 7 | -0.015 | -25 | 0.8 | 0.8 | 0.0 | 구간 2 (U 구간 까지) / U구간에서 블록을 인식한다... | test 22 |
20 | 7 | -0.015 | -25 | 0.8 | 0.8 | 0.0 | 구간 3(U이후) : 문제 없음 | test 23 |
20 | 7 | -0.015 | -25 | 0.8 | 0.5 | 0.0 | error, angle 출력해보기/ angle 값이 30 이상이면 최대로 회전하도록 하는 부분 추가 -> 그래도 오매 구간 안된다 / u 구간은 차선 걸치기만 해서 통과하긴한다 | test 24 |
20 | 7 | -0.015 | -25 | 0.6 | 0.2 | 0.0 | angle 25이상이면 최대로 -> 탕탕 / u 구간 통과!!! / 오스틴 구간 실패 / s 코스 실패 | test25 |
20 | 7 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | Igain을 초기화(직전할때) / 오매 구간 실패 / s 코스 실패 (아마 속도 때문인것 같기도) | test26 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0004 | Igain을 초기화(회전할때) / u구간 실패(왼쪽 차선을 오른쪽으로 인식한다) /오매 구간 실패 | test27 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0003 | Igain을 초기화(회전할때) 제거 / step_speed 0.1로 변경/ hough_image 확인 / u 구간 통과! / 오매 구간 직전 속도가 너무 빨라서 코너에서 벗어남(다시 놓아서 천천히가면 통과) / 오매 구간 다시 놓으면 통과함 | test28 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0003 | down step_speed 0.2로 변경/ 오매구간 실패(다시 놓으면 성공) / u 간신히 성공 / s자 도입 실패(다시 놓으면 성공) / | test29 |
20 | 5 | -0.015 | -25 | 0.6 | 0.06 | 0.0003 | 조금 흔들리는 것 같아서 dgain증가 / dgain을 증가하니까 회전 반응이 늦어져서 오매구간 실패 / U구간 실패 | test30 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 오매구간 아예 실패 / u 구간 가장 부드럽게! / | |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 10<angle 절대값<25일때 angle-3 / 오매구간 실패 (다시하면 됨) / U구간 실패(다시하면 됨) | test31 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 10<angle 절대값<25일때 angle-3 제거 / min_line_length = 15; (20에서) / 오매구간 성공!! / u구간 실패.. | test32 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | angle 25이상이면 +10, -25이하이면 -10 / min_line_length = 10; (15에서) / 오매구간 실패(다시하면 됨) / u 구간 실패(다시하면 됨) | test33 |
20 | 6 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 오매, u 실패 | test34 |
20 | 6 | -0.015 | -25 | 0.6 | 0.05 | 0.0003 | 오매, u 실패 | |
20 | 6 | -0.015 | -25 | 0.6 | 0.05 | 0.0001 | 오매, u 실패 | test35 |
20 | 6 | -0.015 | -25 | 0.5 | 0.05 | 0.0002 | 인코스 밟는거 조금 해결 / 오매구간 안잡았지만 너무 안쪽으로 돈다 / u구간 실패 | test36 |
20 | 6 | -0.015 | -25 | 0.45 | 0.05 | 0.0002 | 오매, u 실패 | test37 |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.0002 | u 구간 실패, 오매 실패... | test38 |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.0001 | u 구간 실패, 오매 실패... | test39 |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.00015 | angle * 1.5 / 실패 실패 | test40 |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.00015 | angle 1.5 작을때는 0.9 / 실패 실패 | |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.00015 | angle 20 기준 1.5 / 13기준 0.9 / 직선으로 인식하는 angle th 13 / 실패 | |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.00015 | ( angle 20 기준 1.5 / 13기준 0.9 ) 지우기로 결정 / 직선으로 인식하는 angle th 13 / 실패 | test41 |
20 | 6 | -0.015 | -25 | 0.45 | 0.04 | 0.00015 | angle 25이상이면 최대로 /s 실패 | test42 |
20 | 6 | -0.015 | -25 | 0.5 | 0.04 | 0.00015 | 잘되던 마지막 코스도 실패 | test42 |
20 | 6 | -0.015 | -25 | 0.5 | 0.045 | 0.00018 | 2개 다 실패 | test43 |
20 | 6 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 실패 | test43 |
20 | 6 | -0.015 | -25 | 0.6 | 0.08 | 0.0002 | 실패 | test43 |
20 | 6 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 허프 th를 15로, 실패 | test43 |
20 | 6.5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 허프 th를 15, 실패 | test43 |
20 | 6 | -0.015 | -25 | 0.55 | 0.05 | 0.0002 | 허프 th를 18, 실패 | test43 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 허프 th를 20, 실패 | test43 |
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | 직진보다 클때 angle 곱하기, 실패 | test43 |
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 | 영상 |
---|---|---|---|---|---|---|---|---|
20 | 5 | -0.015 | -25 | 0.6 | 0.05 | 0.0002 | angle25이상이면 최대로 / hough 20에 10 /DOWN_STEP_SPEED: 0.15/ start 15 / 안됨 | test44 |
10 | 7 | -0.015 | -25 | 0.36 | 0.08 | 0.0006 | angle25이상이면 최대로 / hough 20에 10 /DOWN_STEP_SPEED: 0.15/ start 7 / MIN_LINE_LENGTH: 15 / 오매만 실패 / u 성공 | test44 |
11 | 8 | -0.015 | -25 | 0.36 | 0.08 | 0.0006 | angle25이상이면 최대로 / hough 20에 15 /DOWN_STEP_SPEED: 0.15/ start 7 / MIN_LINE_LENGTH: 15 / u, 오매 둘다 실패 | test45 |
15 | 7 | -0.015 | -25 | 0.36 | 0.08 | 0.0006 | angle25이상이면 최대로 / hough 20에 15 /DOWN_STEP_SPEED: 0.2/ start 8 / UP_STEP_SPEED: 0.05/ MIN_LINE_LENGTH: 15 / 실패 | test45 |
15 | 7 | -0.015 | -25 | 0.4 | 0.01 | 0.0007 | s도 실패 | test45 |
15 | 7 | -0.015 | -25 | 0.38 | 0.01 | 0.0007 | U 성공, s, 오매 실패 | test45 |
15 | 7 | -0.015 | -25 | 0.38 | 0.01 | 0.0008 | s 인코스 조금 해결 / u, 오매 실패 | test46 |
15 | 7 | -0.015 | -25 | 0.38 | 0.02 | 0.0007 | 실패 | test46 |
15 | 7 | -0.015 | -25 | 0.38 | 0.025 | 0.0007 | 오매 통과 / s 실패 | test46 |
15 | 7 | -0.015 | -25 | 0.38 | 0.01 | 0.0007 | 오매 통과 / s 성공 / u실패 | test46 |
15 | 10 | -0.015 | -25 | 0.38 | 0.01 | 0.0007 | 너무 빠르다 | test47 |
15 | 7 | -0.015 | -25 | 0.38 | 0.009 | 0.0007 | 오매 x, s와 u 성공 | test47 |
15 | 7 | -0.015 | -25 | 0.38 | 0.011 | 0.0007 | 오매 실패 | test47 |
15 | 7 | -0.015 | -25 | 0.38 | 0.012 | 0.0007 | 오매 성공 / u 실패 | test47 |
15 | 7 | -0.015 | -25 | 0.36 | 0.08 | 0.0006 | 실패 | test48 |
15 | 7 | -0.015 | -25 | 0.36 | 0.1 | 0.0006 | 너무 안 꺾는다 | test48 |
15 | 7 | -0.015 | -25 | 0.36 | 0.09 | 0.0006 | 실패 | test48 |
15 | 7 | -0.015 | -25 | 0.38 | 0.09 | 0.0007 | 오매 겨우 | test48 |
15 | 7 | -0.015 | -25 | 0.38 | 0.009 | 0.0007 | 다시 했는데 안된다 | |
15 | 7 | -0.015 | -25 | 0.37 | 0.009 | 0.0008 | 안된다 |
max_speed | min_speed | kalman(SLOPE_DER) | kalman(INTER_DER) | p_gain | d_gain | i_gain | 결과 | 영상 |
---|---|---|---|---|---|---|---|---|
15 | 7 | -0.015 | -25 | 0.38 | 0.009 | 0.0007 | 오매, u, s 다 실패 / 블록 5개 / 3:04초 | test48 |
15 | 7 | -0.015 | -25 | 0.38 | 0.009 | 0.0008 | 실패 | test48 |
15 | 7 | -0.015 | -25 | 0.38 | 0.009 | 0.0007 | angle 25이상이면 최대 / 실패 | test48 |
15 | 7 | -0.015 | -25 | 0.38 | 0.08 | 0.0007 | angle 25이상이면 최대 / DOWN_STEP_SPEED: 0.3/ 실패 / s는 성공 | test49 |
15 | 7 | -0.015 | -25 | 0.32 | 0.05 | 0.0007 | angle 25이상이면 최대 / 감속 step 0.25 / s는 성공 / 포기 | test49 |
15 | 7 | -0.015 | -25 | 0.36 | 0.08 | 0.0007 | 블록 6개 / 재위치 2 / 오매랑 그다음 실패/ u 성공 | test49 |
15 | 7 | -0.015 | -25 | 0.36 | 0.09 | 0.0007 | 블록 6개 / 재위치 2 / 오매랑 그다음 실패/ u 성공 | test49 |
15 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | 블록 3개 / 재위치 2 / 오매랑 u 실패/ u 성공 | test49 |
15 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | up step 0.1 / 블록 5 / 재위치 2 | test49 |
15 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | down step 0.4 / 블록 2 / 재위치 2 (선택) | test49 |
15 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0008 | down step 0.4 / 블록 3 / 재위치 2 | test49 |
18 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | down step 0.7 / max_speed 18.0 / upspeed 0.15 / 블록 5 / 재위치 3 (선택) -> 2:52초 | test49 |
16.5 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | down step 0.7 / max_speed 16.5 / upspeed 0.12 / s 실패 | test50 |
15 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | START_SPEED: 15.0 / down step 0.4 / up step 0.15 / 블록1 / 재위치2 (선택) | test50 |
18 | 7 | -0.015 | -25 | 0.38 | 0.0085 | 0.000 | UP_STEP_SPEED: 0.12 / START_SPEED: 18.0 / UP_STEP_SPEED: 0.12 / 오매 성공 | |
15 | 7 | -0.015 | -25 | 0.35 | 0.08 | 0.0007 | START_SPEED: 15.0 / down step 0.4 / up step 0.15 / 블록1 / 재위치2 -> 2:13초 | test50 |