이것에 문제가 있습니까?
이것의 주요 문제는 제안 된 솔루션이 모터 성능 간의 불일치를 즉시 수정하지만 Abbe 오류 와 같은 위치의 복잡한 오류는 물론 누적 오류를 수정하지 않는다는 것입니다 (나중 참조).
더 나은 방법은 무엇입니까?
오류에 대한 내성이 무엇인지, 오류를 수정하기 위해 얼마나 많은 노력을 기울이고 있는지에 따라 수행 할 수있는 몇 가지 작업이 있습니다.
첫 번째 단계는 각 휠마다 하나씩 한 쌍의 PID 루프를 설정하여 동일한 수요 위치를 제공하는 것입니다. 비슷한 질문에 대한 대답 에서 제안했듯이 두 바퀴를 요청한 곳의 매우 좁은 오류 범위 내에두면 눈에 띄는 veer를 유발하기 위해 오류가 충분히 누적되는 데 약간의 시간이 걸립니다.
또한 하나의 복잡한 상호 의존적 결합 시스템을 튜닝하는 것보다 두 개의 명목상 독립적 인 모터 레벨 PID 루프를 튜닝하는 것이 훨씬 쉽습니다. 더 높은 수준의 제어 작동을 변경하려면 각 모터가 가능한 한 오랫동안 다른 모터와 최대한 유사하게 작동해야하며 별도의 서보 루프가 필요합니다.
그러나 여러 가지 복잡한 문제가 있지만 필요한 정확도와 솔루션을 수정하기 위해 얼마나 많은 노력을 기울여야하는지에 달려 있습니다. 그것은 때문일 수 있습니다 추측 항법은 충분하다, 또는 당신은 당신의 로봇에 상대 또는 절대 위치 결정을 추가해야 할 수도 있습니다.
하나의 문제는 왼쪽과 오른쪽 바퀴가 모두 1000 엔코더 카운트를 움직여도 두 개의 다른 런에서 여전히 다른 위치에 있을 수 있다는 것 입니다.
예를 들어, 최대 10 개의 엔코더 카운트 오류가 있고 모터가 PID 루프 반복 당 10 개의 엔코더 카운트 속도로 작동한다고 가정합니다. 왼쪽 모터는 5,10,10,10 ... 10,5로 움직일 수 있지만 오른쪽 모터는 4,11,10,10 ... 10,5의 프로파일을 가질 수 있으며 시작시 약간의 가속도 차이가있을 수 있습니다 이동 중 로봇이 약간 잘못된 방향으로 출발 할 수 있습니다. 뿐만 아니라 그 방향으로 더 멀리 이동할수록 오류가 절대적으로 더 커집니다. 이것이 Abbe error에 대해 이야기 할 때 이야기 하는 것이며 복잡한 운동 학적 모델이나 어떤 종류의 외부 참조가 없으면 절대 수정할 수 없습니다.
자세한 내용 은 비슷하지만 중복되지 않는 질문 에 대한 내 대답 을 참조하십시오 . Arduino PID 라이브러리를 사용하여 로봇을 직선으로 구동하려면 어떻게해야합니까?
그리고 내 대답 도에 관련된 라인 추종자 최적화