Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fixposition-sdk
Submodule fixposition-sdk updated 85 files
+43 −4 .github/workflows/ci.yml
+9 −9 .github/workflows/docker.yml
+16 −3 Makefile
+2 −1 README.md
+13 −2 docker/Dockerfile.bookworm-base
+13 −2 docker/Dockerfile.bookworm-ci
+13 −2 docker/Dockerfile.bookworm-dev
+34 −0 docker/Dockerfile.bookworm-run
+13 −2 docker/Dockerfile.humble-base
+13 −2 docker/Dockerfile.humble-ci
+13 −2 docker/Dockerfile.humble-dev
+37 −0 docker/Dockerfile.humble-run
+13 −2 docker/Dockerfile.jazzy-base
+13 −2 docker/Dockerfile.jazzy-ci
+13 −2 docker/Dockerfile.jazzy-dev
+37 −0 docker/Dockerfile.jazzy-run
+13 −2 docker/Dockerfile.noetic-base
+13 −2 docker/Dockerfile.noetic-ci
+13 −2 docker/Dockerfile.noetic-dev
+37 −0 docker/Dockerfile.noetic-run
+59 −0 docker/docker-compose.yaml
+10 −0 docker/docker.sh
+14 −3 docker/scripts/adduser_fpsdk.sh
+15 −3 docker/scripts/install_apt_base.sh
+33 −0 docker/scripts/install_apt_ci.sh
+13 −3 docker/scripts/install_apt_dev.sh
+13 −3 docker/scripts/install_apt_run.sh
+13 −3 docker/scripts/install_capnp.sh
+13 −3 docker/scripts/install_clangformat.sh
+13 −3 docker/scripts/install_doxygen.sh
+13 −3 docker/scripts/install_gitbashprompt.sh
+13 −3 docker/scripts/install_gtest.sh
+13 −3 docker/scripts/install_locales.sh
+13 −3 docker/scripts/install_mcap.sh
+13 −3 docker/scripts/install_precommit.sh
+13 −3 docker/scripts/install_precommithooks.sh
+13 −3 docker/scripts/install_proj.sh
+13 −3 docker/scripts/install_yq.sh
+13 −3 docker/scripts/unminimize_system.sh
+1 −1 examples/fpb_measurements/fpb_measurements.cpp
+1 −2 examples/parser_intro/parser_intro.cpp
+3 −3 examples/ros1_fpsdk_demo/README.md
+3 −3 examples/ros2_fpsdk_demo/README.md
+54 −5 fpsdk.code-workspace
+215 −0 fpsdk.sh
+4 −1 fpsdk_apps/doc/doc.hpp
+8 −5 fpsdk_apps/fpltool/fpltool_doc.hpp
+0 −1 fpsdk_apps/fpltool/fpltool_dump.hpp
+3 −2 fpsdk_apps/fpltool/fpltool_opts.hpp
+83 −25 fpsdk_apps/parsertool/parsertool.cpp
+75 −37 fpsdk_apps/parsertool/parsertool_doc.hpp
+1 −1 fpsdk_apps/timeconv/timeconv.cpp
+6 −4 fpsdk_apps/timeconv/timeconv_doc.hpp
+3 −4 fpsdk_apps/yaml2shell/yaml2shell.cpp
+7 −5 fpsdk_apps/yaml2shell/yaml2shell_doc.hpp
+62 −27 fpsdk_common/include/fpsdk_common/logging.hpp
+0 −18 fpsdk_common/include/fpsdk_common/math.hpp
+7 −5 fpsdk_common/include/fpsdk_common/parser/fpa.hpp
+30 −30 fpsdk_common/include/fpsdk_common/parser/novb.hpp
+7 −0 fpsdk_common/include/fpsdk_common/parser/types.hpp
+36 −4 fpsdk_common/include/fpsdk_common/string.hpp
+7 −3 fpsdk_common/include/fpsdk_common/thread.hpp
+184 −31 fpsdk_common/include/fpsdk_common/time.hpp
+1 −1 fpsdk_common/src/app.cpp
+47 −11 fpsdk_common/src/logging.cpp
+3 −2 fpsdk_common/src/math.cpp
+6 −24 fpsdk_common/src/parser.cpp
+90 −66 fpsdk_common/src/parser/fpa.cpp
+38 −37 fpsdk_common/src/parser/nmea.cpp
+48 −0 fpsdk_common/src/parser/types.cpp
+44 −0 fpsdk_common/src/string.cpp
+18 −2 fpsdk_common/src/thread.cpp
+186 −79 fpsdk_common/src/time.cpp
+18 −7 fpsdk_common/test/logging_test.cpp
+52 −0 fpsdk_common/test/parser_fpa_test.cpp
+67 −0 fpsdk_common/test/string_test.cpp
+23 −0 fpsdk_common/test/thread_test.cpp
+197 −3 fpsdk_common/test/time_test.cpp
+3 −1 fpsdk_common/test/utils_test.cpp
+8 −3 fpsdk_doc/Doxyfile
+10 −0 fpsdk_doc/fpsdk_build.hpp
+4 −0 fpsdk_doc/fpsdk_doc.hpp
+18 −0 fpsdk_doc/fpsdk_examples.hpp
+57 −0 fpsdk_doc/fpsdk_run.hpp
+1 −1 fpsdk_ros1/include/fpsdk_ros1/utils.hpp
12 changes: 12 additions & 0 deletions fixposition_driver_msgs/msg/FpaImu.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright (c) Fixposition AG (www.fixposition.com) and contributors
# License: see the LICENSE file
#
# FP_A-RAWIMU or FP_A-CORRIMU data

