Introduction
Welcome to DevMello's Voyager documentation. It is a work-in-progress project that aims to create a system that can autonomously navigate a vehicle through a series of waypoints. Voyager was initially created under the name Pathfinder2 (opens in a new tab) by Colin Robertson. The original author has stopped development of the library and I have decided to continue development under the name Voyager.
What is Voyager?
Voyager
Voyager is a heavily abstracted and modular pathfinding library that aims to provide a simple and efficient way to navigate a vehicle through a series of waypoints. It is designed to be flexible, allowing users to easily integrate it into their projects and customize it to suit their needs.
Key Features
- Trajectories: Easily generate smooth and efficient trajectories between waypoints including splines, arcs, lines, and even your own equations!
- Listeners: Implement listeners to receive updates on the vehicle's position, velocity, and more. Allows you to easily integrate Voyager with your existing systems. (unchanged from Pathfinder2)
- Pathfinder: Has a built in A* pathfinder to dynamically generate paths between waypoints.
- Logger: Has a robust logging system that allows you to easily log data to a file or console.
- Zone: A custom zone processor that allows you to easily create zones that can be used to trigger events or change the vehicle's behavior.
- Recording: Record points along your path which can then be used to replay the path at a later time. (unchanged from Pathfinder2)
- Customizable: Voyager is designed to be easily customizable and extendable. You can easily add your own custom behaviors and features.
- Plugin Manager: Voyager has a built in plugin manager that allows you to easily add and remove plugins on the fly. (unchanged from Pathfinder2)
- Open Source: Voyager is open source and free to use under the GNU GPL V3 License.
Implementation
If your odometry and localization is already setup, you can easily integrate Voyager with a simple:
pathfinder.goto(new PointXYZ(10,0,Angle.fromDeg(90)));