Tools for interfacing with Point One FusionEngine devices from a host computer.
This set of Python applications provides command-line tools for control, configuration, and data collection from Point One devices.
For a graphical application for interfacing Point One devices, use the Point One Desktop application. This application and additional documentation on Point One devices, protocols, and software can be found at https://pointonenav.com/docs/.
For Windows users, pre-compiled Windows binaries can be downloaded as part of the GitHub releases. Windows users do not need to download or install Python.
This repo is written in Python version 3. It includes a pip requirements.txt
file, which details the dependencies needed to run the applications.
To get started, you can simply add the requirements to your system Python installation:
pip3 install -r requirements.txt
python3 config_tool.py
However, we strongly encourage the use of a Python virtual environment for managing dependencies (see below).
We strongly encourage the use of a Python virtual environment to avoid conflicts between the requirements for these tools with those of other Python applications on your computer.
-
Create a new virtual environment.
cd p1_runner python3 -m venv venv
- You only need to do this once, unless you want to delete the virtual environment and recreate it.
-
Activate the virtual environment.
Linux/Mac:
source venv/bin/activate
Windows:
venv\Scripts\activate.bat
-
Install the latest requirements.
pip install -r requirements.txt
- You should redo this step each time
p1-host-tools
is updated to make sure you have the latest dependencies.
- You should redo this step each time
-
Run the applications.
python config_tool.py
The p1_runner
application connects to a device over serial in order to provide GNSS corrections data and log the device output.
p1_runner
includes a built-in NTRIP client and support for receiving GNSS corrections from Point One's Polaris corrections network.
The following sections cover the most common use case. See runner.py --help
for more detailed usage information and examples.
-
Connect a USB cable from the Point One device to your host computer.
-
If used, activate the Python virtual environment as described in Setup / Installation.
-
Run p1_runner to connect the device.
Linux:
python3 bin/runner.py
Windows:
python bin/runner.py
This will attempt to detect the appropriate serial port for the device. If the selected port is not correct, use the
--device-port
argument to specify the correct port.
As it runs, the Python client application records all sensor measurements and generated output from the device into a log directory.
By default, logs are stored in ~logs
on Linux or %HOME%\Documents\logs
(i.e., My Documents) on Windows.
For precision applications, you must provide GNSS RTK corrections data. The Python client can be configured to connect to Point One's Polaris corrections service or to an NTRIP server to receive corrections and relay them to the device.
To enable Polaris corrections, use the --polaris
argument, providing an NTRIP password assigned by Point One. In addition, you
must specify an ID that uniquely identifies the device. There cannot be two concurrent connections to the Point One Polaris NTRIP
service with the same username and password, doing so will lead to undefined behavior. The username may only contain letters, numbers,
dashes, or underscores and can be at most 32 characters. For example:
$ python3 bin/runner.py --device-id my-device --polaris abcd1234
Contact Point One for a Polaris username and password.
To use another NTRIP service, use the --ntrip
argument, specifying URL, mountpoint, and optionally username and password. For example:
$ python3 bin/runner.py --ntrip http://corrections.com:2101,my_mountpoint,my_username,my_password
config_tool.py
can be used to query and update the setting and stored data on a Point One device.
The following sections cover the most common use case. See config_tool.py --help
for more detailed usage information and examples.
-
Connect a USB cable from the Point One device to your host computer.
-
If used, activate the Python virtual environment as described in Setup / Installation.
-
Run config_tool to connect the device.
Linux:
python3 bin/config_tool.py COMMAND [OPTIONS...]
Windows:
python bin/config_tool.py COMMAND [OPTIONS...]
For example, to enable FusionEngine PoseMessages and disable NMEA GGA messages on UART1 run the following:
python3 bin/config_tool.py apply uart1 message_rate fusion_engine posemessage on
python3 bin/config_tool.py apply uart1 message_rate nmea gga off
python3 bin/config_tool.py save
Parameter changes take effect immediately after issuing an apply command:
python3 bin/config_tool.py apply ...
Applied settings are not saved to persistent storage automatically, and will be reset after a power cycle. To save settings to persistent storage, issue a save command:
python3 bin/config_tool.py save
device_bridge.py
is used to bridge two serial devices, forwarding the output from each device to the input of the other device.
This is most common if:
- One device is acting as an RTK base station for another device
- One device is a heading sensor (i.e., heading secondary device), sending heading measurements to a navigation engine (i.e., heading primary device)
For example, to connect device A on /dev/ttyUSB0
to device B on /dev/ttyUSB3
:
python3 bin/device_bridge.py /dev/ttyUSB0 /dev/ttyUSB3
See device_bridge.py --help
for more detailed usage information and examples.