본문 바로가기

전체 글

Beacon(초음파 위성)을 이용한 로봇의 Extended Kalman Filter 위치인식 초음파 위성과 같은 beacon으로부터 측정한 거리값과 바퀴의 오도메트리를 Kalman Filter로 정합하여 로봇의 위치를 추정하는 방법에 대하여 소개합니다. 자세한 내용은 다음 pdf 문서를 참조하시기 바랍니다. 또한, VisualC++ 2008로 작성된 소스코드도 첨부합니다. 상기 소스코드를 컴파일 하여 실행하기 위해서는 이동로봇을 시뮬레이션 하는 시뮬레이터가 필요합니다. 이동로봇 시뮬레이터는 다음 링크를 참조하시기 바랍니다. xxx - Mobile Robot Simulation 프로그램 초음파 위성(beacon)의 수나 위치를 변경하기 위해서는 프로젝트 폴더의 map 폴더에서 beacon.txt 파일을 편집하시면 됩니다. 또한, beacon.txt 파일의 내용은 Simulation 프로그램에서도 .. 더보기
Mobile Robot Simulation 프로그램 여기서 설명하는 것은 모바일 로봇의 이동과 로봇에 장착되는 각종 센서를 시뮬레이션 하기위한 프로그램입니다. 모바일 로봇의 형태는 2축 차동바퀴형이며 바퀴 축 중심이 로봇의 중심과 일치합니다. 또한 Scanning Laser Range Sensor, Beacon(초음파 위성), 2D/3D Feature, 천정 설치형 위치인식 센서(North Star, Star Gazer), 바닥 설치형 위치인식 센서(RFID)를 시뮬레이션 가능합니다. 아래는 실행화면입니다. 프로그램의 기능: 파란색 로봇에서 마우스 왼쪽 버튼을 눌러 로봇의 위치를 옮길 수 있습니다. 로봇을 선택하고 휠을 굴리면 로봇의 방향을 바꿀 수 있습니다. 지도에서 마우스 왼쪽 버튼을 눌러 끌면 지도를 옮길 수 있습니다. 또한 마우스 휠을 굴려 지도를.. 더보기
RFID를 사용한 Particle Filter Localization RFID를 사용한 Particle Filter Localization 방법에 대하여 소개합니다. 자세한 내용은 다음 pdf 문서를 참조하시기 바랍니다. 또한, VisualC++ 2008로 작성된 소스코드도 첨부합니다. 상기 소스코드를 컴파일 하여 실행하기 위해서는 이동로봇을 시뮬레이션 하는 시뮬레이터가 필요합니다. 이동로봇 시뮬레이터는 다음 링크를 참조하시기 바랍니다. xxx - Mobile Robot Simulation 프로그램 아래 동영상으로 프로그램의 실행을 확인하시기 바랍니다. 동영상에서 바닥의 격자는 1m 단위로 그어져 있습니다. 그리고 검은색 둥근 원은 바닥에 배치된 RFID 태그를 의미합니다. 로봇은 파란색 두꺼운 원으로 표시하며, 파란색 점들은 파티클, 빨간색 타원은 위치의 공분산, 십자가.. 더보기
쿼드 로터 무인항공기 제어 및 시뮬레이션 이전 글에서 쿼드 로터 무인항공기를 제작하기 위하여 먼저 동역학 모델링을 하였습니다. 이번에는 이 모델을 가지고 제어기를 설계하고 MATLAB으로 시뮬레이션 한 문서입니다. pdf 문서를 참고하시기 바랍니다. * QRT_sim.mdl 파일은 MATLAB simulink 블록선도 파일입니다. * 2011.8.31 업데이트 - QRT_sim.mdl 파일에서 C행렬과 C_dot 행렬 계산식에 오류가 있어 이를 바로잡습니다. 더보기
쿼드 로터 무인항공기 동역학 모델링 쿼드 로터 무인항공기를 제작하기 위하여 먼저 동역학 모델링을 한 문서입니다. pdf 문서를 참고하시기 바랍니다. * 2011.8.31 업데이트 - C행렬과 C_dot 행렬을 도출하는 방법에 오류가 있어 이를 바로잡습니다. 더보기
RANSAC(RANdom SAmple Consensus)을 이용한 Line Fitting Example RANSAC ("RANdom SAmple Consensus") 알고리즘은 측정 노이즈가 심한 원본 데이터로부터 모델 파라미터를 예측하는 방법으로 Fischler 과Bolles에 의해서 제안되었다. RANSAC은 전체 원본 데이터 중에서 모델 파라미터를 결정하는데 필요한 최소의 데이터를 랜덤하게 샘플링하면서 반복적으로 해를 계산함으로써 최적의 해를 찾는다. 이 방법은 전통적인 통계적 방법과는 반대의 개념을 가진다. 즉, 대부분의 방법들이 초기의 해를 획득하기 위해서 가능한 많은 데이터를 사용하고 그 결과로부터 유효하지 않은 데이터를 제거한다. 반면에 이 방법은 가능한 적은 양의 초기 데이터를 사용해서 일관된 데이터의 집합(consensus set)을 확장시켜가는 방식을 사용한다. 내용: 수식들 때문에 블로.. 더보기
Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 2 이 글은 C++에서 gnuplot을 사용한 그래프 출력에 이어진 글로서 Window 프레임 내에 Child Window로 gnuplot의 그래프를 내장하여 표시하는 방법에 대한 것입니다. 이 글에서 참조된 소스코드는 최성화님의 블로그(http://blog.naver.com/mllmaster/130094568022)를 기반으로 하여 만들어졌습니다. 아래의 두 파일이 gnuplot을 Window 프레임 내에 child window로 생성하기 위한 소스코드 입니다. CStatic 클래스를 상속하여 만들어 졌습니다. 위의 두 파일을 사용하는 방식은 두 가지가 있습니다. 첫번째로는 대화상자에 Picture Control을 추가하고 CStaticGNUPlot 클래스의 객체와 DDX로 연결하는 방식입니다. 먼저 프로.. 더보기
Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 공학도라면 논문을 쓰거나 보고서, 발표자료를 작성할 때 실험 데이터를 파일로 출력한 후 Microsoft Excel 차트 도구들이나 MATLAB plot 도구들을 사용하여 파일을 읽어 그래프로 그린 적이 있을 것입니다. 왜냐하면, C/C++언어에서는 그래프를 조작하기 위한 기본 라이브러리를 포함하고 있지 않기 때문에, 그래프를 그리려면 ChartFX와 같은 상용 라이브러리를 사용하거나 직접 코딩을 해야합니다. Gnuplot은 리눅스 환경에서 그래프를 그려주는 도구로 개발되었다가 윈도우즈 환경으로도 포팅되었습니다. Gnuplot 자체도 C++ 프로그래머를 위해 그래프를 직접 제어가능한 API를 제공하지는 않지만, 약간 우회적인 방법(Gnuplot 윈도우에 명령어 캐릭터를 직접 전송하는 방법)으로 C++프로.. 더보기