Apollo 11.0
自动驾驶开放平台
apollo::control::ReplanControlTask类 参考

Publish the control debug msg. 更多...

#include <replan_control_task.h>

类 apollo::control::ReplanControlTask 继承关系图:
apollo::control::ReplanControlTask 的协作图:

Public 成员函数

 ReplanControlTask ()
 constructor
 
virtual ~ReplanControlTask ()=default
 destructor
 
common::Status Init (std::shared_ptr< DependencyInjector > injector) override
 initialize ReplanControlTask
 
common::Status ComputeControlCommand (const localization::LocalizationEstimate *localization, const canbus::Chassis *chassis, const planning::ADCTrajectory *trajectory, control::ControlCommand *cmd) override
 compute brake / throttle values based on current vehicle status and target trajectory
 
void Stop () override
 stop ReplanControlTask
 
common::Status Reset () override
 reset demo control task
 
std::string Name () const override
 ReplanControlTask name
 
- Public 成员函数 继承自 apollo::control::ControlTaskExtend
 ControlTaskExtend ()
 constructor
 
virtual ~ControlTaskExtend ()
 destructor
 
- Public 成员函数 继承自 apollo::control::ControlTask
 ControlTask ()=default
 constructor
 
virtual ~ControlTask ()=default
 destructor
 

Protected 属性

std::shared_ptr< DependencyInjector > injector_
 

额外继承的成员函数

- Protected 成员函数 继承自 apollo::control::ControlTaskExtend
template<typename T >
bool LoadParamsPipelineConfig (T *pipeline_config)
 
bool LoadCalibrationTable (const std::string &calibration_table_path, calibration_table *calibration_table_conf)
 
bool VehicleStatusIdentificationUpdate (const localization::LocalizationEstimate *localization, const canbus::Chassis *chassis, const planning::ADCTrajectory *trajectory)
 
bool IsForwardModel ()
 
bool IsEdgeFollow ()
 
bool CheckInPit (double pit_replan_check_time, double pit_replan_check_count, double vehicle_speed, bool replan)
 
bool IsLargeCurvature (const double ref_curvature, const double min_large_ref_curvature, bool *is_in_large_curvature)
 
bool IsLeftCurvature (const double ref_curvature)
 
double GetVehicleSpeed (std::shared_ptr< DependencyInjector > injector, const bool &use_filter, const double &filter_coeff)
 
double ThrottleCmdFilter (const bool &use_filter, const double &filter_coeff, const double &throttle)
 
- Protected 成员函数 继承自 apollo::control::ControlTask
template<typename T >
bool LoadConfig (T *config)
 
bool LoadCalibrationTable (calibration_table *calibration_table_conf)
 

详细描述

Publish the control debug msg.

在文件 replan_control_task.h 第 51 行定义.

构造及析构函数说明

◆ ReplanControlTask()

apollo::control::ReplanControlTask::ReplanControlTask ( )

constructor

在文件 replan_control_task.cc 第 33 行定义.

33 : name_("Replan Control Task") {
34 AINFO << "Using " << name_;
35}
#define AINFO
Definition log.h:42

◆ ~ReplanControlTask()

virtual apollo::control::ReplanControlTask::~ReplanControlTask ( )
virtualdefault

destructor

成员函数说明

◆ ComputeControlCommand()

Status apollo::control::ReplanControlTask::ComputeControlCommand ( const localization::LocalizationEstimate *  localization,
const canbus::Chassis *  chassis,
const planning::ADCTrajectory *  trajectory,
control::ControlCommand *  cmd 
)
overridevirtual

compute brake / throttle values based on current vehicle status and target trajectory

参数
localizationvehicle location
chassisvehicle status e.g., speed, acceleration
trajectorytrajectory generated by planning
cmdcontrol command
返回
Status computation status

实现了 apollo::control::ControlTask.

在文件 replan_control_task.cc 第 62 行定义.

