25#include "modules/common_msgs/basic_msgs/geometry.pb.h"
37constexpr double EPS = 1e-8;
39constexpr float FLOAT_NAN = std::numeric_limits<float>::quiet_NaN();
57 explicit RateControl(uint64_t period_ns) : period_ns_(period_ns) {}
60 if (now - latest_ns_ > period_ns_) {
69 uint64_t latest_ns_ = 0;
76 void Add(
const uint8_t *data_start,
const uint8_t *data_end,
77 const uint8_t channel = 0) {
79 std::string &message = channel_messages_[channel];
81 message.append(
reinterpret_cast<const char *
>(data_start),
82 std::distance(data_start, data_end));
83 std::string::iterator it_s = message.begin();
84 for (
auto it = message.begin(); it != message.end(); ++it) {
85 if (*it ==
'$' || *it ==
'#') {
90 if (*it_s ==
'$' || *it_s ==
'#') {
91 message_.assign(it_s, it);
93 AERROR <<
"invalid ascii message: " << message;
98 if (it_s != message.end()) {
99 message.assign(it_s, message.end());
108 std::vector<std::string> channel_messages_{5};
109 std::string message_;
uint64_t ToNanosecond() const
convert time to nanosecond.
static Time Now()
get the current time.
const std::string & GetMessage()
void Add(const uint8_t *data_start, const uint8_t *data_end, const uint8_t channel=0)
RateControl(uint64_t period_ns)
constexpr double DEG_TO_RAD
void rfu_to_flu(double r, double f, double u, ::apollo::common::Point3D *flu)
constexpr int SECONDS_PER_WEEK
constexpr uint64_t PERIOD_NS_1HZ
constexpr double azimuth_deg_to_yaw_rad(double azimuth)
constexpr float FLOAT_NAN