Apollo 11.0
自动驾驶开放平台
action_command_processor.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2023 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
21#pragma once
22
23#include <memory>
24#include <string>
25
26#include "modules/common_msgs/chassis_msgs/chassis.pb.h"
27#include "modules/common_msgs/control_msgs/pad_msg.pb.h"
28#include "modules/common_msgs/external_command_msgs/action_command.pb.h"
29#include "modules/common_msgs/external_command_msgs/command_status.pb.h"
30#include "modules/common_msgs/planning_msgs/pad_msg.pb.h"
31#include "modules/external_command/command_processor/action_command_processor/proto/action_command_config.pb.h"
32
33#include "cyber/cyber.h"
36
37namespace apollo {
38namespace external_command {
39
40class MessageReader;
41class WriterHandle;
42
44 public:
45 bool Init(const std::shared_ptr<cyber::Node>& node) override;
51 bool GetCommandStatus(int64_t command_id,
52 CommandStatus* status) const override;
53
54 private:
60 void OnCommand(const std::shared_ptr<ActionCommand>& command,
61 std::shared_ptr<CommandStatus>& status);
67 void SwitchToAutoMode(const std::string& module_name);
73 void SwitchToManualMode(const std::string& module_name);
82 bool SwitchMode(const canbus::Chassis::DrivingMode& driving_mode,
83 const control::DrivingAction& driving_action,
84 const std::string& module_name);
90 void CheckScenarioFinished(const std::string& scenario_name,
91 CommandStatus* status) const;
97 void CheckModeSwitchFinished(
99 CommandStatus* status) const;
105 void UpdateModeSwitchStatus(const std::string& message, bool is_error);
106
107 std::shared_ptr<cyber::Service<ActionCommand, CommandStatus>>
108 command_service_;
109 std::shared_ptr<WriterHandle> planning_action_writer_;
110 std::shared_ptr<WriterHandle> control_action_writer_;
111
112 CommandStatus last_mode_switch_status_;
113 std::shared_ptr<ActionCommand> last_command_;
114 ActionCommandConfig special_config_;
115 MessageReader* message_reader_;
116 std::string chassis_status_name_;
117 std::string planning_status_name_;
118 std::string planning_command_status_name_;
119};
120
123
124} // namespace external_command
125} // namespace apollo
bool Init(const std::shared_ptr< cyber::Node > &node) override
bool GetCommandStatus(int64_t command_id, CommandStatus *status) const override
Get the command status.
#define CYBER_PLUGIN_MANAGER_REGISTER_PLUGIN(name, base)
class register implement
Definition arena_queue.h:37