mrp2_sonar.cpp
Go to the documentation of this file.
1  #include <ros/ros.h>
2  #include <sensor_msgs/Range.h>
4 
12 
14 
16 std::string sonar_port;
17 
18 
19 int main(int argc, char **argv)
20 {
21  ros::init(argc, argv, "mrp2_sonar");
22  ros::NodeHandle nh_;
23 
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);
26 
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);
34 
35  sonar_serial = new MRP2_Serial(sonar_port, sonar_baud, "8N1", false);
36  sonar_serial->set_read_timeout(0.05);
37 
38  ros::Rate loop_rate(20);
39 
40  while(ros::ok())
41  {
42  std::vector<int> sonar_vals;
43 
44  sonar_vals.reserve(20);
45  sonar_vals.clear();
46 
47  sonar_vals = sonar_serial->get_sonars(true);
48 
49  sensor_msgs::Range sonar;
50 
51  sonar.radiation_type = sensor_msgs::Range::ULTRASOUND;
52  sonar.header.stamp = ros::Time::now();
53  sonar.field_of_view = 0.6108652;
54  sonar.max_range = 0.4;
55  sonar.min_range = 0.02;
56 
57  sonar.header.frame_id = "base_sonar_1_link";
58  sonar.range = ((double)sonar_vals[0] / 100);
59  sonar1_pub.publish(sonar);
60 
61  sonar.header.frame_id = "base_sonar_2_link";
62  sonar.range = ((double)sonar_vals[1] / 100);
63  sonar2_pub.publish(sonar);
64 
65  sonar.header.frame_id = "base_sonar_3_link";
66  sonar.range = ((double)sonar_vals[2] / 100);
67  sonar3_pub.publish(sonar);
68 
69  sonar.header.frame_id = "base_sonar_4_link";
70  sonar.range = ((double)sonar_vals[3] / 100);
71  sonar4_pub.publish(sonar);
72 
73  sonar.header.frame_id = "base_sonar_5_link";
74  sonar.range = ((double)sonar_vals[4] / 100);
75  sonar5_pub.publish(sonar);
76 
77  sonar.header.frame_id = "base_sonar_6_link";
78  sonar.range = ((double)sonar_vals[5] / 100);
79  sonar6_pub.publish(sonar);
80 
81  sonar.header.frame_id = "base_sonar_7_link";
82  sonar.range = ((double)sonar_vals[6] / 100);
83  sonar7_pub.publish(sonar);
84 
85  ros::spinOnce();
86  loop_rate.sleep();
87  }
88 }
int use_sonar
Definition: mrp2_sonar.cpp:15
std::string sonar_port
Definition: mrp2_sonar.cpp:16
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
ros::Publisher sonar1_pub
Definition: mrp2_sonar.cpp:5
int main(int argc, char **argv)
Definition: mrp2_sonar.cpp:19
MRP2_Serial * sonar_serial
Definition: mrp2_sonar.cpp:13
ros::Publisher sonar5_pub
Definition: mrp2_sonar.cpp:9
ros::Publisher sonar2_pub
Definition: mrp2_sonar.cpp:6
ros::Publisher sonar4_pub
Definition: mrp2_sonar.cpp:8
ros::Publisher sonar6_pub
Definition: mrp2_sonar.cpp:10
ROSCPP_DECL bool ok()
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
ros::Publisher sonar7_pub
Definition: mrp2_sonar.cpp:11
ros::Publisher sonar3_pub
Definition: mrp2_sonar.cpp:7
bool sleep()
int sonar_baud
Definition: mrp2_sonar.cpp:15
static Time now()
ROSCPP_DECL void spinOnce()


mrp2_hardware
Author(s): Akif Hacinecipoglu
autogenerated on Mon Feb 28 2022 22:53:03