This application was developed as a project for the RBE-502 course at the Worcester Polytechnic Institute.
It is a Java implementation of the method proposed by Romain Pepy, Alain Lambert and Hugues Mounier in the paper Path Planning using a Dynamic Vehicle Model. It uses Rapidly-Exploring Random Trees (RRT) with a dynamic model of a car known as bicycle model to generate more realistic paths for a non-holonomic car-like robot. Differential equations are integrated using a Runge-Kutta method and collision checking is done using the Separating Axis Theorem.
This application includes a GUI that lets you draw obstacles and set the start and end positions of the car, as well as the parameters of the algorithm and the vehicle model.
The application can be built by Maven. The command
mvn package
will build an executable jar that can be run with
java -jar <name-of-the-jar>
You can also download the precompiled binaries at the Releases page.
The interface of the application is very simple. The yellow car is the starting position. The red car is the goal position. Use the left mouse button to create obstacles and to move the existing ones and the start and goal positions. Use the right mouse button to rotate obstacles and the start and goal positions. Use the middle mouse button to delete obstacles.
You can save and load your settings using the Load and Save buttons. A sample configuration file comes with the application. Configuration files are generated using Java serialization and should not be modified by hand.
The panel on the right can be used to set the parameters of the algorithm. There is no validation of those parameters, so make sure you provide valid values for a higher chance of getting a reasonable result back. Here is a short description of each parameter:
Car parameters:
Planner parameters:
Dynamic Model parameters:
This application can be improved in several ways. New models can be added easily by implementing the CarModel
interface. Support for different variations of the RRT would also be nice, but adding it would take a little bit more time. Finally, the nearest neighbor search is a simple naive search, which makes the algorithm much slower as the tree gets bigger. Using a KD-tree for the search would probably make it handle large numbers of nodes much better.
I will gladly accept pull requests with new features or bug fixes.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。