Skip to content

Commit 9cd0f9f

Browse files
authored
Move nav_2d_utils to nav2_util (#5414)
* Move nav_2d_util to nav2_util Signed-off-by: mini-1235 <mauricepurnawan@gmail.com> * Rename frame Signed-off-by: mini-1235 <mauricepurnawan@gmail.com> * Replace OdomSubscriber with OdomSmoother Signed-off-by: mini-1235 <mauricepurnawan@gmail.com> * Use transformPoseInTargetFrame in all controllers Signed-off-by: mini-1235 <mauricepurnawan@gmail.com> --------- Signed-off-by: mini-1235 <mauricepurnawan@gmail.com>
1 parent c7884f5 commit 9cd0f9f

File tree

48 files changed

+122
-739
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+122
-739
lines changed

‎nav2_controller/CMakeLists.txt‎

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ find_package(nav2_common REQUIRED)
1111
find_package(nav2_costmap_2d REQUIRED)
1212
find_package(nav2_msgs REQUIRED)
1313
find_package(nav2_util REQUIRED)
14-
find_package(nav_2d_msgs REQUIRED)
15-
find_package(nav_2d_utils REQUIRED)
1614
find_package(pluginlib REQUIRED)
1715
find_package(rcl_interfaces REQUIRED)
1816
find_package(rclcpp REQUIRED)
@@ -42,9 +40,6 @@ target_link_libraries(${library_name} PUBLIC
4240
${nav2_msgs_TARGETS}
4341
nav2_util::nav2_util_core
4442
nav2_ros_common::nav2_ros_common
45-
${nav_2d_msgs_TARGETS}
46-
nav_2d_utils::conversions
47-
nav_2d_utils::tf_help
4843
pluginlib::pluginlib
4944
rclcpp::rclcpp
5045
rclcpp_lifecycle::rclcpp_lifecycle
@@ -86,7 +81,6 @@ target_link_libraries(simple_progress_checker PUBLIC
8681
)
8782
target_link_libraries(simple_progress_checker PRIVATE
8883
nav2_util::nav2_util_core
89-
nav_2d_utils::conversions
9084
pluginlib::pluginlib
9185
)
9286

@@ -107,7 +101,6 @@ target_link_libraries(pose_progress_checker PUBLIC
107101
target_link_libraries(pose_progress_checker PRIVATE
108102
angles::angles
109103
nav2_util::nav2_util_core
110-
nav_2d_utils::conversions
111104
pluginlib::pluginlib
112105
)
113106

@@ -218,8 +211,6 @@ ament_export_dependencies(
218211
nav2_costmap_2d
219212
nav2_msgs
220213
nav2_util
221-
nav_2d_msgs
222-
nav_2d_utils
223214
pluginlib
224215
rclcpp
225216
rclcpp_lifecycle

‎nav2_controller/include/nav2_controller/controller_server.hpp‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
#include "tf2_ros/transform_listener.hpp"
3030
#include "nav2_msgs/action/follow_path.hpp"
3131
#include "nav2_msgs/msg/speed_limit.hpp"
32-
#include "nav_2d_utils/odom_subscriber.hpp"
3332
#include "nav2_ros_common/lifecycle_node.hpp"
3433
#include "nav2_ros_common/simple_action_server.hpp"
3534
#include "nav2_util/robot_utils.hpp"
35+
#include "nav2_util/odometry_utils.hpp"
3636
#include "nav2_util/twist_publisher.hpp"
3737
#include "pluginlib/class_loader.hpp"
3838
#include "pluginlib/class_list_macros.hpp"
@@ -208,12 +208,12 @@ class ControllerServer : public nav2::LifecycleNode
208208
* @param Twist The current Twist from odometry
209209
* @return Twist Twist after thresholds applied
210210
*/
211-
nav_2d_msgs::msg::Twist2D getThresholdedTwist(const nav_2d_msgs::msg::Twist2D & twist)
211+
geometry_msgs::msg::Twist getThresholdedTwist(const geometry_msgs::msg::Twist & twist)
212212
{
213-
nav_2d_msgs::msg::Twist2D twist_thresh;
214-
twist_thresh.x = getThresholdedVelocity(twist.x, min_x_velocity_threshold_);
215-
twist_thresh.y = getThresholdedVelocity(twist.y, min_y_velocity_threshold_);
216-
twist_thresh.theta = getThresholdedVelocity(twist.theta, min_theta_velocity_threshold_);
213+
geometry_msgs::msg::Twist twist_thresh;
214+
twist_thresh.linear.x = getThresholdedVelocity(twist.linear.x, min_x_velocity_threshold_);
215+
twist_thresh.linear.y = getThresholdedVelocity(twist.linear.y, min_y_velocity_threshold_);
216+
twist_thresh.angular.z = getThresholdedVelocity(twist.angular.z, min_theta_velocity_threshold_);
217217
return twist_thresh;
218218
}
219219

@@ -233,7 +233,7 @@ class ControllerServer : public nav2::LifecycleNode
233233
std::unique_ptr<nav2::NodeThread> costmap_thread_;
234234

235235
// Publishers and subscribers
236-
std::unique_ptr<nav_2d_utils::OdomSubscriber> odom_sub_;
236+
std::unique_ptr<nav2_util::OdomSmoother> odom_sub_;
237237
std::unique_ptr<nav2_util::TwistPublisher> vel_publisher_;
238238
nav2::Subscription<nav2_msgs::msg::SpeedLimit>::SharedPtr speed_limit_sub_;
239239

‎nav2_controller/package.xml‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
<depend>nav2_costmap_2d</depend>
1919
<depend>nav2_msgs</depend>
2020
<depend>nav2_util</depend>
21-
<depend>nav_2d_msgs</depend>
22-
<depend>nav_2d_utils</depend>
2321
<depend>pluginlib</depend>
2422
<depend>rcl_interfaces</depend>
2523
<depend>rclcpp</depend>

‎nav2_controller/plugins/pose_progress_checker.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <memory>
1919
#include <vector>
2020
#include "angles/angles.h"
21-
#include "nav_2d_utils/conversions.hpp"
2221
#include "geometry_msgs/msg/pose_stamped.hpp"
2322
#include "geometry_msgs/msg/pose.hpp"
2423
#include "nav2_ros_common/node_utils.hpp"

‎nav2_controller/plugins/simple_progress_checker.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include <string>
1818
#include <memory>
1919
#include <vector>
20-
#include "nav_2d_utils/conversions.hpp"
2120
#include "geometry_msgs/msg/pose_stamped.hpp"
2221
#include "geometry_msgs/msg/pose.hpp"
2322
#include "nav2_ros_common/node_utils.hpp"
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ament_add_gtest(pctest progress_checker.cpp)
2-
target_link_libraries(pctest simple_progress_checker pose_progress_checker nav_2d_utils::conversions)
2+
target_link_libraries(pctest simple_progress_checker pose_progress_checker)
33

44
ament_add_gtest(gctest goal_checker.cpp)
5-
target_link_libraries(gctest simple_goal_checker stopped_goal_checker nav_2d_utils::conversions)
5+
target_link_libraries(gctest simple_goal_checker stopped_goal_checker)

‎nav2_controller/plugins/test/goal_checker.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
#include "gtest/gtest.h"
3939
#include "nav2_controller/plugins/simple_goal_checker.hpp"
4040
#include "nav2_controller/plugins/stopped_goal_checker.hpp"
41-
#include "nav_2d_utils/conversions.hpp"
4241
#include "nav2_util/geometry_utils.hpp"
4342
#include "nav2_ros_common/lifecycle_node.hpp"
4443
#include "eigen3/Eigen/Geometry"

‎nav2_controller/plugins/test/progress_checker.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
#include "gtest/gtest.h"
3939
#include "nav2_controller/plugins/simple_progress_checker.hpp"
4040
#include "nav2_controller/plugins/pose_progress_checker.hpp"
41-
#include "nav_2d_utils/conversions.hpp"
4241
#include "nav2_ros_common/lifecycle_node.hpp"
4342
#include "nav2_util/geometry_utils.hpp"
4443

‎nav2_controller/src/controller_server.cpp‎

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
#include "lifecycle_msgs/msg/state.hpp"
2323
#include "nav2_core/controller_exceptions.hpp"
24-
#include "nav_2d_utils/conversions.hpp"
25-
#include "nav_2d_utils/tf_help.hpp"
2624
#include "nav2_ros_common/node_utils.hpp"
2725
#include "nav2_util/geometry_utils.hpp"
2826
#include "nav2_controller/controller_server.hpp"
@@ -65,6 +63,9 @@ ControllerServer::ControllerServer(const rclcpp::NodeOptions & options)
6563
declare_parameter("publish_zero_velocity", rclcpp::ParameterValue(true));
6664
declare_parameter("costmap_update_timeout", 0.30); // 300ms
6765

66+
declare_parameter("odom_topic", rclcpp::ParameterValue("odom"));
67+
declare_parameter("odom_duration", rclcpp::ParameterValue(0.3));
68+
6869
// The costmap node is used in the implementation of the controller
6970
costmap_ros_ = std::make_shared<nav2_costmap_2d::Costmap2DROS>(
7071
"local_costmap", std::string{get_namespace()},
@@ -125,8 +126,11 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
125126
get_parameter("min_theta_velocity_threshold", min_theta_velocity_threshold_);
126127
RCLCPP_INFO(get_logger(), "Controller frequency set to %.4fHz", controller_frequency_);
127128

128-
std::string speed_limit_topic;
129+
std::string speed_limit_topic, odom_topic;
129130
get_parameter("speed_limit_topic", speed_limit_topic);
131+
get_parameter("odom_topic", odom_topic);
132+
double odom_duration;
133+
get_parameter("odom_duration", odom_duration);
130134
get_parameter("failure_tolerance", failure_tolerance_);
131135
get_parameter("use_realtime_priority", use_realtime_priority_);
132136
get_parameter("publish_zero_velocity", publish_zero_velocity_);
@@ -219,7 +223,7 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
219223
get_logger(),
220224
"Controller Server has %s controllers available.", controller_ids_concat_.c_str());
221225

222-
odom_sub_ = std::make_unique<nav_2d_utils::OdomSubscriber>(node);
226+
odom_sub_ = std::make_unique<nav2_util::OdomSmoother>(node, odom_duration, odom_topic);
223227
vel_publisher_ = std::make_unique<nav2_util::TwistPublisher>(node, "cmd_vel");
224228

225229
double costmap_update_timeout_dbl;
@@ -624,15 +628,15 @@ void ControllerServer::computeAndPublishVelocity()
624628
throw nav2_core::FailedToMakeProgress("Failed to make progress");
625629
}
626630

627-
nav_2d_msgs::msg::Twist2D twist = getThresholdedTwist(odom_sub_->getTwist());
631+
geometry_msgs::msg::Twist twist = getThresholdedTwist(odom_sub_->getRawTwist());
628632

629633
geometry_msgs::msg::TwistStamped cmd_vel_2d;
630634

631635
try {
632636
cmd_vel_2d =
633637
controllers_[current_controller_]->computeVelocityCommands(
634638
pose,
635-
nav_2d_utils::twist2Dto3D(twist),
639+
twist,
636640
goal_checkers_[current_goal_checker_].get());
637641
last_valid_cmd_time_ = now();
638642
cmd_vel_2d.header.frame_id = costmap_ros_->getBaseFrameID();
@@ -665,10 +669,9 @@ void ControllerServer::computeAndPublishVelocity()
665669

666670
// Find the closest pose to current pose on global path
667671
geometry_msgs::msg::PoseStamped robot_pose_in_path_frame;
668-
rclcpp::Duration tolerance(rclcpp::Duration::from_seconds(costmap_ros_->getTransformTolerance()));
669-
if (!nav_2d_utils::transformPose(
670-
costmap_ros_->getTfBuffer(), current_path_.header.frame_id, pose,
671-
robot_pose_in_path_frame, tolerance))
672+
if (!nav2_util::transformPoseInTargetFrame(
673+
pose, robot_pose_in_path_frame, *costmap_ros_->getTfBuffer(),
674+
current_path_.header.frame_id, costmap_ros_->getTransformTolerance()))
672675
{
673676
throw nav2_core::ControllerTFError("Failed to transform robot pose to path frame");
674677
}
@@ -793,14 +796,12 @@ bool ControllerServer::isGoalReached()
793796
return false;
794797
}
795798

796-
nav_2d_msgs::msg::Twist2D twist = getThresholdedTwist(odom_sub_->getTwist());
797-
geometry_msgs::msg::Twist velocity = nav_2d_utils::twist2Dto3D(twist);
799+
geometry_msgs::msg::Twist velocity = getThresholdedTwist(odom_sub_->getRawTwist());
798800

799801
geometry_msgs::msg::PoseStamped transformed_end_pose;
800-
rclcpp::Duration tolerance(rclcpp::Duration::from_seconds(costmap_ros_->getTransformTolerance()));
801-
nav_2d_utils::transformPose(
802-
costmap_ros_->getTfBuffer(), costmap_ros_->getGlobalFrameID(),
803-
end_pose_, transformed_end_pose, tolerance);
802+
nav2_util::transformPoseInTargetFrame(
803+
end_pose_, transformed_end_pose, *costmap_ros_->getTfBuffer(),
804+
costmap_ros_->getGlobalFrameID(), costmap_ros_->getTransformTolerance());
804805

805806
return goal_checkers_[current_goal_checker_]->isGoalReached(
806807
pose.pose, transformed_end_pose.pose,

‎nav2_docking/opennav_docking/include/opennav_docking/docking_server.hpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#include "nav2_ros_common/node_utils.hpp"
2828
#include "nav2_ros_common/simple_action_server.hpp"
2929
#include "nav2_util/twist_publisher.hpp"
30-
#include "nav_2d_utils/odom_subscriber.hpp"
30+
#include "nav2_util/odometry_utils.hpp"
3131
#include "opennav_docking/controller.hpp"
3232
#include "opennav_docking/utils.hpp"
3333
#include "opennav_docking/types.hpp"
@@ -264,7 +264,7 @@ class DockingServer : public nav2::LifecycleNode
264264
rclcpp::Time action_start_time_;
265265

266266
std::unique_ptr<nav2_util::TwistPublisher> vel_publisher_;
267-
std::unique_ptr<nav_2d_utils::OdomSubscriber> odom_sub_;
267+
std::unique_ptr<nav2_util::OdomSmoother> odom_sub_;
268268
typename DockingActionServer::SharedPtr docking_action_server_;
269269
typename UndockingActionServer::SharedPtr undocking_action_server_;
270270

0 commit comments

Comments
 (0)