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

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

#include <neolix_edu_vehicle_factory.h>

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

Public 成员函数

virtual ~Neolix_eduVehicleFactory ()=default
 destructor
 
bool Init (const CanbusConf *canbus_conf) override
 init vehicle factory
 
bool Start () override
 start canclient, cansender, canreceiver, vehicle controller
 
void Stop () override
 create ch 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 neolix_edu vehicle.

在文件 neolix_edu_vehicle_factory.h54 行定义.

构造及析构函数说明

◆ ~Neolix_eduVehicleFactory()

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

destructor

成员函数说明

◆ AddSendProtocol()

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

add the can sender messages

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc182 行定义.

182 {
183 vehicle_controller_->AddSendMessage();
184}

◆ CheckChassisCommunicationFault()

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

check chassis can receiver lost

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc175 行定义.

175 {
176 if (vehicle_controller_->CheckChassisCommunicationError()) {
177 return true;
178 }
179 return false;
180}

◆ ClearSendProtocol()

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

clear the can sender messages

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc186 行定义.

186 {
187 can_sender_.ClearMessage();
188}

◆ Driving_Mode()

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

get the latest chassis driving mode

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc197 行定义.

197 {
198 return vehicle_controller_->driving_mode();
199}

◆ Init()

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

init vehicle factory

返回
true if successfully initialized

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_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_ = node_->CreateWriter<::apollo::canbus::Neolix_edu>(
84 FLAGS_chassis_detail_topic);
85
86 chassis_detail_sender_writer_ =
87 node_->CreateWriter<::apollo::canbus::Neolix_edu>(
88 FLAGS_chassis_detail_sender_topic);
89
90 return true;
91}
#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::Neolix_eduVehicleFactory::IsSendProtocolClear ( )
overridevirtual

check the sender message clear or not

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc190 行定义.

190 {
191 if (can_sender_.IsMessageClear()) {
192 return true;
193 }
194 return false;
195}

◆ publish_chassis()

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

publish chassis messages

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_vehicle_factory.cc151 行定义.

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

◆ PublishChassisDetail()

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

publish chassis for vehicle messages

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_vehicle_factory.cc157 行定义.

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

◆ PublishChassisDetailSender()

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

publish chassis for apollo sender messages

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc163 行定义.

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

◆ Start()

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

start canclient, cansender, canreceiver, vehicle controller

返回
true if successfully started

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_vehicle_factory.cc93 行定义.

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

◆ Stop()

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

create ch vehicle controller

返回
a unique_ptr that points to the created controller

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_vehicle_factory.cc123 行定义.

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

◆ UpdateCommand() [1/2]

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

update control command

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_vehicle_factory.cc131 行定义.

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

◆ UpdateCommand() [2/2]

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

update chassis command

实现了 apollo::canbus::AbstractVehicleFactory.

在文件 neolix_edu_vehicle_factory.cc141 行定义.

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

◆ UpdateHeartbeat()

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

create cansender heartbeat

重载 apollo::canbus::AbstractVehicleFactory .

在文件 neolix_edu_vehicle_factory.cc171 行定义.

171 {
172 can_sender_.Update_Heartbeat();
173}

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