ros opencv 예제

예를 들어 게시자 노드는 로봇의 마이크로 컨트롤러에 연결된 센서의 데이터를 보고할 수 있습니다. 값이 0.5인 /head_sonar 항목에 대한 메시지는 센서가 현재 0.5미터 떨어진 물체를 감지하고 있음을 의미합니다. (ROS는 거리 측정을 위해 미터를 사용하고 각도 측정에는 라디안을 사용합니다.) 이 센서의 판독값을 알고 자하는 모든 노드는 /head_sonar 항목에가입하기만 하면 됩니다. 이러한 값을 사용하기 위해 구독자 노드는 구독된 토픽의 메시지가 업데이트될 때마다 실행되는 콜백 함수를 정의합니다. 이러한 발생 빈도는 게시자 노드가 메시지를 업데이트하는 속도에 따라 다릅니다. 그래, 나는 성공적으로 그 노드를 실행하지만 난 회색 변환기 rgb 같은 opencv 문서에서 사용할 수있는 다른 코드로 그 원 그리기 코드를 대체하려고 할 때, 나는 몇 가지 오류를 얻을 컴파일 할 수 없습니다 dominikbelter / opencv_example에서 새로운 릴리스의 알림을 받고 싶어? 머리 추적 튜토리얼 패트릭 괴벨 BSD http://www.pirobot.org/blog/0016 <!– 더 복잡한 노드는 여러 가지 주제와 서비스를 구독하고, 결과를 유용한 방식으로 결합하고, 메시지를 게시하거나 자체 서비스를 제공할 것입니다. 예를 들어, 우리가 아래에 개발 할 헤드 추적 노드는 비디오 토픽 세트에 카메라 메시지에 가입하고 다음 머리의 팬과 틸트 서보를 이동하는 서보 컨트롤러 노드에 의해 읽혀다른 주제에 이동 명령을 게시합니다. 노드는 작업을 생성하거나 다른 노드에서 요청을 보낼 때 응답을 다시 보내는 하나 이상의 서비스를 정의할 수도 있습니다. 좋은 예는 서보 컨트롤러와 대화하는 서비스입니다. 이 경우 서비스 요청은 서보 ID와 목표 위치, 속도 및/또는 노력(토크)을 지정하는 메시지로 구성됩니다. 회신 메시지는 null이거나 메시지 수신을 승인할 수 있습니다.

그런 다음 컨트롤러가 원하는 방식으로 서보를 이동합니다. ROS는 자체 sensor_msgs/이미지 메시지 형식으로 이미지를 전달하지만 많은 사용자가 OpenCV와 함께 이미지를 사용하려고 합니다. CvBridge는 ROS와 OpenCV 사이의 인터페이스를 제공하는 ROS 라이브러리입니다. CvBridge는 vision_opencv 스택의 cv_bridge 패키지에서 찾을 수 있습니다. git 복제 https://github.com/dominikbelter/opencv_example 자신을 할당하는 예는 이미지 게시 자습서를 참조하십시오. 위의 전체 예제에서는 이미지 데이터를 명시적으로 복사했지만 가능한 경우 공유도 똑같이 쉽습니다: 들어오는 메시지에 „bgr8″ 인코딩이 있는 경우 cv_ptr은 복사본을 만들지 않고 데이터를 별칭으로 지정합니다. „mono8″과 같은 다른 컨버터블 인코딩이 있는 경우 CvBridge는 cv_ptr에 대한 새 버퍼를 할당하고 변환을 수행합니다. 예외없이 이 것을 처리하는 것은 한 줄의 코드일 뿐이지만 잘못된(또는 지원되지 않는) 인코딩이 있는 들어오는 메시지는 노드를 다운시킬 수 있습니다. 예를 들어 들어오는 이미지가 바이엘 패턴 카메라의 image_raw 항목에서 온 경우 CvBridge는 (의도적으로) 자동 바이엘-색상 변환을 지원하지 않기 때문에 예외를 throw합니다. OpenCV의 이미지 처리 및 GUI 모듈에 대한 헤더가 포함되어 있습니다. package.xml에 opencv2를 포함해야 합니다. .

마지막으로 CvBridge는 바이엘 패턴 인코딩을 OpenCV 유형 8UC1(8비트 서명되지 않은 하나의 채널)을 갖는 것으로 인식합니다.

Dieser Eintrag wurde veröffentlicht in Allgemein. Lesezeichen auf den Permanentlink.