Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
se_node.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <gtest/gtest_prod.h>
4
5#include <functional>
6#include <memory>
7#include <mutex>
8#include <string>
9#include <typeinfo>
10
15#include "custom_interfaces/msg/cone_array.hpp"
16#include "custom_interfaces/msg/point2d.hpp"
17#include "custom_interfaces/msg/vehicle_state.hpp"
18#include "eufs_msgs/msg/wheel_speeds_stamped.hpp"
19#include "kalman_filter/ekf.hpp"
20#include "rclcpp/rclcpp.hpp"
21#include "std_msgs/msg/float64.hpp"
22#include "visualization_msgs/msg/marker_array.hpp"
23
24class Adapter;
25
33class SENode : public rclcpp::Node {
34 rclcpp::Subscription<custom_interfaces::msg::ConeArray>::SharedPtr _perception_subscription_;
35 rclcpp::Publisher<custom_interfaces::msg::VehicleState>::SharedPtr _vehicle_state_publisher_;
36 rclcpp::Publisher<custom_interfaces::msg::VehicleState>::SharedPtr _vehicle_state_publisher_wss_;
37 rclcpp::Publisher<custom_interfaces::msg::VehicleState>::SharedPtr _vehicle_state_publisher_imu_;
38 rclcpp::Publisher<custom_interfaces::msg::ConeArray>::SharedPtr _map_publisher_;
39 rclcpp::Publisher<visualization_msgs::msg::MarkerArray>::SharedPtr _visualization_map_publisher_;
40 rclcpp::Publisher<std_msgs::msg::Float64>::SharedPtr _correction_execution_time_publisher_;
41 rclcpp::Publisher<std_msgs::msg::Float64>::SharedPtr _prediction_execution_time_publisher_;
42 rclcpp::TimerBase::SharedPtr _timer_;
43 std::shared_ptr<ExtendedKalmanFilter> _ekf_;
44 std::shared_ptr<std::vector<common_lib::structures::Cone>> _perception_map_;
45 std::shared_ptr<MotionUpdate> _motion_update_;
46 std::shared_ptr<std::vector<common_lib::structures::Cone>> _track_map_;
47 std::shared_ptr<common_lib::structures::VehicleState> _vehicle_state_;
49 rclcpp::Publisher<visualization_msgs::msg::Marker>::SharedPtr _position_publisher_;
50 rclcpp::Publisher<visualization_msgs::msg::Marker>::SharedPtr _car_model_publisher_;
51 bool _go_;
54 std::string _adapter_name_;
55 std::shared_ptr<Adapter> _adapter_;
56 std::mutex _mutex_;
57 std::shared_ptr<common_lib::car_parameters::CarParameters> _car_parameters_ = std::make_shared<common_lib::car_parameters::CarParameters>();
58
65 void _perception_subscription_callback(const custom_interfaces::msg::ConeArray& msg);
66
75 void _imu_subscription_callback(const sensor_msgs::msg::Imu& imu_msg);
76
88 void _wheel_speeds_subscription_callback(double rl_speed, double rr_speed, double fl_speed,
89 double fr_speed, double steering_angle,
90 const rclcpp::Time& timestamp);
91
100
107
114
121
126 void _publish_map();
127
132 void _ekf_step();
133
134public:
138 SENode();
139
140 friend class Adapter;
141 friend class EufsAdapter;
142 friend class FsdsAdapter;
143 friend class PacsimAdapter;
144 friend class VehicleAdapter;
145};
Class that handles the communication between the SpeedEstimation node and the other nodes in the syst...
Definition adapter.hpp:21
Adapter class to interface with the EUFS simulator.
Definition eufs.hpp:14
Adapter class to interface with the Pacsim simulator for SLAM.
Definition pacsim.hpp:17
Class representing the main speed_est node responsible for publishing the calculated vehicle state wi...
Definition se_node.hpp:33
bool _use_simulated_perception_
Definition se_node.hpp:53
rclcpp::Subscription< custom_interfaces::msg::ConeArray >::SharedPtr _perception_subscription_
Definition se_node.hpp:34
void _publish_vehicle_state_wss()
publishes the localization ('vehicle_localization') to the topic vehicle_location
Definition se_node.cpp:277
rclcpp::Publisher< visualization_msgs::msg::Marker >::SharedPtr _car_model_publisher_
Definition se_node.hpp:50
std::shared_ptr< common_lib::car_parameters::CarParameters > _car_parameters_
Mutex used to lock EKF access.
Definition se_node.hpp:57
std::shared_ptr< ExtendedKalmanFilter > _ekf_
SLAM EKF object.
Definition se_node.hpp:43
std::shared_ptr< std::vector< common_lib::structures::Cone > > _perception_map_
Definition se_node.hpp:44
rclcpp::Publisher< visualization_msgs::msg::MarkerArray >::SharedPtr _visualization_map_publisher_
Definition se_node.hpp:39
common_lib::competition_logic::Mission _mission_
Definition se_node.hpp:48
std::mutex _mutex_
Definition se_node.hpp:56
std::shared_ptr< std::vector< common_lib::structures::Cone > > _track_map_
Definition se_node.hpp:46
void _ekf_step()
executes the prediction step of the EKF
Definition se_node.cpp:403
std::string _adapter_name_
Definition se_node.hpp:54
rclcpp::Publisher< custom_interfaces::msg::VehicleState >::SharedPtr _vehicle_state_publisher_wss_
Definition se_node.hpp:36
void _wheel_speeds_subscription_callback(double rl_speed, double rr_speed, double fl_speed, double fr_speed, double steering_angle, const rclcpp::Time &timestamp)
Function to be called everytime information is received from the wheel encoders.
Definition se_node.cpp:191
SENode()
Constructor of the main node, most things are received by launch parameter.
Definition se_node.cpp:24
rclcpp::Publisher< std_msgs::msg::Float64 >::SharedPtr _prediction_execution_time_publisher_
Definition se_node.hpp:41
rclcpp::Publisher< custom_interfaces::msg::ConeArray >::SharedPtr _map_publisher_
Definition se_node.hpp:38
void _imu_subscription_callback(const sensor_msgs::msg::Imu &imu_msg)
Function to be called everytime information is received from the IMU.
Definition se_node.cpp:141
void _publish_map()
publishes the map ('track_map') to the topic track_map
Definition se_node.cpp:378
void _publish_vehicle_state_imu()
publishes the localization ('vehicle_localization') to the topic vehicle_location
Definition se_node.cpp:357
std::shared_ptr< MotionUpdate > _motion_update_
Definition se_node.hpp:45
void _update_and_publish()
Executes:
Definition se_node.cpp:415
rclcpp::TimerBase::SharedPtr _timer_
timer
Definition se_node.hpp:42
void _publish_vehicle_state()
publishes the localization ('vehicle_localization') to the topic vehicle_location
Definition se_node.cpp:252
std::shared_ptr< Adapter > _adapter_
Definition se_node.hpp:55
rclcpp::Publisher< custom_interfaces::msg::VehicleState >::SharedPtr _vehicle_state_publisher_
Definition se_node.hpp:35
rclcpp::Publisher< visualization_msgs::msg::Marker >::SharedPtr _position_publisher_
Definition se_node.hpp:49
std::shared_ptr< common_lib::structures::VehicleState > _vehicle_state_
Definition se_node.hpp:47
bool _go_
Definition se_node.hpp:51
rclcpp::Publisher< std_msgs::msg::Float64 >::SharedPtr _correction_execution_time_publisher_
Definition se_node.hpp:40
void _perception_subscription_callback(const custom_interfaces::msg::ConeArray &msg)
Callback that updates everytime information is received from the perception module.
Definition se_node.cpp:103
rclcpp::Publisher< custom_interfaces::msg::VehicleState >::SharedPtr _vehicle_state_publisher_imu_
Definition se_node.hpp:37
bool _use_odometry_
flag to start the mission
Definition se_node.hpp:52
Adapter for interfacing with the real vehicle hardware.
Definition vehicle.hpp:15