Git Product home page Git Product logo

stair-perception's Introduction

Note: Upgraded ros version stair-perception can be found here.

Introduction

This is a stair perception kit programming with PCL and Qt which can model the stair and measure the stair's height, width, steps and so on. Tht input data can either be Kinect V2 video stream or saved images and point clouds from disk.

You can run it in terminal after build scince some useful information not shown in the gui window is printed. The main window is shown below, as you can seen, the visualization of original image and estimated stair model are included. Of course, for the convenience of tuning parameters, some of them can be adjust in the main window (notice some paramerers are not used at last, please refer to the original code). The status bar show some basic infomation including the fist stair parameters, IMU pose and running time.

You can get more detail stair information in the terminal output. For example, the staircase shown above have four steps, each step's geometric parameters such as height and depth are printed.

terminal

The meaning of Height, Depth, V_Distance and H_Distance are shown in the picture below.

stairmodel

Dependencies

Build

  1. install libfreenect2 according to their doc.
  2. install opencv sudo apt-get install libopencv-dev
  3. install pcl
  4. install qt5 sudo apt-get install cmake qt5-default qtcreator
  5. finally, make and test!
    git clone https://github.com/Shiaoming/stair-perception.git
    mkdir build
    cd build
    cmake ..
    make -j4

For more details about this algorithm, please refer:

@article{zhao_adaptive_2019,
	title = {An adaptive stair-ascending gait generation approach based on depth camera for lower limb exoskeleton},
	volume = {90},
	issn = {0034-6748},
	url = {https://doi.org/10.1063/1.5109741},
	doi = {10/ggsxh2},
	number = {12},
	journal = {Review of Scientific Instruments},
	author = {Zhao, Xiaoming and Chen, Wei-Hai and Li, Bing and Wu, Xingming and Wang, Jianhua},
	month = dec,
	year = {2019},
	note = {Publisher: AIP Publishing, LLC},
	pages = {125112}
}
@inproceedings{zhao2018real,
	title={Real-Time Stairs Geometric Parameters Estimation for Lower Limb Rehabilitation Exoskeleton},
	author={Zhao, Xiaoming and Chen, Weihai and Yan, Xing and Wang, Jianhua and Wu, Xingming},
	booktitle={2018 Chinese Control And Decision Conference (CCDC)},
	pages={5018--5023},
	year={2018},
	organization={IEEE}
}

stair-perception's People

Contributors

psunshine avatar shiaoming avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

stair-perception's Issues

求教

博主,你好.可以发下那篇文章吗?求帮助.会议论文在网上没刊登

Two small questions on computing line from 2 planes

Hi @Shiaoming
Sorry to bother you again.
This time I ran into a small question when reading the source code.
In the function

// line : (x-x0)/n1=(y-y0)/n2=(z-z0)/n3=t
// plane: x0*n1+y0*n2+z0*n3=0
// compute cross point between line and plane perpendicular to this line with in origin
float t = -1*(normal_line[0]*x0+normal_line[1]*y0+normal_line[2]*z0)
/ (normal_line[0]*normal_line[0]+normal_line[1]*normal_line[1]+normal_line[2]*normal_line[2]);

you want to compute the intersection line of 2 planes. I am not quite understand why you calculate parameter t in this way.
I know t is the parameter in the vector equation of line, and I just wonder the reason why t is calculated in this way.

Then t is used to calculate another point on the line, whose coordinate is represented by variable x y z .

float x = normal_line[0]*t+x0;
float y = normal_line[1]*t+y0;
float z = normal_line[2]*t+z0;

And another place that puzzles me is that what is the meaning of line.h and line.d ?

line.h = x;
line.d = sqrt(y*y+z*z);

Does it refer to the height and width of the steps , just like the annotation I made in the following picture ?

Selection_001

Thanks !

Error with own point cloud

Hello, good job!

We are currently using the stair-perception to analyze our own point cloud, but we get the following error:
image

Can you help us here?

Thank you!

A little mistake I found ?

@Shiaoming

I think I found a little mistake in the function StairDetection::computeVectorPlaneInfo

// 4.middle point of principle vector
plane.pcenter.x = (points_max[0].x + points_max[0].x)/2;
plane.pcenter.y = (points_max[0].y + points_max[0].y)/2;
plane.pcenter.z = (points_max[0].z + points_max[0].z)/2;

I guess you want to calculate every plane's principle centre after we get the points_max and points_min. And I think what you want to do is as follow.

plane.pcenter.x = (points_max[0].x + points_min[0].x)/2;
plane.pcenter.y = (points_max[0].y + points_min[0].y)/2;
plane.pcenter.z = (points_max[0].z + points_min[0].z)/2;

I am not sure if I am right or not ?

A little doubt about the test time

Hi authors,

This stairs-perception project is really interesting and amazing.
My Ubuntu 16.04 equips with an i5-8600K 3.6GHz CPU and I tested the project with the pcd file provided in the "sample" folder.

19

As you can see from the picture, the total consuming time was 200ms around, which is quite different from the test time given in your paper.

image

I am really confused about that because the CPU on my computer seems better than the CPU used in the paper but achieved slower results. I wonder if you used GPU to achieve that speed or some other acceleration techniques?

Thanks anyway.

does it work for downstairs ?

hi,
thanks for your work.
Just wondering if this package is also applicable for downstairs. what are your thoughts about it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.