Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
2dfc051
Added dual ukf for local and global localization
midemig Jan 20, 2026
1f5ca1b
Several bugs fixed. Now it correctly integrates GPS measurements to t…
midemig Feb 10, 2026
767a07b
fixed odom topic
midemig Feb 16, 2026
769626a
Merge branch 'EasyNavigation:rolling' into rolling
midemig Feb 16, 2026
e8c428e
Merge branch 'EasyNavigation:rolling' into rolling
midemig Feb 20, 2026
d7cf00b
Call set pose srvc for first pose for fastest convergence. Updated pa…
midemig Feb 23, 2026
f1215fc
Merge branch 'rolling' of github.com:midemig/easynav_plugins into rol…
midemig Feb 23, 2026
8b2d7f7
Uncrustify changes
midemig Feb 23, 2026
350bb8b
Initialization considers IMU orientation
midemig Feb 24, 2026
34aef9f
Added simple configuration to launch full demo
midemig Feb 25, 2026
1007953
Fix segfault in some cases and reduce extrapolation to the future
fmrico Mar 2, 2026
13a55fe
params updated
midemig Mar 5, 2026
6a0f0f2
Added default path for route if not specified
midemig Mar 11, 2026
b75fcc4
Only starts filter if params are found
midemig Mar 13, 2026
f2bfb9b
Uncrustify changes
midemig Mar 13, 2026
1a70c12
Added config file for gazebo smulation demo
midemig Mar 13, 2026
21d8538
Merge pull request #54 from EasyNavigation/fix_seg
fmrico Mar 22, 2026
c45bd3e
Merge pull request #57 from midemig/savemap_default
fmrico Mar 22, 2026
af06ef8
Merge pull request #58 from midemig/rolling
fmrico Mar 22, 2026
2d0b6d7
Update plugins to new sensors API
Butakus Mar 31, 2026
21bef9d
Adaptations to #94
fmrico Apr 3, 2026
cca59aa
Remove group points in tests
fmrico Apr 3, 2026
7cb2969
Merge pull request #61 from Butakus/rolling
fmrico Apr 3, 2026
7ddb356
Reset pose from RViz2 for every localizer
fmrico Apr 20, 2026
ece07a7
Update README.md for all localizers
fmrico Apr 20, 2026
fe3e2b6
fix: add gnss group to gps config and ge_group has group to meet new …
midemig Apr 23, 2026
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
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

#include "easynav_core/ControllerMethodBase.hpp"
#include "easynav_common/types/NavState.hpp"
#include "easynav_common/types/PointPerception.hpp"
#include "easynav_sensors/types/PointPerception.hpp"

#include "easynav_mpc_controller/MPCOptimizer.hpp"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,9 @@ MPCController::update_rt(NavState & nav_state)
}
}

if (!nav_state.has("path") || !nav_state.has("robot_pose") || !nav_state.has("points")) {
const auto & perceptions = nav_state.get_no_group<PointPerception>();

if (!nav_state.has("path") || !nav_state.has("robot_pose") || perceptions.empty()) {
if(verbose_) {
std::cout << "No Path, No Points or No Robot Pose" << std::endl;
}
Expand Down Expand Up @@ -208,8 +210,6 @@ MPCController::update_rt(NavState & nav_state)
local_horizon = num_elements - 1;
}
const auto & last_pose = path.poses[local_horizon].pose.position;

const auto & perceptions = nav_state.get<PointPerceptions>("points");
const auto & tf_info = RTTFBuffer::getInstance()->get_tf_info();

const auto & filtered = PointPerceptionsOpsView(perceptions)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
/// \brief Implementation of the MPPIController class.

#include "easynav_mppi_controller/MPPIController.hpp"
#include "easynav_common/types/PointPerception.hpp"
#include "easynav_sensors/types/PointPerception.hpp"
#include "easynav_common/RTTFBuffer.hpp"

#include "easynav_system/GoalManager.hpp"
Expand Down Expand Up @@ -182,7 +182,7 @@ MPPIController::update_rt(NavState & nav_state)
}

const auto & pose = nav_state.get<nav_msgs::msg::Odometry>("robot_pose").pose.pose;
const auto & perceptions = nav_state.get<PointPerceptions>("points");
const auto & perceptions = nav_state.get_no_group<PointPerception>();
const auto & tf_info = RTTFBuffer::getInstance()->get_tf_info();
const auto & filtered = PointPerceptionsOpsView(perceptions)
.filter({-1.0, -1.0, -1.0}, {1.0, 1.0, 1.0})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include "tf2/utils.hpp"
#include "tf2_geometry_msgs/tf2_geometry_msgs.hpp"

#include "easynav_common/types/PointPerception.hpp"
#include "easynav_sensors/types/PointPerception.hpp"
#include "easynav_common/RTTFBuffer.hpp"

#include "easynav_serest_controller/SerestController.hpp"
Expand Down Expand Up @@ -295,9 +295,9 @@ SerestController::closest_obstacle_distance(
}

