PMW3901 sensor for legged-robot position estimation

Dear RS community,

I need your help! I am working on a legged robot (hexapod) and I would like to get a raw estimate of its position. In order to do that, I have a 6DoF IMU and the Flow Breakout sensor from BitCraze (PMW3901 optical flow sensor paired with a ToF VL53L0x). The sensor itself carries out the pixel increments from one time step to another in the form deltaX, deltaY; moreover, the ToF sensor provides the distance from the ground.

My question now is:

Would it be possible to get a raw estimate of the robot position by using only this data?
Do I need to know the extrinsic parameters of the OF sensor?

Any idea or suggestion would be really appreciated.

Thanks for your help in advance!

Sincerely,

Alessandro

Hi

It would absolutely be possible but I’m having trouble finding any sample code for that use :thinking:
Based on the document below, you can calculate movement based on the following formula:
image
http://ardupilot.org/copter/docs/common-mouse-based-optical-flow-sensor-adns3080.html

I can’t seem to find the resolution of your sensor anywhere, the only datasheet I’ve come across doesn’t specify it:

You will never know how grateful am I to you :slight_smile: this is the first answer I receive in a long list of this question thrown in different places.

I will try to retrieve those informations by directly asking to the manufacturer. I mean, the sensor itself has a great potential, I would like to have it working properly and avoid to invest money in UWB nodes. I also own an RPLidar A2, but I would like to obtain a relative position estimation by using this sensor only.

Sincerely,

Alessandro

Hey Alessandro!

One of our engineer was hard at work and found you some valuable infos.
You can use the Arduino driver for PMW3901 optical flow sensor and the millis() function to get your time delta.

If you want to see how the Crazy2Fly uses the flow sensor, you can take a look at their firmware and their custom driver

He also suggested this Wikipedia Article about Dead Reckoning. The sensor itself can measure the relative position of the robot but you will need a reference point if you want to know it’s position in a room.

Hello,

I am exactly in the same situation as you and I work in the same problem.
I would like to know if you receive a reply of the manufacturer and, if this is the case, can you give me ?

Thank’s by Advance
Edouard

1 Like

Hi Edouard!

Not straight from the manufacturer, but I have got to find the parameters I was looking for.

The pixel resolution is 30x30 and the FOV is 42°

If you go to the PMW3901 Bitcraze wiki, at the bottom of the page you will find a link to a Master thesis; there you can read a nice analysis of this sensor and you can learn some mathematics about it.

I think I have succeded in having it working, but in order to be sure I have to install a led close to it to avoid low light environment problems.

Cheers,

Alessandro

1 Like

hi Alessandro

I’m exactly at your situation, but with a drone flighting always at the same height.
would it be possible for you to share the sorce code about getting the distance along x and y with me ?
my email is: [email protected]
did you used the formula of Magmator ?
I’m using the pmw3901 like you.

thanks a lot in advance,
costef

Hi Alessandro

If you were successful in calculating distance, please would you kindly share you code here. Thanks.