I’m a young researcher who is developing a precise indoor positioning & guidance system for mobile robot.
I want to share our recent work about a custom flight mode that holds copter position at 10cm accuracy using ONLY our positioning system and PID controller, no IMU fusion or anything else.
I believe anyone who is looking for an indoor positioning solution will enjoy this! I would love to hear feedback from the experts of this field! Make sure to check out the video description for more info. Any comment is appreciated. Enjoy!
UPDATE SYSTEM DESCRIPTION
1. About our developing SNSH Indoor Positioning System
This system aims to provide a solution for indoor positioning problem where GPS cannot reach or when accuracy is crucial, which focuses on low cost, high accuracy at high speed, scalable sensor network, and simple to implement as it doesn’t require PC to operate.
We don’t try to solve SLAM (Simultaneous localization and mapping) problems. Instead, this sensor network based positioning system is designed to support autonomous robot guidance task inside the building or fixed infrastructure. As this system provides absolute 3D position, it won’t suffer from position drift over time like other odometry techniques. It can be used to guide cargo truck precisely on the warehouse, or control quadcopter to do autonomous surveillance tasks inside a large office.
- Technology: Ultrasonic and RF signal based on TDoA, sine wave detector, and nonlinear least square trilateration.
- Accuracy: 2cm/axis.
- Update rate: 40Hz, with interpolation can reach 100Hz.
- Sensor network: managed by CAN bus, easy to extend, and resilient to signal noise.
For more academic details, please check our research article.
In this demonstration, we use SNSH positioning system as the only source for 3D position information because we want to demonstrate its speed, accuracy, and stability when tracking quadcopter position. To implement the idea, we use Beaglebone Green and run a modified Ardupilot Flight controller, inspired by BBBMINI project. We designed a custom Pilot cape for Beaglebone, which includes IMU, barometer for flight controller, and also our ultrasonic and RF transmitter circuit.
PilotCape for BBG
The sensor network setup is similar to the one mentioned on the research article. It includes 5 sensor nodes mounted in 2m square frame, one coordinator for managing sensor network and send distance measurement results to Beaglebone.
5 receiver nodes mounted on frame of 2m x 2m x 2m
We want to design a positioning and guidance system for copter, where position is determined on board, along with Ardupilot flight controller as a compact system, no PC is required to minimize system delay. In the Ardupilot firmware, we have implemented nonlinear least square trilateration algorithm to determine copter position from the measured distance data sent from the coordinator. It runs on Usercode 100Hz fast loop. Kalman filter and interpolation are applied to increase position update speed to 100Hz, and reduce measurement noise. After that, the calculated position is fed to a PID controller to perform position hold.
As our positioning system isn’t supported by ArduCopter, we have created a new flight mode, which is based on Alt Hold, then we replace the target roll & pitch (which is from RC transmitter) with PID control output.
At the moment, we are developing trajectory control for quadcopter using the information for our positioning system combined with optical flow for higher resolution. As the project is under developing, we cannot share much. Source code support for Ardupilot should be opened when the project is completed.
If you are interested in funding this technology, or want to buy some of our prototype system, feel free to contact me. I will continue to update our work in trajectory control soon. Have a good day!