Documentation ¶
Overview ¶
Package navigation is the service that allows you to navigate along waypoints.
Package navigation is the service that allows you to navigate along waypoints.
Index ¶
- Constants
- Variables
- func Named(name string) resource.Name
- func NewRPCServiceServer(coll resource.APIResourceCollection[Service]) interface{}
- func PathSliceToProto(paths []*Path) ([]*pb.Path, error)
- func PathToProto(path *Path) (*pb.Path, error)
- type MapType
- type MemoryNavigationStore
- func (store *MemoryNavigationStore) AddWaypoint(ctx context.Context, point *geo.Point) (Waypoint, error)
- func (store *MemoryNavigationStore) Close(ctx context.Context) error
- func (store *MemoryNavigationStore) NextWaypoint(ctx context.Context) (Waypoint, error)
- func (store *MemoryNavigationStore) RemoveWaypoint(ctx context.Context, id primitive.ObjectID) error
- func (store *MemoryNavigationStore) WaypointVisited(ctx context.Context, id primitive.ObjectID) error
- func (store *MemoryNavigationStore) Waypoints(ctx context.Context) ([]Waypoint, error)
- type Mode
- type MongoDBNavigationStore
- func (store *MongoDBNavigationStore) AddWaypoint(ctx context.Context, point *geo.Point) (Waypoint, error)
- func (store *MongoDBNavigationStore) Close(ctx context.Context) error
- func (store *MongoDBNavigationStore) NextWaypoint(ctx context.Context) (Waypoint, error)
- func (store *MongoDBNavigationStore) RemoveWaypoint(ctx context.Context, id primitive.ObjectID) error
- func (store *MongoDBNavigationStore) WaypointVisited(ctx context.Context, id primitive.ObjectID) error
- func (store *MongoDBNavigationStore) Waypoints(ctx context.Context) ([]Waypoint, error)
- type NavStore
- type Path
- type Properties
- type Service
- type StoreConfig
- type Waypoint
Constants ¶
const ( ModeManual = Mode(iota) ModeWaypoint ModeExplore NoMap = MapType(iota) GPSMap )
The set of known modes.
const ( // StoreTypeUnset represents when a store type was not set. StoreTypeUnset = "" // StoreTypeMemory is the constant for the memory store type. StoreTypeMemory = "memory" // StoreTypeMongoDB is the constant for the mongodb store type. StoreTypeMongoDB = "mongodb" )
const SubtypeName = "navigation"
SubtypeName is the name of the type of service.
Variables ¶
var ()
Database and collection names used by the MongoDBNavigationStore.
var API = resource.APINamespaceRDK.WithServiceType(SubtypeName)
API is a variable that identifies the navigation service resource API.
Functions ¶
func Named ¶ added in v0.0.8
Named is a helper for getting the named navigation service's typed resource name.
func NewRPCServiceServer ¶ added in v0.2.36
func NewRPCServiceServer(coll resource.APIResourceCollection[Service]) interface{}
NewRPCServiceServer constructs a navigation gRPC service server. It is intentionally untyped to prevent use outside of tests.
func PathSliceToProto ¶ added in v0.12.0
PathSliceToProto converts a slice of Path into an equivalent Protobuf message.
Types ¶
type MapType ¶ added in v0.11.0
type MapType uint8
MapType describes what map the navigation service is operating on.
func StringToMapType ¶ added in v0.11.0
StringToMapType converts an input string into one of the valid map type if possible.
type MemoryNavigationStore ¶ added in v0.1.0
type MemoryNavigationStore struct {
// contains filtered or unexported fields
}
MemoryNavigationStore holds the waypoints for the navigation service.
func NewMemoryNavigationStore ¶ added in v0.1.0
func NewMemoryNavigationStore() *MemoryNavigationStore
NewMemoryNavigationStore returns and empty MemoryNavigationStore.
func (*MemoryNavigationStore) AddWaypoint ¶ added in v0.1.0
func (store *MemoryNavigationStore) AddWaypoint(ctx context.Context, point *geo.Point) (Waypoint, error)
AddWaypoint adds a waypoint to the MemoryNavigationStore.
func (*MemoryNavigationStore) Close ¶ added in v0.2.36
func (store *MemoryNavigationStore) Close(ctx context.Context) error
Close does nothing.
func (*MemoryNavigationStore) NextWaypoint ¶ added in v0.1.0
func (store *MemoryNavigationStore) NextWaypoint(ctx context.Context) (Waypoint, error)
NextWaypoint gets the next waypoint that has not been visited.
func (*MemoryNavigationStore) RemoveWaypoint ¶ added in v0.1.0
func (store *MemoryNavigationStore) RemoveWaypoint(ctx context.Context, id primitive.ObjectID) error
RemoveWaypoint removes a waypoint from the MemoryNavigationStore.
func (*MemoryNavigationStore) WaypointVisited ¶ added in v0.1.0
func (store *MemoryNavigationStore) WaypointVisited(ctx context.Context, id primitive.ObjectID) error
WaypointVisited sets that a waypoint has been visited.
type MongoDBNavigationStore ¶ added in v0.1.0
type MongoDBNavigationStore struct {
// contains filtered or unexported fields
}
MongoDBNavigationStore holds the mongodb client and waypoints collection.
func NewMongoDBNavigationStore ¶ added in v0.1.0
func NewMongoDBNavigationStore(ctx context.Context, config map[string]interface{}) (*MongoDBNavigationStore, error)
NewMongoDBNavigationStore creates a new navigation store using MongoDB.
func (*MongoDBNavigationStore) AddWaypoint ¶ added in v0.1.0
func (store *MongoDBNavigationStore) AddWaypoint(ctx context.Context, point *geo.Point) (Waypoint, error)
AddWaypoint adds a waypoint to the MongoDBNavigationStore.
func (*MongoDBNavigationStore) Close ¶ added in v0.1.0
func (store *MongoDBNavigationStore) Close(ctx context.Context) error
Close closes the connection with the mongodb client.
func (*MongoDBNavigationStore) NextWaypoint ¶ added in v0.1.0
func (store *MongoDBNavigationStore) NextWaypoint(ctx context.Context) (Waypoint, error)
NextWaypoint gets the next waypoint that has not been visited.
func (*MongoDBNavigationStore) RemoveWaypoint ¶ added in v0.1.0
func (store *MongoDBNavigationStore) RemoveWaypoint(ctx context.Context, id primitive.ObjectID) error
RemoveWaypoint removes a waypoint from the MongoDBNavigationStore.
func (*MongoDBNavigationStore) WaypointVisited ¶ added in v0.1.0
func (store *MongoDBNavigationStore) WaypointVisited(ctx context.Context, id primitive.ObjectID) error
WaypointVisited sets that a waypoint has been visited.
type NavStore ¶ added in v0.1.0
type NavStore interface {}
NavStore handles the waypoints for a navigation service.
func NewStoreFromConfig ¶ added in v0.10.0
func NewStoreFromConfig(ctx context.Context, conf StoreConfig) (NavStore, error)
NewStoreFromConfig builds a NavStore from the provided StoreConfig and returns it.
type Path ¶ added in v0.12.0
type Path struct {
// contains filtered or unexported fields
}
Path describes a series of geo points the robot will travel through.
func ProtoSliceToPaths ¶ added in v0.12.0
ProtoSliceToPaths converts a slice of Path Protobuf messages into an equivalent struct.
func ProtoToPath ¶ added in v0.12.0
ProtoToPath converts the Path Protobuf message into an equivalent struct.
func (*Path) DestinationWaypointID ¶ added in v0.12.0
DestinationWaypointID returns the ID of the Path.
type Properties ¶ added in v0.18.0
type Properties struct {
MapType MapType
}
Properties returns information about the MapType that the configured navigation service is using.
type Service ¶
type Service interface { resource.Resource // Mode returns the Mode the service is operating in. Mode(ctx context.Context, extra map[string]interface{}) (Mode, error) // SetMode sets the mode the service is operating in. SetMode(ctx context.Context, mode Mode, extra map[string]interface{}) error // Location returns the current location of the machine in the navigation service. Location(ctx context.Context, extra map[string]interface{}) (*spatialmath.GeoPose, error) // Waypoints returns an array of waypoints currently in the service's data storage which have not yet been reached. // These are locations designated within a path for the machine to navigate to. Waypoints(ctx context.Context, extra map[string]interface{}) ([]Waypoint, error) // AddWaypoint adds a waypoint to the service's data storage. AddWaypoint(ctx context.Context, point *geo.Point, extra map[string]interface{}) error // RemoveWaypoint removes a waypoint from the service's data storage. // If the machine is currently navigating to this waypoint, the motion will be canceled, and the machine will proceed to the next waypoint. RemoveWaypoint(ctx context.Context, id primitive.ObjectID, extra map[string]interface{}) error // Obstacles returns a list of obstacles to avoid, both transient and predefined, identified by the vision and navigation services. Obstacles(ctx context.Context, extra map[string]interface{}) ([]*spatialmath.GeoGeometry, error) // Paths returns each path, which is a series of geo points. // These points outline the planned travel route to a destination waypoint in the machine’s motion planning. Paths(ctx context.Context, extra map[string]interface{}) ([]*Path, error) // Properties returns information about the configured navigation service. Properties(ctx context.Context) (Properties, error) }
A Service controls the navigation for a robot.
Mode example:
// Get the Mode the service is operating in mode, err := myNav.Mode(context.Background(), nil)
SetMode example:
// Set the Mode the service is operating in to ModeWaypoint and begin navigation err := myNav.SetMode(context.Background(), navigation.ModeWaypoint, nil)
Location example:
// Get the current location of the robot in the navigation service location, err := myNav.Location(context.Background(), nil)
Waypoints example:
waypoints, err := myNav.Waypoints(context.Background(), nil)
AddWaypoint example:
// Create a new waypoint with latitude and longitude values of 0 degrees // Assumes you have imported "github.com/kellydunn/golang-geo" as `geo` location := geo.NewPoint(0, 0) // Add your waypoint to the service's data storage err := myNav.AddWaypoint(context.Background(), location, nil)
RemoveWaypoint example:
// Assumes you have already called AddWaypoint once and the waypoint has not yet been reached waypoints, err := myNav.Waypoints(context.Background(), nil) if (err != nil || len(waypoints) == 0) { return } // Remove the first waypoint from the service's data storage err = myNav.RemoveWaypoint(context.Background(), waypoints[0].ID, nil)
Obstacles example:
// Get an array containing each obstacle stored by the navigation service obstacles, err := myNav.Obstacles(context.Background(), nil)
Paths example:
// Get an array containing each path stored by the navigation service paths, err := myNav.Paths(context.Background(), nil)
Properties example:
// Get the properties of the current navigation service navProperties, err := myNav.Properties(context.Background())
type StoreConfig ¶
type StoreConfig struct { Type storeType `json:"type"` Config map[string]interface{} `json:"config"` }
StoreConfig describes how to configure data storage.
func (*StoreConfig) Validate ¶
func (config *StoreConfig) Validate(path string) error
Validate ensures all parts of the config are valid.
type Waypoint ¶
type Waypoint struct { ID primitive.ObjectID `bson:"_id"` Visited bool `bson:"visited"` Order int `bson:"order"` Lat float64 `bson:"latitude"` Long float64 `bson:"longitude"` }
A Waypoint designates a location within a path to navigate to.
func (*Waypoint) LatLongApproxEqual ¶ added in v0.10.0
LatLongApproxEqual returns true if the lat / long of the waypoint is within a small epsilon of the parameter.
Directories ¶
Path | Synopsis |
---|---|
Package builtin implements a navigation service.
|
Package builtin implements a navigation service. |
Package register registers all relevant navigation models and API specific functions.
|
Package register registers all relevant navigation models and API specific functions. |