Skip to content

v0.1.0

Latest

Choose a tag to compare

@MJohnson459 MJohnson459 released this 06 Feb 16:56
· 48 commits to main since this release

v0.1.0 - Initial Release 🚀

First public release of costmap - a pure Rust library for 2D costmaps, occupancy grids, and raycasting aimed at robotics navigation.

This is an early release providing a standalone alternative to Nav2's costmap_2d without requiring ROS dependencies.

What Works ✅

Core Grid Operations

  • 2D occupancy grids and costmaps with configurable resolution and origin
  • World ↔ map coordinate transforms
  • Rolling window support with update_origin() for robot-centered local costmaps
  • Efficient cell iteration (immutable and mutable)

Raycasting

  • DDA and grid-step algorithms in world coordinates
  • clear_ray() for updating costmaps from sensor data (inverse sensor model)
  • Line iterators with read/write access

Costmap Features

  • Obstacle inflation with pluggable cost functions (linear, exponential)
  • Nav2-compatible cost semantics (free, inscribed, lethal, unknown)
  • Polygon iterators for footprint operations

I/O & Visualization

  • Load ROS2 map files (YAML + image format)
  • Optional Rerun visualization with RViz color palette
  • Grayscale image export

Installation

  [dependencies]
  costmap = "0.1.0"

Quick Example

  use costmap::RosMapLoader;
  use glam::Vec2;

  let grid = RosMapLoader::load_from_yaml("map.yaml")?;
  let hit = grid.raycast_dda(&origin, &direction, max_range);

See the examples/ for complete workflows including local costmap generation and sensor integration.

Known Limitations 🚧

  • Nav2 compatibility layer is partially stubbed
  • 3D voxel support planned but not yet implemented
  • Some advanced costmap features still in development

This is a work-in-progress personal project. Contributions, feedback, and bug reports welcome!

Links