core_mppi
MPPI(Model Predictive Path Integral)ローカルコントローラパッケージです。
概要
経路・オドメトリ・コストマップを入力として、メカナムベースの速度指令 /cmd_vel を出力します。
graph LR
Path["/planned_path"] --> MPPI["core_mppi_node"]
Odom["/odom"] --> MPPI
Goal["/goal_pose"] --> MPPI
Local["/costmap/local"] --> MPPI
Global["/costmap/global"] --> MPPI
MPPI --> CmdVel["/cmd_vel_raw"]
MPPI --> GoalReached["/goal_reached"]
入力
| トピック |
型 |
説明 |
/planned_path |
nav_msgs/Path |
path_plannerからの経路 |
/odom |
nav_msgs/Odometry |
現在のロボット姿勢 |
/goal_pose |
geometry_msgs/PoseStamped |
ゴール位置(behavior systemから) |
/costmap/local |
nav_msgs/OccupancyGrid |
ローカルコストマップ |
/costmap/global |
nav_msgs/OccupancyGrid |
グローバルコストマップ |
出力
| トピック |
型 |
説明 |
/cmd_vel_raw |
geometry_msgs/Twist |
速度指令(linear.x, linear.y, angular.z)。smoother有効時は /cmd_vel_raw、無効時は /cmd_vel |
/goal_reached |
std_msgs/Bool |
ゴール到達時に true を発行 |
パラメータ
設定ファイル: param/default_params.yaml
制御設定
| パラメータ |
デフォルト |
説明 |
control_rate |
20.0 |
制御ループ周波数 [Hz] |
goal_tolerance |
0.15 |
ゴール到達判定距離 [m] |
goal_topic |
/goal_pose |
ゴールポーズトピック名 |
MPPI設定
| パラメータ |
デフォルト |
説明 |
mppi.samples |
160 |
サンプリング軌道数 |
mppi.horizon_steps |
12 |
予測ホライズンのステップ数 |
mppi.dt |
0.08 |
予測ステップの時間幅 [s] |
mppi.temperature |
1.0 |
ソフトマックス温度パラメータ |
ノイズ設定
| パラメータ |
デフォルト |
説明 |
mppi.noise_vx |
0.25 |
X方向速度ノイズ [m/s] |
mppi.noise_vy |
0.25 |
Y方向速度ノイズ [m/s] |
mppi.noise_wz |
0.8 |
角速度ノイズ [rad/s] |
速度制限
| パラメータ |
デフォルト |
説明 |
mppi.max_vx |
1.0 |
X方向最大速度 [m/s] |
mppi.max_vy |
1.0 |
Y方向最大速度 [m/s] |
mppi.max_wz |
3.14 |
最大角速度 [rad/s] |
コスト重み
| パラメータ |
デフォルト |
説明 |
mppi.w_path |
3.0 |
経路追従コスト重み |
mppi.w_goal |
8.0 |
ゴール到達コスト重み |
mppi.w_obstacle |
18.0 |
障害物回避コスト重み |
mppi.w_control |
0.3 |
制御入力コスト重み |
mppi.w_smooth |
0.8 |
平滑化コスト重み |
mppi.w_heading |
1.5 |
ヘディング整合コスト重み(進行方向を向くよう誘導) |
mppi.unknown_cost |
0.5 |
未知セルのコスト |
mppi.heading_lookahead |
3 |
ヘディング目標に使うパス先読みステップ数 |
コスト重みのチューニング手順はパラメータチューニングガイドを参照してください。
起動
ros2 launch core_mppi mppi.launch.py