RVO2-3D is a C++ library implementing Optimal Reciprocal Collision Avoidance (ORCA) for multi-agent simulation in three-dimensional workspaces. It provides a simulator that manages agents with configurable parameters (radius, max speed, time horizon, etc.) and computes collision-free velocities each time step using a linear programming approach over ORCA half-planes. The library uses a k-d tree for efficient neighbor queries and optionally leverages OpenMP for parallel agent updates. The public API is exposed through the RVOSimulator class, with supporting types Vector3 and Plane. The codebase is written in C++98 for maximum compatibility, is thoroughly documented with Doxygen, and includes a single example (Sphere) that serves as both a demonstration and a test. The repository is well-maintained with CI across multiple platforms and build systems (CMake, Bazel), static analysis, and a quality declaration targeting ROS 2 Quality Level 2.
A ROS-based C++ implementation of the Hybrid A* path planning algorithm for nonholonomic autonomous vehicles, originally developed as part of a master's thesis at KTH. The system takes a binary occupancy grid (from LIDAR) and start/goal poses, then plans a smooth, drivable path using a combination of continuous-space A* with state discretization in heading, constrained (Dubins/Reeds-Shepp) and unconstrained (2D A*) heuristics, and a final gradient-descent smoother that accounts for obstacle clearance, curvature, and smoothness. It also optionally uses a Voronoi diagram to guide the path away from obstacles. The architecture is modular: a central Planner class manages ROS callbacks and orchestrates the search (Algorithm), collision detection (precomputed lookup tables for vehicle footprint), path tracing, and visualization via RViz. The code is well-documented and has been widely cited in autonomous driving research. While it is tightly coupled to ROS 1 (Noetic) and relies on OMPL for Reeds-Shepp heuristics, the core algorithmic components (lookup-based collision checking, Dubins path, gradient smoother) are self-contained and could be extracted for other projects.