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


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.