|
15 | 15 | #include "vehicle_cmd_gate.hpp"
|
16 | 16 |
|
17 | 17 | #include "marker_helper.hpp"
|
| 18 | +#include "tier4_autoware_utils/ros/update_param.hpp" |
18 | 19 |
|
19 | 20 | #include <rclcpp/logging.hpp>
|
20 | 21 | #include <tier4_api_utils/tier4_api_utils.hpp>
|
@@ -244,6 +245,76 @@ VehicleCmdGate::VehicleCmdGate(const rclcpp::NodeOptions & node_options)
|
244 | 245 | logger_configure_ = std::make_unique<tier4_autoware_utils::LoggerLevelConfigure>(this);
|
245 | 246 |
|
246 | 247 | published_time_publisher_ = std::make_unique<tier4_autoware_utils::PublishedTimePublisher>(this);
|
| 248 | + |
| 249 | + // Parameter Callback |
| 250 | + set_param_res_ = |
| 251 | + this->add_on_set_parameters_callback(std::bind(&VehicleCmdGate::onParameter, this, _1)); |
| 252 | +} |
| 253 | + |
| 254 | +rcl_interfaces::msg::SetParametersResult VehicleCmdGate::onParameter( |
| 255 | + const std::vector<rclcpp::Parameter> & parameters) |
| 256 | +{ |
| 257 | + using tier4_autoware_utils::updateParam; |
| 258 | + // Parameter |
| 259 | + updateParam<bool>(parameters, "use_emergency_handling", use_emergency_handling_); |
| 260 | + updateParam<bool>( |
| 261 | + parameters, "check_external_emergency_heartbeat", check_external_emergency_heartbeat_); |
| 262 | + updateParam<double>( |
| 263 | + parameters, "system_emergency_heartbeat_timeout", system_emergency_heartbeat_timeout_); |
| 264 | + updateParam<double>( |
| 265 | + parameters, "external_emergency_stop_heartbeat_timeout", |
| 266 | + external_emergency_stop_heartbeat_timeout_); |
| 267 | + updateParam<double>(parameters, "stop_hold_acceleration", stop_hold_acceleration_); |
| 268 | + updateParam<double>(parameters, "emergency_acceleration", emergency_acceleration_); |
| 269 | + updateParam<double>( |
| 270 | + parameters, "moderate_stop_service_acceleration", moderate_stop_service_acceleration_); |
| 271 | + updateParam<double>(parameters, "stop_check_duration", stop_check_duration_); |
| 272 | + updateParam<bool>(parameters, "enable_cmd_limit_filter", enable_cmd_limit_filter_); |
| 273 | + updateParam<int>( |
| 274 | + parameters, "filter_activated_count_threshold", filter_activated_count_threshold_); |
| 275 | + updateParam<double>( |
| 276 | + parameters, "filter_activated_velocity_threshold", filter_activated_velocity_threshold_); |
| 277 | + |
| 278 | + // Vehicle Parameter |
| 279 | + const auto vehicle_info = vehicle_info_util::VehicleInfoUtil(*this).getVehicleInfo(); |
| 280 | + { |
| 281 | + VehicleCmdFilterParam p = filter_.getParam(); |
| 282 | + p.wheel_base = vehicle_info.wheel_base_m; |
| 283 | + updateParam<double>(parameters, "nominal.vel_lim", p.vel_lim); |
| 284 | + updateParam<std::vector<double>>( |
| 285 | + parameters, "nominal.reference_speed_points", p.reference_speed_points); |
| 286 | + updateParam<std::vector<double>>(parameters, "nominal.steer_lim", p.steer_lim); |
| 287 | + updateParam<std::vector<double>>(parameters, "nominal.steer_rate_lim", p.steer_rate_lim); |
| 288 | + updateParam<std::vector<double>>(parameters, "nominal.lon_acc_lim", p.lon_acc_lim); |
| 289 | + updateParam<std::vector<double>>(parameters, "nominal.lon_jerk_lim", p.lon_jerk_lim); |
| 290 | + updateParam<std::vector<double>>(parameters, "nominal.lat_acc_lim", p.lat_acc_lim); |
| 291 | + updateParam<std::vector<double>>(parameters, "nominal.lat_jerk_lim", p.lat_jerk_lim); |
| 292 | + updateParam<std::vector<double>>( |
| 293 | + parameters, "nominal.actual_steer_diff_lim", p.actual_steer_diff_lim); |
| 294 | + filter_.setParam(p); |
| 295 | + } |
| 296 | + |
| 297 | + { |
| 298 | + VehicleCmdFilterParam p = filter_on_transition_.getParam(); |
| 299 | + p.wheel_base = vehicle_info.wheel_base_m; |
| 300 | + updateParam<double>(parameters, "on_transition.vel_lim", p.vel_lim); |
| 301 | + updateParam<std::vector<double>>( |
| 302 | + parameters, "on_transition.reference_speed_points", p.reference_speed_points); |
| 303 | + updateParam<std::vector<double>>(parameters, "on_transition.steer_lim", p.steer_lim); |
| 304 | + updateParam<std::vector<double>>(parameters, "on_transition.steer_rate_lim", p.steer_rate_lim); |
| 305 | + updateParam<std::vector<double>>(parameters, "on_transition.lon_acc_lim", p.lon_acc_lim); |
| 306 | + updateParam<std::vector<double>>(parameters, "on_transition.lon_jerk_lim", p.lon_jerk_lim); |
| 307 | + updateParam<std::vector<double>>(parameters, "on_transition.lat_acc_lim", p.lat_acc_lim); |
| 308 | + updateParam<std::vector<double>>(parameters, "on_transition.lat_jerk_lim", p.lat_jerk_lim); |
| 309 | + updateParam<std::vector<double>>( |
| 310 | + parameters, "on_transition.actual_steer_diff_lim", p.actual_steer_diff_lim); |
| 311 | + filter_on_transition_.setParam(p); |
| 312 | + } |
| 313 | + |
| 314 | + rcl_interfaces::msg::SetParametersResult result; |
| 315 | + result.successful = true; |
| 316 | + result.reason = "success"; |
| 317 | + return result; |
247 | 318 | }
|
248 | 319 |
|
249 | 320 | bool VehicleCmdGate::isHeartbeatTimeout(
|
|
0 commit comments