16 #ifndef APPLICATION__ROS__NODE__EKF_CAL_NODE_HPP_
17 #define APPLICATION__ROS__NODE__EKF_CAL_NODE_HPP_
25 #include <rclcpp/rclcpp.hpp>
26 #include <sensor_msgs/msg/image.hpp>
27 #include <sensor_msgs/msg/imu.hpp>
28 #include <sensor_msgs/msg/nav_sat_fix.hpp>
29 #include <std_msgs/msg/float64_multi_array.hpp>
31 #include "ekf/ekf.hpp"
32 #include "infrastructure/data_logger.hpp"
33 #include "infrastructure/debug_logger.hpp"
34 #include "sensors/camera.hpp"
35 #include "sensors/gps.hpp"
36 #include "sensors/imu.hpp"
37 #include "sensors/ros/ros_camera.hpp"
38 #include "sensors/ros/ros_gps.hpp"
39 #include "sensors/ros/ros_imu.hpp"
40 #include "trackers/feature_tracker.hpp"
79 const std::string & prefix,
80 const std::string & name
87 void LoadImu(
const std::string & imu_name);
93 void LoadCamera(
const std::string & camera_name);
99 void LoadGps(
const std::string & gps_name);
200 void ImuCallback(
const sensor_msgs::msg::Imu::SharedPtr msg,
unsigned int id);
207 void CameraCallback(
const sensor_msgs::msg::Image::SharedPtr msg,
unsigned int id);
214 void GpsCallback(
const sensor_msgs::msg::NavSatFix::SharedPtr msg,
unsigned int id);
221 void RegisterImu(std::shared_ptr<RosIMU> imu_ptr,
const std::string & topic);
228 void RegisterCamera(std::shared_ptr<RosCamera> camera_ptr,
const std::string & topic);
235 void RegisterGps(std::shared_ptr<RosGPS> gps_ptr,
const std::string & topic);
244 std::vector<rclcpp::Subscription<sensor_msgs::msg::Imu>::SharedPtr> m_imu_subs;
247 std::vector<rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr> m_camera_subs;
250 std::vector<rclcpp::Subscription<sensor_msgs::msg::NavSatFix>::SharedPtr> m_gps_subs;
252 std::vector<std::string> m_imu_list {};
253 std::vector<std::string> m_camera_list {};
254 std::vector<std::string> m_tracker_list {};
255 std::vector<std::string> m_fiducial_list {};
256 std::vector<std::string> m_gps_list {};
258 rclcpp::Publisher<std_msgs::msg::Float64MultiArray>::SharedPtr m_body_state_pub;
259 rclcpp::Publisher<std_msgs::msg::Float64MultiArray>::SharedPtr m_imu_state_pub;
260 rclcpp::TimerBase::SharedPtr m_state_pub_timer;
262 std::shared_ptr<EKF> m_ekf;
263 std::shared_ptr<DebugLogger> m_debug_logger;
266 std::map<unsigned int, std::shared_ptr<RosIMU>> m_map_imu{};
267 std::map<unsigned int, std::shared_ptr<RosCamera>> m_map_camera{};
268 std::map<unsigned int, std::shared_ptr<RosGPS>> m_map_gps{};
269 std::map<
unsigned int,
270 std::shared_ptr<rclcpp::Publisher<sensor_msgs::msg::Image>>> m_map_image_publishers{};
272 std::string m_log_directory{
"~/log/"};
DataLogger class.
Definition: data_logger.hpp:26
A ROS2 node for EKF-based sensor calibration.
Definition: ekf_cal_node.hpp:54
void DeclareCameraParameters(const std::string &camera_name)
Declare camera parameters.
Definition: ekf_cal_node.cpp:290
void DeclareTrackerParameters(const std::string &tracker_name)
Declare tracker parameters.
Definition: ekf_cal_node.cpp:334
void LoadGps(const std::string &gps_name)
Load GPS sensor.
Definition: ekf_cal_node.cpp:533
void DeclareSensorParameters(const std::string &sensor_name)
Declare generic sensor parameters.
Definition: ekf_cal_node.cpp:164
void DeclareSensors()
Declare parameters for all sensors.
Definition: ekf_cal_node.cpp:145
Camera::Parameters GetCameraParameters(const std::string &camera_name)
Function for loading camera parameters.
Definition: ekf_cal_node.cpp:306
FiducialTracker::Parameters GetFiducialParameters(const std::string &fiducial_name)
Load fiducial parameters.
Definition: ekf_cal_node.cpp:400
void PublishState()
State publisher callback.
Definition: ekf_cal_node.cpp:595
void DeclareIntrinsicParameters(const std::string &intrinsics_prefix)
Declare camera intrinsic parameters.
Definition: ekf_cal_node.cpp:260
void CameraCallback(const sensor_msgs::msg::Image::SharedPtr msg, unsigned int id)
Callback method for Camera sensor messages.
Definition: ekf_cal_node.cpp:570
void RegisterGps(std::shared_ptr< RosGPS > gps_ptr, const std::string &topic)
Register GPS sensor.
Definition: ekf_cal_node.cpp:544
void LoadSensors()
Load lists of sensors.
Definition: ekf_cal_node.cpp:186
void ImuCallback(const sensor_msgs::msg::Imu::SharedPtr msg, unsigned int id)
Callback method for IMU sensor messages.
Definition: ekf_cal_node.cpp:558
void RegisterCamera(std::shared_ptr< RosCamera > camera_ptr, const std::string &topic)
Register camera sensor.
Definition: ekf_cal_node.cpp:519
IMU::Parameters GetImuParameters(const std::string &imu_name)
Function for loading IMU parameters.
Definition: ekf_cal_node.cpp:227
void DeclareGpsParameters(const std::string &gps_name)
Declare GPS parameters.
Definition: ekf_cal_node.cpp:436
GPS::Parameters GetGpsParameters(const std::string &gps_name)
Function for loading camera parameters.
Definition: ekf_cal_node.cpp:446
void LoadImu(const std::string &imu_name)
Load IMU sensor.
Definition: ekf_cal_node.cpp:462
void LoadSensorParameters(Sensor::Parameters ¶ms, const std::string &prefix, const std::string &name)
Load sensor common parameters.
Definition: ekf_cal_node.cpp:171
void DeclareFiducialParameters(const std::string &fid_name)
Declare fiducial parameters.
Definition: ekf_cal_node.cpp:382
Intrinsics GetIntrinsicParameters(const std::string &intrinsics_prefix)
Load camera intrinsic parameters.
Definition: ekf_cal_node.cpp:273
EkfCalNode()
Constructor for the Calibration EKF Node.
Definition: ekf_cal_node.cpp:54
void GpsCallback(const sensor_msgs::msg::NavSatFix::SharedPtr msg, unsigned int id)
Callback method for GPS sensor messages.
Definition: ekf_cal_node.cpp:583
void LoadCamera(const std::string &camera_name)
Load camera sensor.
Definition: ekf_cal_node.cpp:488
void Initialize()
Initialize EKF calibration node.
Definition: ekf_cal_node.cpp:92
Eigen::VectorXd LoadProcessNoise()
Load process noise.
Definition: ekf_cal_node.cpp:622
void DeclareImuParameters(const std::string &imu_name)
Declare IMU parameters.
Definition: ekf_cal_node.cpp:208
FeatureTracker::Parameters GetTrackerParameters(const std::string &tracker_name)
Load tracker parameters.
Definition: ekf_cal_node.cpp:350
void RegisterImu(std::shared_ptr< RosIMU > imu_ptr, const std::string &topic)
Register IMU sensor.
Definition: ekf_cal_node.cpp:473
Camera intrinsics data structure.
Definition: types.hpp:49
Camera initialization parameters structure.
Definition: camera.hpp:47
Feature Tracker Initialization parameters structure.
Definition: feature_tracker.hpp:75
Feature Tracker Initialization parameters structure.
Definition: fiducial_tracker.hpp:54
GPS initialization parameters structure.
Definition: gps.hpp:42
IMU initialization parameters structure.
Definition: imu.hpp:39
Sensor parameter structure.
Definition: sensor.hpp:38