Start Localization Process in Indoor DASA System

Note: This tutorial is applicable for DASA indoor configuration.

The DASA indoor configuration utilizes UWB (Ultra-Wideband) positioning for vehicle localization, and sophisticated algorithms in sensor fusion are also devised to achieve satisfactory performance. The localization accuracy is able to reach 0.1m and 0.05m in horizontal and vertical channels respectively in a typical indoor environment. The tutorial shows how to start the localization process in indoor DASA system. Users are advised to refer to the official DASA user manual for complete instructions.

1. Scenario Setup

The setup of DASA indoor system is quite straightforward. A minimal 5m*5m field is recommended for common users, and larger areas are demanded for swarm applications. Electromagnetic interference should be avoided as UWB signals can be volatile, so remember to keep a distance from suspicious interference sources for the field setup.

../_images/scenario.png

The global coordinate frame for DASA indoor, called DASA frame, can be depicted as below, and it follows the right hand rule. The origin of the DASA frame is located directly under the anchor A0 on ground. All DASA vehicles share the same coordinate frame in the local network. Note that the UWB anchors have to be calibrated during the first setup to ensure localization accuracy.

../_images/loco_uwb_setup.jpg

2. Localization Workspace

The workspace for indoor localization is located in ~/DASA_space/catkinws_dasa for each DASA vehicle, and it consists of multiple packages including the uwb device driver, mavros gateway, ros swarm communication, localization fusion and visualization packages.

The workspace should be configured properly before usage. First, we can synchronize the code in the workspace with the latest version in the ground control computer, simply by running the convenience script and entering the remote vehicle id:

# on behalf of the ground control computer
cd ~/DASA_space/catkinws_dasa
bash scripts/sync/sync_workspace_remote.sh

Second, all vehicles have to be setup with correct vehicle type and vehicle id. Users can log into the remote vehicle with the ssh command, and perform the following commands and entering correct vehicle type and id.

ssh ubuntu@ubuntu<i>
cd ~/DASA_space/catkinws_dasa
bash scripts/production/config_vehicle.sh

Third, users shall calibrate the UWB anchors with the GUI software provide, and also measure the yaw direction of the x axis with a DASA vehicle. Then edit the dasa_config.yaml in the uwb_localization package with proper values as below. The configuration file can be synchronized to all DASA vehicles in one shoot with the aid of sync_dasa_config.sh script under the ~/DASA_space/catkinws_dasa/scripts/sync directory.

# param: value

# initial yaw angle of DASA x axis in the ENU frame, should be measured with DASA agent, unit: rad, [-Pi, Pi]
yaw_dasa_x_axis_enu: 2.2

anchor_position:
# numbers must in x.x format(i.e: 5.0), indexed by order, anchor0-3
# loaded only for nl setup, RFU frame by default
- [ 0.0,       0.0,        0.0]
- [-0.433,       5.117,        0.0]
- [ 3.193,       5.222,        0.0]
- [ 2.904,       0.0,        0.0]

Finally, users have to edit the required topics in the ros communication package so that those topics can be synchronized in the local network. A typical topic list is shown below for 8 DASA vehicles:

'/dasa/local_position/pose',/uav1/dasa/local_position/pose', '/uav1/dasa/local_position/velocity',
'/uav2/dasa/local_position/pose', '/uav2/dasa/local_position/velocity',
'/flyingrover3/dasa/local_position/pose', '/flyingrover3/dasa/local_position/velocity',
'/flyingrover4/dasa/local_position/pose', '/flyingrover4/dasa/local_position/velocity',
'/flyingrover5/dasa/local_position/pose', '/flyingrover5/dasa/local_position/velocity',
'/flyingrover6/dasa/local_position/pose', '/flyingrover6/dasa/local_position/velocity',
'/rover7/dasa/local_position/pose', '/rover7/dasa/local_position/velocity',
'/rover8/dasa/local_position/pose', '/rover8/dasa/local_position/velocity'

3. How to Use

The localization process can be easily launched with convenience scripts. Both single and swarm cases are supported.

For single vehicle case,

# In remote vehicle terminal
ssh ubuntu@ubuntu<i>
cd ~/DASA_space/catkinws_dasa
# uav case
bash scripts/single_case/run_uav_default.sh
# rover case
bash scripts/single_case/run_rover_default.sh
# flying rover case
bash scripts/single_case/run_flyingrover_default.sh

For swarm case,

# In remote vehicle terminal
ssh ubuntu@ubuntu<i>
cd ~/DASA_space/catkinws_dasa
# uav case
bash scripts/swarm_case/run_uav_default.sh
# rover case
bash scripts/swarm_case/run_rover_default.sh
# flying rover case
bash scripts/swarm_case/run_flyingrover_default.sh

The localization of DASA vehicles can also be visualized in the ground control computer with the aid of dasa_visualization package.

cd ~/DASA_space/catkinws_dasa
bash scripts/run_gcs_visualization.sh

A typical view for multiple DASA vehicles is shown as below, and the base_link<i> denotes the baselink of the i-th vehicle in the DASA frame.

../_images/baselink_gcs_view.png