18
18
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
19
// SOFTWARE.
20
20
21
- #include " waterlinked_dvl_driver.hpp"
21
+ #include " waterlinked_dvl_driver/waterlinked_dvl_driver .hpp"
22
22
23
23
#include " rclcpp/rclcpp.hpp"
24
24
#include " tf2_geometry_msgs/tf2_geometry_msgs.hpp"
@@ -49,36 +49,9 @@ auto populate_service_response(
49
49
50
50
} // namespace
51
51
52
- WaterLinkedDvlDriver::WaterLinkedDvlDriver ()
53
- : rclcpp_lifecycle::LifecycleNode(" waterlinked_dvl_driver" )
52
+ WaterLinkedDvlDriver::WaterLinkedDvlDriver (const rclcpp::NodeOptions & options )
53
+ : rclcpp_lifecycle::LifecycleNode(" waterlinked_dvl_driver" , options )
54
54
{
55
- dvl_msg_.velocity_mode = marine_acoustic_msgs::msg::Dvl::DVL_MODE_BOTTOM;
56
- dvl_msg_.dvl_type = marine_acoustic_msgs::msg::Dvl::DVL_TYPE_PISTON; // 4-beam convex Janus array
57
-
58
- // The following has been retrieved from:
59
- // https://github.com/ndahn/dvl_a50/blob/1e6a5304235facf53ecf82043fb5ba4c8569016b/src/dvl_a50_ros2.cpp#L45
60
-
61
- // Each beam points 22.5° away from the center, LED pointing forward.
62
- // Transducers are rotated 45° around Z.
63
- // Beam 1 (+135° from X)
64
- dvl_msg_.beam_unit_vec [0 ].x = -0.6532814824381883 ;
65
- dvl_msg_.beam_unit_vec [0 ].y = 0.6532814824381883 ;
66
- dvl_msg_.beam_unit_vec [0 ].z = 0.38268343236508984 ;
67
-
68
- // Beam 2 (-135° from X)
69
- dvl_msg_.beam_unit_vec [1 ].x = -0.6532814824381883 ;
70
- dvl_msg_.beam_unit_vec [1 ].y = -0.6532814824381883 ;
71
- dvl_msg_.beam_unit_vec [1 ].z = 0.38268343236508984 ;
72
-
73
- // Beam 3 (-45° from X)
74
- dvl_msg_.beam_unit_vec [2 ].x = 0.6532814824381883 ;
75
- dvl_msg_.beam_unit_vec [2 ].y = -0.6532814824381883 ;
76
- dvl_msg_.beam_unit_vec [2 ].z = 0.38268343236508984 ;
77
-
78
- // Beam 4 (+45° from X)
79
- dvl_msg_.beam_unit_vec [3 ].x = 0.6532814824381883 ;
80
- dvl_msg_.beam_unit_vec [3 ].y = 0.6532814824381883 ;
81
- dvl_msg_.beam_unit_vec [3 ].z = 0.38268343236508984 ;
82
55
}
83
56
84
57
auto WaterLinkedDvlDriver::on_configure (const rclcpp_lifecycle::State & /* previous_state*/ ) -> CallbackReturn
@@ -94,7 +67,6 @@ auto WaterLinkedDvlDriver::on_configure(const rclcpp_lifecycle::State & /*previo
94
67
return CallbackReturn::ERROR;
95
68
}
96
69
97
- // The client does 99% of the work, this is just a ROS wrapper around its functionality
98
70
try {
99
71
client_ =
100
72
std::make_unique<WaterLinkedClient>(params_.ip_address , params_.port , std::chrono::seconds (params_.timeout ));
@@ -122,10 +94,39 @@ auto WaterLinkedDvlDriver::on_configure(const rclcpp_lifecycle::State & /*previo
122
94
return CallbackReturn::ERROR;
123
95
}
124
96
97
+ // Pre-populate the sensor state messages with known, static values
125
98
dvl_msg_.header .frame_id = params_.frame_id ;
126
99
dead_reckoning_msg_.header .frame_id = params_.frame_id ;
127
100
odom_msg_.header .frame_id = params_.frame_id ;
128
101
102
+ dvl_msg_.velocity_mode = marine_acoustic_msgs::msg::Dvl::DVL_MODE_BOTTOM;
103
+ dvl_msg_.dvl_type = marine_acoustic_msgs::msg::Dvl::DVL_TYPE_PISTON; // 4-beam convex Janus array
104
+
105
+ // The following has been retrieved from:
106
+ // https://github.com/ndahn/dvl_a50/blob/1e6a5304235facf53ecf82043fb5ba4c8569016b/src/dvl_a50_ros2.cpp#L45
107
+
108
+ // Each beam points 22.5° away from the center, LED pointing forward.
109
+ // Transducers are rotated 45° around Z.
110
+ // Beam 1 (+135° from X)
111
+ dvl_msg_.beam_unit_vec [0 ].x = -0.6532814824381883 ;
112
+ dvl_msg_.beam_unit_vec [0 ].y = 0.6532814824381883 ;
113
+ dvl_msg_.beam_unit_vec [0 ].z = 0.38268343236508984 ;
114
+
115
+ // Beam 2 (-135° from X)
116
+ dvl_msg_.beam_unit_vec [1 ].x = -0.6532814824381883 ;
117
+ dvl_msg_.beam_unit_vec [1 ].y = -0.6532814824381883 ;
118
+ dvl_msg_.beam_unit_vec [1 ].z = 0.38268343236508984 ;
119
+
120
+ // Beam 3 (-45° from X)
121
+ dvl_msg_.beam_unit_vec [2 ].x = 0.6532814824381883 ;
122
+ dvl_msg_.beam_unit_vec [2 ].y = -0.6532814824381883 ;
123
+ dvl_msg_.beam_unit_vec [2 ].z = 0.38268343236508984 ;
124
+
125
+ // Beam 4 (+45° from X)
126
+ dvl_msg_.beam_unit_vec [3 ].x = 0.6532814824381883 ;
127
+ dvl_msg_.beam_unit_vec [3 ].y = 0.6532814824381883 ;
128
+ dvl_msg_.beam_unit_vec [3 ].z = 0.38268343236508984 ;
129
+
129
130
dvl_pub_ = create_publisher<marine_acoustic_msgs::msg::Dvl>(" ~/velocity_report" , rclcpp::SystemDefaultsQoS ());
130
131
odom_pub_ = create_publisher<nav_msgs::msg::Odometry>(" ~/odom" , rclcpp::SystemDefaultsQoS ());
131
132
dead_reckoning_pub_ = create_publisher<geometry_msgs::msg::PoseWithCovarianceStamped>(
0 commit comments