Skip to content

Commit b6e0270

Browse files
authored
Bugfix: IMU gyro unit fix to comply with sensor_msgs definition (#191)
The sensor_msgs/Imu.msgs requires angular velocity readings of the IMU to be published in rad/s. This PR changes the unit from deg/s to rad/s to comply with the message definition. Signed-off-by: Chris Lalancette <[email protected]>
1 parent 88673b7 commit b6e0270

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

ublox_gps/src/adr_udr_product.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ void AdrUdrProduct::callbackEsfMEAS(const ublox_msgs::msg::EsfMEAS &m) {
117117
imu_.header.stamp = node_->now();
118118
imu_.header.frame_id = frame_id_;
119119

120-
float deg_per_sec = ::pow(2, -12);
120+
float rad_per_sec = ::pow(2, -12) * M_PI / 180.0F;
121121
float m_per_sec_sq = ::pow(2, -10);
122122

123123
std::vector<unsigned int> imu_data = m.data;
@@ -140,9 +140,9 @@ void AdrUdrProduct::callbackEsfMEAS(const ublox_msgs::msg::EsfMEAS &m) {
140140

141141
if (data_type == 14) {
142142
if (data_sign == 1) {
143-
imu_.angular_velocity.x = 2048 - data_value * deg_per_sec;
143+
imu_.angular_velocity.x = 2048 - data_value * rad_per_sec;
144144
} else {
145-
imu_.angular_velocity.x = data_sign * data_value * deg_per_sec;
145+
imu_.angular_velocity.x = data_sign * data_value * rad_per_sec;
146146
}
147147
} else if (data_type == 16) {
148148
//RCLCPP_INFO(node_->get_logger(), "data_sign: %f", data_sign);
@@ -154,9 +154,9 @@ void AdrUdrProduct::callbackEsfMEAS(const ublox_msgs::msg::EsfMEAS &m) {
154154
}
155155
} else if (data_type == 13) {
156156
if (data_sign == 1) {
157-
imu_.angular_velocity.y = 2048 - data_value * deg_per_sec;
157+
imu_.angular_velocity.y = 2048 - data_value * rad_per_sec;
158158
} else {
159-
imu_.angular_velocity.y = data_sign * data_value * deg_per_sec;
159+
imu_.angular_velocity.y = data_sign * data_value * rad_per_sec;
160160
}
161161
} else if (data_type == 17) {
162162
if (data_sign == 1) {
@@ -166,9 +166,9 @@ void AdrUdrProduct::callbackEsfMEAS(const ublox_msgs::msg::EsfMEAS &m) {
166166
}
167167
} else if (data_type == 5) {
168168
if (data_sign == 1) {
169-
imu_.angular_velocity.z = 2048 - data_value * deg_per_sec;
169+
imu_.angular_velocity.z = 2048 - data_value * rad_per_sec;
170170
} else {
171-
imu_.angular_velocity.z = data_sign * data_value * deg_per_sec;
171+
imu_.angular_velocity.z = data_sign * data_value * rad_per_sec;
172172
}
173173
} else if (data_type == 18) {
174174
if (data_sign == 1) {

0 commit comments

Comments
 (0)