This repository contains the ROS 2 package for integrating Calian Smart GNSS Antennas with ROS 2-based systems.
- Introduction
- Features
- Requirements
- Nodes
- Parameters
- PointPerfect Setup
- Installation
- Usage
- Contributing
- Purchase Call
- Reference
- License
Calian GNSS ROS 2 is a ROS 2 package that provides functionality for interfacing with Calian Smart GNSS antennas. It allows you to receive and process GNSS data within your ROS 2-based systems. This package provides ROS 2 nodes and utilities to interact with Calian Smart GNSS antennas, enabling accurate localization, navigation, and time synchronization for your robotic projects.
This package depends on the message package.
- Real-Time Positioning: Achieve high-precision real-time positioning for your robots, essential for tasks like autonomous navigation and mapping
- ROS 2 Integration: Seamlessly integrate GNSS data into your ROS 2 ecosystem, making it easy to access and use GNSS information within your ROS 2-based applications.
- Customizable Configuration: Tailor the configuration to your specific requirements, with options for different GNSS constellations, frequencies, and data output formats.
- Monitoring Tool: Monitor your robot's location with a map view.
-
NOTE: Ensure to have clear skies to get good precision values
Calian GNSS ROS 2 package contains multiple nodes. One or more nodes are used at a time to use Calian GNSS Smart antenna in different configurations.
The GPS node is responsible for the configuration of Calian GNSS Smart antenna based on the mode of operation and publishing location data, antenna feedback to the respective topics. It takes the Log parameters and Config parameters (Described in the Parameters section) as the input parameters.
- Node arguments: Operating Mode (Accepted values are ****)
The PointPerfect node is responsible to provide PPP-RTK GNSS correction data to the Calian GNSS Smart antenna. It publishes the correction data to the "corrections" topic. It takes the Log parameters and Pointperfect parameters as the input parameters.
The Ntrip node is responsible to provide RTCM GNSS correction data to the Calian GNSS Smart antenna. It publishes the correction data to the "corrections" topic. It takes the Log parameters and Ntrip parameters as the input parameters.
The RTCM Remote Message Handler node is responsible for providing RTCM messages from Ably to the Calian GNSS Smart antenna. From our windows TruPrecision Application, A Base can be setup at a static location and RTCM corrections can be published onto the remote ably server. Those messages can be transmitted to the antennas using this node. It takes the Config parameters as the input parameters.
The GPS Visualizer node visualizes the location data of the Calian GNSS Smart antenna published in the gps topic onto the map.
The Unique Id Finder node extracts the unique id of the antenna from the SEC-UNIQID Ubx message. It assumes the antennas have the default baudrate (230400).
Path: src/calian_gnss_ros2/params/logs.yaml
save_logs (boolean)
:- Flag to save logs. If true, all the logs will be saved to the logs folder.
log_level (integer)
:- Logging level. Log level values are of ROS2 logging standards. Default is
Info
.(NotSet: 0, Debug: 10, Info: 20, Warn: 30, Error: 40, Critical: 50)
.
- Logging level. Log level values are of ROS2 logging standards. Default is
Path: src/calian_gnss_ros2/params/config.yaml
unique_id (string)
:- Unique Id of Calian Gnss receiver. Run the
Unique_id_finder
node (assumes default baudrate) to get the unique ids of all connected antennas.
- Unique Id of Calian Gnss receiver. Run the
baud_rate (integer)
:- Baud rate for serial communication. Default value should be 230400.
use_corrections (boolean)
:- Flag indicating whether PPP-RTK corrections should be used.
corrections_source (string)
:- The type of augmentation source used. Accepted values are
PointPerfect, Ntrip
. Only used when theuse_corrections
is true.
- The type of augmentation source used. Accepted values are
Path: src/calian_gnss_ros2/params/pointperfect.yaml
config_path (string)
:- Path to PPP-RTK configuration file. details to obtain config file is given in PointPerfect Setup section.
region (string)
:- Region information. Accepted values are
us, eu, kr, au
.
- Region information. Accepted values are
Path: src/calian_gnss_ros2/params/ntrip.yaml
hostname
:- Hostname or IP address of the NTRIP server to connect to.
port
:- Port to connect to on the server. Default:
2101
- Port to connect to on the server. Default:
mountpoint
:- Mountpoint to connect to on the NTRIP server.
ntrip_version
:- Value to use for the
Ntrip-Version
header in the initial HTTP request to the caster.
- Value to use for the
authenticate
:- Whether to authenticate with the server, or send an unauthenticated request. If set to true,
username
, andpassword
must be supplied.
- Whether to authenticate with the server, or send an unauthenticated request. If set to true,
username
:- Username to use when authenticating with the NTRIP server. Only used if
authenticate
is true
- Username to use when authenticating with the NTRIP server. Only used if
password
:- Password to use when authenticating with the NTRIP server. Only used if
authenticate
is true
- Password to use when authenticating with the NTRIP server. Only used if
ssl
:- Whether to connect with SSL. cert, key, and ca_cert options will only take effect if this is true
cert
:- If the NTRIP caster is configured to use cert based authentication, you can use this option to specify the client certificate
key
:- If the NTRIP caster is configured to use cert based authentication, you can use this option to specify the private key
ca_cert
:- If the NTRIP caster uses self signed certs, or you need to use a different CA chain, this option can be used to specify a CA file
To achieve centimeter-level accuracy in real-time, PPP-RTK corrections are essential. These corrections can be obtained through the Pointperfect subscription service, accessible at https://www.u-blox.com/en/product/pointperfect
. Follow the steps below to acquire and configure the necessary files:
-
Visit the website to subscribe to the Pointperfect service.
-
Once subscribed, navigate to the "Credentials" tab under the "Location Thing Details" section on the website.
-
Download the ucenter configuration file provided and rename it to
ucenter-config.json
. -
Create a new folder named
pointperfect_files
at the following directory:humble_ws/src/calian_gnss_ros2/pointperfect_files/
. -
Place the
ucenter-config.json
file inside the newly createdpointperfect_files
folder. -
When you run the node, it will generate several files within the
pointperfect_files
folder, which are necessary for establishing a connection to the subscription service.
To install Calian GNSS ROS2, follow these steps:
-
ROS Workspace: Move to your ROS2 workspace (example: mine is humble_ws)
cd ~/humble_ws/src
-
Clone the repository:
git clone [email protected]:Calian-gnss/calian-gnss-ros2-drivers.git
-
Build the package using colcon:
cd ~/humble_ws colcon build
-
source the setup file:
source install/setup.bash
-
Go to your project, and install requirements.txt for installing all the required libraries at once. (for exampe mine is under humble_ws/src/Calian_ros2)
cd humble_ws/src/calian_gnss_ros2 pip install -r requirements.txt
+ IMP NOTE: Source your package every time you make change or open a new terminal.
+ Else you will see Error like <<Package 'calian_gnss_ros2' not found>> even if you have cloned it.
The Calian GNSS ROS2 package provides flexibility in its configurations, and example launch files for different setups can be found in the launch
folder (/src/calian_gnss_ros2/launch/
). The package includes the gps_visualizer
node, designed to run alongside the gps
node, enabling the visualization of the published location data. Ensure to change the unique_id
parameter in the launch files to the desired gnss receiver.
-
To use corrections, Ensure the params file is changed accordingly.
-
If PointPerfect needs to be used as correction source, The steps mentioned in the PointPerfect Setup sections needs to be performed. If Ntrip needs to be used as correction source, The ntrip parameters needs to be changed to supply ntrip configuration.
-
Set the parameters in the params file (
src/calian_gnss_ros2/params/
):use_corrections
to True if the corrections service needs to be used.- **
corrections_source
to eitherNtrip
orPointPerfect
-
Build the workspace using
colcon build
and source the setup file withsource install/setup.bash
. Repeat this step for any changes in the launch file. -
Launch the nodes using the following command:
ros2 launch calian_gnss_ros2 disabled.launch.py
-
Upon execution, the
Calian_gps
node starts in disabled configuration, publishing location data to thegps
topic. -
The visualizer node is also initiated, and you can view the mapped location data at http://localhost:8080.
-
Note: You can modify the default port number (8080) of the visualizer node by adjusting the
port
parameter in the launch file.
For the Moving Baseline configuration, which involves two Calian antennas (one base and one rover), and only antennas with Zed-f9p chips acting as the base:
-
Follow similar steps as the RTK disabled configuration and make necessary changes to the params file.
-
Build and source the terminal.
-
Launch the nodes with the command:
ros2 launch calian_gnss_ros2 moving_baseline.launch.py
-
Upon execution, the Calian_gps nodes start in Base and Rover modes in moving baseline configuration, publishing location data to the
gps
topic and extended information like heading, quality and accuracies togps_extended
topics. -
Access the location data at http://localhost:8080.
-
Ensure to have clear skies to get good precision values.
For the Static Baseline configuration, which involves one Calian antenna setup using TruPrecision as base at a known location and one or more devices/robots with one antenna acting as rovers connected to the Base.
- Make sure to use the same key used for the TruPrecision (Prefilled do not change unless if you have a separate source). Change the channel name to the one given in TruPrecision application.
- Build and source the terminal.
- Launch the nodes with the command:
ros2 launch calian_gnss_ros2 static_baseline.launch.py
- Upon execution, The remote rtcm corrections handler and Calian_gps nodes start in Rover mode in static baseline configuration, publishing location data to the
gps
topic and extended information like heading, quality and accuracies togps_extended
topics. - Access the location data at http://localhost:8080.
- Ensure to have clear skies to get good precision values. To view active topics use command
ros2 topic list
Contributions to Calian ROS2 are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on GitHub.
For inquiries or to purchase our Calian's Antenna, please contact us at Calian. We are excited to assist you and provide further information about our offerings.
For more information about the Calian ROS2 driver please refer to GitHub
This project is licensed under the terms of the MIT License