Apollo 10.0
自动驾驶开放平台
apollo::canbus::DemoVehicleFactory类 参考

this class is inherited from AbstractVehicleFactory. 更多...

#include <demo_vehicle_factory.h>

类 apollo::canbus::DemoVehicleFactory 继承关系图:
apollo::canbus::DemoVehicleFactory 的协作图:

Public 成员函数

virtual ~DemoVehicleFactory ()=default
 destructor
 
bool Init (const CanbusConf *canbus_conf) override
 init vehicle factory
 
bool Start () override
 start canclient, cansender, canreceiver, vehicle controller
 
void Stop () override
 stop canclient, cansender, canreceiver, vehicle controller
 
void UpdateCommand (const apollo::control::ControlCommand *control_command) override
 update control command
 
void UpdateCommand (const apollo::external_command::ChassisCommand *chassis_command) override
 update chassis command
 
Chassis publish_chassis () override
 publish chassis messages
 
void UpdateHeartbeat () override
 create cansender heartbeat
 
void PublishChassisDetail () override
 publish chassis for vehicle messages
 
void PublishChassisDetailSender () override
 publish chassis for apollo sender messages
 
bool CheckChassisCommunicationFault () override
 check chassis can receiver lost
 
void AddSendProtocol () override
 add the can sender messages
 
void ClearSendProtocol () override
 clear the can sender messages
 
bool IsSendProtocolClear () override
 check the sender message clear or not
 
Chassis::DrivingMode Driving_Mode () override
 get the latest chassis driving mode
 
- Public 成员函数 继承自 apollo::canbus::AbstractVehicleFactory
virtual ~AbstractVehicleFactory ()=default
 destructor
 
void SetVehicleParameter (const VehicleParameter &vehicle_paramter)
 set VehicleParameter.
 

详细描述

this class is inherited from AbstractVehicleFactory.

It can be used to create controller and message manager for demo vehicle.

在文件 demo_vehicle_factory.h54 行定义.

构造及析构函数说明

◆ ~DemoVehicleFactory()

virtual apollo::canbus::DemoVehicleFactory::~DemoVehicleFactory ( )
virtualdefault

destructor

成员函数说明

◆ AddSendProtocol()

void apollo::canbus::DemoVehicleFactory::AddSendProtocol ( )
overridevirtual

add the can sender messages

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc178 行定义.

178 {
179 vehicle_controller_->AddSendMessage();
180}

◆ CheckChassisCommunicationFault()

bool apollo::canbus::DemoVehicleFactory::CheckChassisCommunicationFault ( )
overridevirtual

check chassis can receiver lost

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc171 行定义.

171 {
172 if (vehicle_controller_->CheckChassisCommunicationError()) {
173 return true;
174 }
175 return false;
176}

◆ ClearSendProtocol()

void apollo::canbus::DemoVehicleFactory::ClearSendProtocol ( )
overridevirtual

clear the can sender messages

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc182 行定义.

182{ can_sender_.ClearMessage(); }

◆ Driving_Mode()

Chassis::DrivingMode apollo::canbus::DemoVehicleFactory::Driving_Mode ( )
overridevirtual

get the latest chassis driving mode

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc191 行定义.

191 {
192 return vehicle_controller_->driving_mode();
193}

◆ Init()

bool apollo::canbus::DemoVehicleFactory::Init ( const CanbusConf canbus_conf)
overridevirtual

init vehicle factory

返回
true if successfully initialized

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc32 行定义.

32 {
33 // Init can client
34 auto can_factory = CanClientFactory::Instance();
35 can_factory->RegisterCanClients();
36 can_client_ = can_factory->CreateCANClient(canbus_conf->can_card_parameter());
37 if (!can_client_) {
38 AERROR << "Failed to create can client.";
39 return false;
40 }
41 AINFO << "Can client is successfully created.";
42
43 message_manager_ = this->CreateMessageManager();
44 if (message_manager_ == nullptr) {
45 AERROR << "Failed to create message manager.";
46 return false;
47 }
48 AINFO << "Message manager is successfully created.";
49
50 if (can_receiver_.Init(can_client_.get(), message_manager_.get(),
51 canbus_conf->enable_receiver_log()) != ErrorCode::OK) {
52 AERROR << "Failed to init can receiver.";
53 return false;
54 }
55 AINFO << "The can receiver is successfully initialized.";
56
57 if (can_sender_.Init(can_client_.get(), message_manager_.get(),
58 canbus_conf->enable_sender_log()) != ErrorCode::OK) {
59 AERROR << "Failed to init can sender.";
60 return false;
61 }
62 AINFO << "The can sender is successfully initialized.";
63
64 vehicle_controller_ = CreateVehicleController();
65 if (vehicle_controller_ == nullptr) {
66 AERROR << "Failed to create vehicle controller.";
67 return false;
68 }
69 AINFO << "The vehicle controller is successfully created.";
70
71 if (vehicle_controller_->Init(canbus_conf->vehicle_parameter(), &can_sender_,
72 message_manager_.get()) != ErrorCode::OK) {
73 AERROR << "Failed to init vehicle controller.";
74 return false;
75 }
76
77 AINFO << "The vehicle controller is successfully"
78 << " initialized with canbus conf as : "
79 << canbus_conf->vehicle_parameter().ShortDebugString();
80
81 node_ = ::apollo::cyber::CreateNode("chassis_detail");
82
83 chassis_detail_writer_ =
84 node_->CreateWriter<::apollo::canbus::Demo>(FLAGS_chassis_detail_topic);
85
86 chassis_detail_sender_writer_ = node_->CreateWriter<::apollo::canbus::Demo>(
87 FLAGS_chassis_detail_sender_topic);
88
89 return true;
90}
#define AERROR
Definition log.h:44
#define AINFO
Definition log.h:42
std::unique_ptr< Node > CreateNode(const std::string &node_name, const std::string &name_space)
Definition cyber.cc:33

