Skip to main content

BenchNPIN: Benchmarking Non-prehensile Interactive Navigation

BenchNPIN is a comprehensive suite of benchmarking tools for mobile robot non-prehensile interactive navigation. The goal of BenchNPIN is to provide researchers a standarized platform for training and evaluating algorithms in non-prehensile interactive navigation. BenchNPIN provides simulated environments for a wide range of non-prehensile interactive navigation tasks, metrics specifically capturing both task efficiency and interaction effort, policy templates with reference implementations.

The Environments

Navigating Maze with Movable Obstacles

env = gym.make('maze-NAMO-v0')

This environment features a static maze structure with randomly initialized obstacles. The robot's task is to navigate from a starting position to a goal location while minimizing path length and obstacle collisions.


The Maze environment.

Autonomous Ship Navigation in Icy Waters

env = gym.make('ship-ice-v0')

In this task, an autonomous surface vehicle must reach a horizontal goal line ahead while minimizing collisions with broken ice floes in the channel.


The Ship-Ice environment.

Box Delivery

env = gym.make('box-pushing-v0')

The Box-Delivery environment consists of a set of movable boxes to be delivered to a designated receptacle. The robot is tasked to delivery all boxes using its front bumper.


The Box-Delivery environment.

Area Clearing

env = gym.make('area-clearing-v0')

This envronment consists of a set of movable boxes and a clearance area. The task of the robot is to remove all boxes from this clearance area.


The Area-Clearing environment.

Installation

Install from pip

pip install benchnpin

The pip install above is sufficient to run Ship-Ice and Maze environments. To run Box-Delivery and Area-Clearing, please install shortest path module as follows

git clone https://github.com/IvanIZ/spfa.git
cd spfa
python setup.py install

Build from source

  1. Clone the project
git clone https://github.com/IvanIZ/BenchNPIN.git
  1. Install dependencies.
cd BenchNPIN
pip install -r requirements.txt
  1. Install Gym environment
pip install -e .
  1. Install shortest path module
git clone https://github.com/IvanIZ/spfa.git
cd spfa
python setup.py install

Usage

Running an interactive navigation environment

import benchnpin.environments
import gymnasium as gym

env = gym.make('ship-ice-v0')
observation, info = env.reset()

terminated = truncated = False
while not (terminated or truncated):

    action = your_policy(observation)
    observation, reward, terminated, truncated, info = env.step(action)
    env.render()

To configure the parameters for each environment, please refer to the configuration examples for Maze, Ship-Ice, Box-Delivery, and Area-Clearing.

Creating a custom policy from the policy template

from benchnpin.baselines.base_class import BasePolicy

class CustomPolicy(BasePolicy):

    def __init__(self) -> None:
        super().__init__()

        # initialize costum policy here
        ...

    
    def train(self):
        # train the custom policy here, if needed
        ...


    def act(self, observation, **kwargs):
        # define how custom policy acts in the environment
        ...

    
    def evaluate(self, num_eps: int, model_eps: str ='latest'):
        # define how custom policy is evaluated here
        ...

Running benchmarks on policies

from benchnpin.common.metrics.base_metric import BaseMetric
import CustomPolicy1      # some custom policies
import CustomPolicy2
import CustomPolicy3

# initialize policies to be evaluated
policy1 = CustomPolicy1()
policy2 = CustomPolicy2()
policy3 = CustomPolicy3()

# run evaluations
num_eps = 200    # number of episodes to evaluate each policy
benchmark_results = []
benchmark_results.append(policy1.evaluate(num_eps=num_eps))
benchmark_results.append(policy2.evaluate(num_eps=num_eps))
benchmark_results.append(policy3.evaluate(num_eps=num_eps))

# plot efficiency and effort scores
BaseMetric.plot_algs_scores(benchmark_results, save_fig_dir='./')

Implemented Baselines

Tasks Baselines
Maze SAC1, PPO1
Ship-Ice SAC1, PPO1, SAV Planning2, 3
Box-Delivery SAC1, PPO1, SAM4
Area_Clearing SAC1, PPO1, SAM4, GTSP5

1: Reinforcement Learning policies Integrated with Stable Baselines 3.

2: Planning-based policy using an ASV ice navigation lattice planner.

3: Planning-based policy using a predictive ASV ice navigation planner.

4: Spatial Action Maps policy.

5: A Generalized Traveling Salesman Problem (GTSP) policy. Please see Appendix I of our paper for details.

Trained Models

You may download the our trained model weights from here.

Metadata

Release files for benchnpin 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for benchnpin 0.1.1
File Size Uploaded
benchnpin-0.1.1.tar.gz 77.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for benchnpin 0.1.1
File Interpreter ABI Platform
benchnpin-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 155.4 MB

Release files / benchnpin-0.1.1.tar.gz

Download URL benchnpin-0.1.1.tar.gz
Size 77.5 MB
Tags Source
SHA-256 checksum
How to use checksums
a1ac89b6b773800ecae1c0b4d3fee2897ccb39debfa6ad9fcf3f46415c040d69
BLAKE2b-256 checksum
How to use checksums
b43088b1617e0ce2b3d2b793c57f1c4856bd24d8070190fed063bfd1c5612cba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.16

Release files / benchnpin-0.1.1-py3-none-any.whl

Download URL benchnpin-0.1.1-py3-none-any.whl
Size 77.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
e45279469a63488db5f40c35875bc65210edb8ae05dcdcfa1add4fa2b7a5f624
BLAKE2b-256 checksum
How to use checksums
a1a6b817188f0bdd05fc2c0a42947f5e3e12ba4459e58096d512fc78a6cda26d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.16

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page