2 #include <sensor_msgs/Range.h> 19 int main(
int argc,
char **argv)
24 ros::param::param<std::string>(
"~sonar_port",
sonar_port,
"/dev/mrp2_ftdi_MRP2SNR001");
25 ros::param::param<int32_t>(
"~sonar_baud",
sonar_baud, 115200);
27 sonar1_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_1", 100);
28 sonar2_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_2", 100);
29 sonar3_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_3", 100);
30 sonar4_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_4", 100);
31 sonar5_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_5", 100);
32 sonar6_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_6", 100);
33 sonar7_pub = nh_.
advertise<sensor_msgs::Range>(
"sonar_7", 100);
35 sonar_serial =
new MRP2_Serial(sonar_port, sonar_baud,
"8N1",
false);
36 sonar_serial->set_read_timeout(0.05);
42 std::vector<int> sonar_vals;
44 sonar_vals.reserve(20);
47 sonar_vals = sonar_serial->get_sonars(
true);
49 sensor_msgs::Range sonar;
51 sonar.radiation_type = sensor_msgs::Range::ULTRASOUND;
53 sonar.field_of_view = 0.6108652;
54 sonar.max_range = 0.4;
55 sonar.min_range = 0.02;
57 sonar.header.frame_id =
"base_sonar_1_link";
58 sonar.range = ((double)sonar_vals[0] / 100);
59 sonar1_pub.publish(sonar);
61 sonar.header.frame_id =
"base_sonar_2_link";
62 sonar.range = ((double)sonar_vals[1] / 100);
63 sonar2_pub.publish(sonar);
65 sonar.header.frame_id =
"base_sonar_3_link";
66 sonar.range = ((double)sonar_vals[2] / 100);
67 sonar3_pub.publish(sonar);
69 sonar.header.frame_id =
"base_sonar_4_link";
70 sonar.range = ((double)sonar_vals[3] / 100);
71 sonar4_pub.publish(sonar);
73 sonar.header.frame_id =
"base_sonar_5_link";
74 sonar.range = ((double)sonar_vals[4] / 100);
75 sonar5_pub.publish(sonar);
77 sonar.header.frame_id =
"base_sonar_6_link";
78 sonar.range = ((double)sonar_vals[5] / 100);
79 sonar6_pub.publish(sonar);
81 sonar.header.frame_id =
"base_sonar_7_link";
82 sonar.range = ((double)sonar_vals[6] / 100);
83 sonar7_pub.publish(sonar);
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
ros::Publisher sonar1_pub
int main(int argc, char **argv)
MRP2_Serial * sonar_serial
ros::Publisher sonar5_pub
ros::Publisher sonar2_pub
ros::Publisher sonar4_pub
ros::Publisher sonar6_pub
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
ros::Publisher sonar7_pub
ros::Publisher sonar3_pub
ROSCPP_DECL void spinOnce()