autowarefoundation / autoware_ai

Apache License 2.0
23 stars 7 forks source link

[Feature] Improve Hybrid A* planner for freespace and avoidance #346

Closed aohsato closed 5 years ago

aohsato commented 5 years ago

New Feature

Currently, we have astar_navi for free space planning and obstacle_avoid for avoidance behavior on waypoints, however, they have each code of Hybrid A* search algorithms and don't work effectively. So, we need to merge their codes and create the library, then improve its performance.

kennedywai commented 5 years ago

Hello @aohsato, thanks for trying to imporve astar_navi! BTW I have a few questions about how this planner works:

1) Which branch should I use to perform the astar planner + obstacle avoidance?

2) Is it not required to use either vector map and waypoint saver methods?

3) Is it the finall output that we set up a goal wherever on the free areas on the grid map and it will publish a global path and a velocity to the robot until it reaches the goal? Just like a normal 2D slam on ROS Navigation stack, we dont need to create a lane on vector map.

4) I tried to follow the instructions above but I could not get it working, the astar path wasn't out on Rviz, is that ok that you could upload your testing video on Youtube and share the link here?

Thank you!

aohsato commented 5 years ago

@kennedywai Thanks for your question and sorry for late!

  1. By this branch, you can use astar_navi for freespace planning and astar_avoid for obstacle avoidance on your waypoints. Could you please help me to test these?

  2. You don't need vector map for both nodes. astar_navi can generate waypoints so you don't need waypoint saver methods, but astar_avoid needs your waypoints generated in some way.

  3. That's right. astarr_navi needs just grid map and goal pose. It publishes planned waypoints until reaching per constant at a constant cycle, decided byupdate_rate parameter.

kennedywai commented 5 years ago

@aohsato Thanks for replying me! I will be happy to test this function but I would like to know if this following steps are correct for testing:

1) NDT matching 2) lidar_eclidean_cluster_detector 3) points_to_costmap 4) astar_navi node 5) astar_avoid node 6) velocity_set node 7) twist_filter node 8) Pure pursuit node(waypoint mode)

Correct me if I am wrong about the procedures. Also the waypoints from astar_avoid and astar_navi are the same?

aohsato commented 5 years ago

@kennedywai And you need grid_map_filter and vel_pose_connect additionaly.

aohsato commented 5 years ago

I updated my PR, then created README and uploaded demo videos for astar_navi/avoid.

Freespace planner

https://github.com/CPFL/Autoware/blob/feature/improve_astar_planner/ros/src/computing/planning/mission/packages/freespace_planner/README.md

Waypoint planner

https://github.com/CPFL/Autoware/blob/feature/improve_astar_planner/ros/src/computing/planning/motion/packages/waypoint_planner/README.md

kennedywai commented 5 years ago

@aohsato Hi, sorry for this super late reply, I finally had time to test this feature recently. Btw, I have questions about astar_avoid after spending some time testing it:

  1. When use lidar_fake_perception node for testing astar_avoid with wf_simulator, I know what exactly this node is publishing but I don't see any outputs and topics from this node being published to astar_avoid and velocity_set. And of course when I place the fake points in front of sim_base_link, it will not stop.

  2. I dont have a vector map including wayarea and I dont plan on using vector map with astar_avoid because this is why I decided to use astar_avoid or astar_navi. So my question is do we have to build a global 2D grid map first like using 2D lidar with gmapping? Because now I can only convert my "/point_no_groud" or "/point_lanes" topics to "/realtime_cost_map" to test astar_avoid and astar_navi nodes.

Nodes that I am using for testing:

aohsato commented 5 years ago

@kennedywai Additionaly, you can use costmap_generator by @k0suke-murakami, for generating better costmap based on detected bounding boxes, detected convex hulls, lidar point clouds, and wayarea in vecto map. Plz check.