The system offers a set of modules that manage different sensors subscribing to specific topics. Available modules:
ins: inertial navigation system (IMU)legodo: legged odometrybias_lock: bias updater while the system is standingscan_matcher: LiDAR scan matcherqualysis_mt: Qualisys motion tracker
pose_topic: estimated pose topic namepose_frame_id: posetfframe nametwist_topic: estimated twist topic namepublish_pose: iftrue, publish posepublish_tf: iftrue, publishtftf_child_frame_idrepublish_sensorsinit_sensors: sensor list used to initialize the filteractive_sensors: sensor list used to update the estimationutime_history_span: maximum update temporal spansigma0: initial covariancex0: initial state
topic: module subscription topic nameroll_forward_on_receive: iftrue, update the estimation when a message is receivedpublish_head_on_message: iftrue, publish the estimation when a message is received
q_gyro: gyro measurement covarianceq_accel: accelerometer measurement covarianceq_gyro_bias: gyro bias covarianceq_accel_bias: accelerometer bias covariancenum_to_init: number of messages needed to initialize the INS modulegyro/accel_bias_initial: initial bias valuegyro/accel_bias_recalc_at_start: iftrue, recalculate bias during initializationgyro/accel_bias_update_online: iftrue, update bias onlineframe: IMUtfframe namebase_frame: basetfframe name
legodo_mode: covariance mode (STATIC_SIGMA,VAR_SIGMA,IMPACT_SIGMA,WEIGHTED_AVG,ALPHA_FILTER)stance_mode: contact-detection mode (THRESHOLD,HYSTERESIS,REGRESSION)stance_thresholdstance_hysteresis_lowstance_hysteresis_highstance_hysteresis_delay_lowstance_hysteresis_delay_highstance_alphastance_regression_beta_sizestance_regression_betar_vx: initial covariance in x directionr_vy: initial covariance in y directionr_vz: initial covariance in z directionsim: iftrue, usesensor_msgs; otherwise usepi3hat_msgs
torque_threshold: minimum knee torque to detect ground contactvelocity_threshold: maximum velocity to consider the robot standingsecondary_topic: joint-state topic namesim: iftrue, usesensor_msgs; otherwise usepi3hat_msgs
mode: correction mode (position,yaw,position_yaw)r_yaw: yaw covariancer_pxy: position covariance
mode: correction mode (linear_velocity,angular_velocity,both)r_linear: linear-velocity covariancer_chi: angular covariance
robot_name: Qualisys rigid-body namer_xyz: position covariancer_chi: orientation covariancemode: correction mode (position,yaw,position_yaw,orientation,position_orientation)
-
ROS_FrontEnd(Pronto ROS)- Constructor: reads topic names for pose, velocity and
tffrom ROS parameters; initialises filter state and covariance. initializeState: reads initial pose and velocity from parameters and sets the initial state.initializeCovariance: reads the initial covariance matrix and sets it.initializeFilter: initializes the filter once all required sensor modules are ready.areModulesInitialized: checks whether all sensors that need initialisation are ready.addSensingModule: creates data structures (maps and topics) for a sensor.InitCallback: callback to initialize a sensing module; destroys the init topic when done.callback: subscriber callback that updates the estimation from incoming data.
- Constructor: reads topic names for pose, velocity and
-
InsHandlerRos(Pronto ROS) — manages theInsModulefor the frontend.- Constructor: builds the
InsModuleand creates its topic. ProcessMessage: receives an IMU message and returns the state and covariance update.processMessageInit: processes an IMU message and returns whether initialization succeeded.
- Constructor: builds the
-
SensingModule(Pronto_Core) — virtual base class for a generic sensor.ProcessMessage(virtual): processes sensor data and returns the update.processMessageInit(virtual): handles initialization messages.
-
DualSensingModule(Pronto_Core) — virtual class for a module with two sensor inputs.ProcessMessage(virtual)processMessageInit(virtual)
-
InsModule(Pronto_Core)- Constructor: builds the inertial sensing module from the IMU configuration and IMU-to-body transformation.
ProcessMessageprocessMessageInit