// 2) Analyze distance sensors
if (!nav_state.has("points")) {return std::numeric_limits<double>::infinity();}
if (!nav_state.has_group("points")) {return std::numeric_limits<double>::infinity();}

const auto & perceptions = nav_state.get<PointPerceptions>("points");
const auto & perceptions = nav_state.get_no_group<PointPerception>();
const auto & tf_info = RTTFBuffer::getInstance()->get_tf_info();

auto view = PointPerceptionsOpsView(perceptions);
Expand All @@ -309,8 +309,14 @@ SerestController::closest_obstacle_distance(
.downsample(0.3);
const auto & fused = view.as_points();

if (last_input_ts_ < view.get_latest_stamp()) {
last_input_ts_ = view.get_latest_stamp();
{
const auto view_latest = view.get_latest_stamp();
const rclcpp::Time view_latest_same_clock(
view_latest.nanoseconds(),
last_input_ts_.get_clock_type());
if (last_input_ts_ < view_latest_same_clock) {
last_input_ts_ = view_latest_same_clock;
}
}

double min_dist = std::numeric_limits<double>::infinity();
Expand Down Expand Up @@ -378,10 +384,10 @@ SerestController::fetch_required_inputs(
odom = nav_state.get<nav_msgs::msg::Odometry>("robot_pose");

if (rclcpp::Time(path.header.stamp, last_input_ts_.get_clock_type()) > last_input_ts_) {
last_input_ts_ = path.header.stamp;
last_input_ts_ = rclcpp::Time(path.header.stamp, last_input_ts_.get_clock_type());
}
if (rclcpp::Time(odom.header.stamp, last_input_ts_.get_clock_type()) > last_input_ts_) {
last_input_ts_ = odom.header.stamp;
last_input_ts_ = rclcpp::Time(odom.header.stamp, last_input_ts_.get_clock_type());
}

if (path.poses.empty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,10 @@ SimpleController::update_rt(NavState & nav_state)
const auto & pose = nav_state.get<nav_msgs::msg::Odometry>("robot_pose").pose.pose;
const auto & goal_pose = path.poses.back().pose;

rclcpp::Time latest_stamp = nav_state.get<nav_msgs::msg::Odometry>("robot_pose").header.stamp;
const auto clock_type = get_node()->get_clock()->get_clock_type();
rclcpp::Time latest_stamp(
nav_state.get<nav_msgs::msg::Odometry>("robot_pose").header.stamp,
clock_type);
if (rclcpp::Time(path.poses.back().header.stamp,
latest_stamp.get_clock_type()) > latest_stamp)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

#include "easynav_vff_controller/VffController.hpp"
#include "easynav_common/types/NavState.hpp"
#include "easynav_common/types/PointPerception.hpp"
#include "easynav_sensors/types/PointPerception.hpp"

#include "nav_msgs/msg/odometry.hpp"
#include "nav_msgs/msg/goals.hpp"
Expand Down Expand Up @@ -252,7 +252,7 @@ void VffController::update_rt(NavState & nav_state)
// Calculate the angle error
double angle_error = normalize_angle(bearing - yaw);

const auto & perceptions = nav_state.get<PointPerceptions>("points");
const auto & perceptions = nav_state.get_no_group<PointPerception>();

const auto & tf_info = RTTFBuffer::getInstance()->get_tf_info();
auto fused =
Expand Down
2 changes: 1 addition & 1 deletion localizers/easynav_costmap_localizer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ if(BUILD_TESTING)
ament_lint_auto_find_test_dependencies()

find_package(ament_cmake_gtest REQUIRED)
# add_subdirectory(tests)
add_subdirectory(tests)
endif()

ament_export_include_directories("include/${PROJECT_NAME}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include "tf2/LinearMath/Vector3.hpp"

#include "easynav_common/RTTFBuffer.hpp"
#include "easynav_common/types/PointPerception.hpp"
#include "easynav_sensors/types/PointPerception.hpp"
#include "easynav_costmap_common/costmap_2d.hpp"
#include "easynav_costmap_common/cost_values.hpp"

Expand Down Expand Up @@ -566,13 +566,12 @@ AMCLLocalizer::predict([[maybe_unused]] NavState & nav_state)
void
AMCLLocalizer::correct(NavState & nav_state)
{
if (!nav_state.has("points")) {
RCLCPP_WARN(get_node()->get_logger(), "There is yet no points perceptions");
const auto & perceptions = nav_state.get_no_group<PointPerception>();
if (perceptions.empty()) {
RCLCPP_WARN(get_node()->get_logger(), "There are no points perceptions");
return;
}

const auto & perceptions = nav_state.get<PointPerceptions>("points");

if (!nav_state.has("map.static")) {
RCLCPP_WARN(get_node()->get_logger(), "There is yet no a map.static map");
return;
Expand Down
Loading
Loading