Close

General State of the Project and Updates

A project log for Odroid XU4 based Control Computer

The goal is to create an all-in-one control system capable of running algorithms of moderate complexity with sensors and outputs built in

williamg42williamg42 06/10/2019 at 14:030 Comments

Sorry for the complete lack of activity, unfortunately graduate course work got in the way of really working on stuff for fun/this project took a back burner to some other projects. 

Revision 5:

So the Revision 5 PCB was built and tested (I'll add some photos when I get a second/find where I  stuck that PCB) and found it non functional. Oh the BNO080 showed up on the I2C bus, but I could not get any data out of it. No matter what code I tried or how I probed the buses, I could not get data out of the BN080. 

After a year, it still appears that no one has a working BNO080 driver for a linux computer. The closest I found was this wonderful code writing by fm4dd: https://github.com/fm4dd/pi-bno080 which was able to talk to the BNO080, but was not able get any position or acceleration data. So the Revision 4 PCB is the final, working version I will possible be moving forward with. 

IMU GPS Fusion Algorithm

One of the things I did play with was a GPS IMU sensor fusion algorithm using particle filters and a loosely coupled IMU/GPS. The code is here: https://github.com/williamg42/IMU-GPS-Fusion and hopefully someone could find it useful. The big issue was how noisy the BNO055 was and my inability to directly impact its sensor fusion parameters. It did work, but not at the level I was hoping for. This lead to the Version 5 PCB where I wanted to use the improved performance of the BNO080 to reduce overhead on the odroid xu4 (so it didn't have to run a particle filter and IMU sensor fusion) and hopefully create a more accurate GPS IMU sensor fusion.  


Box doesn't fit in robot

So the plan for this system, and its fancy box, was to be the controller for the ruggedized robot platform project. Except I didn't measure, and the whole box system I built is too big to fit in the platform. (Remember, measure twice cut once!)

Lack of a true UI

Finally, the last issue that kind of caused a stagnation of this whole project (both the control computer and the ruggedized robot) was the lack of any way I could come up with for a user to control and interact with the platform. While ground control station software does exist, its intended for MAVLink, which is a somewhat confusing protocol, and working with the ardupilot project. Porting the ardupilot project over faced some huge issues, especially with how much great work that team has done with real time scheduling and other optimizations. While hardcoding GPS waypoints in was possible, it just didn't seem worthwhile. 

The Future

Now that the BNO080 path is abandoned, I have a fully function board and odroid xu4 combination sitting on my desk. Granted the new odroid N2 board that was recently released in more powerful, tolerant of 3.3V, and uses a standard 2.54mm 30 pin header means a lot of the complexity (and funky headers) of this project is no longer needed or desired. 

In addition, thanks to the Onion Omega2 project I have a basic UI platform that seems to work well, and is easily expandable for new features and is completely platform agnostic. (After I defend my thesis I'll be putting up a write up for the three spin off projects that project generated)

Discussions