Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
SimulationAdapterNode.hpp
Go to the documentation of this file.
1 #ifndef SIMULATION_ADAPTER_NODE_HPP
2 #define SIMULATION_ADAPTER_NODE_HPP
3 
4 #include <memory>
5 #include <mutex>
6 
7 #include <rclcpp/rclcpp.hpp>
8 #include <galaxis/messages.hpp>
9 #include <galaxis/linatypes.hpp>
10 
11 // Simulation Adapter Messages
12 #include <gazebo_simulation/msg/car_state.hpp>
13 #include <gazebo_simulation/msg/set_model_pose.hpp>
14 #include <gazebo_simulation/msg/set_model_twist.hpp>
15 #include <simulation_brain_link/msg/state.hpp>
16 #include <tf2_msgs/msg/tf_message.hpp>
17 
18 #include <control/pose.hpp>
19 #include <control/control.hpp>
20 
21 #include <utils/logger.hpp>
22 
23 #include <mutex>
24 #include <atomic>
25 
26 using namespace ::galaxis::lina;
27 
28 class SimulationAdapterNode : public rclcpp::Node {
29 private:
30  std::shared_ptr<CarPose> m_carPose;
31  std::atomic<float> m_yawRate;
32  std::atomic<float> m_speedPerSecond;
33  std::atomic<bool> m_remoteControl;
34 
35  // Publishers
36  rclcpp::Publisher<gazebo_simulation::msg::SetModelPose>::SharedPtr m_simulationCarRealStatePubSPtr;
37 
38  //Subscribers
39  rclcpp::Subscription<ControlMotionType>::SharedPtr m_controlValuesSubSPtr;
40  rclcpp::Subscription<SimulationVehicleControlType>::SharedPtr m_vehicleControlSubSPtr;
41 
42 public:
45 
46 private:
47  void simulationUpdateLoop();
48  void updatePose();
49 
50  std::mutex m_carPoseMtx;
51 
52  void vehicleControlCallback(SimulationVehicleControlType::SharedPtr msg);
53 };
54 
55 #endif // SIMULATION_ADAPTER_NODE_HPP
SimulationAdapterNode
Definition: SimulationAdapterNode.hpp:28
SimulationAdapterNode::m_controlValuesSubSPtr
rclcpp::Subscription< ControlMotionType >::SharedPtr m_controlValuesSubSPtr
Definition: SimulationAdapterNode.hpp:39
SimulationAdapterNode::SimulationAdapterNode
SimulationAdapterNode()
Definition: SimulationAdapterNode.cpp:13
SimulationAdapterNode::~SimulationAdapterNode
~SimulationAdapterNode()
Definition: SimulationAdapterNode.cpp:45
pose.hpp
SimulationAdapterNode::m_carPose
std::shared_ptr< CarPose > m_carPose
Definition: SimulationAdapterNode.hpp:30
control.hpp
galaxis::lina
Definition: linatypes.hpp:11
SimulationAdapterNode::m_simulationCarRealStatePubSPtr
rclcpp::Publisher< gazebo_simulation::msg::SetModelPose >::SharedPtr m_simulationCarRealStatePubSPtr
Definition: SimulationAdapterNode.hpp:36
SimulationAdapterNode::simulationUpdateLoop
void simulationUpdateLoop()
Definition: SimulationAdapterNode.cpp:49
SimulationAdapterNode::m_carPoseMtx
std::mutex m_carPoseMtx
Definition: SimulationAdapterNode.hpp:50
SimulationAdapterNode::m_speedPerSecond
std::atomic< float > m_speedPerSecond
Definition: SimulationAdapterNode.hpp:32
SimulationAdapterNode::m_remoteControl
std::atomic< bool > m_remoteControl
Definition: SimulationAdapterNode.hpp:33
SimulationAdapterNode::m_yawRate
std::atomic< float > m_yawRate
Definition: SimulationAdapterNode.hpp:31
linatypes.hpp
logger.hpp
SimulationAdapterNode::vehicleControlCallback
void vehicleControlCallback(SimulationVehicleControlType::SharedPtr msg)
Definition: SimulationAdapterNode.cpp:92
SimulationAdapterNode::m_vehicleControlSubSPtr
rclcpp::Subscription< SimulationVehicleControlType >::SharedPtr m_vehicleControlSubSPtr
Definition: SimulationAdapterNode.hpp:40
messages.hpp
SimulationAdapterNode::updatePose
void updatePose()
Definition: SimulationAdapterNode.cpp:125