bool bias_comp # Signal is bias compensated (true) or not (false), always false for RAWIMU, may be true for CORRIMU
int8 imu_status # IMU bias status, see consts.IMU_STATUS_...
sensor_msgs/Imu data # IMU data

# Note that bias_comp and imu_status are available since version 2.119.0 of the Vision-RTK 2 software.

fixposition_driver_msgs/FpaConsts consts # Constants for enums used in FP_A
2 changes: 1 addition & 1 deletion fixposition_driver_msgs/msg/FpaOdomstatus.msg
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ int8 fusion_corr # Fusion measurement status: GNSS c
int8 fusion_cam1 # Fusion measurement status: camera, see consts.MEAS_STATUS_...
int8 fusion_ws # Fusion measurement status: wheelspeed, see consts.MEAS_STATUS_...
int8 fusion_markers # Fusion measurement status: markers, see consts.MEAS_STATUS_...
int8 imu_status # IMU bias status, see IMU_STATUS_...
int8 imu_status # IMU bias status, see consts.IMU_STATUS_...
int8 imu_noise # IMU variance status, see consts.IMU_NOISE_...
int8 imu_conv # IMU convergence status, see consts.IMU_CONV_...
int8 gnss1_status # GNSS 1 fix status, see consts.GNSS_STATUS_...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include <fixposition_driver_msgs/FpaEoe.h>
#include <fixposition_driver_msgs/FpaGnssant.h>
#include <fixposition_driver_msgs/FpaGnsscorr.h>
#include <fixposition_driver_msgs/FpaImu.h>
#include <fixposition_driver_msgs/FpaImubias.h>
#include <fixposition_driver_msgs/FpaLlh.h>
#include <fixposition_driver_msgs/FpaOdomenu.h>
Expand Down
12 changes: 8 additions & 4 deletions fixposition_driver_ros1/src/data_to_ros1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -397,16 +397,20 @@ static void FpaImuPayloadToRos(const SomeFpaImuPayload& payload, sensor_msgs::Im

void PublishFpaRawimu(const fpa::FpaRawimuPayload& payload, ros::Publisher& pub) {
if (pub.getNumSubscribers() > 0) {
sensor_msgs::Imu msg;
FpaImuPayloadToRos(payload, msg);
fixposition_driver_msgs::FpaImu msg;
FpaImuPayloadToRos(payload, msg.data);
msg.bias_comp = payload.bias_comp;
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
pub.publish(msg);
}
}

void PublishFpaCorrimu(const fpa::FpaCorrimuPayload& payload, ros::Publisher& pub) {
if (pub.getNumSubscribers() > 0) {
sensor_msgs::Imu msg;
FpaImuPayloadToRos(payload, msg);
fixposition_driver_msgs::FpaImu msg;
FpaImuPayloadToRos(payload, msg.data);
msg.bias_comp = payload.bias_comp;
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
pub.publish(msg);
}
}
Expand Down
4 changes: 2 additions & 2 deletions fixposition_driver_ros1/src/fixposition_driver_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,15 +222,15 @@ bool FixpositionDriverNode::StartNode() {

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

// FP_A-CORRIMU
if (params_.MessageEnabled(fpa::FpaCorrimuPayload::MSG_NAME)) {
_PUB(corrimu_pub_, sensor_msgs::Imu, output_ns + "/fpa/corrimu", 5);
_PUB(corrimu_pub_, fixposition_driver_msgs::FpaImu, output_ns + "/fpa/corrimu", 5);
driver_.AddFpaObserver(fpa::FpaCorrimuPayload::MSG_NAME, [this](const fpa::FpaPayload& payload) {
PublishFpaCorrimu(dynamic_cast<const fpa::FpaCorrimuPayload&>(payload), corrimu_pub_);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ void PublishFpaTp(const fpsdk::common::parser::fpa::FpaTpPayload& payload,
void PublishFpaText(const fpsdk::common::parser::fpa::FpaTextPayload& payload,
rclcpp::Publisher<fpmsgs::FpaText>::SharedPtr& pub);
void PublishFpaRawimu(const fpsdk::common::parser::fpa::FpaRawimuPayload& payload,
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub);
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub);
void PublishFpaCorrimu(const fpsdk::common::parser::fpa::FpaCorrimuPayload& payload,
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub);
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub);

bool PublishNovbBestgnsspos(const fpsdk::common::parser::novb::NovbHeader* header,
const fpsdk::common::parser::novb::NovbBestgnsspos* payload,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,9 @@ class FixpositionDriverNode {
//! Euler angles pitch-roll as estimated from the IMU in local horizontal
rclcpp::Publisher<geometry_msgs::msg::Vector3Stamped>::SharedPtr eul_imu_pub_;
// - IMU
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr rawimu_pub_; //!< Raw IMU data in IMU frame
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr corrimu_pub_; //!< Bias corrected IMU data in IMU frame
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr poiimu_pub_; //!< Bias corrected IMU data in POI frame
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr rawimu_pub_; //!< Raw IMU data in IMU frame
rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr corrimu_pub_; //!< Bias corrected IMU data in IMU frame
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr poiimu_pub_; //!< Bias corrected IMU data in POI frame
// - GNSS
rclcpp::Publisher<fpmsgs::NmeaEpoch>::SharedPtr nmea_epoch_pub_; //!< NMEA epoch data
rclcpp::Publisher<sensor_msgs::msg::NavSatFix>::SharedPtr navsatfix_gnss1_pub_; //!< GNSS1 position and status
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#include <fixposition_driver_msgs/msg/fpa_eoe.hpp>
#include <fixposition_driver_msgs/msg/fpa_gnssant.hpp>
#include <fixposition_driver_msgs/msg/fpa_gnsscorr.hpp>
#include <fixposition_driver_msgs/msg/fpa_imu.hpp>
#include <fixposition_driver_msgs/msg/fpa_imubias.hpp>
#include <fixposition_driver_msgs/msg/fpa_llh.hpp>
#include <fixposition_driver_msgs/msg/fpa_odomenu.hpp>
Expand Down
17 changes: 10 additions & 7 deletions fixposition_driver_ros2/src/data_to_ros2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -403,19 +403,22 @@ static void FpaImuPayloadToRos(const SomeFpaImuPayload& payload, sensor_msgs::ms
}
}

void PublishFpaRawimu(const fpa::FpaRawimuPayload& payload, rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub) {
void PublishFpaRawimu(const fpa::FpaRawimuPayload& payload, rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub) {
if (pub->get_subscription_count() > 0) {
sensor_msgs::msg::Imu msg;
FpaImuPayloadToRos(payload, msg);
fpmsgs::FpaImu msg;
FpaImuPayloadToRos(payload, msg.data);
msg.bias_comp = payload.bias_comp;
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
pub->publish(msg);
}
}

void PublishFpaCorrimu(const fpa::FpaCorrimuPayload& payload,
rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr& pub) {
void PublishFpaCorrimu(const fpa::FpaCorrimuPayload& payload, rclcpp::Publisher<fpmsgs::FpaImu>::SharedPtr& pub) {
if (pub->get_subscription_count() > 0) {
sensor_msgs::msg::Imu msg;
FpaImuPayloadToRos(payload, msg);
fpmsgs::FpaImu msg;
FpaImuPayloadToRos(payload, msg.data);
msg.bias_comp = payload.bias_comp;
msg.imu_status = FpaImuStatusToMsg(msg, payload.imu_status);
pub->publish(msg);
}
}
Expand Down
4 changes: 2 additions & 2 deletions fixposition_driver_ros2/src/fixposition_driver_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,15 +250,15 @@ bool FixpositionDriverNode::StartNode() {

// FP_A-RAWIMU
if (params_.MessageEnabled(fpa::FpaRawimuPayload::MSG_NAME)) {
_PUB(rawimu_pub_, sensor_msgs::msg::Imu, output_ns + "/fpa/rawimu", qos_settings_);
_PUB(rawimu_pub_, fpmsgs::FpaImu, output_ns + "/fpa/rawimu", qos_settings_);
driver_.AddFpaObserver(fpa::FpaRawimuPayload::MSG_NAME, [this](const fpa::FpaPayload& payload) {
PublishFpaRawimu(dynamic_cast<const fpa::FpaRawimuPayload&>(payload), rawimu_pub_);
});
}

// FP_A-CORRIMU
if (params_.MessageEnabled(fpa::FpaCorrimuPayload::MSG_NAME)) {
_PUB(corrimu_pub_, sensor_msgs::msg::Imu, output_ns + "/fpa/corrimu", qos_settings_);
_PUB(corrimu_pub_, fpmsgs::FpaImu, output_ns + "/fpa/corrimu", qos_settings_);
driver_.AddFpaObserver(fpa::FpaCorrimuPayload::MSG_NAME, [this](const fpa::FpaPayload& payload) {
PublishFpaCorrimu(dynamic_cast<const fpa::FpaCorrimuPayload&>(payload), corrimu_pub_);
});
Expand Down
Loading