Skip to content

Commit 7b1901e

Browse files
author
M. Fatih Cırıt
committed
use max vel instead
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
1 parent 5e98a6f commit 7b1901e

File tree

3 files changed

+32
-21
lines changed

3 files changed

+32
-21
lines changed

planning/autoware_remaining_distance_time_calculator/package.xml

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<depend>route_handler</depend>
2424
<depend>std_msgs</depend>
2525
<depend>tier4_autoware_utils</depend>
26+
<depend>tier4_planning_msgs</depend>
2627

2728
<test_depend>ament_cmake_ros</test_depend>
2829
<test_depend>ament_lint_auto</test_depend>

planning/autoware_remaining_distance_time_calculator/src/remaining_distance_time_calculator_node.cpp

+18-12
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#include <rclcpp/timer.hpp>
2222
#include <tier4_autoware_utils/geometry/geometry.hpp>
2323

24+
#include <tier4_planning_msgs/msg/velocity_limit.hpp>
25+
2426
#include <chrono>
2527
#include <functional>
2628
#include <memory>
@@ -34,7 +36,8 @@ RemainingDistanceTimeCalculatorNode::RemainingDistanceTimeCalculatorNode(
3436
const rclcpp::NodeOptions & options)
3537
: Node("remaining_distance_time_calculator", options),
3638
is_graph_ready_{false},
37-
has_received_route_{false}
39+
has_received_route_{false},
40+
velocity_limit_{99.99}
3841
{
3942
using std::placeholders::_1;
4043

@@ -49,6 +52,9 @@ RemainingDistanceTimeCalculatorNode::RemainingDistanceTimeCalculatorNode(
4952
sub_route_ = create_subscription<LaneletRoute>(
5053
"~/input/route", qos_transient_local,
5154
std::bind(&RemainingDistanceTimeCalculatorNode::on_route, this, _1));
55+
sub_planning_velocity_ = create_subscription<tier4_planning_msgs::msg::VelocityLimit>(
56+
"/planning/scenario_planning/current_max_velocity", qos_transient_local,
57+
std::bind(&RemainingDistanceTimeCalculatorNode::on_velocity_limit, this, _1));
5258

5359
pub_mission_remaining_distance_time_ = create_publisher<MissionRemainingDistanceTime>(
5460
"~/output/mission_remaining_distance_time",
@@ -84,6 +90,15 @@ void RemainingDistanceTimeCalculatorNode::on_route(const LaneletRoute::ConstShar
8490
has_received_route_ = true;
8591
}
8692

93+
void RemainingDistanceTimeCalculatorNode::on_velocity_limit(
94+
const VelocityLimit::ConstSharedPtr& msg)
95+
{
96+
// store the velocity for releasing the stop
97+
if (msg->max_velocity > 1e-5) {
98+
velocity_limit_ = msg->max_velocity;
99+
}
100+
}
101+
87102
void RemainingDistanceTimeCalculatorNode::on_timer()
88103
{
89104
if (is_graph_ready_ && has_received_route_) {
@@ -121,6 +136,7 @@ double RemainingDistanceTimeCalculatorNode::calculate_remaining_distance() const
121136
lanelet::ArcCoordinates arc_coord =
122137
lanelet::utils::getArcCoordinates({llt}, current_vehicle_pose_);
123138
double this_lanelet_length = lanelet::utils::getLaneletLength2d(llt);
139+
124140
remaining_distance += this_lanelet_length - arc_coord.length;
125141
} else if (index == (remaining_shortest_path.size() - 1)) {
126142
lanelet::ArcCoordinates arc_coord = lanelet::utils::getArcCoordinates({llt}, goal_pose_);
@@ -138,17 +154,7 @@ double RemainingDistanceTimeCalculatorNode::calculate_remaining_distance() const
138154
double RemainingDistanceTimeCalculatorNode::calculate_remaining_time(
139155
const double remaining_distance) const
140156
{
141-
double current_velocity_norm = std::sqrt(
142-
current_vehicle_velocity_.x * current_vehicle_velocity_.x +
143-
current_vehicle_velocity_.y * current_vehicle_velocity_.y);
144-
145-
if (remaining_distance < 0.01 || current_velocity_norm < 0.01) {
146-
return 0.0;
147-
}
148-
149-
double remaining_time = remaining_distance / current_velocity_norm;
150-
151-
return remaining_time;
157+
return remaining_distance / velocity_limit_;
152158
}
153159

154160
void RemainingDistanceTimeCalculatorNode::publish_mission_remaining_distance_time(

planning/autoware_remaining_distance_time_calculator/src/remaining_distance_time_calculator_node.hpp

+13-9
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <geometry_msgs/msg/pose.hpp>
2525
#include <geometry_msgs/msg/vector3.hpp>
2626
#include <nav_msgs/msg/odometry.hpp>
27+
#include <tier4_planning_msgs/msg/velocity_limit.hpp>
2728

2829
#include <lanelet2_core/Forward.h>
2930
#include <lanelet2_core/utility/Optional.h>
@@ -36,12 +37,6 @@
3637

3738
namespace autoware::remaining_distance_time_calculator
3839
{
39-
using autoware_auto_mapping_msgs::msg::HADMapBin;
40-
using autoware_internal_msgs::msg::MissionRemainingDistanceTime;
41-
using autoware_planning_msgs::msg::LaneletRoute;
42-
using geometry_msgs::msg::Pose;
43-
using geometry_msgs::msg::Vector3;
44-
using nav_msgs::msg::Odometry;
4540

4641
struct NodeParam
4742
{
@@ -54,9 +49,16 @@ class RemainingDistanceTimeCalculatorNode : public rclcpp::Node
5449
explicit RemainingDistanceTimeCalculatorNode(const rclcpp::NodeOptions & options);
5550

5651
private:
52+
using LaneletRoute = autoware_planning_msgs::msg::LaneletRoute;
53+
using HADMapBin = autoware_auto_mapping_msgs::msg::HADMapBin;
54+
using Odometry = nav_msgs::msg::Odometry;
55+
using VelocityLimit = tier4_planning_msgs::msg::VelocityLimit;
56+
using MissionRemainingDistanceTime = autoware_internal_msgs::msg::MissionRemainingDistanceTime;
57+
5758
rclcpp::Subscription<LaneletRoute>::SharedPtr sub_route_;
5859
rclcpp::Subscription<HADMapBin>::SharedPtr sub_map_;
5960
rclcpp::Subscription<Odometry>::SharedPtr sub_odometry_;
61+
rclcpp::Subscription<VelocityLimit>::SharedPtr sub_planning_velocity_;
6062

6163
rclcpp::Publisher<MissionRemainingDistanceTime>::SharedPtr pub_mission_remaining_distance_time_;
6264

@@ -70,10 +72,11 @@ class RemainingDistanceTimeCalculatorNode : public rclcpp::Node
7072
bool is_graph_ready_;
7173

7274
// Data Buffer
73-
Pose current_vehicle_pose_;
74-
Vector3 current_vehicle_velocity_;
75-
Pose goal_pose_;
75+
geometry_msgs::msg::Pose current_vehicle_pose_;
76+
geometry_msgs::msg::Vector3 current_vehicle_velocity_;
77+
geometry_msgs::msg::Pose goal_pose_;
7678
bool has_received_route_;
79+
double velocity_limit_;
7780

7881
// Parameter
7982
NodeParam node_param_;
@@ -83,6 +86,7 @@ class RemainingDistanceTimeCalculatorNode : public rclcpp::Node
8386
void on_odometry(const Odometry::ConstSharedPtr & msg);
8487
void on_route(const LaneletRoute::ConstSharedPtr & msg);
8588
void on_map(const HADMapBin::ConstSharedPtr & msg);
89+
void on_velocity_limit(const VelocityLimit::ConstSharedPtr& msg);
8690

8791
/**
8892
* @brief calculate mission remaining distance

0 commit comments

Comments
 (0)