차동 드라이브 로봇의 위치 계산


14

증분 센서로 차동 드라이브 로봇의 위치를 ​​어떻게 계산하거나 업데이트합니까?

두 개의 차동 휠 각각에 하나의 증분 센서가 부착되어 있습니다. 두 센서 모두 거리 resp를 결정합니다 . Δ는 r에 난 g의 시간을 t에 그 휠 알려진 시간 동안 굴러 Δ의 t .ΔleftΔrightΔt

먼저 두 바퀴 사이의 중심이 로봇의 위치를 ​​표시한다고 가정 해 봅시다. 이 경우 위치를 다음과 같이 계산할 수 있습니다.

x=xleft+xright2y=yleft+yright2

두 바퀴가 직선으로 굴렸다는 가정하에 이러한 방정식을 "파생"합니다 (이는 거리가 먼 경우 거의 정확해야 함).

ΔxΔt=12(ΔleftΔt+ΔrightΔt)cos(θ)ΔyΔt=12(ΔleftΔt+ΔrightΔt)sin(θ)

어디 θ 는 로봇의 방위각입니다. 이 각도의 변화에 ​​대해 나는 방정식을 발견

ΔθΔt=1w(ΔleftΔt−ΔrightΔt)

여기서 는 두 바퀴 사이의 거리입니다.w

와 Δ y 는 θ에 의존 하기 때문에 먼저 Δ θ 를 추가 하여 새로운 θ 를 계산해야하는지 또는 "old" θ를 사용 해야하는지 궁금합니다 . 다른 것을 사용하는 이유가 있습니까?ΔxΔyθθΔθθ

이제 두 바퀴 사이의 중심 이 로봇의 위치를 ​​표시 하지 않는다고 가정 해 봅시다 . 대신 로봇 경계 상자의 기하학적 중심을 나타내는 점을 사용하고 싶습니다. 그런 다음 와 y가 다음으로 변경됩니다.xy

x=xleft+xright2+lcos(θ)y=yleft+yright2+lsin(θ)

첫 번째로 "제공"

ΔxΔt=12(ΔleftΔt+ΔrightΔt)cos(θ)−lsin(θ)ΔθΔt

이제 의존합니다 .Δθ이것이 "new" 를 사용하는 이유 입니까?θ

위치와 방향을 시뮬레이션하는 더 나은 방법이 있습니까? 복소수 (3D의 쿼터니언과 동일한 접근 방법) 또는 동종 좌표를 사용할 수 있습니까?

답변:


8

첫 번째 질문에 대답하기 위해 : 만약 당신이 정말로 차동 구동을위한 운동 학적 방정식을 찾고 싶다면, 각 바퀴가 직선으로 움직인다고 가정하여 근사치를 시작하지 않을 것입니다. 대신 회전 반경을 찾아 호의 중심점을 계산 한 다음 로봇의 다음 점을 계산하십시오. 로봇이 직선으로 움직이면 회전 반경은 무한하지만 직선의 경우 수학은 간단합니다.

따라서 각 시간 단계마다 또는 증분 센서의 변화를 계산할 때마다 로봇이 다음 여기에 이미지 설명을 입력하십시오 과 같이 호의 점 A에서 점 B로 이동한다고 상상해보십시오. 수학이 단순화 된 샘플 코드는 다음과 같습니다.

// leftDelta and rightDelta = distance that the left and right wheel have moved along
//  the ground

if (fabs(leftDelta - rightDelta) < 1.0e-6) { // basically going straight
    new_x = x + leftDelta * cos(heading);
    new_y = y + rightDelta * sin(heading);
    new_heading = heading;
} else {
    float R = unitsAxisWidth * (leftDelta + rightDelta) / (2 * (rightDelta - leftDelta)),
          wd = (rightDelta - leftDelta) / unitsAxisWidth;

    new_x = x + R * sin(wd + heading) - R * sin(heading);
    new_y = y - R * cos(wd + heading) + R * cos(heading);
    new_heading = boundAngle(heading + wd);
}

시뮬레이터에서 비슷한 수학을 사용하여 다양한 조향 방법을 시연했습니다. http://www.cs.utexas.edu/~rjnevels/RobotSimulator4/demos/SteeringDemo/


1
위의 코드 스 니펫에 사용 된 방정식은 여기에서 파생됩니다 : rossum.sourceforge.net/papers/DiffSteer
— kamek

좋은 설명! 시뮬레이터 링크가 깨졌습니다
— smirkingman 13:08의

2

반복 계산의 경우 검색 여부는 중요하지 않습니다. Δθ 신청 전 또는 후에 θ ~로 Δ엑스,Δ와이계산. 항상 위치와 방향 계산을 번갈아 사용합니다.

실용적인 의미에서 계산하는 것이 좋습니다 Δθ 계산 후 Δ엑스,Δ와이루프를 통한 첫 번째 반복에는 초기 값이 필요하므로 θ.

어쨌든 이것은 오류가 발생하기 쉬운 측정 방법입니다. 이는 3D 세계의 2D 근사값을 제공하는 1D 측정 쌍입니다. 당신이 얻을 수있는 경우에도Δ티 매우 가까이 0여전히 휠 미끄러짐 및 고르지 않은 지형을 고려하지 않습니다.


"차동 구동 차량의 정역학"을 검색하면이 질문에 대한 수학적 접근 방식이 많은 기사가 제공되어야합니다.
— Ian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.