66 {
67 auto replan_debug_info = injector_->mutable_control_debug_info()->mutable_replan_debug();
68 replan_debug_info->set_control_task_name(name_);
69 replan_debug_info->set_trajectory_replan(planning_published_trajectory->is_replan());
70
71 bool replan_request = false;
72 ReplanRequestReasonCode replan_req_reason_code;
73 std::string replan_request_reason = "";
74 if (safety_decision_reader_ != nullptr) {
75 ADEBUG << "Received safety decision data.";
76 // get safety decision
77 safety_decision_reader_->Observe();
78 const auto &safety_decision_msg = safety_decision_reader_->GetLatestObserved();
79 if (safety_decision_msg == nullptr) {
80 AERROR << "safety decision msg is not ready!";
81 } else {
82 ADEBUG << "safety_decision_msg is " << safety_decision_msg->ShortDebugString();
83 OnSafetyDecision(safety_decision_msg);
84 }
85 if (decision_.has_safety_mode_trigger_time()) {
86 ADEBUG << "Safety mode triggered, need to replan.";
87 replan_request = true;
89 replan_request_reason = "Safety function mode triggered, need to replan.";
90 }
91 } else {
92 AERROR << "safety decision reader is not ready!";
93 }
94
95 if (chassis->error_code() == Chassis::CMD_NOT_IN_PERIOD) {
96 ADEBUG << "chassis safety triggered, need to replan.";
97 replan_request = true;
99 replan_request_reason = "Chassis safety mode triggered, need to replan.";
100 }
101
102 auto control_interactive_info = injector_->mutable_control_interactive_info();
103 control_interactive_info->set_replan_request(replan_request);
104
105 if (replan_request) {
106 control_interactive_info->set_replan_req_reason_code(replan_req_reason_code);
107 control_interactive_info->set_replan_request_reason(replan_request_reason);
108 } else {
109 control_interactive_info->set_replan_req_reason_code(ReplanRequestReasonCode::NONE_REPLAN);
110 control_interactive_info->set_replan_request_reason("No triggered, do not need to replan");
111 }
112
113 replan_debug_info->set_is_need_replan(replan_request);
114
115 return Status::OK();
116}
static Status OK()
generate a success status.
Definition status.h:60
std::shared_ptr< DependencyInjector > injector_
#define ADEBUG
Definition log.h:41
#define AERROR
Definition log.h:44

◆ Init()

Status apollo::control::ReplanControlTask::Init ( std::shared_ptr< DependencyInjector >  injector)
overridevirtual

initialize ReplanControlTask

返回
Status initialization status

实现了 apollo::control::ControlTask.

在文件 replan_control_task.cc 第 37 行定义.

37 {
38 // hook: Apollo License Verification: v_apollo_park
39 injector_ = injector;
40 node_ = ::apollo::cyber::CreateNode("replan_control");
41
42 if (!ControlTask::LoadConfig<ReplanTaskConf>(&replan_task_conf_)) {
43 AERROR << "Failed to replan control task config";
44 return Status(ErrorCode::CONTROL_INIT_ERROR, "Failed to load replan control task conf");
45 }
46
47 cyber::ReaderConfig safety_decision_reader_config;
48 safety_decision_reader_config.channel_name = replan_task_conf_.guardian_decision_topic();
49 safety_decision_reader_config.pending_queue_size = replan_task_conf_.guardian_decision_msg_pending_queue_size();
50
51 safety_decision_reader_ = node_->CreateReader<SafetyDecision>(safety_decision_reader_config, nullptr);
52
53 return Status::OK();
54}
std::unique_ptr< Node > CreateNode(const std::string &node_name, const std::string &name_space)
Definition cyber.cc:33

◆ Name()

std::string apollo::control::ReplanControlTask::Name ( ) const
overridevirtual

ReplanControlTask name

返回
string controller name in string

重载 apollo::control::ControlTaskExtend .

在文件 replan_control_task.cc 第 124 行定义.

124 {
125 return name_;
126}

◆ Reset()

Status apollo::control::ReplanControlTask::Reset ( )
overridevirtual

reset demo control task

返回
Status reset status

实现了 apollo::control::ControlTask.

在文件 replan_control_task.cc 第 120 行定义.

120 {
121 return Status::OK();
122}

◆ Stop()

void apollo::control::ReplanControlTask::Stop ( )
overridevirtual

stop ReplanControlTask

实现了 apollo::control::ControlTask.

在文件 replan_control_task.cc 第 118 行定义.

118{}

类成员变量说明

◆ injector_

std::shared_ptr<DependencyInjector> apollo::control::ReplanControlTask::injector_
protected

在文件 replan_control_task.h 第 102 行定义.


该类的文档由以下文件生成: