23#include "Eigen/Geometry"
25#include "modules/common_msgs/sensor_msgs/nano_radar.pb.h"
26#include "modules/drivers/canbus/proto/sensor_canbus_conf.pb.h"
47 : monitor_logger_buffer_(
53 return OnError(
"Unable to load canbus conf file: " +
ConfigFilePath());
57 ADEBUG <<
"Canbus_conf:" << nano_radar_conf_.ShortDebugString();
60 auto can_factory = CanClientFactory::Instance();
61 can_factory->RegisterCanClients();
62 can_client_ = can_factory->CreateCANClient(
65 return OnError(
"Failed to create can client.");
67 AINFO <<
"Can client is successfully created.";
71 sensor_message_manager_ = std::unique_ptr<NanoRadarMessageManager>(
73 if (sensor_message_manager_ ==
nullptr) {
74 return OnError(
"Failed to create message manager.");
76 sensor_message_manager_->set_radar_conf(nano_radar_conf_.
radar_conf());
77 sensor_message_manager_->set_can_client(can_client_);
78 AINFO <<
"Sensor message manager is successfully created.";
80 if (can_receiver_.Init(can_client_.get(), sensor_message_manager_.get(),
83 return OnError(
"Failed to init can receiver.");
85 AINFO <<
"The can receiver is successfully initialized.";
87 start_success_ = Start();
88 return start_success_;
95 sender_message.Update();
96 return can_client_->SendSingleFrame({sender_message.CanFrame()});
100 RegionConfig401 radar_config;
103 sender_message.Update();
104 return can_client_->SendSingleFrame({sender_message.CanFrame()});
107bool NanoRadarCanbusComponent::Start() {
109 if (can_client_->Start() != ErrorCode::OK) {
110 return OnError(
"Failed to start can client");
112 AINFO <<
"Can client is started.";
113 if (ConfigureRadar() != ErrorCode::OK) {
114 return OnError(
"Failed to configure radar.");
116 AINFO <<
"The radar is successfully configured.";
117 if (ConfigureRadarRegion() != ErrorCode::OK) {
118 return OnError(
"Failed to configure radar region.");
120 AINFO <<
"The radar region is successfully configured.";
122 if (can_receiver_.Start() != ErrorCode::OK) {
123 return OnError(
"Failed to start can receiver.");
125 AINFO <<
"Can receiver is started.";
128 monitor_logger_buffer_.INFO(
"Canbus is started.");
133void NanoRadarCanbusComponent::Stop() {
134 if (start_success_) {
135 can_receiver_.Stop();
141bool NanoRadarCanbusComponent::OnError(
const std::string& error_msg) {
142 monitor_logger_buffer_.ERROR(error_msg);
Defines the CanClientFactory class.
Defines SenderMessage class and CanSender class.
bool GetProtoConfig(T *config) const
const std::string & ConfigFilePath() const
std::shared_ptr< Node > node_
CanClientFactory inherites apollo::common::util::Factory.
This class defines the message to send.
NanoRadarCanbusComponent()
~NanoRadarCanbusComponent()
RadarConfig200 * set_radar_conf(RadarConf radar_conf)
The class of NanoRadarMessageManager
optional apollo::drivers::canbus::CANCardParameter can_card_parameter
optional bool enable_receiver_log
optional string radar_channel
optional RadarConf radar_conf
optional CanConf can_conf