Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include <stdlib.h>
00038 #include <stdio.h>
00039 #include <math.h>
00040 #include <string.h>
00041
00042 #include "ardusim/Ardusim.h"
00043
00044 using namespace ardusim;
00045
00046 int main(int argc, char** argv)
00047 {
00048 ros::init(argc, argv, "anemometer_node");
00049
00050 ros::NodeHandle n;
00051 ros::NodeHandle pn("~");
00052
00053 std::vector<lse_sensor_msgs::Anemometer> msgs;
00054
00055 ros::Publisher pub = n.advertise<lse_sensor_msgs::Anemometer>("/anemometer", 10);
00056
00057
00058 std::string port;
00059 pn.param<std::string>("port", port, "/dev/ttyUSB1");
00060 std::string frame_id;
00061 pn.param<std::string>("frame_id", frame_id, "/base_anemometer");
00062 std::string file_path;
00063 pn.param<std::string>("calibration_file_path", file_path, "anemometer.csv");
00064
00065 Ardusim ardusim(port);
00066
00067 int requests[] = {ARDUSIM_ANEMOMETER};
00068 ardusim.setRequests(requests, 1);
00069
00070 if(!ardusim.loadAnemometerCalibFile(&file_path))
00071 {
00072 ROS_FATAL("Ardusim -- Could not load the anemometer calibration file!");
00073 ROS_BREAK();
00074 }
00075
00076 ros::Rate r(10);
00077 while(ros::ok())
00078 {
00079 if(ardusim.getSensorData(100))
00080 {
00081 if(ardusim.getAnemometer(&msgs))
00082 {
00083 for(int i=0 ; i<msgs.size() ; i++)
00084 {
00085 msgs[i].header.frame_id = frame_id;
00086 msgs[i].min_wind_speed = 0.01;
00087 msgs[i].max_wind_speed = 0.90;
00088 pub.publish(msgs.at(i));
00089 }
00090 }
00091 }
00092
00093 r.sleep();
00094 }
00095
00096 return(0);
00097 }
00098
00099
00100