ROS node to read SBP messages from an attached Piksi Multi RTK device.
The piksi_multi_rtk_ros package has been tested under ROS Indigo and Ubuntu 14.04, and ROS Kinetic and Ubuntu 16.04.
WARNING: default baud rate of the driver is set to '230400' (default baud rate of Piksi Multi is '115200'). This means you have to set your Piksi Multi baud rate correctly by following these settings instructions.
WARNING: install ONLY ONE version of SBP library, depending of which Hardware version you are using. This page contains the driver for Piksi Multi. If you are using Piksi V2 please check its driver version: piksi_rtk_gps (it is not supported anymore).
The following code will automatically download the required version of libsbp and install it in the default folder /usr/local/lib/python2.7/dist-packages/sbp-<SBP_LIB_VERSION>-py2.7.egg/sbp/
.
# Execute this line in the package folder 'piksi_multi_rtk_ros'
source install/install_piksi_multi.sh
Please check here which Piksi Multi firmware version based on the current SBP Lib version.
Currently the install_piksi_multi.sh
will install SBP Lib 2.3.15 (see REPO_TAG).
This means you are supposed to install Firmware 1.5.12 from SwiftNav Firmware page in your Piksi Multi.
Make sure you configured your Piksi(s) by following these instructions.
Base station
If you have already configured Piksi Multi to act as a base station and sampled its position (see Testing Outdoor), then simply launch the following file.
roslaunch piksi_multi_rtk_ros piksi_multi_base_station.launch
If you have already configured Piksi Multi to act as a base station (and did NOT sample its position), then launch the following file. Once the survey is over, the sampled position will be automatically written in Piksi flash memory.
roslaunch piksi_multi_rtk_ros geodetic_survey.launch
Rover
roslaunch piksi_multi_rtk_ros piksi_multi_rover.launch
Check the status of your receiver (RQT GUI):
roslaunch rqt_gps_rtk_plugin gui.launch
The most interesting advertised topics are:
/piksi/navsatfix_rtk_fix
(sensor_msgs/NavSatFix) in case of RTK fix position from Piksi then this message contains WGS 84 coordinates;/piksi/navsatfix_spp
(sensor_msgs/NavSatFix) in case of SPP fix position from Piksi then this message contains WGS 84 coordinates;/piksi/navsatfix_best_fix
(sensor_msgs/NavSatFix) this message contains WGS 84 coordinates with best available fix at the moment (either RTK or SPP);/piksi/debug/receiver_state
(piksi_rtk_msgs/ReceiverState_V2_2_15) this message contains miscellaneous information about the state of Piksi Multi receiver;/piksi/enu_pose_fix
(geometry_msgs/PointStamped) this message contains ENU (East-North-Up) coordinate of the receiver in case of RTK fix. Orientation is set to identity quaternion (w=1);/piksi/enu_pose_spp
(geometry_msgs/PointStamped) this message contains ENU (East-North-Up) coordinate of the receiver in case of SPP fix. Orientation is set to identity quaternion (w=1);/piksi/enu_pose_best_fix
(geometry_msgs/PointStamped) this message contains ENU (East-North-Up) coordinate of the receiver with best available fix at the moment (either RTK or SPP). Orientation is set to identity quaternion (w=1);
For a complete list of advertised topics please check function advertise_topics
.
Raw IMU and magnetometer measurements are not published by default. If you want to publish them in ROS you need to: (a) Open Swifnav console, connect to Piksi, navigate to "Settings", and then in the "imu" section enable "imu raw output" and "mag raw output" (save these new settings, so you need to do this operation only once); (b) set to true the flag publish_raw_imu_and_mag.
Raw measurements are published in /piksi/imu_raw
and /piksi/mag_raw
.
The origin of the ENU (East-North-Up) frame is set either using rosparameters or using the first RTK fix message obtained. In the former case the following private parameters must be set:
latitude0_deg
: latitude where the origin of ENU frame is located, in degrees;longitude0_deg
: longitude where the origin of ENU frame is located, in degrees;altitude0
: altitude where the origin of ENU frame is located, in meters;
see also configuration file enu_origin_example.yaml.
It is possible to send/receive corrections over Wifi between multiple Piksi modules.
Set configurations in cfg/piksi_multi_driver_settings.yaml
- Base station configuration (sends corrections)
base_station_mode: true
broadcast_addr: <put here Bcast address obtained from command ifconfig>
broadcast_port: 26078
- Rover configuration (receives corrections)
base_station_mode: false
broadcast_addr: <put here Bcast address obtained from command ifconfig>
broadcast_port: 26078
base_station_ip_for_latency_estimation: <IP address of base station or router, to estimate latency over wifi>
The following services are available:
piksi/settings_write
: writes a specific setting to Piksi Multi;piksi/settings_read_req
: requests a parameter to Piksi Multi;piksi/settings_read_resp
: reads the latest response of a "settings_read_req" request;piksi/settings_save
: saves the current settings of Piksi Multi to its flash memory.