본문 바로가기

Programming399

harris corner detection #include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include #include #include using namespace cv;using namespace std; /// Global variablesMat src, src_gray;int thresh = 200;int max_thresh = 255; char* source_window = "Source image";char* corners_window = "Corners detected"; /// Function headervoid cornerHarris_demo(int, void*); /** @function main */int main(int argc, cha.. 2017. 9. 3.
정렬 각종 정렬 알고리즘을 소개하고자 합니다. 알고르짐을 코드 레벨에서 분석만 한다면 지루할 수 있습니다. 이보다는 각각의 알고리즘이 갖는 특징에 관심을 두고 공부하는 것이 오래 남고 더 의미가 있을 것입니다. 버블 정렬 이해와 구현버블 정렬은 정렬의 대명사로 알려져 있는, 여러분이 알고 있을만한 정렬방법입니다. 이해하기도 구현하기도 쉽습니다. 물론 이해와 구현이 쉬운 만큼 성능에는 아쉬움이 있습니다. 그럼 3, 2, 4, 1이 순서대로 저장된 다음 그림의 배열을 오름차순(값이 클수록 뒤에 위치시키는 방법)으로 정렬하는 과정을 보이면서 버블 정렬의 과정을 소개하겠습니다. 버블 정렬은 인접한 두 개의 데이터를 비교해가면서 정렬을 진행하는 방식입니다. 두 데이터를 비교하여, 정렬순서상 위치가 바뀌어야 하는 경우에.. 2017. 8. 10.
lidar-cam-calibration 파이프 라인캘리브레이션 데이터를 준비합니다.캘리브레이션 데이터를 kitti 캘리브레이션 서버에 업로드 합니다.다운로드합니다 캘리브레이션 결과를이 툴을 사용하여 새로운 데이터를 수정합니다. lidar_camera_calibration 이 패키지는 사용됩니다. 캘리브레이션 합니다. 라이더와 카메라. 특히, 특히, Point Gray Baclkfly 와 zed 카메라는 성공적으로 캘리브레이션 되었습니다. 밸로다임 라이더에 대해서 사용하여, 라이더 카메라 캘리브레이션, 16은 오직 16개의 링을 제공하기 때문에 우리는 믿습니다. 더 높은 모델이 이 패키지와 연동되리라고. 이 패키지는 찾습니다. 회전과 이동 변합합니다. 모든 포인터 라이더프레임에 있는 카메라 프레임. 이 패키지는 사용합니다. aruco_ros 그.. 2017. 8. 10.
VMware 네트워크 개요 http://suriman.tistory.com/4많은 사람들이 VMware 네트워크에 대한 부정확한 지식 때문에 많은 시간을 낭비하고 있습니다. 인터넷 검색을 해보면 많은 사람들이 이것 떄문에 여러 날 밤을 새면서 고생하다가 나름대로 이상한 결론을 내린 후, 비효율적으로 네트워크를 설정해서 사용하고 있는 것을 목격할 수 있습니다. 그 이유는 네트워크 자체가 난해한 분야인데다, VMware 네트워크는 일반적인 네트워크보다 훨씬 더 복잡하고 다양한 기능을 제공하는 반면, 자세하고 충분한 다큐먼트가 없기 때문입니다. 메뉴얼만으로 복잡한 네트워크를 이해할 수 있다면 그는 네트워크 전문가이거나 천재임. VMware 네트워크 종류 세팅을 실행한 후 장치 목록에서 Ethernet 을 선택하면 네 가지 네트워크 중 .. 2017. 8. 8.
ros opencv usb camera 1. 2D data point 2. lidar 3d data point 3. lidar + camera image 4. ros 내에서 해야 하는 것인가 5. ros 를 사용하는 이유는 무엇인가. 6. 코드를 재사용 할 수 있다는 장점 윈도우에서 vs 를 활용하여, 저장된 이미지에서의 좌표값을 얻었습니다. 그리고 다음으로는 우분투에서 좌표값을 얻어 내는 것을 해보겠습니다. 우분투에서 opencv 실행하기. http://webnautes.tistory.com/1030 ubuntu 16.04 에 opencv_contrib 포함하여 opencv3.2 설치기존 설치된 패키지 업그레이드 설치해주기 전에 기존에 설치된 패키지들을 업그레이드 해주기 위한 작업입니다. 우부투 저장소로부터 패키지 리스트를 업데이트 합니다... 2017. 8. 8.
카메라 라이다 캘리브레이션 다중 센서 캘리브레이션 4.2 영상-3D 포인트 클라우드 대응쌍 검출 방법에 대한 제안카메라와 라이더의 캘리브레이션 방법 중 가장 잘 알려지고 많이 사용되고 있는 방법은, 기존의 2디 라이더와의 캘리브레이션을 위해 장이 제안한 체커평판을 사용한 방법입니다. 이 방법은 체커평판 펴판의 법선 벡터를 각 데이터에서 검출하여 대응쌍으로 이용합니다. 또한 체커평판 평판에 반사율이 높은 테잎을 이용하여 좀 더 쉽게 3디 포인트 클라우드에서 특징점을 검출하는 방법도 제안되었습니다. 또한 최근에는 배경에서 모서리와 같이 3디 포인트 클라우드에서도 쉽게 인식 가능한 특징점을 이용하여, 별도의 캘리브레이션 도구를 사용하지 않는 방법들도 제안되었습니다. 선행 연구에들에서 볼 수 있듯이, 다양한 방법으로 영상과 3디 포인트 .. 2017. 8. 8.
다중 영상 센서의 캘리브레이션 1. 서론2. 복수의 카메라 환경 카메라, 영상서의 대응쌍 검출 방법, SIFT, SURF, BRISK, 대응쌍 검출 알고리즘들의 성능 비교 3. 카메라와 깊이 센서 환경 깊이 센서, 영상-깊이 영상 대응쌍 검출 방법에 대한 제안, 카메라-깊이 센서 캘리브레이션 4. 카메라와 3D LIDAR 환경 3D 라이다, 영상-3D 포인트 클라우드 대응쌍 검출 방법에 대한 제안, 평판 평면 위를 지나는 3D 포인트 정렬, 평판 코너의 3D 위치 검출 및 적합성 판별, 마름모형 평판을 이용한 방법, 카메라-3D Lidar 캘리브레이션 1. 서론최근 이동 매핑 시스템이나 물체 인식 등 다양한 로봇 비전 분야들에서는 목적에 따라 다양한 조합의 다중 센서를 사용하고 있습니다. 예를 들어 다수의 카메라로부터 획득한 영상들응.. 2017. 8. 8.
ROS 기본 정리 왜 로봇 소프트웨어 플랫폼을 써야 하는가?프로그램의 재사용성입니다. 자신이 개발하고자 하는 부분에 집중하고 나머지 기능에 대해서는 관련 패키지를 내려받아서 사용할 수 있습니다. 마찬가지로 자신이 개발한 프로그램은 다른 이들이 사용할 수 있도록 공유할 수도 있습니다. 통신 기반 프로그램입니다. 흔히, 하나의 서비스를 제고아기 위하여 센서나 액추에이터 단의 드라이브부터 센싱, 인식, 동작까지 하나의 프로그램을 작성하는 것이 많은데 로봇 소프트웨어의 재사용을 위해서는 이를 각각 처리 프로세서의 목적에 따라 작게 나누게 됩니다. 플롯폼마다 이를 컴포넌트화 혹은 노드 패키지화라고 합니다. 최소 실행 단위로 나뉜 프로그램은 나누어진 노드끼리 데이터를 주고받아야 하는데 플랫폼들은 이 데이터 통신에 대한 전반적인 사항.. 2017. 8. 7.
Camera and lidar calibration and visualization in ROS ROS를 vagrant 에서 셋팅합니다. 환경설정 -> 패스 한번 배그 파일을 저장해봅니다. 그리고 그 배그 파일에서 topic 이 어떤것들이 들어있는지 확인합니다. 제시된 예시해서는 카메라인포, 이미지칼라, 포인트 이렇게 3가지가 있습니다. 이것들을 받을 수 있는지 확인합니다. 자 지금까지 점검도 잘하고 토픽설정도 잘 했습니다. 이미지 수정하기칼리브레이션 정보를 배그 파일에 더합니다.bag_tools 설치하고 새로운 배그파일을 만듭니다. 여기서 토픽부분만 수정해서 사용하면 되겠습니다. python change_camera_info.py ../2017-08-06-18-31-54.orig.bag ../2017-08-06-1-31-54.cameracalibrator.bag /camera_info=../Res.. 2017. 8. 7.
C 언어의 핵심 함수 함수를 정의하고 선언하기변수의 범위에 대해서재귀적 함수 호출에 대해서 살펴봅시다 프로그램 구성에 있어서 중요한 위치를 차지하는 것을 가리켜 핵심이라고 일컬어야 합니다. 함수를 잘 구성하는 프로그래머는 실력 있는 프로그래머이고, 함수를 적절히 구성하지 못하는 프로그래머는 아무리 문법적으로 탄탄해도 그 실력을 인정받지 못합니다. 함수를 정의하고 선언하기함수를 만들어야 하는 이유나누어서 정복하기. 함수에 대한 기본적인 이야기구현하고자 하는 함수의 특성에 따라서 전달 인자가 없거나 반환 값이 없을 수도 있습니다. #pragma warning(disable:4996) #include int main(void){int a = 0;int b = 0; a = printf("12345 \n");b = printf("I .. 2017. 8. 4.