Request New Floor Tracking Sensor based on PMW3901 breakout

To: Pimoroni electronics engineers:

Firstly, the PMW3901 (from Pixart) is a really great flow sensor for use on drones etc, but it’s not very accurate at shorter distances, because it’s not designed for that.

I’m working on a robotics project and the highest I can place the sensors is ~35mm from the ground, the PMW3901 can measure distance but the error is quite large 15-20% and doesn’t work well on plain surfaces like tiles, it needs a pattern to be able to track at such close range, because it is meant to operate from 8cm+.

There is another Optical Tracking sensor from Pixart which is designed for robotics floor tracking, on different surfaces (carpet, tiles etc), at a distance as low as 15mm:

PAA5100JE-Q, https://www.pixart.com/products-detail/74/PAA5100JE-Q

It is pin and footprint compatible with the existing PWM3901 breakout PCB, in fact from what I can tell, Pimoroni would only need to change the writing on the board (silk screen).

https://shop.pimoroni.com/products/pmw3901-optical-flow-sensor-breakout

So please Pimoroni, consider another version of this breakout board with the PAA5100JE-Q sensor.
Thanks

1 Like

Hi Ashley, I’ve just sent a message into Pimoroni directly regarding the PAA5100JE-Q, as I agree that implementing it as a Breakout Garden sensor would be of great benefit to ground-based robot hobbiests, and be almost trivial to implement given its pin- and form factor compatibility with the PMW3901.

It would be really great if they agree, as for my Mecanum wheeled robot the PMW3901 is better than nothing but would be still problematic on smooth unpatterned surfaces. Indoors I’ve got wood floors and (mostly) patterned rugs but outside on concrete the odometry would likely fail.

+1 on this product request. This would be very useful for First Tech Challenge robotics teams. Odometry in use is typically based on wheel encoders but that doesn’t give true ground coverage when wheel slip happens. And wheel slip happens often in that competition.

Thanks for your support maltheim and ironreign… hopefully someone from Pimoroni will comment soon.

Hi!

Thanks for pointing that chip out, I reckon we can make a breakout for it if we can get our hands on the chips. Will be a few months though, but stay tuned. :)

3 Likes

Very cool! Fingers crossed. Like Ash2002 said this should be an easy lift for you given that it looks like a drop in replacement to your PMW3901 breakout. I suspect that the software requirements would be highly similar too.

BTW, my team would be happy to help with early testing, a write up, and even driver development for our platform. The FTC Season begins in September and goes through Winter. There are about 6,000 robots built each season. The earlier in the season that a write-up appears, the more likely teams will adopt the solution. In our case we would need two sensors per robot, connected with an I2C/SPI bridge since we don’t have SPI in our hardware standard. A team could get away with a single optical flow sensor combined with their IMU heading, but a dual solution would be more robust. We would need to implement an Android driver for our platform.

Good luck with your robot building, I also considered using dual optical flow sensors spaced apart by a few cm to give a more robust direction data by averaging the results. I am hoping the PAA5100JE-Q sensor is much better than the PMW3901 when it comes to surface tracking at close range.

FYI, I am developing in my spare time, a wearable motorised VR locomotion system, for walking and moving around in VR while remaining in same place. The prototype works well, it feels natural to walk and even when wearing a VR headset, I feel stable walking. I have been working hard to reduce weight and noise (by switching a to BLDC solution).

I spend ~50 hours trying to get a IMU solution working, using linear acceleration data to calc speed and distance, but it’s a real pain to properly calibrate the Accel each time and the data is just not consistent. Even thought the PMW3901 still give a error of 10-20%, at least it is consistent and hopefully the PAA5100JE-Q floor tracking sensor will be much better ~5% accurate.

In recent discussions with the Dallas Personal Robotics Group there seems to be general enthusiasm for a new Breakout Garden sensor based upon a shorter distance optical flow sensor like the PAA5100JE-Q.

This would be of particular interest to those planning to build a mecanum-wheeled robot. As noted in this discussion, it will be likely quite common to use two of these sensors spaced equidistant from the center of the robot rather than a single sensor in the center, in order to be able to handle odometric calculations of theta (rotation), which would be impossible with a single sensor. In other words, with a single sensor one can gather movement across an x,y landscape but not actually know the angle of the robot’s movement.

So it would be invaluable if the new sensor can coexist with at least a second one. For I2C this would suggest that the addition of a trace on the back that can be cut to alter the address.

This also suggests that if this sensor is available, many of those 6000 robots might need two of them. Hint: a good sales opportunity.

I too am doing R & D on wheeled robots and to have the PixArt PAA5100JE-Q would be absolutely amazing to say the least. I desperately need a short range 15 ~ 35 mm motion tracking sensor. The PAA5100JE-Q has a tracking speed of up to 45 ips more than enough for most indoor applications. It is hard to find distributors for the PixArt range of chips so to have a breakout at this time would be really great!

FYI, both the PMW3901 and PAA5100 both use SPI (not I2C), so adding two sensors is already possible, just need two Chip Select outputs from the MCU, one for each sensor.

The Registers are almost identical for PMW3901 and PAA5100, the PAA5100 looks to have one extra register and doesn’t appear to need the mysterious calibration data. Adapting the PWM3901 Arduino Library looks to be very easy. I would happily do myself if I could actually get hold of a PAA5100.

(When I say the Registers are almost identical, I mean the name and functions are the same, the Address still needs to mapped since these are different but that’s super easy.)

A few years ago I ripped a sensor out of a mouse and hacked it to work as an odometer for a little robot:
http://tomarcher.co.uk/2017/02/19/optical-odometry-part-2/

I never quite got it mounted but the tests seemed promising. I may revisit the project if Pimoroni pop out these new boards :)

@niko

Thanks for pointing that chip out, I reckon we can make a breakout for it if we can get our hands on the chips. Will be a few months though, but stay tuned. :)

Hi, just wondering if you can give an update on a breakout board for the PAA5100? I don’t expect to be ready, just like to know if you made a decision yet on whether to make it?

We’re still in talks with Pixart. I feel like they’re not used to dealing with small companies like us, but things are moving forward nevertheless. :)

1 Like

The chips and lenses are on order now, they have a lead time of 12 weeks though. :)

1 Like

@niko Thanks for the update… got credit card ready… Since this was my request, how about I do a review, and I can give feed back on what code changes I needed to make based on the PWM3901 Library.
For applications where the distance to floor can vary, I use a TOF distance sensor and an algorithm to calculate x,y distance (in mm) from the floor tracking sensor, so the result is not not affected if the lens to floor distance is varied. I spent months perfecting this using the PWM3901, but the new PAA5100 sensors should be significantly more accurate, especially on different surface types.

Any update on this? I would love to give it a try!

Hi!

Sorry for the wait! A prototype panel has been assembled, so assuming they work as expected, I reckon we can have these on the shop in a few weeks. :)

4 Likes

Hi, That’s fantastic… Are you writing drivers for this (Arduino etc). I already wrote some custom drivers for other Pixart sensors. Whats not obvious even in the data sheets, is converting the raw output (pixel counts) into a distance in mm, so if you want to provide me with a sample, I’m more than happy to then send a copy of my Arduino code, with output in mm.

At least we’ll modify our current PMW3901 drivers for this sensor too. Hel will be in touch about the sample, i think that’s fair as it was your idea originally. :)

Patiently waiting for the breakout to appear on the shop. Well, maybe not that patiently… Can’t wait to try it out! When can we realistically expect to see it?