Navigation
Overview
Maurice operates using a dual-system navigation approach:
Core Navigation System
Uses RGBD+LiDAR SLAM for localization
Creates and maintains an occupancy map for obstacle-free path planning
Continuously stores and updates a pose-graph representation of the environment for semantic navigation
Navigation Methods
Maurice can navigate in three ways:
By coordinates
Through text prompts to stored locations
Through text prompts to visible locations (in-sight navigation)
For successful navigation, Maurice requires both:
An occupancy map (for understanding free/occupied space)
A pose-graph (for understanding the environment's structure)
The system continuously updates its environmental understanding through the pose-graph representation, allowing Maurice to maintain an accurate model of its surroundings for navigation purposes.
Setup
Slam Occupancy Map
Initial Position
Place Maurice in a repeatable starting position
This position will serve as the map's origin
Note: Choose this position carefully as it will be your reference point
Start Mapping
Execute command:
innate map new
Enter your desired map name when prompted
A visualization window will appear showing:
Current map generation
Sensor data window
Mapping Process
Drive Maurice through the environment using either:
The mobile app
WASD keys on your keyboard
Mapping best practices:
Cover all areas where Maurice will operate
Perform regular 360-degree turns to avoid sensor blind spots
Revisit key regions multiple times to improve map accuracy
Save Map
Press escape to finish mapping
The map will automatically save to
~/maps
View Map
To view your created map, use command:
innate map view map_name
Pose Graph Map
Initial Setup
Place Maurice in the same origin position used for the occupancy map
Load your previously created map using:
innate map load map_name
Create New Pose-Graph
Start the pose-graph creation process:
innate pose-graph new pg_name
Environment Coverage
Drive Maurice through the environment
Ensure the robot observes:
All key rooms
Important objects relevant to planned tasks
The robot will automatically:
Build its proprietary pose-graph representation
Create a navigable understanding of the environment
Managing the Pose-Graph
Save the pose-graph:
innate pose-graph save pg_name
View the pose-graph:
innate pose-graph view pg_name
Load a pose-graph for use:
Note: The
-dynamic
argument controls whether the pose-graph:innate pose-graph load pg_name --dynamic False #`True`: Continuously updates with new environmental information #`False`: Remains static using only saved information
Using Navigation
Python SDK
Setup
from innate import navigation
# Initialize navigation module
navigation.init()
Get Current Pose
current_pose = navigation.get_current_pose()
# Returns: tuple (x, y, theta)# Example: (1.5, -0.3, 0.785)
Go to Pose
navigation.go_to_pose(x, y, theta)
# Parameters:# x: float - x coordinate in meters# y: float - y coordinate in meters# theta: float - orientation in radians
Go to Memory
navigation.go_to_memory("text prompt")
# Parameter:# text prompt: str - description of saved location# Example: navigation.go_to_memory("kitchen counter")
Go to In Sight
navigation.go_to_in_sight("text prompt", distance)
# Parameters:# text prompt: str - description of visible location/object# distance: float - desired distance from object in meters# Example: navigation.go_to_in_sight("blue chair", 0.5)
Interrupt Navigation
navigation.interrupt()
# Immediately stops current navigation command# Can be used to halt any ongoing navigation task
CLI
Get Current Pose
innate navigation get-current-pose
# Returns: x y theta# Example output: 1.5 -0.3 0.785
Go to Pose
innate navigation go-to-pose <x> <y> <theta>
# Parameters:# x: x coordinate in meters# y: y coordinate in meters# theta: orientation in radians# Example: innate navigation go-to-pose 1.5 -0.3 0.785
Go to Memory
innate navigation go-to-memory "text prompt"
# Parameter: text description of saved location# Example: innate navigation go-to-memory "kitchen counter"
Go to In Sight
innate navigation go-to-in-sight "text prompt" <distance>
# Parameters:# text prompt: description of visible location/object# distance: desired distance from object in meters# Example: innate navigation go-to-in-sight "blue chair" 0.5
Interrupt Navigation
innate navigation interrupt
# Immediately stops current navigation command
Last updated