Skip to content

Commit a4684ed

Browse files
authored
update fixposition SDK, update FP_A-{RAW,CORR}IMU output (#85)
- Bump Fixposition SDK - Add support FP_A-{RAW,CORR}IMU version 2 - Wrap sensor_msgs/Imu into a custom message, which includes the new flags along the standard IMU data - That is, /fpa/{raw,corr}imu topics now contain two new fields "bias_comp" and "imu_status" and the imu data itself (type sensor_msgs/Imu) is in the field "data" - For backwards compatibility, users can subscribe to /fpa/{raw,corr}imu/data and ignore the new fields - However, since v2.102.119 of the VRTK2 software, the FP_A-CORRIMU is now always output and users _must_ consider and handle the new fields - See fixposition_driver_msgs/msg/FpaImu.msg for details
1 parent 60833ef commit a4684ed

File tree

11 files changed

+43
-22
lines changed

11 files changed

+43
-22
lines changed

fixposition-sdk

Submodule fixposition-sdk updated 85 files
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Copyright (c) Fixposition AG (www.fixposition.com) and contributors
2+
# License: see the LICENSE file
3+
#
4+
# FP_A-RAWIMU or FP_A-CORRIMU data
5+
6+
bool bias_comp # Signal is bias compensated (true) or not (false), always false for RAWIMU, may be true for CORRIMU
7+
int8 imu_status # IMU bias status, see consts.IMU_STATUS_...
8+
sensor_msgs/Imu data # IMU data
9+
10+
# Note that bias_comp and imu_status are available since version 2.119.0 of the Vision-RTK 2 software.
11+
12+
fixposition_driver_msgs/FpaConsts consts # Constants for enums used in FP_A

fixposition_driver_msgs/msg/FpaOdomstatus.msg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int8 fusion_corr # Fusion measurement status: GNSS c
1212
int8 fusion_cam1 # Fusion measurement status: camera, see consts.MEAS_STATUS_...
1313
int8 fusion_ws # Fusion measurement status: wheelspeed, see consts.MEAS_STATUS_...
1414
int8 fusion_markers # Fusion measurement status: markers, see consts.MEAS_STATUS_...
15-
int8 imu_status # IMU bias status, see IMU_STATUS_...
15+
int8 imu_status # IMU bias status, see consts.IMU_STATUS_...
1616
int8 imu_noise # IMU variance status, see consts.IMU_NOISE_...
1717
int8 imu_conv # IMU convergence status, see consts.IMU_CONV_...
1818
int8 gnss1_status # GNSS 1 fix status, see consts.GNSS_STATUS_...

fixposition_driver_ros1/include/fixposition_driver_ros1/ros1_msgs.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <fixposition_driver_msgs/FpaEoe.h>
3636
#include <fixposition_driver_msgs/FpaGnssant.h>
3737
#include <fixposition_driver_msgs/FpaGnsscorr.h>
38+
#include <fixposition_driver_msgs/FpaImu.h>
3839
#include <fixposition_driver_msgs/FpaImubias.h>
3940
#include <fixposition_driver_msgs/FpaLlh.h>
4041
#include <fixposition_driver_msgs/FpaOdomenu.h>

fixposition_driver_ros1/src/data_to_ros1.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,16 +397,20 @@ static void FpaImuPayloadToRos(const SomeFpaImuPayload& payload, sensor_msgs::Im
397397

398398
void PublishFpaRawimu(const fpa::FpaRawimuPayload& payload, ros::Publisher& pub) {
399399
if (pub.getNumSubscribers() > 0) {
400-
sensor_msgs::Imu msg;
401-
FpaImuPayloadToRos(payload, msg);
400+
fixposition_driver_msgs::FpaImu msg;
401+
FpaImuPayloadToRos(payload, msg.data);
402+
msg.bias_comp = payload.bias_comp;
403+
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
402404
pub.publish(msg);
403405
}
404406
}
405407

406408
void PublishFpaCorrimu(const fpa::FpaCorrimuPayload& payload, ros::Publisher& pub) {
407409
if (pub.getNumSubscribers() > 0) {
408-
sensor_msgs::Imu msg;
409-
FpaImuPayloadToRos(payload, msg);
410+
fixposition_driver_msgs::FpaImu msg;
411+
FpaImuPayloadToRos(payload, msg.data);
412+
msg.bias_comp = payload.bias_comp;
413+
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
410414
pub.publish(msg);
411415
}
412416
}

fixposition_driver_ros1/src/fixposition_driver_node.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,15 @@ bool FixpositionDriverNode::StartNode() {
222222

223223
// FP_A-RAWIMU
224224
if (params_.MessageEnabled(fpa::FpaRawimuPayload::MSG_NAME)) {
225-
_PUB(rawimu_pub_, sensor_msgs::Imu, output_ns + "/fpa/rawimu", 5);
225+
_PUB(rawimu_pub_, fixposition_driver_msgs::FpaImu, output_ns + "/fpa/rawimu", 5);
226226
driver_.AddFpaObserver(fpa::FpaRawimuPayload::MSG_NAME, [this](const fpa::FpaPayload& payload) {
227227
PublishFpaRawimu(dynamic_cast<const fpa::FpaRawimuPayload&>(payload), rawimu_pub_);
228228
});
229229
}
230230

231231
// FP_A-CORRIMU
232232
if (params_.MessageEnabled(fpa::FpaCorrimuPayload::MSG_NAME)) {
233-
_PUB(corrimu_pub_, sensor_msgs::Imu, output_ns + "/fpa/corrimu", 5);
233+
_PUB(corrimu_pub_, fixposition_driver_msgs::FpaImu, output_ns + "/fpa/corrimu", 5);
234234
driver_.AddFpaObserver(fpa::FpaCorrimuPayload::MSG_NAME, [this](const fpa::FpaPayload& payload) {
235235
PublishFpaCorrimu(dynamic_cast<const fpa::FpaCorrimuPayload&>(payload), corrimu_pub_);
236236
});

fixposition_driver_ros2/include/fixposition_driver_ros2/data_to_ros2.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ void PublishFpaTp(const fpsdk::common::parser::fpa::FpaTpPayload& payload,
6363
void PublishFpaText(const fpsdk::common::parser::fpa::FpaTextPayload& payload,
6464
rclcpp::Publisher<fpmsgs::FpaText>::SharedPtr& pub);
6565
void PublishFpaRawimu(const fpsdk::common::parser::fpa::FpaRawimuPayload& payload,
66-
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub);
66+
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub);
6767
void PublishFpaCorrimu(const fpsdk::common::parser::fpa::FpaCorrimuPayload& payload,
68-
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub);
68+
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub);
6969

7070
bool PublishNovbBestgnsspos(const fpsdk::common::parser::novb::NovbHeader* header,
7171
const fpsdk::common::parser::novb::NovbBestgnsspos* payload,

fixposition_driver_ros2/include/fixposition_driver_ros2/fixposition_driver_node.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ class FixpositionDriverNode {
105105
//! Euler angles pitch-roll as estimated from the IMU in local horizontal
106106
rclcpp::Publisher<geometry_msgs::msg::Vector3Stamped>::SharedPtr eul_imu_pub_;
107107
// - IMU
108-
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr rawimu_pub_; //!< Raw IMU data in IMU frame
109-
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr corrimu_pub_; //!< Bias corrected IMU data in IMU frame
110-
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr poiimu_pub_; //!< Bias corrected IMU data in POI frame
108+
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr rawimu_pub_; //!< Raw IMU data in IMU frame
109+
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr corrimu_pub_; //!< Bias corrected IMU data in IMU frame
110+
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr poiimu_pub_; //!< Bias corrected IMU data in POI frame
111111
// - GNSS
112112
rclcpp::Publisher<fpmsgs::NmeaEpoch>::SharedPtr nmea_epoch_pub_; //!< NMEA epoch data
113113
rclcpp::Publisher<sensor_msgs::msg::NavSatFix>::SharedPtr navsatfix_gnss1_pub_; //!< GNSS1 position and status

fixposition_driver_ros2/include/fixposition_driver_ros2/ros2_msgs.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include <fixposition_driver_msgs/msg/fpa_eoe.hpp>
3838
#include <fixposition_driver_msgs/msg/fpa_gnssant.hpp>
3939
#include <fixposition_driver_msgs/msg/fpa_gnsscorr.hpp>
40+
#include <fixposition_driver_msgs/msg/fpa_imu.hpp>
4041
#include <fixposition_driver_msgs/msg/fpa_imubias.hpp>
4142
#include <fixposition_driver_msgs/msg/fpa_llh.hpp>
4243
#include <fixposition_driver_msgs/msg/fpa_odomenu.hpp>

fixposition_driver_ros2/src/data_to_ros2.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -403,19 +403,22 @@ static void FpaImuPayloadToRos(const SomeFpaImuPayload& payload, sensor_msgs::ms
403403
}
404404
}
405405

406-
void PublishFpaRawimu(const fpa::FpaRawimuPayload& payload, rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub) {
406+
void PublishFpaRawimu(const fpa::FpaRawimuPayload& payload, rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub) {
407407
if (pub->get_subscription_count() > 0) {
408-
sensor_msgs::msg::Imu msg;
409-
FpaImuPayloadToRos(payload, msg);
408+
fpmsgs::FpaImu msg;
409+
FpaImuPayloadToRos(payload, msg.data);
410+
msg.bias_comp = payload.bias_comp;
411+
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
410412
pub->publish(msg);
411413
}
412414
}
413415

414-
void PublishFpaCorrimu(const fpa::FpaCorrimuPayload& payload,
415-
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub) {
416+
void PublishFpaCorrimu(const fpa::FpaCorrimuPayload& payload, rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub) {
416417
if (pub->get_subscription_count() > 0) {
417-
sensor_msgs::msg::Imu msg;
418-
FpaImuPayloadToRos(payload, msg);
418+
fpmsgs::FpaImu msg;
419+
FpaImuPayloadToRos(payload, msg.data);
420+
msg.bias_comp = payload.bias_comp;
421+
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
419422
pub->publish(msg);
420423
}
421424
}

0 commit comments

Comments
 (0)