Preamble
The Navigation features are part of Location Based Services (LBS). LBS means a piece of code that uses geolocalized data, either the location of the vehicle itself, or the location of content (map, POI...).
The Location-Based-Services Expert Group (LBS-EG), as part of the GENIVI Alliance, defines Application Programming Interface (API), Proof Of Concept (POC) and application (APP), that are included into the GENIVI compliant, Open Source, automotive IVI software stack.
The "In Vehicle Infotainment (IVI) Navigation" set of projects host the whole set of deliverables provided by the LBS-EG. The APIs and code standardized by GENIVI are covering non-differentiating features, that are shared by the whole car manufacturer's community. This wiki gives all needed explanations that allow to use the APIs into a concrete product.
Scope
The IVI-Navigation domain cover basic features:
Vehicle Positioning:
- Positioning, including GNSSService, SensorsService and EnhancedPositionService, tools for doing Dead Reckoning
Basic navigation:
- Navigation Core, including Location Input, Route Calculation, Route Guidance
- Map Viewer, including Map Rendering and View Control
Basic extensions:
- Point Of Interest (POI), providing a POI Search interface with a content access module mechanism allowing to extend the search to external data sources
- Traffic Info, providing a TrafficIncidentsService
HMI extension:
- Speech Services (output, input and dialog).
Projects
All the requirements and use cases can be found into the following wiki pages:
- IVI_Positioning Location of the vehicle, including dead reckoning.
- IVI_NavigationAndMapViewer Basic features of a navigation.
- IVI_POIService POI service features (search and manage).
- IVI_TrafficInfo (Page Unavailable) Traffic info service features.
- IVI_SpeechInputAndOutput Speech features for the whole IVI features.
Interfaces
Positioning
Positioning - SensorsService API
Positioning - GNSSService API
Positioning - Constants
Positioning - EnhancedPosition API
Positioning - PositionFeedback API
Positioning - Configuration API
Navigation
NavigationCore - Constants
NavigationCore - Session API
NavigationCore - Guidance API
NavigationCore - Routing API
NavigationCore - LocationInput API
NavigationCore - Configuration API
NavigationCore - MapMatchedPosition API
MapViewer - MapViewerControl API
MapViewer - MapViewerConfiguration API
MapViewer - MapViewerSession API
MapViewer - MapViewer Constants
TrafficIncidentsService
TrafficService - TrafficIncidents API
TrafficService - TrafficIncidentsFeed API
POIService
POIService - Constants
POIService - POISearch API
POIService - POIContentAcccess API
POIService - POIContentAcccessModule API
Available material
In order to publish an API into the GENIVI compliance, it's required to provide use cases, requirements and POC. The LBS-EG APIs are also promoted by a demonstrator, that is running on the so-called GENIVI Demo Platform (GDP). The demonstrator is called Fuel Stop Advisor (FSA).
Proof of concepts
What is required to build and run the code from scratch
Status of the Proof Of Concepts | |||||||||
---|---|---|---|---|---|---|---|---|---|
Project | API version | Maintainer | Repository | Git tag | Franca file | Common API | Note | Road map | |
Positioning | 3.0.0 | Marco and Helmut | server and test scripts | ENHPOS-3.0.0 GNSS-3.0.0 SNS-3.0.1 | draft | NO | --- | --- | |
Traffic incidents service | 1.0.0 | Peter | server and client | TRA-1.1.0 | draft | NO | --- | --- | |
NavigationCore and MapViewer | 3.0.0 | PhilippeC | server client | MAP-3.1.0 NAV-3.0.0 POI-1.0.0 | draft | NO | --- | --- | |
POI Search | 1.0.0 | PhilippeC | server client | POI-1.0.0 | draft | NO | --- | Update planned for L release | |
POI CAM with add/remove feature | 0.1.0 | PhilippeC | server client | --- | draft | YES 3.1.5 | Basic test under GTK and output to the console | Update planned for L release | |
Fuel Stop Advisor | 1.0.0 | PhilippeC | application | ENHPOS-3.0.0 GNSS-3.0.0 SNS-3.0.1 MAP-3.1.0 NAV-3.0.0 POI-1.0.0 | draft | NO | --- | Updated for each release |
Demonstrator
The main APIs are implemented by the Fuel Stop Advisor (FSA) demonstrator, running under the Genivi Demo Platform (GDP) and tested on two boards, Intel based (MinnowBoard MAX) and ARM based (R-Car M2 and Porter).
- IVI_FuelStopAdvisor IVI Navigation demonstrator
GENIVI Workflow
Here's the workflow put in place in GENIVI, and the deliverables that are covered by IVI-Navigation:
Stake holder needs: OEMs give their needs for the LBS domain and some rationales Vehicle requirements: The team defines top level requirements Use cases: Typical use cases in order to make it more understandable (and to promote the features)
According to the architecture, especially the split into components: Software platform requirements: requiremnts mapped on the components APIs: the APIs that allows to implement the requirements
For each API defined, there's also a proof of concept that implements the main features and validates the dynamic behaviour.
Top level use cases
There's a significant bunch of use cases and requirements for Navigation, but, in a first approach, we can consider that the main use cases could be counted on the fingers of two hands:
Actors
Role | Description | Examples |
---|---|---|
User | A person operating a GENIVI based IVI system | Driver or passenger of a car |
System | GENIVI based IVI system | Navigation system in high-end vehicle |
Use cases
All the use cases are detailed into the project pages, but let's have a look at the main ones:
ID | Title | Description | Subpart |
---|---|---|---|
UC-NAV-GDN-004 | guide to a destination | Provide guidance instructions to reach a destination | Guidance |
UC-NAV-ROU-006 | initiate a route calculation | Get a destination, calculate route | Routing |
UC-TRI-002 | warn of an event around a location | Get the event on the route (traffic, weather ..) | Traffic Info |
UC-MAP-002 | display vehicle position | Display the position of the vehicle | Map Viewer |
UC-POS-001 | get position | Get the position of the vehicle | Positioning |
UC-MAP-003 | display map and position | Display a map with relevant positioning | Map Viewer |
UC-LBS-001 | explore the surroundings of a location | Get all the location based content for a given position | Location based services |
Quick links
- Positioning git repository can be found here
- Navigation git repository can be found here
- Navigation application git repository can be found here
- Bugzilla tickets for bug tracking can be found here
Components
The components and the APIs hosted by the LBS-EG are displayed into the following diagram:
Current state of Franca Interfaces
The migration to Franca is on-going. It has been decided by the LBS-EG team to maintain in parallel the Franca IDL files and the DBus xml files. Important notice: For compatibility with the Common-API tool chain, some rules are applied:
- 'enumeration' type in Franca matches with 'i' in DBus (int32_t)
- 'union' type in Franca matches with '(yv)' in DBus (structure{uint8_t, variant})
- 'client' is a reserved word in Common-API, so it's prohibited
- 'attributes' is a keyword in C++ and is detected as an error by Xtext checker of Franca, so it's prohibited
The current version of the fidl files can be found under the folder api/franca
Preliminary work with W3C
A working page is available here to evaluate what is covered/not covered by the GENIVI APIs for the LBS domain.
Recent space activity
Space contributors