31
31
namespace autoware ::gyro_odometer
32
32
{
33
33
34
- std::array<double , 9 > transformCovariance (const std::array<double , 9 > & cov)
34
+ std::array<double , 9 > transform_covariance (const std::array<double , 9 > & cov)
35
35
{
36
36
using COV_IDX = tier4_autoware_utils::xyz_covariance_index::XYZ_COV_IDX;
37
37
38
38
double max_cov = std::max ({cov[COV_IDX::X_X], cov[COV_IDX::Y_Y], cov[COV_IDX::Z_Z]});
39
39
40
- std::array<double , 9 > cov_transformed;
40
+ std::array<double , 9 > cov_transformed = {} ;
41
41
cov_transformed.fill (0 .);
42
42
cov_transformed[COV_IDX::X_X] = max_cov;
43
43
cov_transformed[COV_IDX::Y_Y] = max_cov;
@@ -57,11 +57,11 @@ GyroOdometerNode::GyroOdometerNode(const rclcpp::NodeOptions & node_options)
57
57
58
58
vehicle_twist_sub_ = create_subscription<geometry_msgs::msg::TwistWithCovarianceStamped>(
59
59
" vehicle/twist_with_covariance" , rclcpp::QoS{100 },
60
- std::bind (&GyroOdometerNode::callbackVehicleTwist , this , std::placeholders::_1));
60
+ std::bind (&GyroOdometerNode::callback_vehicle_twist , this , std::placeholders::_1));
61
61
62
62
imu_sub_ = create_subscription<sensor_msgs::msg::Imu>(
63
63
" imu" , rclcpp::QoS{100 },
64
- std::bind (&GyroOdometerNode::callbackImu , this , std::placeholders::_1));
64
+ std::bind (&GyroOdometerNode::callback_imu , this , std::placeholders::_1));
65
65
66
66
twist_raw_pub_ = create_publisher<geometry_msgs::msg::TwistStamped>(" twist_raw" , rclcpp::QoS{10 });
67
67
twist_with_covariance_raw_pub_ = create_publisher<geometry_msgs::msg::TwistWithCovarianceStamped>(
@@ -76,49 +76,46 @@ GyroOdometerNode::GyroOdometerNode(const rclcpp::NodeOptions & node_options)
76
76
// TODO(YamatoAndo) createTimer
77
77
}
78
78
79
- GyroOdometerNode::~GyroOdometerNode ()
80
- {
81
- }
82
-
83
- void GyroOdometerNode::callbackVehicleTwist (
84
- const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr vehicle_twist_ptr)
79
+ void GyroOdometerNode::callback_vehicle_twist (
80
+ const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr vehicle_twist_msg_ptr)
85
81
{
86
82
diagnostics_->clear ();
87
- diagnostics_->addKeyValue (
88
- " topic_time_stamp" , static_cast <rclcpp::Time>(vehicle_twist_ptr->header .stamp ).nanoseconds ());
83
+ diagnostics_->add_key_value (
84
+ " topic_time_stamp" ,
85
+ static_cast <rclcpp::Time>(vehicle_twist_msg_ptr->header .stamp ).nanoseconds ());
89
86
90
87
vehicle_twist_arrived_ = true ;
91
- latest_vehicle_twist_ros_time_ = vehicle_twist_ptr ->header .stamp ;
92
- vehicle_twist_queue_.push_back (*vehicle_twist_ptr );
93
- concatGyroAndOdometer ();
88
+ latest_vehicle_twist_ros_time_ = vehicle_twist_msg_ptr ->header .stamp ;
89
+ vehicle_twist_queue_.push_back (*vehicle_twist_msg_ptr );
90
+ concat_gyro_and_odometer ();
94
91
95
- diagnostics_->publish (vehicle_twist_ptr ->header .stamp );
92
+ diagnostics_->publish (vehicle_twist_msg_ptr ->header .stamp );
96
93
}
97
94
98
- void GyroOdometerNode::callbackImu (const sensor_msgs::msg::Imu::ConstSharedPtr imu_msg_ptr)
95
+ void GyroOdometerNode::callback_imu (const sensor_msgs::msg::Imu::ConstSharedPtr imu_msg_ptr)
99
96
{
100
97
diagnostics_->clear ();
101
- diagnostics_->addKeyValue (
98
+ diagnostics_->add_key_value (
102
99
" topic_time_stamp" , static_cast <rclcpp::Time>(imu_msg_ptr->header .stamp ).nanoseconds ());
103
100
104
101
imu_arrived_ = true ;
105
102
latest_imu_ros_time_ = imu_msg_ptr->header .stamp ;
106
103
gyro_queue_.push_back (*imu_msg_ptr);
107
- concatGyroAndOdometer ();
104
+ concat_gyro_and_odometer ();
108
105
109
106
diagnostics_->publish (imu_msg_ptr->header .stamp );
110
107
}
111
108
112
- void GyroOdometerNode::concatGyroAndOdometer ()
109
+ void GyroOdometerNode::concat_gyro_and_odometer ()
113
110
{
114
111
// check arrive first topic
115
- diagnostics_->addKeyValue (" is_arrived_first_vehicle_twist" , vehicle_twist_arrived_);
116
- diagnostics_->addKeyValue (" is_arrived_first_imu" , imu_arrived_);
112
+ diagnostics_->add_key_value (" is_arrived_first_vehicle_twist" , vehicle_twist_arrived_);
113
+ diagnostics_->add_key_value (" is_arrived_first_imu" , imu_arrived_);
117
114
if (!vehicle_twist_arrived_) {
118
115
std::stringstream message;
119
116
message << " Twist msg is not subscribed" ;
120
117
RCLCPP_WARN_STREAM_THROTTLE (this ->get_logger (), *this ->get_clock (), 1000 , message.str ());
121
- diagnostics_->updateLevelAndMessage (
118
+ diagnostics_->update_level_and_message (
122
119
diagnostic_msgs::msg::DiagnosticStatus::WARN, message.str ());
123
120
124
121
vehicle_twist_queue_.clear ();
@@ -129,7 +126,7 @@ void GyroOdometerNode::concatGyroAndOdometer()
129
126
std::stringstream message;
130
127
message << " Imu msg is not subscribed" ;
131
128
RCLCPP_WARN_STREAM_THROTTLE (this ->get_logger (), *this ->get_clock (), 1000 , message.str ());
132
- diagnostics_->updateLevelAndMessage (
129
+ diagnostics_->update_level_and_message (
133
130
diagnostic_msgs::msg::DiagnosticStatus::WARN, message.str ());
134
131
135
132
vehicle_twist_queue_.clear ();
@@ -141,14 +138,14 @@ void GyroOdometerNode::concatGyroAndOdometer()
141
138
const double vehicle_twist_dt =
142
139
std::abs ((this ->now () - latest_vehicle_twist_ros_time_).seconds ());
143
140
const double imu_dt = std::abs ((this ->now () - latest_imu_ros_time_).seconds ());
144
- diagnostics_->addKeyValue (" vehicle_twist_time_stamp_dt" , vehicle_twist_dt);
145
- diagnostics_->addKeyValue (" imu_time_stamp_dt" , imu_dt);
141
+ diagnostics_->add_key_value (" vehicle_twist_time_stamp_dt" , vehicle_twist_dt);
142
+ diagnostics_->add_key_value (" imu_time_stamp_dt" , imu_dt);
146
143
if (vehicle_twist_dt > message_timeout_sec_) {
147
144
const std::string message = fmt::format (
148
145
" Vehicle twist msg is timeout. vehicle_twist_dt: {}[sec], tolerance {}[sec]" ,
149
146
vehicle_twist_dt, message_timeout_sec_);
150
147
RCLCPP_ERROR_STREAM_THROTTLE (this ->get_logger (), *this ->get_clock (), 1000 , message);
151
- diagnostics_->updateLevelAndMessage (diagnostic_msgs::msg::DiagnosticStatus::ERROR, message);
148
+ diagnostics_->update_level_and_message (diagnostic_msgs::msg::DiagnosticStatus::ERROR, message);
152
149
153
150
vehicle_twist_queue_.clear ();
154
151
gyro_queue_.clear ();
@@ -158,16 +155,16 @@ void GyroOdometerNode::concatGyroAndOdometer()
158
155
const std::string message = fmt::format (
159
156
" Imu msg is timeout. imu_dt: {}[sec], tolerance {}[sec]" , imu_dt, message_timeout_sec_);
160
157
RCLCPP_ERROR_STREAM_THROTTLE (this ->get_logger (), *this ->get_clock (), 1000 , message);
161
- diagnostics_->updateLevelAndMessage (diagnostic_msgs::msg::DiagnosticStatus::ERROR, message);
158
+ diagnostics_->update_level_and_message (diagnostic_msgs::msg::DiagnosticStatus::ERROR, message);
162
159
163
160
vehicle_twist_queue_.clear ();
164
161
gyro_queue_.clear ();
165
162
return ;
166
163
}
167
164
168
165
// check queue size
169
- diagnostics_->addKeyValue (" vehicle_twist_queue_size" , vehicle_twist_queue_.size ());
170
- diagnostics_->addKeyValue (" imu_queue_size" , gyro_queue_.size ());
166
+ diagnostics_->add_key_value (" vehicle_twist_queue_size" , vehicle_twist_queue_.size ());
167
+ diagnostics_->add_key_value (" imu_queue_size" , gyro_queue_.size ());
171
168
if (vehicle_twist_queue_.empty ()) {
172
169
// not output error and clear queue
173
170
return ;
@@ -182,13 +179,13 @@ void GyroOdometerNode::concatGyroAndOdometer()
182
179
transform_listener_->getLatestTransform (gyro_queue_.front ().header .frame_id , output_frame_);
183
180
184
181
const bool is_succeed_transform_imu = (tf_imu2base_ptr != nullptr );
185
- diagnostics_->addKeyValue (" is_succeed_transform_imu" , is_succeed_transform_imu);
182
+ diagnostics_->add_key_value (" is_succeed_transform_imu" , is_succeed_transform_imu);
186
183
if (!is_succeed_transform_imu) {
187
184
std::stringstream message;
188
185
message << " Please publish TF " << output_frame_ << " to "
189
186
<< gyro_queue_.front ().header .frame_id ;
190
187
RCLCPP_ERROR_STREAM_THROTTLE (this ->get_logger (), *this ->get_clock (), 1000 , message.str ());
191
- diagnostics_->updateLevelAndMessage (
188
+ diagnostics_->update_level_and_message (
192
189
diagnostic_msgs::msg::DiagnosticStatus::ERROR, message.str ());
193
190
194
191
vehicle_twist_queue_.clear ();
@@ -208,7 +205,7 @@ void GyroOdometerNode::concatGyroAndOdometer()
208
205
209
206
gyro.header .frame_id = output_frame_;
210
207
gyro.angular_velocity = transformed_angular_velocity.vector ;
211
- gyro.angular_velocity_covariance = transformCovariance (gyro.angular_velocity_covariance );
208
+ gyro.angular_velocity_covariance = transform_covariance (gyro.angular_velocity_covariance );
212
209
}
213
210
214
211
using COV_IDX_XYZ = tier4_autoware_utils::xyz_covariance_index::XYZ_COV_IDX;
@@ -223,8 +220,8 @@ void GyroOdometerNode::concatGyroAndOdometer()
223
220
vx_mean += vehicle_twist.twist .twist .linear .x ;
224
221
vx_covariance_original += vehicle_twist.twist .covariance [0 * 6 + 0 ];
225
222
}
226
- vx_mean /= vehicle_twist_queue_.size ();
227
- vx_covariance_original /= vehicle_twist_queue_.size ();
223
+ vx_mean /= static_cast < double >( vehicle_twist_queue_.size () );
224
+ vx_covariance_original /= static_cast < double >( vehicle_twist_queue_.size () );
228
225
229
226
for (const auto & gyro : gyro_queue_) {
230
227
gyro_mean.x += gyro.angular_velocity .x ;
@@ -234,12 +231,12 @@ void GyroOdometerNode::concatGyroAndOdometer()
234
231
gyro_covariance_original.y += gyro.angular_velocity_covariance [COV_IDX_XYZ::Y_Y];
235
232
gyro_covariance_original.z += gyro.angular_velocity_covariance [COV_IDX_XYZ::Z_Z];
236
233
}
237
- gyro_mean.x /= gyro_queue_.size ();
238
- gyro_mean.y /= gyro_queue_.size ();
239
- gyro_mean.z /= gyro_queue_.size ();
240
- gyro_covariance_original.x /= gyro_queue_.size ();
241
- gyro_covariance_original.y /= gyro_queue_.size ();
242
- gyro_covariance_original.z /= gyro_queue_.size ();
234
+ gyro_mean.x /= static_cast < double >( gyro_queue_.size () );
235
+ gyro_mean.y /= static_cast < double >( gyro_queue_.size () );
236
+ gyro_mean.z /= static_cast < double >( gyro_queue_.size () );
237
+ gyro_covariance_original.x /= static_cast < double >( gyro_queue_.size () );
238
+ gyro_covariance_original.y /= static_cast < double >( gyro_queue_.size () );
239
+ gyro_covariance_original.z /= static_cast < double >( gyro_queue_.size () );
243
240
244
241
// concat
245
242
geometry_msgs::msg::TwistWithCovarianceStamped twist_with_cov;
@@ -257,23 +254,23 @@ void GyroOdometerNode::concatGyroAndOdometer()
257
254
// From a statistical point of view, here we reduce the covariances according to the number of
258
255
// observed data
259
256
twist_with_cov.twist .covariance [COV_IDX_XYZRPY::X_X] =
260
- vx_covariance_original / vehicle_twist_queue_.size ();
257
+ vx_covariance_original / static_cast < double >( vehicle_twist_queue_.size () );
261
258
twist_with_cov.twist .covariance [COV_IDX_XYZRPY::Y_Y] = 100000.0 ;
262
259
twist_with_cov.twist .covariance [COV_IDX_XYZRPY::Z_Z] = 100000.0 ;
263
260
twist_with_cov.twist .covariance [COV_IDX_XYZRPY::ROLL_ROLL] =
264
- gyro_covariance_original.x / gyro_queue_.size ();
261
+ gyro_covariance_original.x / static_cast < double >( gyro_queue_.size () );
265
262
twist_with_cov.twist .covariance [COV_IDX_XYZRPY::PITCH_PITCH] =
266
- gyro_covariance_original.y / gyro_queue_.size ();
263
+ gyro_covariance_original.y / static_cast < double >( gyro_queue_.size () );
267
264
twist_with_cov.twist .covariance [COV_IDX_XYZRPY::YAW_YAW] =
268
- gyro_covariance_original.z / gyro_queue_.size ();
265
+ gyro_covariance_original.z / static_cast < double >( gyro_queue_.size () );
269
266
270
- publishData (twist_with_cov);
267
+ publish_data (twist_with_cov);
271
268
272
269
vehicle_twist_queue_.clear ();
273
270
gyro_queue_.clear ();
274
271
}
275
272
276
- void GyroOdometerNode::publishData (
273
+ void GyroOdometerNode::publish_data (
277
274
const geometry_msgs::msg::TwistWithCovarianceStamped & twist_with_cov_raw)
278
275
{
279
276
geometry_msgs::msg::TwistStamped twist_raw;
0 commit comments