|
EasyNav Plugins
|

Directories | |
| include | |
| src | |
A SeReST (Smooth Error-Responsive Speed and Turning) controller for path tracking.
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_serest_controller/SerestController/....
This plugin derives from easynav::ControllerMethodBase. \ See that section for shared collision-checking parameters and debug markers common to all controllers.
| Name | Type | Default | Description |
|---|---|---|---|
| <plugin>.a_acc | double | 0.8 | Comfortable forward acceleration (m/s²). |
| <plugin>.a_brake | double | 1.2 | Comfortable braking deceleration (m/s²). |
| <plugin>.a_lat_max | double | 1.5 | Maximum lateral acceleration (m/s²). |
| <plugin>.a_lat_soft | double | 1.1 | Soft lateral acceleration bound (m/s²). |
| <plugin>.allow_reverse | bool | false | Allow reversing when beneficial. |
| <plugin>.apex_ey_des | double | 0.05 | Desired lateral error at apex for shaping (m). |
| <plugin>.blend_base | double | 0.6 | Base blending factor for curvature tracking. |
| <plugin>.blend_k_per_v | double | 0.6 | Additional blending proportional to speed. |
| <plugin>.corner_boost_omega | double | 0.8 | Omega boost when cornering. |
| <plugin>.corner_gain_eth | double | 0.7 | Cornering gain for heading error. |
| <plugin>.corner_gain_ey | double | 1.5 | Cornering gain for lateral error. |
| <plugin>.corner_gain_kappa | double | 0.4 | Cornering gain for curvature error. |
| <plugin>.corner_guard_enable | bool | true | Enable cornering guard logic. |
| <plugin>.corner_min_alpha | double | 0.35 | Minimum blending near corners. |
| <plugin>.d0_margin | double | 0.30 | Base obstacle clearance margin (m). |
| <plugin>.d_hard | double | 0.20 | Hard-stop distance threshold (m). |
| <plugin>.dist_search_radius | double | 2.0 | Search radius when matching to path (m). |
| <plugin>.ell | double | \ilinebr </td> <td class="markdownTableBodyNone"> Lookahead distance (m). \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> `<plugin>.eps` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> `1e-3` \ilinebr </td> <td class="markdownTableBodyNone"> Small epsilon to avoid division by zero. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> `<plugin>.final_align_k` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> `2.0` \ilinebr </td> <td class="markdownTableBodyNone"> Gain used during final alignment. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> `<plugin>.final_align_wmax` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> `0.6` \ilinebr </td> <td class="markdownTableBodyNone"> Max angular speed during final alignment (rad/s). \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> `<plugin>.goal_pos_tol` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> `0.05` \ilinebr </td> <td class="markdownTableBodyNone"> Goal position tolerance (m). \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> `<plugin>.goal_yaw_tol_deg` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> `5.0` \ilinebr </td> <td class="markdownTableBodyNone"> Goal yaw tolerance (degrees). \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> `<plugin>.k_s` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> | Gain on progress along path (s). |
| <plugin>.k_s_share_max | double | 0.5 | Max share of speed from s-progress term. |
| <plugin>.k_theta | double | \ilinebr </td> <td class="markdownTableBodyNone"> Heading error gain. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> `<plugin>.k_y` \ilinebr </td> <td class="markdownTableBodyNone"> `double` \ilinebr </td> <td class="markdownTableBodyRight"> | Lateral error gain. |
| <plugin>.kappa_max | double | 2.5 | Maximum allowed curvature (1/m). |
| <plugin>.max_angular_acc | double | 2.0 | Angular acceleration limit (rad/s²). |
| <plugin>.max_angular_speed | double | 1.5 | Angular speed limit (rad/s). |
| <plugin>.max_linear_acc | double | 0.8 | Linear acceleration limit (m/s²). |
| <plugin>.max_linear_speed | double | 0.6 | Speed limit (m/s). |
| <plugin>.slow_min_speed | double | 0.03 | Minimum speed within slow zone (m/s). |
| <plugin>.slow_radius | double | 0.60 | Radius to start slowing down near goal (m). |
| <plugin>.t_emerg | double | 0.25 | Emergency stop time horizon (s). |
| <plugin>.tau_latency | double | 0.10 | Actuation latency (s). |
| <plugin>.v_progress_min | double | 0.05 | Minimum forward speed to ensure progress (m/s). |
| <plugin>.v_ref | double | 0.6 | Nominal reference speed (m/s). |
This controller communicates through NavState (no direct ROS topics in this plugin).
This package does not create service servers or clients.
| Key | Type | Access | Notes |
|---|---|---|---|
| path | nav_msgs::msg::Path | Read | Reference path. |
| robot_pose | nav_msgs::msg::Odometry | Read | Robot odometry. |
| points | PointPerceptions | Read | Obstacle point cloud(s). |
| closest_obstacle_distance | double | Read | Precomputed dynamic obstacle metric. |
| cmd_vel | geometry_msgs::msg::TwistStamped | Write | Commanded velocity. |
| serest.debug.e_y | double/int | Write | Debug metric |
| serest.debug.e_theta | double/int | Write | Debug metric |
| serest.debug.kappa_hat | double/int | Write | Debug metric |
| serest.debug.d_closest | double/int | Write | Debug metric |
| serest.debug.v_safe | double/int | Write | Debug metric |
| serest.debug.v_curv | double/int | Write | Debug metric |
| serest.debug.alpha | double/int | Write | Debug metric |
| serest.debug.allow_reverse | double/int | Write | Debug metric |
| serest.debug.dist_to_end | double/int | Write | Debug metric |
| serest.debug.goal.dist_xy | double/int | Write | Debug metric |
| serest.debug.goal.gamma_slow | double/int | Write | Debug metric |
| serest.debug.goal.in_final_align | double/int | Write | Debug metric |
| serest.debug.goal.arrived | double/int | Write | Debug metric |
This controller reads pose from nav_msgs/Odometry (NavState key robot_pose). TF is not directly used in this plugin.
Apache-2.0