Robotic Total Stations (RTS) - norlab-ulaval/Norlab_wiki GitHub Wiki

Figure 1: Robotic Total Stations.
In mobile robotics, it may be important to have reference data in order to compare and validate the results obtained by an algorithm. This comparison is important for assessing the location of a mobile platform. Indeed,external sensors such as Global Position System (GPS) are dependent of satellite obstruction and environment which can't always be a reliable source to evaluate a localization algorithm.
To overcome this problem, surveyors uses devices called Total Station. A Total Station is a geodetic instrument supplemented by an optical instrument, which makes it possible to measure angles in both horizontal and vertical planes in order to determine a direction. These devices have an EDM (Electonic Distance Measurement) which measures the distance of a target. Their angular accuracy is less than one thousandth of a degree, and the accuracy of the distance measurement is of the order of a millimeter.
As a result, it is possible to obtain a very accurate survey of any target objects. By placing different targets on a mobile robot, we could then get its full reference pose known as ground truth.
The theodolite we use is a Trimble Total Station (S7). A digital tablet is attached to the theodolite (Trimble CU Controller). This Control Unit uses the Trimble Access software allowing to control the total station, setup the leveling (bubble alignment), record measurements, etc. However, as explained in Acquisition setup we don't use this tablet for data acquisition.

Figure 2: Trimble S7 Total Station.
In order to perform measurements, the theodolite needs a target:
-
The reflective foil target (Figure 3) can be placed on a sensor to measure accurately its position, we use those when computing the sensors position relative to
base_linkon the sensor rack (TF trees). Watch out when doing calibration to set the laser to DR (Direct Reflection) and set the prism constant = 0mm. -
The active 360° prism (Figure 4), is a MultiTrack Target (MT1000). This prism is the target tracked on our robotic plateform, the Total Station automatically tracks it and enable us to acquire ground truth trajectories. Later in the software we use a prism constant = +10 mm. This constant is the extra distance traveled by the laser inside the prism that is a corner cube (when you look directly at it you see your eye 😉). The prism have between 1 to 8 channels that emits a frequency for the total station to track and stay locked into.
A single prism cost around 5,000$ so be careful with it !

Figure 3: Reflective foil target.
Figure 4: Active 360° prism (MT1000).
For data acquisition with a total station the setup is composed of a master: the robotic platform main computer and a client: a raspberry pi zero. Both equipped with a Long Range (LoRa) module (Figure 5) for transmitting the data between the master and the client.

Figure 5: LoRa module (Waveshare SX126X).
The LoRa module is plugged in the robotic platform main computer and using the Waveshare SX126X LoRa Hat module as serial device under /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 to request and receive the Total Station measurements.
The installation guide and implementation details of the master can be found at RTS master installation.
There are 3 Raspberry Pi (Zero 2W) clients running Pi OS Bookworm (equivalent Ubuntu 22). The clients are interfaced with the COM port of the Total Station with a COM to USB cable under a udev rule as /dev/theodolyte. This system enable the recordings of measurements of the active prism at 2.5Hz and transmits it with the LoRa module to the master. A Waveshare LC29H (DA) GPS Hat module (Figure 6) is used for time synchronization (PPS) of the Raspberry Pi clock.
The installation guide and implementation details of the client at RTS client installation.
The credentials for logging in the clients are the following:
• User: robot • Password: you know what

Figure 5: GPS module (Waveshare LC29H(DA)).
A Raspberry Pi (3 model B+) master running Ubuntu 22.04 LTS is installed in the Warthog at the
ipthe192.168.3.7, accessible through ssh viawarthog-rpi-master. Themasteris time synchronized with thehigh-levelusing Time Synchronization (PTP). The setup and installation guide of the master can be found at RTS master old installation.The credentials for logging in the master are the following:
• User: robot • Password: you know what
There are 3 Raspberry Pi (3 model B+) clients running Ubuntu Mate 18.04.2. The clients are interfaced with the COM port of the Trimble S7 port through a 6 pin to USB cable. This system enable the recordings of measurements of a tracked prism from the total station to the master.
The credentials for logging in the clients are the following:
• User: pi • Password: you know what
A backup of the PI is available on bigfoot NAS: RTS > RTS_backup.
The main package running is theodolite_master on ROS2 humble which handles the LoRa communication of the measurements between the different total stations' clients and transmits it to the topic /theodolite_data as a custom message theodolite_node_msgs.
A theodolite_pose ROS2 package was developed in order to convert the measurements from /theodolite_master to the topic theodolite_pose.
First an initialization need to be done by aiming at the three prisms with a single total station, which then can determine the total station position related to the Warthog by getting the TF of the prisms on the platform.
This node can be launched using one, two or three total station that respectively result in 3-DoF, 4DoF, 5-DoF ground-truth (WIP only 1 working for now in real-time).
A theodolite_client C++ repos was developed in order to have an executable theodolite_client that uses the SDK to send and receives the Total Station measurements with the master.
First an initialization need to be done by aiming at the three prisms with a single total station, which then can determine the total station position related to the robotic platform by getting the TF of the prisms, see Deployment of Robotic Total Stations (RTS) on how to deploy the system.
This node can be launched using one, two or three total station that respectively result in 3-DoF, 4DoF, 5-DoF ground-truth (WIP only 1 working for now in real-time).
A theodolite_interface) SDK was developed in order to interface with the Total Station and send command such as track a prism on a channel, record measurements in the /SSIServer folder. This SDK is built upon a pre-compiled library in C++ provided to us in the /lib and /share folders.
A report was created on June 10 2020, detailing the code implementation of the SDK: pdf version.