본문 바로가기

Robot/Robot Program - ROS

ROS 카메라 캘리브레이션 수행하기

오늘은 ROS melodic에서 카메라를 calibration하는 과정을 설명하려고 합니다. 카메라 영상을 어떻게 사용하는지에 따라 캘리브레이션이 필요할 때가 있는데요. 어떻게 하는지 간단히 보여드릴까 합니다.

roscore를 실행하고~

사용하시는 카메라를 기동하면 됩니다. 저는 최근에 개발에 참여한 R1mini의 ROS 패키지에서 카메라를 기동하는 명령을 사용하면 됩니다. 아무튼 카메라를 기동하구요~

카메라 영상이 잘 들어오는 rqt_image_view로 확인합니다.

그리고 rostopic list로 영상의 토픽이름을 확인합니다.

제 경우는 jetson 카메라를 실행했기 때문에 /main_camera/image_raw가 토픽 이름입니다.

check-108.pdf
0.00MB

이제  위 링크에서 체크보드를 받습니다. 저 체크 보드 파일은 ROS 위키의 카메라 캘리브레이션 문서에서 가져왔습니다.

저 화살표에 표시된 교차점의 갯수를 확인하면 가로8개 세로 6개입니다. 그게 size입니다. 8x6이죠~

이제 한 칸의 길이를 확인합니다. 2.8cm로 보이네요. 그게 square 옵션에 들어갈 값입니다. 0.028~

이제 rosrun 명령으로 camera_calibration 패키지의 cameracalibrator.py 노드를 size와 square 옵션을 주고, image와 camera 옵션에는 아까 확인한 토픽이름을 각각 지정합니다.

실행했는데 위 그림처럼 service not found라는 메세지가 나타나면, set_camera_info라는 서비스가 지원되지 않는다는 것인데요.

그냥, 없어도 되니까, 위 그림처럼 --no-service-check 라고 다시 달아줍니다.

이제 저런 창이 나타날거구요~

아까 프린트해둔 체크보드를 들고 카메라 앞에서 가로 세서, 위 아래로 천천히 움직여 줍니다. 좌우, 아래 위로 기울여도 주고, 멀리 가까이 움직여도 줍니다.

조금 열심히~^^

그러면 오른쪽 상단의 상황이~

저렇게 모두 녹색바(bar)로 바뀌면 calibrate라는 버튼이 활성화됩니다.

그 버튼을 누르면 됩니다.^^

저는 이 과정을 jetson nano에서 수행했기 때문에 터미널에서 보면 calibration 하는데 시간이 조금 걸립니다.

그렇게 조금 기다리면 저렇게~

캘리브레이션 결과가 나오는데요. 저 터미널의 결과를 긁어서, 사용하면 됩니다. 보통 pkg에 보면 camera.yaml이나 config라는 단어가 들어간 yaml 파일이 있는데요. 그 파일을 열어서 상황에 맞게 덮어쓰면 됩니다.^^.

반응형
  • BlogIcon 핑구야 날자 2021.04.28 06:36 신고

    덕분에 잘 보고 갑니다 ros 카메라 캘리브레이션 수행 하는 거는 생소하네요

  • BlogIcon 드래곤포토 2021.05.06 09:34

    카메라도 캘리블레이션 하는 군요
    잘알고 갑니다.

  • theday 2022.02.14 17:02

    혹시 'camera_calibration' package 는 어떻게 설치하나요?

  • 2022.02.15 13:58

    참고하며 설치하는 도중 문제가 생겨 질문 드립니다. rostopic list를 입력하면 /rosout /rosout_agg 만 뜨고 카메라에 관련된 node는 뜨지 않습니다.
    그리고 터미널에서 rqt_image_view를 실행하고 카메라를 지정할때도 camera_node/image/compressed만 뜨고 image/raw는 뜨지 않는데, 다른 패캐지를 설치해야하나요?
    항상 자세하게 포스팅해주셔서 정말 감사합니다.

    • BlogIcon PinkWink 2022.02.16 10:08 신고

      카메라는 기동하셨나요? 토픽 리스트에서 카메라 관련 토픽이 나타나지 않는다면 카메라가 정상적으로 실행된건지를 확인해야할 지도 모르겠네요

  • 최예진 2022.05.17 18:53

    안녕하세요. 항상 소중한 자료 및 좋은 정보 제공해주셔서 감사합니다.
    다름이 아니라 r1mini 패키지를 사용하신 걸 보고 jetson_camera 패키지를 다운로드 받아주었습니다.
    그런다음 catkin_make를 해주었는데...
    jetson_camera 폴더 부분에서 에러가 발생하는데.. 어떻게 해결해야될까요?

    • BlogIcon PinkWink 2022.05.17 21:51 신고

      에러 메세지를 한 번 확인해서 해당 메시지로 검색을 해봐야할 것 같네요. 단순히 에러가 있다는 것 만으로는 판단하기가 어렵네요

  • RoboMath 2022.06.30 19:16

    안녕하세요. 자료 정말 감사합니다. 올려주신 내용으로 결과를 얻었는데요. 제가 비전은 잘몰라서 질문드립니다. 혹시 저 결과 값을 어디다 넣어줘야 하는 건가요? 아니면 사용하는 카메라에 자동으로 적용이 되는건가요?

    • BlogIcon PinkWink 2022.07.01 09:08 신고

      저 상태에서 나온 결과를 카메라 캘리브레이션 설정 파일에 저장해야 합니다. turtlebot3나 혹은 다른 패키지를 참조해보시면 카메라를 기동하는 런치파일에 설정파일을 읽는 명령이 보일겁니다. 그걸 참조해서 저장하시면 됩니다.