Like every summer, things slow down and people starts to go on vacation. This is a perfect time to sit down and start fixing various things that we never have time to fix. We call that the Summer cleanup. This summer there will still be a bit of development though as we are finishing the multiranger deck.
On the cleanup side, there is at least a couple of things we plan to look at:
- Updating the virtual machine to the latest Ubuntu version
- Looking at the Crazyflie firmware build system to make it cleaner and easier to expand for new platform. There is the RZR and the LPS Tag boards that will come later in the year and will need to be supported by the Crazyflie firmware.
- Implementing a startup test that can detect bad propeller and bad batteries. This would improve a lot the experience of flying a Swarm of crazyflies.
- We have been continuously improving the webpage last year, this will continue during the summer.
If you have any ideas of areas you feel we should focus on, even better if you want to help with some things and fix it together with us, just tell us in the comment.
Just a few other clean-up ideas:
* Merging PRs:-)
* Trying to reduce the number of open issues
Happy summer!
Since you asked about things for summer cleanup, please accept this idea.
For the Flow Breakout board you have an Arduino library and a test program that I used to demonstrate that my sensor was working. https://www.bitcraze.io/getting-started-flow-breakout/ But there is a problem with the library. In the readMotionCounts() method, the C++ code does not read the PMW3901 registers in sequence. This creates invalid readings periodically. Rewrite the library to fix that. I would also modify the same method to also return the values of Shutter_High and Squal back to the main program, so it can determine if the readings are good.
In the same library, the initialization code for the sensor is different from the initialization code in the Crazyflie for the same sensor. Should they be the same? I used the Crazyflie initialization code and it worked in my application. This is explained in this Forum link: https://forum.bitcraze.io/viewtopic.php?f=2&t=2985&hilit=flow+breakout
Here is my example fix for the readMotionCounts() method:
boolean Bitcraze_PMW3901::readMotionCount(int16_t *deltaX, int16_t *deltaY, uint8_t *squal, uint8_t *shutterU) {
if ((registerRead(0x02) & 0x80) != 0x80) return false;
//*deltaX = ((int16_t)registerRead(0x04) << 8) | registerRead(0x03);
//*deltaY = ((int16_t)registerRead(0x06) << 8) | registerRead(0x05);
uint8_t dXL = registerRead(0x03);
uint8_t dXU = registerRead(0x04);
uint8_t dYL = registerRead(0x05);
uint8_t dYU = registerRead(0x06);
*squal = registerRead(0x07);
*shutterU = registerRead(0x0C);
*deltaX = ((uint16_t) dXU << 8) | dXL;
*deltaY = ((uint16_t) dYU << 8) | dYL;
return true;
}