본문 바로가기

전체 글

초음파 위성을 이용한 위치인식 방법 여러 가지 초음파는 전파 속도가 느리고 송/수신부 회로 구현이 간단하여 로봇에서 장애물의 거리를 측정하기 위해 오래전부터 사용되어 왔다. 근래에는 초음파 위성(초음파 송신부)과 로봇(초음파 수신부) 간의 거리로부터 로봇의 위치를 계산하는데도 초음파가 사용되고 있다. 건물의 천장이나 벽면에 초음파 위성을 설치하고 로봇의 초음파 수신기에서 초음파를 수신하여 로봇과 위성간 초음파 도달 시간을 측정한 후 거리로 환산하여 로봇의 위치를 계산한다. 이러한 원리를 이용하여 한국 LPS에서는 초음파위성(USAT)을 제품화 하여 판매도 하고있다. 이 제품에서 위치를 계산하는 방식을 알 수는 없지만 몇 가지 방식을 추측해 볼 수 있는데 다음과 같이 몇 가지가 있을 수 있다. 먼저, 제일 간단하게 3개의 구의 중심과 반지름을 알고 있.. 더보기
로봇 작업 경로의 보간(Interpolation) 로봇이 작업하면서 거쳐가야 할 몇 개의 불연속 점이 주어졌을 때, 로봇은 연속적으로 점과 점 사이를 움직여야 한다. 이 때 주어진 불연속 점들에 대하여 보간법으로 중간점들을 구하고, 로봇은 이 점들을 연속하여 지나감으로 작업을 부드럽게 마무리 할 수 있다. 보간법에는 다양한 방법이 있으나, 주로 사용되는 보간법을 정리해 보면 다음과 같다. • Linear interpolation • Cardinal spline • Monotone cubic interpolation • Cubic spline interpolation 상세한 내용은 다음 pdf 파일을 참조하세요. 아래는 Visual C++ 2008로 작성된 프로젝트입니다. 프로젝트에서 InterpolationMethods.h 파일을 참조 하시기 바랍니다... 더보기
칼만필터(Kalman Filter)와 쿼터니언으로 ARS 만들기 칼만필터(Kalman Filter)와 쿼터니언(Quaternion)으로 ARS(Attitude Reference System)를 만드는 방법에 대하여 정리합니다. 이전 글들에서와 같이 ADIS 16365 센서로부터 가속도와 각속도를 측정하였으며 여기서는 자세의 표현에 쿼터니언을 사용하고, 센서 융합에 칼만필터를 사용한 점이 차이점이 되겠습니다. 다음 문서를 참조하시기 바랍니다. 구현은 다음 프로젝트를 참고하십시오. 프로젝트에서 칼만필터와 쿼터니언 관련 부분들은 ARSbyEKF_Q.cpp 파일과 Quaternion.cpp/.h 파일에 구현되어 있습니다. 칼만필터와 쿼터니언으로 ARS를 만드는 방법에 대해서는 김성필 저 "MATLAB 활용 칼만필터의 이해" 책의 제13장 수평 자세 측정 장에 잘 나와있습니다.. 더보기
Rob Hess의 SIFT c library의 소스코드 분석 SIFT를 공부하기 위해 Rob Hess의 SIFT c library 소스코드를 분석한 문서를 올립니다. SIFT 공부에 도움이 되시기를 바랍니다. sift.pdf 는 소스코드와 관련된 내용을 논문, 인터넷 자료 등을 분석하여 작성한 문서입니다. sift-소스분석.pdf는 소스코드에서 함수호출에 따라 함수와 주석을 정리한 문서입니다. 더보기
1차 상보필터(complementary filter)와 쿼터니언으로 ARS(Attitude Reference System) 만들기 이전 글에서 로봇의 자세를 측정하기 위한 ARS(Attitude Reference System)를 EKF로 설계하는 방법에 대하여 설명하였습니다. 그리고 xxx 에서 1차 상보필터(complementary filter)와 회전행렬로 ARS(Attitude Reference System)를 만드는 방법에 대하여 설명하였습니다. 여기서는 1차 상보필터(complementary filter)와 쿼터니언(Quaternion)로 ARS 만들어 보겠습니다. 이전 글들에서와 마찬가지로 각속도, 가속도, 지자기 값을 읽어들일 센서로 Analog Device사의 ADIS16365와 ADISUSBZ 라는 제품을 사용하였습니다. 프로그램 구조 또한 동일하며 소스코드에서 바뀌는 부분은 ARSbyEKF.cpp을 대신하여 ARS.. 더보기
1차 상보필터(complementary filter)와 회전행렬로 ARS(Attitude Reference System) 만들기 이전 글에서 로봇의 자세를 측정하기 위한 ARS(Attitude Reference System)를 EKF로 설계하는 방법에 대하여 설명하였습니다. 여기서는 1차 상보필터(complementary filter)와 회전행렬(Rotation Matrix)로 ARS 만들어 보겠습니다. 이전 글에서와 마찬가지로 각속도, 가속도, 지자기 값을 읽어들일 센서로 Analog Device사의 ADIS16365와 ADISUSBZ 라는 제품을 사용하였습니다. 프로그램 구조 또한 동일하며 소스코드에서 바뀌는 부분은 ARSbyEKF.cpp을 대신하여 ARSbyRotationMatrix.cpp를 추가하였습니다. 상세한 설명은 다음 pdf 파일을 참고하시기 바랍니다. 소스코드를 첨부합니다. 아래 동영상을 보시면, yaw 각의 오차.. 더보기
ADIS 16365와 EKF(Extended Kalman Filter)로 ARS(Attitude Reference System) 만들기 로봇의 자세를 측정하기 위해 ARS(Attitude Reference System)를 설계하는 방법에 대하여 설명합니다. ARS를 만들기 위해 먼저 디바이스로부터 각속도를 읽어와 적분하여 자세(roll, pitch, yaw)를 구합니다. 하지만 적분하는 과정에서 노이즈와 계산 오차가 조금씩 누적되어 결국은 각도가 틀어져 버립니다. 이를 막기위해 가속도 센서에서 구한 중력의 방향으로 roll과 pitch 각을 보정해야 합니다. 가속도 센서는 중력 가속도 외에도 센서에 작용하는 모든 가속도를 측정하기 때문에, 가속도 센서에서 측정한 가속도 성분들 중에서 중력 가속도만을 분리해 내는 것은 쉽지 않습니다. 여기서는 측정되는 가속도의 크기가 9.8 근처의 값을 가질 때 roll과 pitch 각을 보정하도록 하였습.. 더보기
OpenCV Marker Detection 마커 인식은 증강현실과 같은 분야에서 다양하게 사용되고 있는것으로 알고있습니다. 여기서는 로봇의 위치인식에 사용하기 위해 마커 인식 테스트 코드를 개발하던 중 어느정도 결과가 나와 블로그에 공개하게 되었습니다. 로봇이 주행 중 자신의 위치를 알기 위해서는 벽이나 천정의 마커를 인식하여 마커의 위치로부터 상대적으로 로봇의 위치를 추정하게 됩니다. 그래서 먼저 마커를 인식 하는 프로그램을 만들게 되었습니다. 동영상에서와 같이 아직은 인식률이 좋지 않습니다. 마커의 테두리를 인식하는 과정은 다음과 같습니다: 입력 영상을 흑백으로 변환한 후 threshold 값을 적용하여 바이너리 이미지로 만듭니다. 컨투어를 찾습니다. 여기서 검은색 사각형의 테두리를 인식하게 되는데, 사각형이 사각형을 포함하면서 각각 4개의 .. 더보기