controller.h
隻有這一個.h檔案,沒有源檔案
功能:實作一個Controller基類,寫了幾個虛函數聲明,沒有寫實作:
Init();
ComputeControlCommand();
Reset();
Name();
Stop()
相當于定了一個controller的模闆,當具體寫實作控制器時要重寫這幾個函數。
/******************************************************************************
* Copyright 2017 The Apollo Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*****************************************************************************/
/**
* @file
* @brief Defines the Controller base class.
*/
#pragma once
#include <memory>
#include <string>
#include "modules/common/status/status.h"
#include "modules/control/common/dependency_injector.h"
#include "modules/control/proto/control_cmd.pb.h"
#include "modules/control/proto/control_conf.pb.h"
#include "modules/localization/proto/localization.pb.h"
#include "modules/planning/proto/planning.pb.h"
/**
* @namespace apollo::control
* @brief apollo::control
*/
namespace apollo {
namespace control {
/**
* @class Controller
*
* @brief base class for all controllers.
*/
class Controller {
public:
/**
* @brief constructor
*/
Controller() = default;
/**
* @brief destructor
*/
virtual ~Controller() = default;
/**
* @brief initialize Controller
* @param control_conf control configurations
* @return Status initialization status
*/
virtual common::Status Init(std::shared_ptr<DependencyInjector> injector,
const ControlConf *control_conf) = 0;
/**
* @brief compute control command based on current vehicle status
* and target trajectory
* @param localization vehicle location
* @param chassis vehicle status e.g., speed, acceleration
* @param trajectory trajectory generated by planning
* @param cmd control command
* @return Status computation status
*/
virtual common::Status ComputeControlCommand(
const localization::LocalizationEstimate *localization,
const canbus::Chassis *chassis, const planning::ADCTrajectory *trajectory,
control::ControlCommand *cmd) = 0;
/**
* @brief reset Controller
* @return Status reset status
*/
virtual common::Status Reset() = 0;
/**
* @brief controller name
* @return string controller name in string
*/
virtual std::string Name() const = 0;
/**
* @brief stop controller
*/
virtual void Stop() = 0;
};
} // namespace control
} // namespace apollo