BU-353S4
이 패키지는 /fix 형태로 위도, 경도 메시지를 전송한다.
자세한 사항은
NavSatFix Documentation
을 참고.
$ sudo apt-get install ros-melodic-nmea-navsat-driver
$ roscore
$ rosrun gpsd_client gpsd_client &
$ rostopic echo /fix
그리고 ROS 패키지를 만들어서 CMakeList.txt. 를 수정하고 src 폴더 내부에 소스코드를 만든 후 catkin_make 를 통해 빌드한다.
이후
$ rosrun message_test (패키지 이름) topic_exam_sub (노드 이름)
을 통해 코드를 실행한다.
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "sensor_msgs/NavSatFix.h"
#include <iostream>
using namespace std;
void getCallBack(const sensor_msgs::NavSatFix::ConstPtr& msg){
cout << msg -> latitude << endl;
}
int main(int argc, char **argv){
ros::init(argc, argv, "topic_exam_subscriber");
ros::NodeHandle n;
ros::Subscriber topic_exam_sub = n.subscribe("/fix, 1000, getCallBack);
ros::spin();
return 0;
}
Subscriber 코드를 살펴보면 msg→latitude 로 값을 받아오는 것을 볼 수 있다.
gps_umd 패키지 빌드가 안 될 경우, /catkin_ws/build 폴더 내에 이미 빌드된 패키지 폴더를 지우고 다시 빌드한다.