◆ IsSendProtocolClear()

bool apollo::canbus::DemoVehicleFactory::IsSendProtocolClear ( )
overridevirtual

check the sender message clear or not

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc184 行定义.

184 {
185 if (can_sender_.IsMessageClear()) {
186 return true;
187 }
188 return false;
189}

◆ publish_chassis()

Chassis apollo::canbus::DemoVehicleFactory::publish_chassis ( )
overridevirtual

publish chassis messages

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc150 行定义.

150 {
151 Chassis chassis = vehicle_controller_->chassis();
152 ADEBUG << chassis.ShortDebugString();
153 return chassis;
154}
#define ADEBUG
Definition log.h:41

◆ PublishChassisDetail()

void apollo::canbus::DemoVehicleFactory::PublishChassisDetail ( )
overridevirtual

publish chassis for vehicle messages

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc156 行定义.

156 {
157 Demo chassis_detail = vehicle_controller_->GetNewRecvChassisDetail();
158 ADEBUG << "latest chassis_detail is " << chassis_detail.ShortDebugString();
159 chassis_detail_writer_->Write(chassis_detail);
160}

◆ PublishChassisDetailSender()

void apollo::canbus::DemoVehicleFactory::PublishChassisDetailSender ( )
overridevirtual

publish chassis for apollo sender messages

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc162 行定义.

162 {
163 Demo sender_chassis_detail = vehicle_controller_->GetNewSenderChassisDetail();
164 ADEBUG << "latest sender_chassis_detail is "
165 << sender_chassis_detail.ShortDebugString();
166 chassis_detail_sender_writer_->Write(sender_chassis_detail);
167}

◆ Start()

bool apollo::canbus::DemoVehicleFactory::Start ( )
overridevirtual

start canclient, cansender, canreceiver, vehicle controller

返回
true if successfully started

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc92 行定义.

92 {
93 // 1. init and start the can card hardware
94 if (can_client_->Start() != ErrorCode::OK) {
95 AERROR << "Failed to start can client";
96 return false;
97 }
98 AINFO << "Can client is started.";
99
100 // 2. start receive first then send
101 if (can_receiver_.Start() != ErrorCode::OK) {
102 AERROR << "Failed to start can receiver.";
103 return false;
104 }
105 AINFO << "Can receiver is started.";
106
107 // 3. start send
108 if (can_sender_.Start() != ErrorCode::OK) {
109 AERROR << "Failed to start can sender.";
110 return false;
111 }
112
113 // 4. start controller
114 if (!vehicle_controller_->Start()) {
115 AERROR << "Failed to start vehicle controller.";
116 return false;
117 }
118
119 return true;
120}

◆ Stop()

void apollo::canbus::DemoVehicleFactory::Stop ( )
overridevirtual

stop canclient, cansender, canreceiver, vehicle controller

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc122 行定义.

122 {
123 can_sender_.Stop();
124 can_receiver_.Stop();
125 can_client_->Stop();
126 vehicle_controller_->Stop();
127 AINFO << "Cleanup cansender, canreceiver, canclient, vehicle controller.";
128}

◆ UpdateCommand() [1/2]

void apollo::canbus::DemoVehicleFactory::UpdateCommand ( const apollo::control::ControlCommand control_command)
overridevirtual

update control command

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc130 行定义.

131 {
132 if (vehicle_controller_->Update(*control_command) != ErrorCode::OK) {
133 AERROR << "Failed to process callback function OnControlCommand because "
134 "vehicle_controller_->Update error.";
135 return;
136 }
137 can_sender_.Update();
138}

◆ UpdateCommand() [2/2]

void apollo::canbus::DemoVehicleFactory::UpdateCommand ( const apollo::external_command::ChassisCommand chassis_command)
overridevirtual

update chassis command

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 demo_vehicle_factory.cc140 行定义.

141 {
142 if (vehicle_controller_->Update(*chassis_command) != ErrorCode::OK) {
143 AERROR << "Failed to process callback function OnControlCommand because "
144 "vehicle_controller_->Update error.";
145 return;
146 }
147 can_sender_.Update();
148}

◆ UpdateHeartbeat()

void apollo::canbus::DemoVehicleFactory::UpdateHeartbeat ( )
overridevirtual

create cansender heartbeat

重载 apollo::canbus::AbstractVehicleFactory .

在文件 demo_vehicle_factory.cc169 行定义.

169{ can_sender_.Update_Heartbeat(); }

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