# Vector Field Histogram
[![Build Status](https://travis-ci.org/agarie/vector-field-histogram.svg?branch=master)](https://travis-ci.org/agarie/vector-field-histogram)
This is an **incomplete** implementation of the [Vector Field Histogram](http://en.wikipedia.org/wiki/Vector_Field_Histogram) algorithm, developed by J. Borenstein and Y. Koren in 1990. Recently I got some motivation to study robotics once again and decided it was time to finally "finish" this code.
I originally used this library in a project for my real-time systems class at
[Embry-Riddle Aeronautical University](http://www.erau.edu) when I was studying
in the US.
Eventually, I'll add support to the VFH+ and VFH-star algorithms.
## How to install
Building the software should be as easy as:
```bash
git clone https://github.com/agarie/vector-field-histogram.git
cd vector-field-histogram
make
```
I'm not working on using autotools for the moment (I need to learn how to use
it, to be honest...). For now, it's possible to compile a program with the
object file `vfh.o`. The example `create_histogram_grid`(see Makefile) does
exactly that.
## The VFH algorithm
The VFH algorithm receives as inputs an array of rangefinder sensor readings
and generates control signals -- the "best" direction and a damping factor for
the max velocity of the robot.
The sensor readings are mapped into the Histogram Grid, a large matrix in which
each cell corresponds to an obstacle density in that area. Sonars and laser
rangefinders return a direction and a distance, so there must be a conversion
from polar to rectangular coordinates before processing them. The
correspondence between real world coordinates (i.e. `(x, y)`) and grid
coordinates (i.e. `(i, j)`) is given by a `resolution` parameter, which is the
size of the cells, such that `(x, y)` is in cell `(i, j)` if x is in [i *
resolution, (i + 1) * resolution] and j is in [j * resolution, (j + 1) *
resolution]. Each reading in a cell increases that cell's density by 1.
With the histogram grid in place, actual path planning can begin. A square
moving window centered around the robot is picked and each of its cells is
mapped to (m_ij, beta_ij); `m` is a function of the obstacle density of the
cell and its distance to the robot, and `beta` is the angular position of the
cell. The polar histogram separates the cells in `n = 360/alpha` sectors. Each
sector k has value M_k = sum(m_ij for (i, j) in sector_k). The moving window is
used to avoid computing on all cells (the histogram grid can be *huge*) and
because cells too far away probably won't contribute much to local planning.
A threshold is applied to the polar histogram, selecting only the sectors with
obstacle density low enough for safe passage. Finally, the sector with the
direction best matching the objective's is followed. The max velocity S_max is
decreased depending on the density of the chosen sector and the current angular
velocity.
## License
Copyright (c) 2012-2016 Carlos Agarie. See LICENSE for details.
vector-field-histogram-master.rar_VFH算法_histogram_vfh_vfh linux_
版权申诉
73 浏览量
2022-09-21
20:46:02
上传
评论
收藏 35KB RAR 举报
林当时
- 粉丝: 98
- 资源: 1万+
最新资源
- 基于pytorch+Unet进行MRI肝脏图像分割源码+数据集+模型.zip
- 在Android Studio中开发一个Android App项目步骤
- 基于yolov8实现进行物体跟踪源码.zip
- Java多线程学习Java多线程学习Java多线程学习Java多线程学习.txt
- 算法数据结构-动态规划算法(Dynamic Programming)超详细总结加应用案例讲解.txt
- 2024最强秋招八股文(精简、纯手打)2024最强秋招八股文(精简、纯手打).txt
- 基于tensorflow多特征融合的微表情识别python源码.zip
- 基于yolov8实现人脸检测的python源码+运行说明.zip
- Micron Memory DDR3 SDRAM 全系列AD集成库(原理图库+PCB封装库).IntLib
- 基于tensorflow多特征融合的微表情识别python源码+详细使用说明.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