본문 바로가기
Programming/Sensors

camera lidar calibration github

by OKOK 2017. 8. 3.

카메라와 라이더의 캘리브레이션을 위해서 깃허브 패키지를 돌리고 싶습니다. 물리적인 이해는 뒤로 하고 먼저 돌리는데 중점을 두고, 하나씩 이해해 나가도록 하겠습니다. 

https://github.com/swyphcosmo/ros-camera-lidar-calibration

먼저 위의 사이트에 접속해서 안내대로 ROS를 셋팅합니다. 도중에 vagrant could not detect virtualbox, make sure virtualbox is properly installed 라는 에러메시지가 나옵니다. 그래서 저는 이것이 우분투를 virtualbox 에 깔아야 하나 생각했습니다. 그래서 virtualbox 를 설치하고 돌려보았으나, 돌아가지 않아서, 지금은 vmware 에서 우분투 안에 virtualbox 설치를 시도해보고 있습니다. 소프트웨어 센터에서 에러가 발생했으나, 잘 설치된 듯 보입니다. 다음으로 다시 vagrant up 을 명령하였더니, 다른 에러메시지가 발생합니다. VirtualBox is complaning that the kernel module is not loaded. Please run VBoxMange --version or open the VirtualBox GUI to see the error message which shoud contain instructions on how to fix this error. 


우분투 스크린에서 먹통이 발생함

원인 1: 우분투안에 vb -> 가상머신에 새로운 우분투 설치 -> 처음부터 차근차근 정리하면서 문서화하기.

원인 2: 윈도우에 vb -> 삭제

원인 3: nvidia 그래픽 드라이버 -> 삭제해도 자동복원이 됩니다.


새로운 우분투를 설치해보도록 하겠습니다.


vmware workstation 에 우분투 14.04 LTS를 설치하도록 합니다. 우분투에 새로 install 해야 하는 목록들은 무엇인가요. github 명령어를 통해서 설치하도록 합니다. 자주 사용하는 소프트웨어 gedit, ros, cheese, uvc_camera 이런 것들만 설치하면 되겠습니다. 아 그리고 쿼너지사에서 나온 sdk 도 새로 설치해야 하는군요. 그리고 센서가 잡히는지 안잡히는지 확인이 필요합니다.


다시 블랙스크린을 없애는 방향으로 다시 시도해보도록 하겠습니다. 2번째 우부툰에서 아이콘에 문제가 없다면 첫번째 우분투내에서의 문제라는 것이 확실해 집니다. 그럼 첫번째에서 이제 엔드라이브, 윈도우 vb가 문제가 아니라는 것이 명확해졌습니다. 우분투내에서 vb를 제대로 언인스톨 해보도록 하겠습니다. 


http://jiakaizhang.com/fix-frozen-after-login-in-ubuntu-14-04/

블로그의 안내대로 unity 를 재설치하니 살아났습니다. 그럼 다시 본론의 문제로 돌아와서 카메라 라이더 캘리브레이션을 해보도록 하겠습니다. 


bag 파일을 만들어서 vagrantfile이 위치한 곳에 두도록 하겠습니다. 그럼 다시 bag 파일을 만드는 방법에 대해서 찾아보도록 하겠습니다. 태스크1에 나와있는 카메라 캘리브레이션을 봅니다. 체크보드 패턴은 5*7 입니다. 


카메라를 사용하기 위해 uvc_camera 노드를 실행합니다. 노드 실행이 우선입니다. 그전에 패키지 설치를 합니다. roscore

rosrun uvc_camera uvc_camera_node

그리고 rostopic list 를 할용하여 camera 토픽이 생긴지 알아봅니다.


실험에 사용한 a4 사이즈의 종이는 7바이9로 되어있으며, 19mm의 정사각형으로 이루어져있습니다. 실제 명령어를 기입할떄 size는 8바이6 그리고 0.019로 입력하면 됩니다.


그리고 결과값을 확인해보도록 하겠습니다. 그러면 저장된 장소에 

# oST version 5.0 parameters



[image]


width

640


height

480


[narrow_stereo]


camera matrix

679.266875 0.000000 303.452069

0.000000 684.028125 226.663538

0.000000 0.000000 1.000000


distortion

0.026205 0.224443 -0.010760 -0.013988 0.000000


rectification

1.000000 0.000000 0.000000

0.000000 1.000000 0.000000

0.000000 0.000000 1.000000


projection

701.397888 0.000000 297.666388 0.000000

0.000000 708.604736 222.990165 0.000000

0.000000 0.000000 1.000000 0.000000 


값이 나옵니다. 이것을 어떻게 활용하는지 살펴보도록 하겠습니다. 그 다음 깃허브 설명에는 수동 칼리브레이션이 있지만 뛰어넘도록 하겠습니다. 여기서 배그 파일에 칼리브레이션 정보를 넣으라는 설명이 나옵니다. 이 때의 배그 파일은 단순하게 아무 이미지나 저장한 배그파일을 얘기하는 건가요? 체크보드를 가지고 저장한 배그파일을 의미하는 듯 합니다. 여기 설명대로 약 2분간의 움직임을 저장하도록 하겠습니다. 


카메라 노드를 설정하고 킨 다음에 배그 파일 만들기 시도.

저장하고 싶은 노드를 만들고 실행한 다음에 rosbag record 토픽이름을 적고 저장을 실행하도록 하겠습니다. 홈에 현재 배그파일이 하나 생성되었습니다. 


새로운 배그파일을 만듭니다. 칼리브레이션 데이터를 가지고. 현재 깃허브와 책의 명령어가 다르므로(패키지가 다른 것을 사용하는 것 같습니다. 칼라로 사용해보도록 하겠습니다. 깃허브를 중심으로 실행하도록 하겠습니다.)


topics:      /sensors/camera/camera_info   2500 msgs    : sensor_msgs/CameraInfo 
             /sensors/camera/image_color   1206 msgs    : sensor_msgs/Image      
             /sensors/velodyne_points      2269 msgs    : sensor_msgs/PointCloud2


샘플 아웃풋에 보면 3개의 토픽이 존재합니다. 반면에 현재 실험하고 있는 것은 한가지만 존재합니다. camera_info 와 image_color 에서 image_color는 대체가능하리라 생각됩니다. 토픽 사용이 자유로워야 하고 노드 사용도 자유로워야 합니다. 어디서 어떻게 수정하는지 조금더 들여다 볼 필요가 있습니다. 로스와 자료구조에 대한 공부가 필요합니다. 현재 센서 연결 네트워크가 안되므로 재부팅하겠습니다.