This is an implementation of the Vector Field Histogram algorithm, developed by J. Borenstein and Y.Koren in 1990.
I'm going to use this in a project for my real-time systems class at Embry-Riddle Aeronautical University, where we're using ARM microcontrollers. That explains why this is a C implementation (I also don't like C++).
- Complete the parameter list with descriptions.
- Include drawings showing the referentials used for the sensors and the robot.
- Introduce some examples and test data.
- UNIT TESTS. The cmockery library appears to be good.
- Create libvfh to make reusability easier.
Wait.
Basically, this algorithm receives as inputs a lot of rangefinder sensor readings and generates control signals - the "best" direction and a damping factor for the max velocity.
The rangefinder readings are passed to the certainty grid as an array of rangefinder_data_t
(a struct with fields distance
and direction
) via the function grid_update()
.
Also, there are a lot of necessary parameters:
- Certainty grid dimension (if it's even, it'll be incremented by 1)
- Certainty grid resolution [cm]
- Moving window dimension (same as certainty grid dimension)
- Histogram alpha (must be a divisor of 360) [degrees]
- Density_A (experimental)
- Density_B (experimental)
- Obstacle density threshold (experimental)
- Objective position X (per-project)
- Objective position Y (per-project)
Copyright (c) 2012 Carlos Agarie. See LICENSE for details.