19 #ifndef SSC_INTERFACE__SSC_INTERFACE_HPP_
20 #define SSC_INTERFACE__SSC_INTERFACE_HPP_
27 #include <automotive_platform_msgs/msg/gear_command.hpp>
28 #include <automotive_platform_msgs/msg/gear_feedback.hpp>
29 #include <automotive_platform_msgs/msg/speed_mode.hpp>
30 #include <automotive_platform_msgs/msg/steering_feedback.hpp>
31 #include <automotive_platform_msgs/msg/steer_mode.hpp>
32 #include <automotive_platform_msgs/msg/turn_signal_command.hpp>
33 #include <automotive_platform_msgs/msg/velocity_accel_cov.hpp>
34 #include <autoware_auto_msgs/msg/high_level_control_command.hpp>
35 #include <autoware_auto_msgs/msg/raw_control_command.hpp>
36 #include <autoware_auto_msgs/msg/trajectory_point.hpp>
37 #include <autoware_auto_msgs/msg/vehicle_control_command.hpp>
38 #include <autoware_auto_msgs/msg/vehicle_kinematic_state.hpp>
39 #include <autoware_auto_msgs/msg/vehicle_state_command.hpp>
40 #include <autoware_auto_msgs/msg/vehicle_state_report.hpp>
41 #include <autoware_auto_msgs/srv/autonomy_mode_change.hpp>
42 #include <std_msgs/msg/bool.hpp>
44 #include <rclcpp/rclcpp.hpp>
55 using automotive_platform_msgs::msg::GearCommand;
56 using automotive_platform_msgs::msg::GearFeedback;
57 using automotive_platform_msgs::msg::SpeedMode;
58 using automotive_platform_msgs::msg::SteeringFeedback;
59 using automotive_platform_msgs::msg::SteerMode;
60 using automotive_platform_msgs::msg::TurnSignalCommand;
61 using automotive_platform_msgs::msg::VelocityAccelCov;
62 using autoware_auto_msgs::msg::HighLevelControlCommand;
63 using autoware_auto_msgs::msg::RawControlCommand;
67 using autoware_auto_msgs::msg::VehicleStateCommand;
68 using autoware_auto_msgs::srv::AutonomyModeChange;
101 void dbw_feedback(
bool8_t enabled);
104 void control_cmd_sent();
107 void state_cmd_sent();
111 void user_request(
bool8_t enable);
114 bool8_t m_first_control_cmd_sent;
115 bool8_t m_first_state_cmd_sent;
116 uint16_t m_disabled_feedback_count;
117 const uint16_t DISABLED_FEEDBACK_THRESH;
120 void disable_and_reset();
150 bool8_t update(std::chrono::nanoseconds timeout)
override;
155 bool8_t send_state_command(
const VehicleStateCommand & msg)
override;
160 bool8_t send_control_command(
const HighLevelControlCommand & msg);
165 bool8_t send_control_command(
const RawControlCommand & msg)
override;
175 bool8_t handle_mode_change_request(ModeChangeRequest::SharedPtr request)
override;
177 static void kinematic_bicycle_model(
182 rclcpp::Publisher<GearCommand>::SharedPtr m_gear_cmd_pub;
183 rclcpp::Publisher<SpeedMode>::SharedPtr m_speed_cmd_pub;
184 rclcpp::Publisher<SteerMode>::SharedPtr m_steer_cmd_pub;
185 rclcpp::Publisher<TurnSignalCommand>::SharedPtr m_turn_signal_cmd_pub;
188 rclcpp::Publisher<VehicleKinematicState>::SharedPtr m_kinematic_state_pub;
191 rclcpp::SubscriptionBase::SharedPtr m_dbw_state_sub, m_gear_feedback_sub, m_vel_accel_sub,
194 rclcpp::Logger m_logger;
200 std::unique_ptr<DbwStateMachine> m_dbw_state_machine;
205 bool m_seen_steer{
false};
206 bool m_seen_vel_accel{
false};
208 std::mutex m_vehicle_kinematic_state_mutex;
210 void on_dbw_state_report(
const std_msgs::msg::Bool::SharedPtr & msg);
211 void on_gear_report(
const GearFeedback::SharedPtr & msg);
212 void on_steer_report(
const SteeringFeedback::SharedPtr & msg);
213 void on_vel_accel_report(
const VelocityAccelCov::SharedPtr & msg);
218 #endif // SSC_INTERFACE__SSC_INTERFACE_HPP_