2

C++ 라이브러리 또는 라이브러리 조합을 찾고 있습니다.각 노드가 가장 가까운 세 노드에 대한 거리 만 알고있는 경우 2 차원 맵을 작성하십시오.

아이디어는 로봇이 돌아 다니며 가장 가깝다는 거리 만 알 수 있다는 것입니다. 문제는 모든 노드의 상대 (x, y) 위치를 찾는 것입니다.

내 솔루션은 다음 거리에서 삼각형 (그것을위한 라이브러리가있다)를 구축하는 삼각형에서지도를 만드는 것 (라이브러리?)

답변

1

이것은 실제 응용 프로그램의 경우, 그래프가 일치하지 않습니다 . 제 말은 한쪽 끝에서 삼각형을 만들면 루프를 닫을 때 절대 일치하지 않을 것입니다. "루프 닫기"는 로봇 분야의 뜨거운 연구 주제입니다. 여러분의 문제는 일반적인 경우보다 다소 간단합니다. 비선형 최소 제곱근 솔버에서 거리를 던지면 운이 좋을 것입니다. 정확하게 검색 한 결과는 ceres-solver입니다.

일반용 비선형 최소 제곱근 솔버를 사용하면 솔루션 벡터와 목적 함수를 정의해야합니다. 귀하의 경우, 노드가 100 개 있다고 가정 해 봅시다. 즉, 200 개의 값을 찾고 있음을 의미합니다. 각 노드의 x 및 y 값 그 200 요소의 긴 벡터가 솔루션 벡터입니다. 귀하의 목적 함수는 200,000 개의 요소를 할당하여 과제에서 알려진 쌍의 거리가 가용 한 데이터와 최대한 일치하도록합니다. 100 개의 노드, 각각 3 개의 알려진 거리에 대해 오차를 최소화하려는 300 개의 방정식이 있습니다. 개인적인 경험이 없으므로이 솔루션을 문제에 적용하려면 ceres API를 찾아야합니다. 데이터에 의존하는 것은 본질적으로 처음부터 시작됩니다 노이즈를 포함 하나에 일치하도록, 노이즈없는 솔루션에서 진행 보조 노트로서

...

+0

는 나중에 노이즈를 추가 할. 지금은 모든 것이 단단하고 평평합니다 –

+0

가능한 경우 ceres를 사용하여 문제를 해결하는 방법을 설명하십시오 –

+1

@kirill_igum 제 답변을 업데이트했습니다. – enobayram