[Roadrunner as a sensor] for Robotics with TDoA

All discussions related to the Loco Positioning system
Post Reply
AlexisTM
Beginner
Posts: 1
Joined: Mon Feb 18, 2019 2:09 pm

[Roadrunner as a sensor] for Robotics with TDoA

Post by AlexisTM » Wed May 22, 2019 9:37 am

Description

We made the roadrunner usable as a sensor for Robotics purpose for further filtering using the main Kalman filter with the correct model. (cra-ros-pkg/robot_localization).

The system includes: Differences to the main branch:
  • Uses the complementary filter instead of the kalman filter to have a more (much more) stable IMU (see: bitcraze/crazyflie-firmware/issues/426
  • Disables the controller (using NO_CONTROLLER)
  • Enables the UART2 at 1000000 baudrate by default
  • Sends the TDOA measurement over UART2 (TDOA_MEASUREMENT message), by default max frequency (max 400Hz, typical 200Hz)
  • Sends the IMU raw measurements over UART2 (GYRO_ACC message), by default 100Hz
  • Sends the IMU quaternion computed over UART2 (QUATERNION message), by default 20Hz
Usage

Flash the following firmware using the following custom firmware using this implmenetation available at:
umdlife/crazyflie-firmware#u2_feature_custom_kalman, install the TDoA engine, and connect the system via UART to your computer.

Code: Select all

mkdir -p ~/Tools
cd ~/Tools
git clone https://github.com/umdlife/crazyflie-firmware --recursive -b u2_feature_custom_kalman
cd crazyflie-firmware
make PLATFORM=tag clean
make PLATFORM=tag -j
# Put the board in DFU flash mode before this action, by holding the ON-OFF-BOOT button for 5 seconds while booting and once it starts blinking fast, press the button once more. 
make PLATFORM=tag flash_dfu
# the PLATFORM=tag option is defaulted to your value after one call.

You can then reboot the roadrunner and use the roadrunner_receiver.py.

Code: Select all

mkdir -p ~/Tools
cd ~/Tools
git clone https://github.com/AlexisTM/MultilaterationTDOA
cd MultilaterationTDOA
sudo python2 setup.py install

cd ~/Tools
git clone https://github.com/umdlife/roadrunner_mavlink
cd roadrunner_mavlink/scripts
python2 roadrunner_receiver.py
Roadrunner_connection_to_UART2_USB.jpg
Why?

We wanted to use the roadrunner as the localization and IMU node of our AGVs with TDoAv3 localization.

Yet, as it is a early release product we faced many issues:
- Overshoot of the position due to high acceleration and kinematics of a copter for the Kalman and not an AGV
- USB disconnections due to an old USB driver (fixed in master)
- Calibration of the IMU on boot was not working due to vibrations of the Lidar on the AGV (custom fix: if calibration fails, read it from the EEPROM)
- Unreliability of the Quaternion due to the TDoA fusing: https://github.com/bitcraze/crazyflie-f ... issues/426

Post Reply