1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //
- // Created by zx on 22-12-1.
- //
- #ifndef LIO_LIVOX_CPP_MPC_LOADED_MPC_H_
- #define LIO_LIVOX_CPP_MPC_LOADED_MPC_H_
- #include <Eigen/Core>
- #include "trajectory.h"
- #include "custom_type.h"
- class LoadedMPC {
- public:
- typedef struct {
- float shortest_radius;
- float dt;
- float acc_velocity;
- float acc_angular;
- } MPC_parameter;
- public:
- LoadedMPC(const Pose2d &obs, double obs_w, double obs_h, double min_velocity, double max_velocity);
- virtual ~LoadedMPC();
- virtual MpcError solve(Trajectory trajectory, Pose2d target, Eigen::VectorXd statu, MPC_parameter mpc_param,
- std::vector<double> &out, Trajectory &select_traj, Trajectory &optimize_trajectory);
- protected:
- /*
- * 根据当前点和轨迹,选择前方 point_num
- * point:当前点,target:目标点
- */
- static bool filte_Path(const Pose2d &point, Pose2d target,
- Trajectory trajectory, std::vector<Pose2d> &poses, int point_num = 10);
- /*
- * 根据路径点,拟合曲线
- */
- static Eigen::VectorXd fit_path(const std::vector<Pose2d> &trajectory);
- Pose2d obs_relative_pose_; //障碍物相对小车的位姿
- double min_velocity_;
- double max_velocity_;
- double obs_w_;
- double obs_h_;
- };
- #endif //LIO_LIVOX_CPP_MPC_LOADED_MPC_H_
|