This repository contains the ROS package with code implementation of RRT-based path planning algorithm suitable for exploration of a trackdrive circuit according to the rules of Formula Student Driverless competition in Germany. This algorithm is based on my contribution to E-gnition, a FS Team of Technical University Hamburg.
A brief introduction to the main steps of the proposed algorithm is given in my Master's thesis presentation (direct timestamp).
- The algorithm does not utilize the cones' color information, but instead a simple logic is used, which rewards the branches with cones from both sides (see findBestBranch(...) method), and penalizes the branches having cones only from one side. With cone classification information a better rating system can be implemented and applied.
- Unfortunately I wasn't able to test and see this algorithm working on real hardware, a FS Driverless car, so I am excited if you can bring it the reality on any mobile robot and share some videos with me (see section Usage)
- Exploration of FSG'18 trackdrive circuit in Gazebo.
- Exploration of FSG'17 trackdrive circuit in Gazebo.
- Your video (feel free to pull-request a link with it here).
Some custom messages are included inside the ma_rrt_path_plan
package folder. Because the Git repository was setup before the creation of the messages (via a PR from ekampourakis), the vehicle_msgs
package folder needs to be moved to the parent folder of the ma_rrt_path_plan
in order to act as a seperate package and possibly included in the Makefile too.
- rospy.Subscriber("/map", Track, ...)
- rospy.Subscriber("/odometry", Odometry, ...)
- rospy.Publisher("/waypoints", WaypointsArray, ...)
- rospy.Publisher("/visual/tree_marker_array", MarkerArray, ...)
- rospy.Publisher("/visual/best_tree_branch", Marker, ...)
- rospy.Publisher("/visual/filtered_tree_branch", Marker, ...)
- rospy.Publisher("/visual/delaunay_lines", Marker, ...)
- rospy.Publisher("/visual/waypoints", MarkerArray, ...)
odom_topic
=/odometry
- The topic to get the odometry information fromworld_frame
=world
- The world frame to use for the visualizations- planDistance = 12 m - Maximum length of tree branch
- expandDistance = 1 m - Length of tree node/step
- expandAngle = 20 deg - constraining angle for next tree nodes
- coneObstacleSize = 1.1 m - size of obstacles derived from cone position
- coneTargetsDistRatio = 0.5 - ratio to frontConesDist for deriving remote cone goals
- Use me and my code in any way you want
- Keep the names and the same licence