24constexpr const char *kFrameId =
"base_link";
46 _impl(
std::make_shared<
Impl>()) {
50 ok &=
_impl->velocity.Init(
"rt/vehicle/status/velocity_status", qos);
51 ok &=
_impl->steering.Init(
"rt/vehicle/status/steering_status", qos);
52 ok &=
_impl->control_mode.Init(
"rt/vehicle/status/control_mode", qos);
53 ok &=
_impl->gear.Init(
"rt/vehicle/status/gear_status", qos);
54 ok &=
_impl->turn_indicators.Init(
"rt/vehicle/status/turn_indicators_status", qos);
55 ok &=
_impl->hazard_lights.Init(
"rt/vehicle/status/hazard_lights_status", qos);
57 log_error(
"AutowareVehicleStatusPublisher: failed to initialise one or more report writers");
64 float longitudinal_velocity,
float lateral_velocity,
float heading_rate) {
65 auto *report =
_impl->velocity.GetMessage();
67 report->header.frame_id = kFrameId;
68 report->longitudinal_velocity = longitudinal_velocity;
69 report->lateral_velocity = lateral_velocity;
70 report->heading_rate = heading_rate;
74 auto *report =
_impl->steering.GetMessage();
78 report->steering_tire_angle =
83 auto *report =
_impl->control_mode.GetMessage();
86 case ControlMode::DATUM: \
87 report->mode = msg::ControlModeReport::DATUM; \
89 static_assert(true, "")
104 auto *report =
_impl->gear.GetMessage();
108 report->report = msg::GearReport::DATUM; \
110 static_assert(true, "")
143 auto *report =
_impl->turn_indicators.GetMessage();
158 auto *report =
_impl->hazard_lights.GetMessage();
164 std::int32_t seconds, std::uint32_t nanoseconds) {
188 ok &=
_impl->velocity.Publish();
189 ok &=
_impl->steering.Publish();
190 ok &=
_impl->control_mode.Publish();
191 ok &=
_impl->gear.Publish();
192 ok &=
_impl->turn_indicators.Publish();
193 ok &=
_impl->hazard_lights.Publish();
PublisherImpl< AutowareGearReportTraits > gear
PublisherImpl< AutowareTurnIndicatorsReportTraits > turn_indicators
PublisherImpl< AutowareSteeringReportTraits > steering
PublisherImpl< AutowareHazardLightsReportTraits > hazard_lights
PublisherImpl< AutowareVelocityReportTraits > velocity
PublisherImpl< AutowareControlModeReportTraits > control_mode
void SetSteering(float steering_tire_angle)
std::uint32_t _nanoseconds
~AutowareVehicleStatusPublisher() override
void SetTurnIndicators(TurnIndicatorsStatus status)
void SetHazardLights(bool hazard_lights_enabled)
bool Publish() override
BasePublisher interface; publishes with the last stamp given to the two-argument overload (0,...
void SetVelocity(float longitudinal_velocity, float lateral_velocity, float heading_rate)
std::shared_ptr< Impl > _impl
void SetControlMode(ControlMode mode)
AutowareVehicleStatusPublisher()
float GetSteeringOutput(const float input_angle)
Desired vehicle-input angle -> observed (actual) tire angle.
@ AUTONOMOUS_VELOCITY_ONLY
This file contains definitions of common data structures used in traffic manager.
static void log_error(Args &&... args)
Middleware-neutral QoS profile passed to IPublisherMiddleware::Init / ISubscriberMiddleware::Init whe...
static QosProfile ReliableVolatile()
RELIABLE / VOLATILE / KEEP_LAST depth 1 — the profile tier4 uses for the Autoware report publishers.
static const uint8_t ENABLE
static const uint8_t DISABLE
static const uint8_t ENABLE_LEFT
static const uint8_t DISABLE
static const uint8_t ENABLE_RIGHT