Robot Skill Hub by Superfast Robotics

robot_localization extended Kalman filter implementation

Official C++ Ekf library implementation for selective measurement correction and nonlinear state/covariance prediction in robot_localization. This source mutates filter state and covariance; it is not a standalone ROS node, sensor-interface implementation or verified localization task.

robot-localization-ekf | Record version: source-431331568e9cc042aca3fd06f7f70252ec9a70d32e09a47d9dccc1be678b5660

Record JSON | Markdown | Pinned upstream source

Access

Read the selected implementation, complete per-file notice, package declarations and CMake configuration before integrating the full upstream library. This source reference only retrieves one inert file; it does not provide a prepared sensor-fusion node or run a localization task.

For one verified inert file, use the installed CLI's inspect response fetch_source_args and append --project DIR --json. Source-file retrieval creates no environment and does not install or run the source.

Hub preparation adapter: false. Follow the upstream setup and invocation contract.

Source and license

Repository
https://github.com/cra-ros-pkg/robot_localization
Revision
3efa714fb9c1ff40966327b7bed7053b2570be4d
Path
src/ekf.cpp
Source SHA256
431331568e9cc042aca3fd06f7f70252ec9a70d32e09a47d9dccc1be678b5660
Source bytes
17733
Original authors
Charles River Analytics, Inc., Locus Robotics, Inc.
License
BSD-3-Clause
License scope
Selected src/ekf.cpp has a complete BSD-3-Clause notice, copyright 2014-2016 Charles River Analytics, Inc. and 2017 Locus Robotics, Inc. Preserve its copyright, conditions, disclaimer and non-endorsement requirement. Root LICENSE includes Charles River Analytics and Austin Robot Technology BSD notices, with an organization placeholder in one clause; package.xml instead declares Apache License 2.0. Verification is limited to the explicit, complete selected-file notice. It does not relicense or clear the full package, other components, dependencies or binaries.
License SHA256
not independently verified
Hub commit
734a99755f851c9bea46cdd1fce089ef3b4bfe62

Artifact

{
  "kind": "code",
  "format": "cpp"
}

Requirements

{
  "python": null,
  "packages": [
    "Complete pinned robot_localization package, rl_lib, headers and FilterBase/Measurement implementations",
    "ament_cmake",
    "builtin_interfaces",
    "rosidl_default_generators",
    "rosidl_default_runtime",
    "rosidl_typesupport_cpp",
    "rclcpp",
    "rmw_implementation",
    "angles",
    "Eigen3 / eigen",
    "Boost / libboost-dev",
    "GeographicLib / geographiclib",
    "geographic_msgs",
    "geometry_msgs",
    "diagnostic_msgs",
    "diagnostic_updater",
    "message_filters",
    "nav_msgs",
    "sensor_msgs",
    "std_msgs",
    "std_srvs",
    "tf2",
    "tf2_eigen",
    "tf2_geometry_msgs",
    "tf2_ros",
    "yaml_cpp_vendor",
    "yaml-cpp"
  ],
  "hardware": [],
  "system": [
    "Caller-provided initialized filter state, covariance, measurement/update masks and process/control settings",
    "Consistent units, frames, measurement timing and rclcpp Time/Duration values",
    "C++ toolchain and generated package interfaces required by the reviewed CMake configuration"
  ],
  "notes": "correct selects finite measured dimensions, takes the absolute value of negative covariance diagonals, floors very small diagonal variances at 1e-9, computes a Kalman gain by matrix inversion, normalizes angular innovation, applies a Mahalanobis threshold and updates state/covariance using the Joseph form. predict builds an Euler-angle transfer function and analytical Jacobian, calls inherited control preparation, optionally computes dynamic process noise, projects state/covariance and wraps state angles. It uses 1/cos(pitch); numerical conditioning and singularity behavior were not tested. These methods mutate filter internals and can emit configured debug output; this file defines no main, ROS subscriptions/publishers or physical robot command. CMake places src/ekf.cpp in rl_lib and separately builds ekf_node from another source that was not read in this bounded review. CMake selects C++17 for non-WIN32 builds. Package version 3.8.3 and ROS Index jazzy-devel metadata are declarations, not tested ROS, OS, architecture, Python or sensor compatibility. A fetched file alone is insufficient."
}

Invocation

{
  "entrypoint": "robot_localization::Ekf::predict / robot_localization::Ekf::correct (rl_lib C++ library)",
  "notes": "Library methods, not a shell command or standalone source-file executable. The selected file defines predict(const rclcpp::Time &, const rclcpp::Duration &) and correct(const Measurement &). Its complete package supplies class declarations, inherited filter state/utilities and caller integration. Reviewed CMake links rl_lib into a separate ekf_node target, but that target main and ROS filter I/O were not reviewed here. No Hub build, install or execution adapter is provided; no upstream library, ROS node, simulator or robot was compiled, loaded or run."
}

Explicit compatibility

[]

Missing environment fields remain unknown. Discovery labels do not establish robot compatibility.

Evidence

Level: source_reviewed; runtime verification: not_run.

Official ROS Index canonical repository/ref evidence, exact commit and complete tree reviewed. Complete EKF implementation, root license, package XML and CMake read as inert text; all four immutable file bodies matched tree Git blobs and sizes. Library entrypoints, mutation boundaries, declared dependencies and BSD-file/Apache-package distinction inspected. No compiler, imports, installation, ROS execution, sensor data, numerical test or physical compatibility verification.

Source review and contributor reports do not establish task completion. Preserve upstream attribution and licenses.