본문 바로가기
Computer programming/ROS

ROS: Subscribe 파라미터 5개 해석

by SJ_Engineer 2023. 3. 28.

예제코드 (lio_sam mapOptimization.cpp에서 따옴. 깃헙: https://github.com/TixiaoShan/LIO-SAM)

subCloud = nh.subscribe<lio_sam::cloud_info>("lio_sam/feature/cloud_info", 1, 
  &mapOptimization::laserCloudInfoHandler, this, ros::TransportHints().tcpNoDelay());
  • subCloud: 생성되는 subscriber node 객체 이름
  • nh: 노드핸들러. 사전에 ros::NodeHandle nh; 로 선언됨
  • subscribe<lio_sam::cloud_info> : subscriber를 생성하는 노드핸들러 메소드. subscribe할 메시지 토픽, 메시지타입을 표시
  • "lio_sam/feature/cloud_info": subscriber가 subcribe하는 ROS 토픽의 이름
  • 1: 메시지 큐의 크기. subscriber buffer의 크기로 1개를 초과하는 데이터가 쌓이면 자동으로 drop 된다.
  • &mapOptimization::laserCloudInfoHandler: subscribe의 Callback Function. 정상적으로 토픽 메시지가 수신되면 불러올 함수
  • this: subscribe()의 매개변수로 전달됨. laserCloudInfoHandler메소드가 mapOptimization클래스의 멤버함수기 때문에 클래스의 다른 멤버 변수와 메소드에 접근할 필요가 있음. 때문에 'this'를 매개변수로 패싱함으로써 subscriber 객체가 mapOptimization클래스의 현재 객체에 reference를 저장하고 콜백함수(laserCloudInfoHandler)를 호출할 수 있도록 함.
  • ros::TransportHints().tcpNoDelay(): 옵션. transport 프로토콜로 TCP를 딜레이 없이 사용함.

댓글