Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

:)

필터기반 조향각 제어 본문

ROS

필터기반 조향각 제어

mihee 2022. 4. 11. 16:50

자동차 운전 = 조형 및 속도 제어

  • 조형각 제어
    • 직선 차로 : 정면으로 직진
    • 곡선 차로 : 차로가 휘어진 방향으로 조향(적절한 조형각 설정 필요)
  • 속도 제어
    • 직선 주로에서는 빠르게
    • 곡선 주로에서는 적절히 느리게 (차선 이탈 방지)

차선의 위치 정보를 이용한 조형각 제어

  • 양쪽 차선의 위치를 찾아
    • 양쪽 차선의 중간값을 구하고
    • 화면의 중앙과 비교
    • 차이만큼 핸들 꺾기(조향각 제어)

조향각의 설정

  • 인식된 양쪽 차선의 중점
    • 카메라가 차량의 중앙에 위치하고 있다면
    • 화면 중앙 지점과 거리차이에 따라 조향 정도를 설정

조형각 제어의 문제점

  • 카메라를 통한 차선 인식의 한계점들
    • 빛, 그늘, 반사광, 장애물 때문에 차선이 가리는 경우
    • 급커브 등 차선이 시야에서 벗어나 안보이는 경우
  • 차선 인식에 오류가 생기면
    • 조형각 변동이 심해진다 = 핸들을 확확 꺾음.

필터 코드 적용

class MovingAverage:

	def __init__(self, n):
    	self.sample = n
        self.data = []
        self.weights = list(range(1, n+1))  # 가중치 값 만들기
        
    def add_sample(self, new_sample):
    	if len(self.data) < self.samples:
        	self.data.append(new_sample)  # 새로운 샘플 맨 뒤에 추가
        else:
        	self.data = self.data[1:] + [new_sample] # 꽉 찼으면 제일 오래된 샘플 버리기
            
    def get_mm(self):
    	return float(sum(self.data)) / len(self.data)
    
    def get_wmm(self):  # 가중치 이동 평균
    	s = 0
        for i,x in enumerate(self.data):
        	s += x * self.weights[i]
        return float(s) / sum(self.weights[:len(self.data)])

'ROS' 카테고리의 다른 글

rosbag to image  (0) 2022.07.08
슬라이딩 윈도우 기반 차선 인식  (0) 2022.04.10
원근 변환과 슬라이딩 윈도우  (0) 2022.04.10
와핑기법과 원근 변환  (0) 2022.04.10
허프변환 기반 차선인식  (0) 2022.04.10
Comments