Configuration of novatel_oem7_driver
The novatel_oem7_driver configuration can be altered through yaml files referenced by the .launch files.
OEM7 Receiver configuration via std_init_commands.yaml
The novatel_oem7_driver by Hexagon | NovAtel® generates ROS messages from multiple NovAtel OEM7® logs. OEM7 logs are formatted in an open log format that is heavily documented at the NovAtel Documentation Portal available here: https://docs.novatel.com/OEM7/Content/Logs/Log_Reference.htm
The list of NovAtel commands and log requests sent to the OEM7 receiver upon ROS driver startup are contained in the std_init_commands.yaml file.
Some of the included log commands are required for proper ROS driver operation. The logs that are needed for the novatel_oem7_driver to function are categorized under a ‘do not remove these messages’ header. The user may choose to add additional NovAtel configuration commands or log requests if they are customizing the driver.
The path to the template std_init_commands.yaml file from the binary installation is:
OEM7 Logging Configuration via std_oem7_raw_msgs.yaml
std_oem7_raw_msgs.yaml configures OEM7 logs that will be logged as binary blobs for post-processing in to the /novatel/oem7/oem7raw ROS topic. These logs can used for troubleshooting the OEM7 receiver and can be provided to NovAtel Customer Support if support is required.
std_oem7_raw_msgs.yaml is typically a subset of the list of the logs requested in std_init_commands.yaml.
The path to the template std_oem7_raw_msgs.yaml file from the binary installation is:
OEM7 log names and IDs registered in oem7_msgs.yaml
Typically, this does not need modification, unless you are optimizing the driver and have revised the std_init_commands.yaml file.
oem7_msgs.yaml lists the OEM7 log names along with the corresponding binary ID’s. The binary ID for each log can be found in the OEM7 manual. It is necessary for each listed log name and binary ID pair to be correct. Messages not in this list will be ignored by novatel_oem7_driver.
The template oem7_msgs.yaml file from the binary installation is located at:
Driver Plugins std_driver_config.xml and std_msg_handlers.yaml
The novatel_oem7_driver for ROS contains two plugins to be loaded. There is no need to modify these unless you are developing your own plugins or optimizing driver footprint.
When installed via the binary release, the templates for these two plugins are located at:
Customizing Logging Configuration
The user may edit the driver's configuration files to customize their OEM7 receiver's configuration upon ROS start up.
This will impact what is reported to the ROS topic: /novatel/oem7/oem7raw
SPAN Lever Arm and Rotation Example
For this example, suppose the user wanted to add novatel_oem7_driver start up commands to configure the SPAN lever arm and rotation:
Then, suppose the user wanted to rotate the system's output to a frame other than the receiver default (such as the REP105 standard):
And, further suppose the user wanted to add additional log requests:
The following modifications would be necessary.
std_init_commands.yaml - receiver_init_commands
Edit std_init_commands.yaml to include the SETINSTRANSLATION and SETINSROTATION OEM7 commands. The receiver_init_commands section would appear as follows:
... receiver_init_commands: #------------------------------------------------------------------------------ # Reset logging - "UNLOGALL THISPORT" - "SETINSTRANSLATION ANT1 1 2 3 0.05 0.05 0.05" - "SETINSROTATION RBV 0 90 180 3 3 3" #- "!PAUSE 10" #- "SETINSPROFILE LAND" #- "SETINSTRANSLATION ANT1 <x> <y> <z> <std. x> <std. y> <std. z> #- ... etc. #----------------------------------------------------------------------------- ...
Above the added lines were:
- "SETINSTRANSLATION ANT1 1 2 3 0.05 0.05 0.05"
- "SETINSROTATION RBV 0 90 180 3 3 3"
Changing Output Reference Frame
There is often motivation to output attitude measurements in some other frame than the vehicle frame defined by NovAtel, X-right, Y-forward, Z-up.
As an example, the vehicle frame defined in REP105 is X-forward, Y-left, Z-up and this output frame may be required to work with other sensors in ROS.
The SETINSROTATION USER command rotates from the IMU body frame to the user output frame. As an example, suppose the IMU is sitting in the vehicle with its coordinate frame aligned with the vehicle frame defined by NovAtel: X-right, Y-forward, Z-up. To rotate the inertial output frame from this orientation to X-forward, Y-left, Z-up, edit the receiver_init_commands section of the std_init_commands.yaml file as follows:
... receiver_init_commands: #------------------------------------------------------------------------------ # Reset logging - "UNLOGALL THISPORT" - "SETINSTRANSLATION ANT1 1 2 3 0.05 0.05 0.05" - "SETINSROTATION RBV 0 90 180 3 3 3" - "SETINSROTATION USER 0 0 90" #- "!PAUSE 10" #- "SETINSPROFILE LAND" #- "SETINSTRANSLATION ANT1 <x> <y> <z> <std. x> <std. y> <std. z> #- ... etc. #----------------------------------------------------------------------------- ...
Above the added line was:
- "SETINSROTATION USER 0 0 90"
which would rotate the frame 90 degrees right-handed positively about the Z-axis. The USER frame now aligns with the frame defined by REP105, X-forward, Y-left, Z-up.
std_init_commands.yaml - End of File
Add the additional logs to the end of std_init_commands.yaml, under the "Post-Processing Messages" text:
# Post-Processing Messages; not directly used to generate ROS messages. - "LOG RAWIMUSXB ONNEW" - "LOG INSUPDATESTATUSB ONNEW" - "LOG RAWEPHEMB ONNEW" - "LOG GLOEPHEMERISB ONNEW" - "LOG BDSEPHEMERISB ONNEW" - "LOG GALFNAVEPHEMERISB ONNEW" - "LOG GALINAVEPHEMERISB ONNEW" - "LOG RANGEB ONTIME 1" - "LOG MARK1TIMEB ONNEW" - "LOG MARKPOSB ONNEW"
Note that the added lines were:
- "LOG MARK1TIMEB ONNEW"
- "LOG MARKPOSB ONNEW"
Edit the oem7_msgs.yaml to add the new log names as well as the binary ID’s. Refer to the OEM7 manual to obtain the binary ID’s:
Add the additional message names below under the ‘More messages may be added...’ comment:
# Standard messages - Do not remove. BESTPOS: 42 BESTVEL: 99 BESTUTM: 726 ... RXSTATUS: 93 INSUPDATESTATUS: 1825 INSCONFIG: 1945 PSRDOP2: 1163 # More messages may be added in order to process Oem7 'raw' messages. MARK1TIME: 1130 MARKPOS: 181
Edit the std_oem7_raw_msgs.yaml to add the new log requests to have them included in the /novatel/oem7/oem7raw ROS topic:
Append the new log names to the end of the file:
oem7_raw_msgs: - BESTPOS - BESTVEL - INSPVAX - INSUPDATESTATUS - RAWIMUSX - RAWEPHEM - GLOEPHEMERIS - BDSEPHEMERIS - GALFNAVEPHEMERIS - GALINAVEPHEMERIS - RANGE - HEADING2 - TIME - RXSTATUS - INSCONFIG - MARK1TIME - MARKPOS
TerraStar, Oceanix and VERIPOS Correction Services Overview
NovAtel OEM7 receivers can use NovAtel Correction Services to receive PPP corrections. This can improve your real-time position accuracy to as fine as 2.5cm RMS (via TerraStar-X™).
NovAtel offers correction services for different applications:
Various applications including precision agriculture, survey, automotive and aerial.
Marine applications including dredging, hydrographic survey and mapping.
Offshore Oil and Gas
Correction Service Activation
To use NovAtel Correction Services with novatel_oem7_driver, you must:
- Have a receiver model that supports corrections
- Have an active subscription for your receiver's serial number (PSN)
- Have configured your receiver appropriately
To purchase a subscription, please contact your NovAtel Sales representative. To request a temporary, test subscription, please contact NovAtel Customer Support:
OEM7 Firmware & Model Considerations
OEM7 Firmware for ROS
To use the novatel_oem7_driver for ROS with an OEM7 receiver, make sure you are running a current OEM7 firmware for your specific hardware. To update your OEM7 firmware, go to the NovAtel support site, locate your OEM7 hardware and follow the update instructions.
GNSS Receivers (Non-SPAN)
If you require assistance, you may contact NovAtel Customer Support. Please be sure to include a text copy and paste of your OEM7 receiver's output to the command:
You may contact NovAtel Customer Support here:
NovAtel receivers are able to run a range of functions which are determined by what the paid model of each OEM7 receiver. It is possible to purchase upgrades to your model once you have your OEM7 hardware. ROS users may consider this to add functionality such as:
- Extra GNSS constellation support (To add Glonass, Galileo, Beidou, etc)
- Add PPP/RTK correction support
- Add SPAN support (sensor fusion positioning such as to integrate an IMU)
To view the latest models please view (note the table on the last page):
To purchase a model upgrade, please contact your NovAtel Sales representative. To request a temporary model upgrade, please contact NovAtel Customer Support:
Return to the novatel_oem7_driver page for next steps