2017-12-12 97 views
1

오버 헤드의 포즈 (세계 좌표계에서 x, y, z 및 회전 : Rx, Ry, Rz)를 얻고 싶습니다. 카메라. ChorUco 캘리브레이션 보드를 로봇 팔 (예 : https://www.youtube.com/watch?v=8q99dUPYCPs)으로 움직여 많은 물점과 이미지 점을 얻었습니다. 그 때문에, 나는 이미 모든 물체 점들의 정확한 위치를 가지고있다.OpenCV SolvePnP를 ​​사용하여 오버 헤드 카메라의 자세 추정 결과 높이가 몇 센티미터 떨어져 있음

많은 점을 solvePnP에 제공하기 위해 첫 번째 객체로 첫 번째 감지 패턴 (ChArUco 보드)을 설정하고 객체 좌표계의 원점으로 사용했습니다. 그런 다음, 감지 된 객체 점 (두 번째 패턴에서 마지막 점까지)을 첫 번째 감지 된 객체 점의 좌표계 (대상 프레임의 원점이 첫 번째 객체의 원점)에 추가했습니다.

카메라와 객체의 좌표계 사이에 변형이 생기면 그 변환을 기반으로 카메라의 포즈를 계산했습니다.

결과 제 꽤 좋은 듯하지만 눈금자 또는 줄자를 사용하여 카메라의 절대 자세를 측정 할 때, I는 외적 보정 결과 (Z 방향에 대해 15 ~ 20 밀리미터 오프 눈치 카메라의 높이), 다른 것들 (x, y, Rx, Ry, Rz)은 거의 정확합니다. 결과는 로봇 팔을 다르게 움직여 대상 점의 범위를 변경 한 경우에도 마찬가지였습니다. 항상 높이에 대해 수 센티미터 벗어났습니다.

이전에 비슷한 문제가 발생 했습니까? 나는 내가 시도 할 수있는 어떤 것도 알고 싶다. 깊이 방향 (z)이 부정확 할 때 일반적인 실수는 무엇입니까?

+0

개체에서 카메라의 일부까지의 거리를 정확하게 측정합니까? 렌즈? 카메라 내부의 광 감지 이미지 센서? 존중과 관련하여 카메라 포즈는 어느 것인가? – mikkola

+0

렌즈에서 측정했습니다. – kangaroo

+0

많은 시간을 보낸 후, 나는 카메라의 출력이 기본적으로 수정되었다는 것을 알아 차렸다. 정정되지 않은 이미지를 사용하면이 문제가 해결되었지만 카메라에서 포인트 클라우드 데이터를 얻을 때 카메라 프레임에서 여전히 y 방향으로 1 센티미터 벗어났습니다. – kangaroo

답변

0

난 당신이 z을 측정하는 방법을 알고하지 않습니다하지만 난 당신이 통치자로 측정하고 어떤 것은 z 아니라고 생각하지만,과 같이 계산된다 euclidean distance :

d=std::sqrt(x*x+y*y+z*z); 

는 다음의 예제를 보자, x=2; y=2; z=2; 다음 dd~3,5 될 것입니다 그래서 만약 3.5-2=1.5 당신이 말한 때 z와 통치자 사이에 얻을 차이는 z 방향에 대한 약 15-20mm 오프 .

+0

I는 추정 된 포즈를 월드 프레임으로 변환하고 각 x, y, z 방향으로 측정했습니다. 유클리드 거리가 아니라 z를 측정했습니다. – kangaroo