Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
bicycle_model.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <yaml-cpp/yaml.h>
4
5#include <cmath>
6#include <rclcpp/rclcpp.hpp>
7
9
13class BicycleModel : public VehicleModel {
14public:
15 explicit BicycleModel(const std::string& config_path);
16 ~BicycleModel() override = default;
17 void step(double dt) override;
18 void reset() override;
19
20 double get_position_x() const override;
21 double get_position_y() const override;
22 double get_yaw() const override;
23 double get_velocity_x() const override;
24
25 void set_position(double x, double y, double yaw) override;
26 void set_velocity(double vx) override;
27 void set_steering(double angle) override;
28 void set_throttle(double throttle) override;
29
30 std::string get_model_name() const override;
31
32private:
33 // Kinematics parameters
34 double lr_; // Distance from CG to rear axle
35 double lf_; // Distance from CG to front axle
36 double sf_; // Track width front
37 double sr_; // Track width rear
38 double h_cg_; // Height of center of gravity
40
41 // Tire parameters
42 double Blat_;
43 double Clat_;
44 double Dlat_;
45 double Elat_;
46
47 // Aerodynamics
48 double cla_;
49 double cda_;
50 double aero_area_;
51
52 // Mass and inertia
53 double mass_;
54 double Izz_;
55
56 // Drivetrain
59
60 // State variables
61 double x_;
62 double y_;
63 double yaw_;
64 double vx_;
65
66 // Control inputs
68 double throttle_;
69};
Simple bicycle model structure.
double max_steering_angle_
std::string get_model_name() const override
void set_velocity(double vx) override
double steering_angle_
void set_position(double x, double y, double yaw) override
void step(double dt) override
double get_yaw() const override
void set_throttle(double throttle) override
void reset() override
double get_velocity_x() const override
~BicycleModel() override=default
double get_position_x() const override
void set_steering(double angle) override
double get_position_y() const override
Vehicle model interface.