usdot-fhwa-stol / carma-platform

CARMA Platform is built on robot operating system (ROS) and utilizes open source software (OSS) that enables Cooperative Driving Automation (CDA) features to allow Automated Driving Systems to interact and cooperate with infrastructure and other vehicles through communication. Doxygen Source Code Documentation :
https://usdot-fhwa-stol.github.io/documentation/carma-platform/
402 stars 122 forks source link

Integration routing branch stops publishing maneuver plans mid-run #878

Closed MishkaMN closed 3 years ago

MishkaMN commented 4 years ago

Types of Issue

Descriptive summary

While integration testing route_following and inlanecruising plugins, it is found that the plan_delegator stops receiving new maneuvers. This happens soon after CARMA makes a left turn, and it results in CARMA exhausting its possible trajectory points, printing "no trajectory point left to execute" (error message is not word to word), and hitting breaks very abruptly. Direct source of error could come from two situations: either plan_delegator did not request the maneuver, or inlanecruising plugin (ILC) did not send it. Plan_delegator is requesting correctly. Therefore, the remaining guess is that inlanecruising plugin may have a bug, of which nature is unknown currently.

It may be worth for the assignee to test it on a straight road to rule out if it only happens when turning.

The issue is not assumed to be in the controller level, swapping MPC with pure_pursuit did not work around the same place as well. The result of the bug is not exactly same though; with pure_pursuit, it was turning left way longer than it should, resulting in going off the road.

Carma version where this issue was discovered

Expected behavior

The vehicle should not go off the road or stop abruptly.

Actual behavior

The vehicle stops abruptly.

Steps to reproduce the actual behavior

https://github.com/usdot-fhwa-stol/carma-platform/pull/874 Last confirmed the bug at above PR. -build the docker image and run carma start all with lexus config (develop branch) on silver lexus. -localize using rviz -select the route either through UI or rosservice call /guidance/set_active_route "routeID: 'route'" -publish the recorded waypoint rostopic pub /guidance/selected_route_path std_msgs/String "data: '/opt/carma/routes/TFHRCPrimaryNewRouteMae.csv'" -engage through UI or rosservice call /guidance/set_guidance_active "active_status: true"

Related work

https://github.com/usdot-fhwa-stol/carma-platform/issues/859 Found while testing this.

MishkaMN commented 4 years ago

The team has decided to merge waypoint generator as it is still possible to debug the new component with ILC at the same.

MishkaMN commented 3 years ago

The issue was fixed during testing of integration/routing and the fix is in develop as of this point. The edge case was in route_following_plugin's plan maneuver callback function. It was using the current lanelet to plan its maneuvers, but sometimes on intersections, multiple lanelets were found, which had to be filtered out using the route. If it erroneously used a lanelet not on the route, it failed to generate maneuvers, which is why after some time, it was running out of trajectories.