SS47816 / fiss_plus_planner

[IROS 2023] FISS+: Efficient and Focused Trajectory Generation and Refinement using Fast Iterative Search and Sampling Strategy
Apache License 2.0
39 stars 6 forks source link

Error query:AttributeError: 'numpy.int64' object has no attribute 'intersects' #1

Closed ggosjw closed 6 months ago

ggosjw commented 6 months ago

Thank u for open sourcing the your great work! I got a bug shows like following: Traceback (most recent call last): File "/home/jiawei/fiss_plus_planner/scripts/demo_cr.py", line 28, in planning(cfg, output_dir, input_dir, file) File "/home/jiawei/fiss_plusplanner/planners/benchmark/planning.py", line 314, in planning , ego_vehicletrajectory, , timelist, , fplist = frenet_optimal_planning( File "/home/jiawei/fiss_plus_planner/planners/benchmark/planning.py", line 38, in frenet_optimal_planning global_plan = global_planner.plan_global_route(scenario, planning_problem) File "/home/jiawei/fiss_plus_planner/planners/commonroad_interface/global_planner.py", line 38, in plan_global_route route_planner = RoutePlanner(scenario, planning_problem, backend=RoutePlanner.Backend.NETWORKX_REVERSED) File "/home/jiawei/anaconda3/envs/cr/lib/python3.10/site-packages/commonroad_route_planner/route_planner.py", line 138, in init self.id_lanelets_start = self._retrieve_ids_lanelets_start() File "/home/jiawei/anaconda3/envs/cr/lib/python3.10/site-packages/commonroad_route_planner/route_planner.py", line 192, in _retrieve_ids_lanelets_start list_ids_lanelets_start = self.lanelet_network.find_lanelet_by_position([post_start])[0] File "/home/jiawei/anaconda3/envs/cr/lib/python3.10/site-packages/commonroad/scenario/lanelet.py", line 1549, in find_lanelet_by_position return [[self._get_lanelet_id_by_shapely_polygon(lanelet_shapely_polygon) for lanelet_shapely_polygon in File "/home/jiawei/anaconda3/envs/cr/lib/python3.10/site-packages/commonroad/scenario/lanelet.py", line 1549, in return [[self._get_lanelet_id_by_shapely_polygon(lanelet_shapely_polygon) for lanelet_shapely_polygon in File "/home/jiawei/anaconda3/envs/cr/lib/python3.10/site-packages/commonroad/scenario/lanelet.py", line 1551, in lanelet_shapely_polygon.intersects(point) or lanelet_shapely_polygon.buffer(1e-15).intersects(point)] AttributeError: 'numpy.int64' object has no attribute 'intersects'

SS47816 commented 6 months ago

Thank you for raising the issue!

After investigation, it seems that this error is caused by using a newer version of the commonroad package.

Quick Fix

Find function find_lanelet_by_position() in commonroad/scenario/lanelet.py, and change it to:

  def find_lanelet_by_position(self, point_list: List[np.ndarray]) -> List[List[int]]:
    """
    Finds the lanelet id of a given position

    :param point_list: The list of positions to check
    :return: A list of lanelet ids. If the position could not be matched to a lanelet, an empty list is returned
    """
    assert isinstance(point_list,
                      ValidTypes.LISTS), '<Lanelet/contains_points>: provided list of points is not a list! type ' \
                                        '= {}'.format(type(point_list))

    return [[self._get_lanelet_id_by_shapely_polygon(lanelet_shapely_polygon) for lanelet_shapely_polygon in
            self._buffered_polygons.values() if
            lanelet_shapely_polygon.intersects(point) or lanelet_shapely_polygon.buffer(1e-15).intersects(point)]
            for point in [ShapelyPoint(point) for point in point_list]]

Hope this helps!