US7561967B2 - Navigation receiver with functional extensibility - Google Patents
Navigation receiver with functional extensibility Download PDFInfo
- Publication number
- US7561967B2 US7561967B2 US11/193,644 US19364405A US7561967B2 US 7561967 B2 US7561967 B2 US 7561967B2 US 19364405 A US19364405 A US 19364405A US 7561967 B2 US7561967 B2 US 7561967B2
- Authority
- US
- United States
- Prior art keywords
- receiver
- navigation
- software
- satellite
- implementing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/13—Receivers
- G01S19/35—Constructional details or hardware or software details of the signal processing chain
Definitions
- GPS receivers such as global positioning satellite (GPS) receivers.
- GPS receivers typically output standard parameters such as time and position.
- GPS receivers may be used to control vehicles using proprietary software developed by the receiver manufacturer or a partner.
- GPS receivers may be used to control vehicles using proprietary software developed by the receiver manufacturer or a partner.
- applications for GPS receivers that require data manipulation not performed by any existing receiver.
- these applications are implemented by connecting the GPS receiver to an external computer.
- This external computer performs some processing and outputs data or control commands.
- Many navigation systems that require a user display have been implemented by connecting a computer (e.g., a Wintel laptop) or personal data assistant (PDA) with a publicly defined application programming interface (API).
- API application programming interface
- Omnistar differential corrections are derived from multiple base stations and are broadcast to users via a geosynchronous satellite. Omnistar implements the algorithms that use the corrections to improve the position accuracy. Receiver vendors link the compiled Omnistar software with their own receiver software to use the Omnistar corrections and achieve decimeter-level accuracy without a local base station.
- Proprietary binary modules may be provided to GPS receiver manufacturers to implement an application, such as a wide-area differential GPS algorithm. These modules are loaded by the manufacturers. In other cases, a new receiver is developed.
- Example source code for GPS RF and correlator chips and reference designs for a GPS receiver that used their chips have been provided for marketing.
- An ISA card with GPS receiver built onto the card is marketed. That “GPS Builder” card was plugged into a PCs ISA bus. With software running on the PCs processor, the PC/GPS Builder combination was a GPS receiver.
- Example PC software and example schematics and layouts for the GPS Builder design were provided. Anybody who purchased the GPS builder could plug it into a computer and run the GPS builder software. They could also modify or completely replace the software to add their own functionality. This software did not run under DOS or any other commercial PC OS. Other software implementations are available for the GPS builder including one that uses Linux as the operating system.
- Some PDAs have GPS functions. Applications are implemented by adding software to the PDA using public software APIs. For example, an application for a moving map is created on a WinCE GPS-enabled PDA. Many GPS receivers have a serial interface that allows an external computer to have access to GPS receiver navigation outputs such as position, velocity, and time. Often there is also serial access to lower level measurements, such as phases and satellite ephemeris.
- One way to construct a system with extended navigation functions is to put that software on a laptop, a tablet PC, or even a desktop computer. Extended navigation software may be added by a third party to a laptop using a combination of the public Interface Control Document for the serial stream from the GPS receiver vendor and the public API for the PCs operating system.
- GPS software receivers are being developed where much of the functionality traditionally implemented in ASICS or similar digital correlators is implemented in software.
- the software source code for some implementations is open source. For example, Linux software for the GPS Builder is available.
- the present invention is defined by the following claims, and nothing in this section should be taken as a limitation on those claims.
- the preferred embodiments described below include methods, systems and computer readable media for a global navigation satellite system receiver manufacturer to provide functional extensibility to a global navigation satellite system receiver.
- An application programming interface to the receiver is provided.
- the interface is public, such as using pubically available software or publically distributed instructions, for loading on applications or other extensions to the core functionality of the GPS receiver. Other programmers than the manufacturer may add applications to the GPS receiver, avoiding adding separate devices in a vehicle.
- a method for a global navigation satellite system receiver manufacturer to provide functional extensibility to a global navigation satellite system receiver.
- a proprietary receiver firmware component operable to implement a core navigation feature is provided on the receiver.
- a software interface to the receiver firmware with extensibility hooks is also provided on the receiver.
- a dynamic loader is provided and is operable to add functional extensions that adhere to the software interface to run on a processor in the receiver.
- a method for a global navigation satellite system receiver manufacturer to provide functional extensibility to a global navigation satellite system receiver.
- a software interface has extensibility hooks to the global navigation satellite system receiver.
- a public firmware image has undefined functions to be linked with one or more additional modules to successfully execute.
- First public tools, first directions or both first public tools and first directions are provided to compile a function extension module from source code.
- Second public tools, second directions or both second public tools and second directions are provided to link one or more function extension modules with the partial firmware image.
- a complete firmware image results from linking the one or more function extension modules with the partial firmware image.
- Third public tools, third directions or both third public tools and third directions are provided to load the complete firmware image into the global navigation satellite system receiver.
- a method for a global navigation satellite system receiver manufacturer to provide functional extensibility to a global navigation satellite system receiver.
- a proprietary receiver firmware component is operable to implement a core navigation feature on the receiver.
- a software interface with extensibility hooks is provided. The extensibility hooks comprise access to navigation metrics derived from an output of the core navigation feature. With the software interface, different functions supported by the receiver are allowed to be subsequently added to the receiver independently of the receiver manufacturer.
- a method for a global navigation satellite system receiver manufacturer to provide another with functional extensibility to a global navigation satellite system receiver.
- a proprietary receiver firmware component is provided and is operable to implement a core navigation feature.
- a public software interface with extensibility hooks is provided on the receiver. The extensibility hooks provide (a) access to navigation metrics derived from an output of the core navigation feature and (b) access to one or more receiver output interfaces.
- a computer readable storage media in the receiver has instructions for a programmed processor to implement an integrated compiler.
- a global navigation satellite system receiver includes computer readable media with instructions for a source interpreter for executing source and for a source loader for loading source.
- a global position satellite receiver connects with an antenna connector and a data input.
- the processor is operable to run satellite signal tracking code as a function of signals from the first satellite antenna connector and operable to run a public application programming interface for software provided by the data input.
- FIG. 1 is a block diagram of one embodiment of a global positioning system with a receiver
- FIG. 2 is a flow chart diagram of one embodiment of a method for a global navigation satellite system receiver manufacturer to provide functional extensibility to a global navigation satellite system receiver.
- a navigation system includes a GPS receiver with a public software API for loading software, such as third party software.
- the public API allows writing software to interface with the receiver's navigation software.
- the public API is a serial interface control document (ICD) modified to communicate through an interprocess communication mechanism, such as a FIFO, shared memory, TCP or UDP sockets, or message boxes.
- ICD serial interface control document
- a single processor in the receiver or a single receiver running a real-time Linux variant or other operating system includes function extensions via dynamic loading of new quantum framework actors or other interfaces.
- the public API provides an interface to read low-level GPS observables (e.g., carrier phase, code phase, or ephemeris), to read processed GPS navigation data (e.g., as position, time, and attitude) and/or to communicate with integrated devices such as inertial measurement units, universal serial bus (USB) devices, LEDs, buttons, Ethernet, power control, nvmem, analog-to-digital converters, digital-to-analog converters, CANbus, or other devices.
- Included in the public interface may be an interface to a resource manager for resource contention for interfaces to the devices. For example, there may be a function call to request access to a CANbus device.
- the public API may allow compiling the software (e.g., specifies a version of the Gnu Compiler Collection compiler to use).
- the public API may allow for loading or unloading the software. This may provide the ability to load a plurality of applications provided by different third parties.
- the GPS receiver may be positioned in a vehicle (e.g., tractor, construction vehicle, boat, airplane, car, train), the GPS receiver may be used for navigation, for any applications using navigation information, and for any other applications even unrelated to navigation.
- the applications are added by the manufacturer or third parties.
- FIG. 1 shows satellite navigation system 10 .
- the system 10 includes a plurality of satellites 12 , antennas 15 and at least one satellite navigation receiver 14 . Additional, different or fewer components may be provided.
- the system 10 is the Global Positioning System, GLONASS, Galileo, Iridium, or another now known or later developed satellite navigation system.
- the system 10 additionally includes pseudo-satellites (i.e., pseudolites) or other ground-based transmitters, such as Terralites.
- the receiver 14 is a now known or later developed device for tracking satellite signals and/or determining position from satellite signals.
- the receiver 14 includes a processor 16 , a memory 18 , a data port 20 , a modem 22 , antenna connectors 24 , a user input 26 , a display 28 , a housing 30 and a power connector 32 . Additional, different or fewer components may be provided.
- a battery is used to power the receiver 14 instead of or in addition to the power connector 32 .
- the receiver 14 includes single frequency tracking or additional features for improved navigation determination.
- the receiver 14 is a multi-frequency GPS receiver that tracks two or three frequencies, such as combination of L1, L2 and/or L5 GPS frequencies.
- the use of two frequencies allows for advanced navigation techniques, which improve performance, including accuracy.
- Multi-frequency also applies to other signals which may be available today, or may become available in the future, such as psuedolite or other non-GPS satellite signals.
- the antenna connectors 24 are electrical and physical connectors, such as plugs, for connecting the antennas 15 to the receiver 14 .
- the connectors 24 are holes or other structure allowing antenna cable to connect with the receiver 14 .
- a single connector 24 is provided, but two, three or more connectors may be provided.
- carrier phase tracking is performed for a plurality of antennas 15 .
- the relative position of some or all of the antennas 15 is calculated, providing attitude information.
- the orientation of that body can be calculated from position determination of the multiple antennas 15 .
- Three or more antennas 15 and associated connectors 24 enable determination of 3 dimensions of orientation (e.g., roll, pitch, and heading), and two antennas 15 and associated connectors 24 enables determination of two dimensions of orientation (e.g., roll and heading).
- the data input 20 is a bus, CAN, Ethernet, USB, serial device, digital-to-analog outputs, analog-to-digital inputs, diagnostic lights, buzzer and flash memory, Wi-Fi, BlueTooth, 802.11b, RS232, RS422 or any other now known or later developed device, network connector, buss connector or format for inputting data, such as software applications.
- the data input 20 includes a removable media device, such as a magnetic, RAM or optical storage device.
- software is reloaded from a USB storage media probed on startup for new user libraries. New libraries are copied over the old ones. Buggy user code can always be reloaded because probing occurs before user code executes.
- a system designed to allow third party system integrators to run their own software on the receiver 14 or navigation display may be useful for more applications if several wired and/or wireless communications standards are integrated in the data input 20 .
- the display 28 is a touch screen, LCD, monitor, projection, plasma, LED, printer or other now known or later developed device for outputting navigation or other information. Grey scale or color display may be used.
- the display 28 electronically connects with the processor 16 for outputting navigation information and/or information from other applications loaded onto the receiver 14 .
- the display 28 is connected with or shares a same housing as other components of the receiver 14 .
- the display 28 is in a separate housing connected with the receiver 14 by a cable or wirelessly.
- the display 28 is a shared display, such as an LCD provided for vehicle functions.
- the display 28 is one output interface responsive to the processor 16 and associated navigation code and source or other code run by the processor 16 .
- the data input 20 may support data output as well, providing another output interface for the receiver 14 .
- the user input 26 is a keyboard, touch screen (e.g., part of the display 28 ), button, slider, knob, touch pad, capacitive sensor, combinations thereof or other now known or later developed input device.
- the user input 26 is used to control navigation or other application functions, such as for switching output displays or formats.
- the user input 26 allows user control of the installation or loading of software by the processor 16 .
- User input to control operation of the receiver 14 is provided by the user input 26 .
- the power connector 32 is a power input connected with the processor 14 and connectable with a vehicle.
- the power connector 32 includes a cable with terminals for connecting with the wiring harness, alternator or battery of the vehicle.
- the processor 16 and the display 28 may have no or limited internal power supply other than clock or capacitive based batteries, so the vehicle power is used through the power connector 32 .
- the display 28 and/or receiver 14 operate when integrated with a vehicle. Since the vehicle typically has a battery and alternator, the power electronics for the receiver 14 and display 28 may be free of a bulky integrated battery. Instead of battery doors and/or recharging control circuitry, circuits for conditioning the power from the vehicle are used. Alternatively, a battery is provided for operation without vehicle power (e.g., vehicle power only charges the battery) or for operation without any connection to the vehicle power.
- the modem 22 is an integrated radio modem for local use or a satellite modem for communicating with a satellite, such as a low earth orbit satellite.
- the modem 22 provides a data link for differential corrections to be used by the processor 16 .
- Differential signals for real-time kinematic (RTK), LAAS or wide area (e.g., WAAS, Omnistar, or Starfire) position or tracking corrections are communicated from or to the modem 22 .
- RTK real-time kinematic
- LAAS local area
- WAAS Widestar
- Starfire Starfire
- IMUs integrated inertial measurement units
- satellite signals may provide position information with a relatively limited bandwidth and subject to satellite visibility requirements
- IMU provides high bandwidth measurements of acceleration. Integrating the two classes of sensors may overcome some of the limitations of both systems and provide high bandwidth positions, potentially even during periods of poor satellite visibility.
- the housing 30 is plastic, fiberglass, wood, metal, epoxy, glass, combinations thereof or other now known or later developed material. All or some of the devices of the receiver 14 are on or within the housing 30 .
- the processor 15 , the data input 20 and the satellite antenna connectors 24 are on or within the housing 30 .
- the housing 30 and associated receiver components are operable over a specified minimum, maximum or range of temperature, acceleration, shock and vibration values.
- the receiver 14 and housing 30 operate between ⁇ 30 and +70 degrees Celsius and in a vibration environment of 4 grms, 20 to 1200 Hz.
- the specifications are provided with the receiver 14 for determining proper installation environments. A specified environmental robustness supplied with published manufacturer's specifications allow for proper use in difficult environments, such as mining, military or farming environments.
- the housing 30 is environmentally sealed, such as being bolted or screwed closed with gaskets or rings for preventing liquid, air, gas, dust or other materials from entering the receiver 14 .
- standard specifications or no specifications are provided, such as for use of the receiver 14 as a consumer product (e.g., non “ruggedized” products).
- the housing 30 includes holes, tabs, latches, hooks, or other structure for mounting to or integrating with a vehicle.
- the structure for mounting may include devices to minimize vibration, such as a bolt with a rubber vibration isolating gasket or spacer.
- the mounting is semi-permanent, such as by a vehicle manufacturer or by an installer. Alternatively, a removable mounting is provided, such as using Velcro.
- the memory 18 is a computer readable storage media.
- Computer readable storage media include various types of volatile and non-volatile storage media, including but not limited to random access memory, read-only memory, programmable read-only memory, electrically programmable read-only memory, electrically erasable read-only memory, flash memory, field programmable gate array memory, cache, magnetic tape or disk, optical media and the like.
- the memory 18 stores navigation data for or during processing by the processor 16 . For. example, code and/or carrier phase measurements are stored for determining position by the processor 16 .
- the memory 18 also or alternatively has stored therein data representing instructions executable by a programmed processor, such as the processor 16 .
- the automatic or semiautomatic operations discussed herein are implemented, at least in part, by the instructions.
- the instructions are for navigation functions and/or any added applications.
- the functions, steps, acts or tasks illustrated in the figures or described herein are performed by the programmed processor 16 executing the instructions stored in the memory 18 or a different memory.
- the functions, acts or tasks are independent of the particular type of instructions set, storage media, processor or processing strategy and may be performed by software, hardware, integrated circuits, film-ware, micro-code and the like, operating alone or in combination.
- processing strategies may include multiprocessing, multitasking, parallel processing and the like.
- the processor 16 is a one or more general processors, digital signal processors, applications specific integrated circuits, field programmable gate arrays, digital circuits, analog circuits, combinations thereof or other now known or later developed devices for tracking navigation signals and/or determining position.
- the processor 16 includes one or more chips designed for correlating or tracking satellite signals and one or more field programmable gate arrays or other general processing devices for determining navigation information from the tracked or correlated signals. Other embodiments are possible.
- the processor 16 operates pursuant to firmware, software, source code, binary code, hardware design or other sources of instructions.
- the processor 16 operates pursuant to proprietary signal tracking and navigation software, third party application code (e.g., run on the same processing device or on a display processor), a public API for running the application code, software for loading applications, coding to prevent added applications from interfering with one another and/or other coding in the receiver 16 .
- third party application code e.g., run on the same processing device or on a display processor
- public API for running the application code
- software for loading applications software for loading applications
- coding to prevent added applications from interfering with one another and/or other coding in the receiver 16 .
- the processor 16 connects with the antenna connectors 24 , the data input 20 , and/or other components using a bus, direct connections or other structures.
- the connections allow the processor 16 to acquire satellite signals, load additional applications, control interface devices, output data or perform other functions.
- the processor 16 operates pursuant to a real-time version of the Linux, Windows or other operating system.
- the processor 16 is operable to implement one or more core navigation functions.
- Core navigation functions include position, speed, orientation, time, satellite signal strength, carrier phase, code phase, signal corrections, ephemeris, satellite synchronization information, and/or other values output for satellite navigation.
- the processor 16 runs firmware for satellite signal tracking code to track satellite signals from one or more of the satellite antenna connectors 24 .
- the tracking code is public or proprietary.
- Signal tracking software is an application or a module within an application which interfaces with signal tracking hardware.
- Signal tracking hardware is designed to track radio frequency (RF) signals, such as global navigation satellite signals, pseudo-satellite (pseudolite) signals, or other RF signals which may or may not be designed to be used for navigation.
- RF radio frequency
- the software is generally responsible for collecting measurements from the signal tracking hardware, sending commands to the signal tracking hardware, and may be responsible for performing position computations. This software generally handles the logic for functions such as signal acquisition.
- the raw measurements generated from the signal tracking software may include code phase measurements and carrier phase measurements.
- the processor 16 is operable to provide navigation information responsive to the satellite signal tracking code.
- the measurements from the signal tracking software are passed to another software module or application which runs the navigation software.
- the navigation software processes the raw measurements and computes the position of the navigation antenna. In the case of GPS, an accuracy in position may be from 50 meters to 1 centimeter or better.
- the navigation software may incorporate data collected by one or more non-collocated navigation receivers (e.g. WAAS, Differential GPS, or RTK GPS). This data may be pre-processed, as in the case of WAAS, or it may be raw data, such as for differential GPS or RTK GPS.
- the navigation software typically produces measurements in the form of 3-D position (e.g., Latitude/Longitude/Altitude or East/North/Up) relative to some coordinate frame (such as WGS-84).
- This software may also produce measurements of velocity (speed), orientation (such as heading/roll/pitch), time, or other information about the state of the user that can be measured using a navigation receiver.
- the position is used to determine the antenna 15 's position on a map, provide driving instructions to a user based on position, log the antenna's location to a data device, control some aspect of a vehicle (e.g., steering, rate of agricultural chemical spraying, implement height or other applications) based on the navigation information, show the proximity of the user to other points of interest, or other now known or later developed uses.
- the software for implementing these additional functions is another module or application running on the same hardware platform (i.e., the receiver 16 ) with the same operating system software.
- the processor 16 runs the core navigation software and a user-loadable library adhering to a public API allowing low-latency software access to the processor 16 .
- the same or different devices of the processor 16 are used for the different software purposes.
- Software may be provided via the data input 20 to the memory 18 and/or processor 16 pursuant to the public application programming interface (API). Any public API format may be used, such as a publish/subscribe API like Quantum Framework with the user dynamic link library of one or more modular actors.
- Multiple third party applications may be added to the receiver 14 .
- the software is added by the receiver manufacturer, a purchaser of the receiver 14 or other person. For example, frequently requested applications are posted on web site for download to the receiver 14 .
- non-navigation related applications may be loaded onto the receiver 14 .
- word processing software, database software, game software or other applications are loaded for running on the receiver 14 .
- the navigation software runs on the same operating system software with other applications or modules.
- the non-navigation related applications are loaded with the public API, but do not use the navigation information.
- the public API allows for loading non-navigation applications and applications that use outputs of the core navigation features.
- an automatic steering application is loaded onto the receiver 14 .
- the automatic steering application accesses position and/or attitude information from the core navigation features through an interface defined by the public API.
- the vehicle control system with electronic interfaces may receive input data.
- the receiver 14 may not be specifically designed to perform a vehicle control function, such as steering the vehicle (e.g. a farm tractor) or actuating an implement.
- Steering hardware and firmware are either built into the vehicle, or are enclosed in a package which is separate from the receiver 14 .
- the firmware is added to the receiver 14 for providing signals to the built in steering of the vehicle or to hardware added to steer the vehicle.
- the data input 20 includes analog-to-digital converters and/or digital-to-analog converters for a wheel angle sensor or other input or output. To turn the wheel, a voltage output by a digital-to-analog converter might be sent to a voltage-driven hydraulic actuator.
- the processor 16 is operable to manage resource contentions for the software. Inputs, outputs, displays, interfaces and/or processing may be desired by different applications at different times. Any resource contention management may be used, such as providing access based on request time or an assigned priority (e.g., core navigation functions implemented first with other functions acting on a user selected priority or a request time basis).
- the proprietary or other software of the receiver 14 may override or prevent operation of added software.
- the processor 16 checks for COCOMM limits on altitude or speed. Where the limits are exceed, the processor 16 ceases to provide navigation output information. This or other checks are separated from the public application programming interface to avoid alteration.
- the receiver 14 may include processes for implementing source code.
- Source code is loaded onto the receiver 14 instead of binary “machine code” pursuant to the public API.
- the receiver functionality is extended by integrating a compiler into the receiver 14 or a source interpreter in the receiver (e.g., Java, or matlab).
- a source file or an archive of source files is loaded into the receiver 14 instead of a binary library, and the receiver 14 compiles or interprets the source.
- an integrated compiler is implemented with software on the receiver 14 .
- the compiler is provided with the receiver 14 or on a disk external to the receiver (for example, a USB flash disk).
- the compiler executes on a processor in the receiver.
- source code is loaded into the receiver 14 .
- the compiler converts the source into compiled software (i.e., machine code) executable by the receiver 14 or processor 16 .
- the compiler provides a software interface. The interface also defines the interaction between applications. For example, a public firmware image with undefined functions is provided.
- the compiled application includes function calls or memory reads to obtain navigation information.
- the integrated compiler compiles a function extension module linking the compiled software to the public firmware image.
- Extensibility hooks are linked to access a navigation metric derived from the core navigation function by software compiled by the integrated compiler.
- the processor 16 runs software compiled by the integrated compiler and core navigation functions. Different applications are provided due to the different firmware.
- the compiled software and the navigation software use the same or different outputs of the receiver 14 pursuant to the firmware image.
- the receiver 14 implements a source interpreter and a source loader.
- the source loader allows source code to be loaded into the memory 18 and/or processor 16 .
- the source is loaded before or after shipping and/or use of the receiver 14 .
- the source interpreter executes the source.
- the source code is read line by line without compiling or converting to machine code.
- the source interpreter is a Java or Matlab interpreter resident on the receiver 14 .
- the source interpreter links the source to the public firmware image so that navigation information may be used by the source interpreter for running the source.
- the source includes function calls to extensibility hooks provided by the firmware image.
- the software interface between the interpreted source and the receiver 14 provides for communication between navigation functions and the source.
- the processor 16 implements the source interpreter and runs the software as interpreted by the source interpreter.
- the processor 16 also runs different applications, such as the core navigation functions. Integrated debugging facilities or applications may be provided on the receiver 14 with the source interpreter to debug the source
- FIG. 2 shows a method for a global navigation satellite system receiver manufacturer to provide functional extensibility to a global navigation satellite system receiver.
- the method is implemented using the system 10 or receiver 14 shown in FIG. 1 or a different system or receiver. Additional, different or fewer acts than shown in FIG. 2 may be used. For example, acts 52 or 46 may not be provided. The acts are performed in the order shown or a different order.
- act 40 software to implement a core navigation feature is provided in a receiver.
- the receiver manufacturer or another loads firmware as data or instructions, as a field programmable gate array configuration, as a programmed application specific integrated circuit.
- the firmware is proprietary or publicly available.
- the core navigation features include measuring a carrier phase, measuring a code phase, carrier phase, tracking a satellite, satellite acquisition searching, or combinations thereof.
- other core navigation features may include ephemeris, position, velocity, acceleration, attitude, attitude rate, attitude acceleration, or combinations thereof.
- the core navigation features provide navigation information, such as associated from measuring a phase from a global navigation satellite system satellite or psuedolite to determining position.
- the core navigation features provide a simple position with civilian code based accuracy. Alternatively, the receiver includes other capabilities for increasing accuracy or other navigation improvements.
- the core navigation functionality is implemented with multi-frequency capability, local differential global positioning capability, an integrated local differential data link, a network-based global positioning capability (e.g., Omnistar or Starfire satellite distributed differential data), multi-antenna capability, combinations thereof or other features to provide decimeter or better differential global navigation satellite system capability.
- a network-based global positioning capability e.g., Omnistar or Starfire satellite distributed differential data
- multi-antenna capability e.g., combinations thereof or other features to provide decimeter or better differential global navigation satellite system capability.
- the core navigation features are performed without any functional extensions in act 48 , such as without additional software added by third parties.
- the receiver is operational as a navigation receiver without automatic steering, mapping, or other applications extending the functionality of the receiver.
- the receiver links and runs without the extensions.
- the receiver also has the ability to implement functional extensions, such as by running additional instructions on the same processor or processors of the receiver.
- a software interface is provided in act 42 .
- the software interface links to the receiver firmware with extensibility hooks.
- Extensibility hooks in the navigation receiver are provisions for adding more applications, such as with separate processes or separate threads.
- An extensibility hook provides for a different completely contained application, library function calls, subroutines, modules or other now known or later developed way to operate pursuant to an additional function.
- the extensibility hooks may provide buffers, memory space, ports or other locations for access by added applications to navigation metrics derived from an output of one or more core navigation functions.
- the software interface with extensibility hooks may also provide access to one or more receiver output interfaces for sharing between applications, such as sharing a display or data output port. Direct access is provided by the software interface to output interfaces of the receiver in one embodiment, and indirect access via an interface proxy is provided in another embodiment.
- the software interface allows the core navigation and extended functions to run on the same receiver. Any now known or later developed technique for running different applications may be used, such as threads sharing a process address space with zero or more other threads.
- a single application process is viewed as an address space with a single thread.
- Processes commonly use the processor's memory management unit (MMU) to guarantee that memory errors in one process don't corrupt another process. Every process typically has one and only one “main” function.
- MMU memory management unit
- Every process typically has one and only one “main” function.
- the complexity of multi-threaded programming and interaction may be minimized by providing a framework for implementing multiple threads, such as the framework provided by the software interface.
- Some operating systems have support for separate processes each with their own address space so that the memory of one process is not be contaminated by erroneous memory access in another process. Limits can also be imposed on a process-by-process basis to prevent a process from using too much memory.
- One way to implement a system that allows third party software or other applications to be loaded onto the same processor as other navigation system functions is to run each third party software module as a process.
- the processes might communicate to one another through sockets, fifos, or other interprocess communication techniques.
- the same serial interface that is used between the receiver and an external computer might be used through an analogous virtual port. Any new software module is registered.
- a new executable file is added onto the file-system and the executable file is added to the list of things that start automatically upon boot.
- this is traditionally performed by the “init” process.
- the init process is the so-called SysVInit.
- a simple shell script replaces SysVInit as the init process and simply calls each process in turn.
- Both processes and threads are scheduled by the operating system to run on the processor based on some scheduling algorithm that allows more than one thread or process to run on the processor substantially simultaneously. Since threads that are part of the same process share the same address space, the threads are not isolated from one another as are separate processes. The time to switch between two threads may be less than the time to switch between two processes. A serial interface between two processes on the same processor may be less flexible than using shared memory. Another way to communicate between two processes whether on the same or different processors is to use an “Object Request Broker” model.
- Yet another approach to incorporating third party software or additional applications into a navigation system is to define an interface with functions that the module calls under certain conditions. For example, a function might be called each time a position is calculated by the navigation code. Some functions might be explicitly defined in the interface while others might be registered at runtime as callback functions. More than one callback function might be registered for a given stimulus. For example, two dynamic link libraries might each define a function with the same parameters each to be called when a position fix is available. A linked list of callback functions is maintained by the module management component of the application.
- a simple publish/subscribe interface such as the quantum framework
- Each software module might be one or more actors in this framework.
- the API definition includes signal numbers and event structures (i.e., header and data structures) in addition to an interface to start the actors.
- the API might define a position event like this:
- Another application might subscribe to this message and publish another message based on the content of the position message and information harvested from other events.
- a chemical application controller module might publish a message to send a message on the CAN bus to signal the applicator hardware to increase the rate of application based on the position.
- This text file is read on startup and each dynamic link library could be loaded, and the corresponding start function is called with the assigned priority level.
- the C++ code below reads a line from such the file.
- a third party To register a new application to be added, a third party, the user or the manufacturer adds a line to a text file and adds the new dynamic link library to the file system.
- a third party To create such a library for a Linux system using the open source compiler gcc, special flags are passed to gcc to generate code suitable for dynamic linking. For example, to generate a shared dynamic link library, the flag “-fPIC” is used to generate “position independent code.” Similarly, if the library contains unresolved references to functions defined in the application, the application is compiled with the -rdynamic flag.
- the software interface and extensibility hooks allow operation of other software, such as third party software, with different functions on the receiver.
- a plurality of extensions may be provided, such as by loading a plurality of modules or applications.
- the software interface is published or publically available.
- the public interface allows for operation of third party software on the global navigation satellite system receiver. Different functions are supported by the receiver, so may be subsequently added independently of the receiver manufacturer. Different functions or applications are added at different times.
- the source codes of the different applications may be proprietary, but the public software interface allows the applications to all operate on the navigation receiver. The navigation receiver manufacturer may not be able to access an added application.
- the software interface is published as a public firmware image with undefined functions to be linked with one or more additional modules to successfully execute.
- the public firmware image is a partial firmware image (i.e., a firmware image with unresolved symbols).
- the public firmware image is inoperable without linking to one or more additional modules, such as added applications.
- the public firmware image may include a core navigation component or define interactions with the core navigation features.
- the core navigation features are operable to be performed by the global navigation satellite system receiver regardless of any linking of undefined functions with the one or more additional modules.
- Details of the public software interface are made public. For example, documentation for how to receive and interpret navigation software output is provided with the receiver, upon request, over a computer network or through other sources.
- the details include tools and/or directions for loading function extension software and/or for compiling function or software extensions on the receiver from source code.
- Tools and/or directions are provided for linking one or more function extension modules with the partial firmware image. After linking, a complete firmware image results.
- Directions are textual, visual, audible, or other formats explaining the software interface, extensibility hooks or other aspects for programming, linking, loading or running an application on the receiver.
- Tools include software for implementing the programming, linking, loading or running of the application with the public software interface.
- any now known or later developed processor or language may be used for compiling, linking, and symbol resolution of an additional application with the navigation receiver.
- a firmware image is generated by compiling each individual text source code file to create a binary “object module” using a compiler appropriate to the target processor and operating system.
- object modules are grouped together into one or more binary object libraries. The object files and/or libraries are linked together such that all necessary symbols have been resolved.
- Symbol resolution is done by static linking (e.g., creating a single file that has both the reference and the definition of the symbol), at run time (e.g., all referenced symbols are provided in a set of specified libraries at start of execution), or as needed (e.g., new functions are dynamically loaded).
- a dynamic loader is provided. Dynamic loading allows a new or added application to be added to already existing applications.
- the dynamic loader is software, tools or directions for adding functional extensions that adhere to the software interface for running the functional extensions on the processor in the receiver. Public tools and/or directions are provided to load the complete firmware image into the global navigation satellite system receiver.
- the dynamic loader is dynamic link libraries or additional process executor like the traditional Linux init process.
- a non-dynamic loader is provided, such as reprogramming outside of the receiver to integrate the various modules and load as a single program.
- each new software module is an individual file that is either a standalone application or a library.
- One technique to load or reload (e.g., reboot) an application file is to use a proprietary serial interface to the receiver.
- Another technique for receivers with ftp support and Ethernet, serial ppp connections or other network links is to simply ftp (or use scp, http, or another file transfer protocol) the file(s) to a standard location.
- Another technique that relies on services readily available on embedded Linux devices is to telnet into the receiver, NFS mount a remote server, and copy files from that server.
- Yet another technique is to put the files on an external USB storage media device and have the receiver look for files in a standard path on that device and automatically copy the files to internal storage.
- Combinations of these or other now known or later developed techniques for dynamically loading the applications may be used, such as using at least the USB and the ftp methods to dynamically load modules in a same process.
- the applications or source code loaded into the receiver for functional extension may be public or proprietary and/or from the same or different companies. Since a public interface is provided, various entities may produce software for running on the navigation receiver. For some functional extensions, the application uses the navigation metrics or information derived from one or more core navigation features. Access to the navigation metrics is provided as part of the software interface. Similarly, the added applications have direct or indirect access to one or more receiver output interfaces, such as an interface for driving a display or data output. The navigation software and any added functional extensions share the output interfaces.
- a recovery mechanism is provided in the receiver.
- the error recovery is part of the basic proprietary firmware or image, or part of the public software interface.
- the error recovery is performed automatically in response to a trigger or in response to a user input requesting error recovery.
- the error recovery process prevents a buggy software module or application from irrecoverably hanging the system.
- the recovery mechanism does not require opening the receiver housing, but opening the housing for recovery may be provided.
- the system searches in a standard location on an external storage device (e.g., USB) for a script or executable that reloads the application software before any application software is executed.
- Other techniques include accessing a JTAG or similar debug port on the processor and overwriting the buggy software, or accessing a switch that reverts to a safe image.
- Another technique is a small independent reload program run before any application software.
- a program is loaded with the dynamic loader.
- a program developer uses public tools, directions and/or software interface to load the complete firmware image into the global navigation satellite system receiver.
- the complete firmware image includes the code for the new application.
- the program is loaded using any of the dynamic or other loading techniques discussed herein.
- the application is loaded by a user or owner of the receiver, by the manufacturer of the receiver or by the developer of the added application. The loading is performed prior to or after sale or purchase of the receiver. Users of the receiver may be able to pick and choose available add on applications for use on the receiver.
- the open nature of the receiver interface allows others to create programs for use on the receiver made by a different entity and/or owned by a different entity.
- the consistency and/or security of a program is checked during or after loading.
- a checksum is used to check the consistency of at least one loaded functional extension.
- a digital signature or other encryption is checked to guard the loading functionality.
- a password or other security feature may be added to the software load or reload process.
- a digital signature is included with each software extension and signs the software extension with other information (such as priority level) appended to the extension.
- Multiple users (such as systems_integrator 1 and end-user) are defined, and the receiver has the ability to check the signature validity of each user, such as through the use of a public key that is entered by each user under password protection).
- different access levels restrict access to certain priority levels and/or interface devices.
- a digital signature may obviate the need for a checksum or other consistency check because the signature protects against both an intentional attempt to load bad code and a bit error during code load.
- the loaded code such as source code, an application, a functional module, machine code, a library, a complete firmware image or other application on a processor in the global navigation satellite system receiver is implemented.
- the processor or processors in the receiver run or operate pursuant to the extended function.
- Outputs based on or independent of navigation metrics are output on or by the receiver.
- the outputs provide information to a user or control other equipment.
- Implement or equipment manufactures may provide functional extensions for the receiver to operate the implement, avoiding additional controllers in a vehicle.
- the extended function may be responsive to user input, such as settings to control the control of equipment or type of output.
- a database For running the extended functionality or the navigation software, a database may be read.
- a database for operation of at least one of the functional extensions is interfaced to obtain a stored user configuration, such as desired ground speed for a speed control system.
- the receiver described herein may be used as an emulator.
- the receiver connects with a bus for receiving display instructions from different devices.
- the receiver emulates a standardized display and provides a navigation display, reducing cabin clutter in a vehicle. Any of the features, devices or acts described in U.S. Published Patent Application No. 2006-0271348, the disclosure of which is incorporated herein by reference, may be used.
- a GPS receiver with multiple antenna inputs running proprietary signal tracking software developed by one company and application software developed by another company multi-frequency GPS receiver with multiple antenna inputs running proprietary signal tracking software developed by one company and application software developed by another company
- multi-frequency GPS receiver with multiple antenna inputs with proprietary navigation software and means for loading third party application software multi-frequency GPS receiver with multiple antenna inputs with proprietary navigation software and means for loading third party application software where the API for the third party application software is public
- a GPS receiver and a display integrated e.g., within the console of the vehicle with other vehicle components
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Position Fixing By Use Of Radio Waves (AREA)
- Navigation (AREA)
Abstract
Description
// Signal number |
struct PosEvt : public QEvent { |
s32 timetag_; // msec of GPS week |
u16 GPSweek_; // GPS week number |
double eastNorthUp[3]; // meters relative to base station |
double variance[3]; // m{circumflex over ( )}2 |
double cov_A_B——B2_[3]; // m{circumflex over ( )}2 |
double pdop_; |
double vdop_; |
double gdop_; |
u8 numSV_; // Number of satellites used for pos fix |
u8 status_; |
enum StatusFlags { |
BASESTATION_TIMEOUT = 0x01, // DGPS correction timeout |
FLOAT_SOLUTION = 0x04, // Integers not fixed |
POSITION_NOT_VALID = 0x40, |
TIME_NOT_VALID = 0x80 |
}; |
double latitudeRad_; |
double longitueRad_; |
double altitudeMet_; |
};. |
Another application might subscribe to this message and publish another message based on the content of the position message and information harvested from other events. For example, a chemical application controller module might publish a message to send a message on the CAN bus to signal the applicator hardware to increase the rate of application based on the position.
/lib/libchemapp.so.1.0.1 | ||
iD8DBQFB9iSb/FmLrNfLpjMRAp0XAJ4prJCID4vjYsaMlKr/ | ||
UyAI6rcY3QCgmYJr | ||
/lib/libmovmap.so.3.2.1 start_movmap 3 enduser | ||
iQBvAwUBO/BigTanThAdit3tAQHj0QLQp8wCPnhr2AqgV7/ | ||
Wk/K6WjGEZWYyLSTv | ||
In the above example, a library name, a startup function for the library, a priority, a user name, and a signature for that user/library/startup/priority combination are provided.
void *handle; | ||
void (*func)(int); | ||
char *error; | ||
FILE *fp = fopen(“dllist”, “r”); | ||
char libname[128], funcname[64]; | ||
int prio; | ||
fscanf(fp, “%s %s %d”, libname, funcname, &prio); | ||
handle = dlopen (libname, RTLD_LAZY); | ||
if (!handle) { | ||
fputs (dlerror( ), stderr); | ||
exit(1); | ||
} | ||
func = (void (*)(int))dlsym(handle, funcname); | ||
if ((error = dlerror( )) != NULL) { | ||
fputs(error, stderr); | ||
exit(1); | ||
} | ||
(func)(prio); | ||
The dynamic link library is then loaded, and a function based on the data on that line is called. The following code shows how such a function might be implemented to start a quantum framework actor:
extern “C” { | ||
void start_chemapp(int prio) | ||
{ | ||
static QEvent *chemAppQueueSto[2000]; | ||
static ChemAppMgr cam; | ||
cam.start(prio, | ||
chemAppQueueSto, DIM(chemAppQueueSto), 0, 0, 0); | ||
} | ||
} | ||
The initial state may start a timer to go off twice per second and subscribe to position events.
//............................................................................ | ||
void ChemApp::initial(QEvent const *) { | ||
timer_.fireEvery(this, TIMEOUT4_SIG, TICKS_PER_SEC/2); | ||
QF::subscribe(this POS_SIG); | ||
Q_INIT(&ChemApp::running); | ||
} | ||
//............................................................................ | ||
QSTATE ChemApp::running(QEvent const *e) { | ||
switch (e->sig) { | ||
case POS_SIG: { | ||
const PosEvt *pe = (const PosEvt *) e; | ||
/* Do something based on position info */ | ||
/* ... */ | ||
return 0; | ||
} | ||
case TIMEOUT4_SIG: { | ||
/* Do something twice per second */ | ||
return 0; | ||
} | ||
} | ||
return (QSTATE)&ChemApp::top; | ||
} | ||
Claims (21)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/193,644 US7561967B2 (en) | 2005-07-29 | 2005-07-29 | Navigation receiver with functional extensibility |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/193,644 US7561967B2 (en) | 2005-07-29 | 2005-07-29 | Navigation receiver with functional extensibility |
Publications (2)
Publication Number | Publication Date |
---|---|
US20070027627A1 US20070027627A1 (en) | 2007-02-01 |
US7561967B2 true US7561967B2 (en) | 2009-07-14 |
Family
ID=37695414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/193,644 Active 2027-03-29 US7561967B2 (en) | 2005-07-29 | 2005-07-29 | Navigation receiver with functional extensibility |
Country Status (1)
Country | Link |
---|---|
US (1) | US7561967B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100286853A1 (en) * | 2009-05-11 | 2010-11-11 | Todd Goodermuth | System, method, and computer software code for distributing and managing data for use by a plurality of subsystems on a locomotive |
US20140222172A1 (en) * | 2012-02-08 | 2014-08-07 | Adam Hudson | Control Apparatus for Automating the Operation of Machinery |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653399B2 (en) * | 2005-12-22 | 2010-01-26 | Novariant, Inc. | Wide area differential satellite positioning with local area updates |
SG136825A1 (en) * | 2006-04-20 | 2007-11-29 | Mitac Int Corp | Navigation provision system and framework for providing content to an end user |
US20080040027A1 (en) * | 2006-08-09 | 2008-02-14 | Val Brooks-Kennedy | Trip Tracker |
US9208627B2 (en) * | 2007-02-12 | 2015-12-08 | Bosch Automotive Service Solutions Inc. | Scan tool with integrated global positioning system |
US9128114B2 (en) * | 2008-09-15 | 2015-09-08 | Nxp, B.V. | Capacitive sensor device and a method of sensing accelerations |
US8599904B2 (en) * | 2009-01-30 | 2013-12-03 | Analog Devices, Inc. | Method and apparatus for software GPS receiver |
US9509357B2 (en) * | 2012-08-17 | 2016-11-29 | Motorola Solutions, Inc. | Removable vehicular rooftop communication system |
DE102014016842A1 (en) * | 2014-11-13 | 2016-05-19 | Technisat Digital Gmbh | Starting data services of a navigation device of a vehicle |
DE102016210745A1 (en) * | 2016-06-16 | 2017-12-21 | Robert Bosch Gmbh | Updating navigation data |
US11483137B2 (en) * | 2020-01-22 | 2022-10-25 | Micron Technology, Inc. | Dynamic command extension for a memory sub-system |
CN116482725B (en) * | 2023-04-26 | 2024-01-26 | 中国人民解放军93216部队 | Open satellite navigation baseband signal processing method, device and receiver |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717596A (en) | 1995-02-15 | 1998-02-10 | Pitney Bowes Inc. | Method and system for franking, accounting, and billing of mail services |
US5949975A (en) | 1997-03-12 | 1999-09-07 | Microsoft Corp. | Method and system for negotiating capabilities when sharing an application program with multiple computer systems |
US6701378B1 (en) | 1998-05-29 | 2004-03-02 | Research In Motion Limited | System and method for pushing information from a host system to a mobile data communication device |
US6727918B1 (en) | 2000-02-18 | 2004-04-27 | Xsides Corporation | Method and system for controlling a complementary user interface on a display surface |
US6728896B1 (en) | 2000-08-31 | 2004-04-27 | Unisys Corporation | Failover method of a simulated operating system in a clustered computing environment |
US6753873B2 (en) | 2001-01-31 | 2004-06-22 | General Electric Company | Shared memory control between detector framing node and processor |
US6807529B2 (en) | 2002-02-27 | 2004-10-19 | Motorola, Inc. | System and method for concurrent multimodal communication |
US7028113B2 (en) * | 2001-05-22 | 2006-04-11 | Komatsu Ltd. | PC-card data communication apparatus |
-
2005
- 2005-07-29 US US11/193,644 patent/US7561967B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717596A (en) | 1995-02-15 | 1998-02-10 | Pitney Bowes Inc. | Method and system for franking, accounting, and billing of mail services |
US5949975A (en) | 1997-03-12 | 1999-09-07 | Microsoft Corp. | Method and system for negotiating capabilities when sharing an application program with multiple computer systems |
US6223212B1 (en) | 1997-03-12 | 2001-04-24 | Microsoft Corporation | Method and system for sharing negotiating capabilities when sharing an application with multiple systems |
US6701378B1 (en) | 1998-05-29 | 2004-03-02 | Research In Motion Limited | System and method for pushing information from a host system to a mobile data communication device |
US6727918B1 (en) | 2000-02-18 | 2004-04-27 | Xsides Corporation | Method and system for controlling a complementary user interface on a display surface |
US6728896B1 (en) | 2000-08-31 | 2004-04-27 | Unisys Corporation | Failover method of a simulated operating system in a clustered computing environment |
US6753873B2 (en) | 2001-01-31 | 2004-06-22 | General Electric Company | Shared memory control between detector framing node and processor |
US7028113B2 (en) * | 2001-05-22 | 2006-04-11 | Komatsu Ltd. | PC-card data communication apparatus |
US6807529B2 (en) | 2002-02-27 | 2004-10-19 | Motorola, Inc. | System and method for concurrent multimodal communication |
Non-Patent Citations (8)
Title |
---|
"GPS (Global Positioning System) Solution," Chaeron Corporation; Enterprise System Solutions; located on http://www.chaeron.com/gps.html; 4 pages; printed on Jul. 25, 2005. |
"Open Source GPS, A Starting point for learning about GPS with Open Source Software," by Joel Barnes et al.; located on http://home.earthlink.net/cwkelley/; 8 pages; printed on Jul. 25, 2005. |
"Real-Time L1 and L1/LS GPS Software Receivers," Dr. Brent M. Ledvina; located at http://gps.ece.cornell.edu/; 6 pages; printed on Jul. 25, 2005. |
"Two on One An application Programming Interface hosts Precision Guidance Controller on the GPS Receiver and Helps Reduce Soil Compaction," by GPS World-Designing and Implementing Solutions With Global Positioning Technologies; www.gpsworld.com; Jan. 2004; pp. 14-18. |
iQue 3600-The Smart Way to Navigate Your Day (iQue Technology, iQue High-Tech Integration, iQue Reliable Navigation and iQue Detailed Mapping); by Garmin Mobile Electronics; located at http://www.garmin.com/products/iQue3600; 6 pages; printed on Jul. 25, 2005. |
Operating System Solutions-Running Windows of Linux/UNIX Software on a Macintosh and Running Mac OS on other Platforms; Operating Systems: WIN/Unix on Mac, Mac on Others; http://www.macwindows.com/emulator.html: printed on May 2, 2005; 13 pages. |
Tractors and Machinery for Agriculture and Forestry-Serial Control and Communications Data Network-Part 6 Virtual Terminal; International Organization for Standardization, 2000 and pp. 150-11783. |
Worldwide Digital Global Positioning Service-Omnistar USA, Inc. (Services, Activation Setup and Frequently Asked Questions); located on http://www.omnistar.com/services.html; 13 pages; printed on Jul. 25, 2005. |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100286853A1 (en) * | 2009-05-11 | 2010-11-11 | Todd Goodermuth | System, method, and computer software code for distributing and managing data for use by a plurality of subsystems on a locomotive |
US8295998B2 (en) | 2009-05-11 | 2012-10-23 | General Electric Company | System, method, and computer software code for distributing and managing data for use by a plurality of subsystems on a locomotive |
US10336351B2 (en) | 2009-05-11 | 2019-07-02 | Ge Global Sourcing Llc | System method, and computer software code for distributing and managing data for use by a plurality of subsystems on a locomotive |
US20140222172A1 (en) * | 2012-02-08 | 2014-08-07 | Adam Hudson | Control Apparatus for Automating the Operation of Machinery |
US9176489B2 (en) * | 2012-02-08 | 2015-11-03 | Adam Hudson | Control apparatus for automating the operation of machinery |
Also Published As
Publication number | Publication date |
---|---|
US20070027627A1 (en) | 2007-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7561967B2 (en) | Navigation receiver with functional extensibility | |
US5920283A (en) | Receiver engine for global positioning system | |
US6234799B1 (en) | Real-time IMU simulator | |
US8260479B2 (en) | Modular software architecture for an unmanned aerial vehicle | |
US6072431A (en) | Extensible GPS receiver system | |
US20050114023A1 (en) | Fault-tolerant system, apparatus and method | |
Schmidt et al. | Development of a real-time software-defined GPS receiver in a LabVIEW-based instrumentation environment | |
Groves | The complexity problem in future multisensor navigation and positioning systems: A modular solution | |
Eling et al. | Development of an RTK-GPS system for precise real-time positioning of lightweight UAVs | |
Rajulu et al. | Open source RTOS implementation for on-board computer (OBC) in STUDSAT-2 | |
US20090066569A1 (en) | Animal tracking system | |
Kirkko-Jaakkola et al. | Performance of a MEMS IMU Deeply Coupled with a GNSS Receiver under Jamming | |
Panigrahi et al. | A method to compute location in GNSS denied area | |
Fernández-Prades et al. | Design patterns for GNSS software receivers | |
Wegner et al. | Methodology for Software-in-the-Loop Testing of Low-Cost Attitude Determination Systems | |
Daniel et al. | Tiira: An Open-Source Hardware-based GNSS Receiver and Multi-sensor Navigation System | |
CN117076824B (en) | State prediction method and device of mobile terminal, electronic equipment and storage medium | |
Tang | A hardware architecture for gps/ins-enabled wireless sensor networks | |
Shake et al. | Spacecraft attitude determination system using nano-optical devices and Linux software libraries | |
Thakur et al. | An embedded linux based navigation system for an autonomous underwater vehicle | |
FONTANA | Self-driving cars and Openpilot: a complete overview of the framework | |
Renfro et al. | The open source GPS toolkit: a review of the first year | |
Vista IV et al. | Design, Development, and Deployment of Real‐Time Sensor Fusion (CnW+ EKF) for a Linux‐Based Embedded System Using Qt‐Anywhere | |
Kavitha et al. | IoT‐Based Health Monitoring and Tracking System for Soldiers | |
Betts et al. | Sextant: A high-fidelity navigation simulation testbed |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: NOVARIANT INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LAWRENCE, DAVID G.;O'CONNOR, MICHAEL L.;REEL/FRAME:017000/0646 Effective date: 20050803 |
|
AS | Assignment |
Owner name: ORIX VENTURE FINANCE LLC,VIRGINIA Free format text: SECURITY AGREEMENT;ASSIGNOR:NOVARIANT, INC.;REEL/FRAME:018442/0556 Effective date: 20061024 Owner name: ORIX VENTURE FINANCE LLC, VIRGINIA Free format text: SECURITY AGREEMENT;ASSIGNOR:NOVARIANT, INC.;REEL/FRAME:018442/0556 Effective date: 20061024 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: SILICON VALLEY BANK,CALIFORNIA Free format text: SECURITY AGREEMENT;ASSIGNOR:NOVARIANT, INC.;REEL/FRAME:024358/0501 Effective date: 20100510 Owner name: SILICON VALLEY BANK, CALIFORNIA Free format text: SECURITY AGREEMENT;ASSIGNOR:NOVARIANT, INC.;REEL/FRAME:024358/0501 Effective date: 20100510 |
|
AS | Assignment |
Owner name: NOVARIANT, INC.,CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:ORIX VENTURE FINANCE, LLC;REEL/FRAME:024380/0678 Effective date: 20100510 |
|
AS | Assignment |
Owner name: NOVARIANT, INC., CALIFORNIA Free format text: RELEASE;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:027400/0587 Effective date: 20111207 |
|
AS | Assignment |
Owner name: BLUECREST CAPITAL FINANCE, L.P., ILLINOIS Free format text: SECURITY INTEREST;ASSIGNOR:NOVARIANT INC.;REEL/FRAME:027697/0865 Effective date: 20111121 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: NOVARIANT, INC., CALIFORNIA Free format text: RELEASE;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:033972/0405 Effective date: 20140922 |
|
AS | Assignment |
Owner name: NOVARIANT, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BLUECREST CAPITAL INTERNATIONAL MASTER FUND LIMITED;REEL/FRAME:036748/0755 Effective date: 20150924 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |