17#ifndef EASYNAV_MPPI_CONTROLLER__MPPIOPTIMIZER_HPP_
18#define EASYNAV_MPPI_CONTROLLER__MPPIOPTIMIZER_HPP_
24#include "geometry_msgs/msg/pose.hpp"
25#include "nav_msgs/msg/path.hpp"
26#include "pcl/point_cloud.h"
27#include "pcl/point_types.h"
63 double num_samples,
double horizon_steps,
double dt,
double lambda,
64 double max_lin_vel = 1.0,
double max_ang_vel = 1.0,
double max_lin_acc = 1.0,
65 double max_ang_acc = 1.0,
double fov = M_PI / 2.0,
double safety_radius = 0.6);
73 const geometry_msgs::msg::Pose & current_pose,
74 const nav_msgs::msg::Path & path,
75 const pcl::PointCloud<pcl::PointXYZ> & points);
79 double horizon_steps_;
87 double safety_radius_;
91 std::default_random_engine rng_;
92 std::normal_distribution<double> normal_ = std::normal_distribution<double>(0.0, 0.5);
93 std::normal_distribution<double> v_noise_ = std::normal_distribution<double>(0.0, 0.05);
94 std::normal_distribution<double> w_noise_ = std::normal_distribution<double>(0.0, 0.02);
105 const std::vector<std::pair<double, double>> & trajectory,
106 const nav_msgs::msg::Path & path,
107 double v,
double w,
double initial_yaw,
108 const pcl::PointCloud<pcl::PointXYZ> & points);
119 std::vector<std::pair<double, double>> simulate_trajectory(
120 double x,
double y,
double yaw,
121 double v,
double w,
const nav_msgs::msg::Path & path,
int steps);
130 double heading_error(
132 double target_x,
double target_y,
133 double robot_x,
double robot_y);
139 double shortest_angular_distance(
double from,
double to);
MPPIResult compute_control(const geometry_msgs::msg::Pose ¤t_pose, const nav_msgs::msg::Path &path, const pcl::PointCloud< pcl::PointXYZ > &points)
Computes the control commands using MPPI optimization.
Definition MPPIOptimizer.cpp:175
MPPIOptimizer(double num_samples, double horizon_steps, double dt, double lambda, double max_lin_vel=1.0, double max_ang_vel=1.0, double max_lin_acc=1.0, double max_ang_acc=1.0, double fov=M_PI/2.0, double safety_radius=0.6)
Constructor for MPPIOptimizer.
Definition MPPIOptimizer.cpp:12
Provides a mapping for often used cost values.
Definition cost_values.hpp:41
Result structure for MPPI optimization containing control commands and trajectories.
Definition MPPIOptimizer.hpp:34
std::vector< std::pair< double, double > > best_trajectory
Best trajectory found during optimization.
Definition MPPIOptimizer.hpp:38
double v
Linear velocity command.
Definition MPPIOptimizer.hpp:35
std::vector< std::vector< std::pair< double, double > > > all_trajectories
All sampled trajectories.
Definition MPPIOptimizer.hpp:37
double w
Angular velocity command.
Definition MPPIOptimizer.hpp:36
Definition MPPIOptimizer.hpp:42
double v
Linear velocity for this sample.
Definition MPPIOptimizer.hpp:43
double cost
Cost associated with this trajectory sample.
Definition MPPIOptimizer.hpp:45
double w
Angular velocity for this sample.
Definition MPPIOptimizer.hpp:44