dddmr_navigation icon indicating copy to clipboard operation
dddmr_navigation copied to clipboard

Regarding the problem of Unitree B2 going up the stairs

Open dongjingze59-lab opened this issue 3 months ago • 13 comments

Hello, I am still in the research stage. I would like to know how this framework handles staircase environments. In the face of such discontinuous height changes, will they be considered obstacles and impassable?

dongjingze59-lab avatar Oct 10 '25 02:10 dongjingze59-lab

There are two phases to answer your question: Assume you have a map and a ground map by using our dddmr_lego_loam_bor,

  1. Global planner: Our global planner can handle the discontinuous ground map (because it uses kd tree to find the connection), so it can find the global plan, unless the distance between each stair step is larger than 50 cm.
----*
    --*-*-
        ----*
            ----*
The stair map will look like this, it can still find global plan.
--- stair point cloud
* global plan
  1. Local planner: You will need to implement your algorithm to remove the stair, and then pipe in the obstacle layer, then the robot can climb the stair and avoid obstacles.

To sum up, you need an algorithm that find the stairs. Once you have it, the localization, control and path planning support stair climbing.

tsengapola avatar Oct 10 '25 05:10 tsengapola

Thank you for your answer. We're still in the planning phase, and I'm a beginner. This is a great learning platform, and I think your method is feasible.

I have another question: I'd like to improve the algorithm's positioning accuracy in long corridors or low-texture environments. How can I incorporate positioning data into the algorithm, such as obtaining reflective tape intensity values ​​or RFID positioning?

dongjingze59-lab avatar Oct 10 '25 09:10 dongjingze59-lab

If you want to enhance localization algorithm, you can look into our mcl_3dl package, we have significantly improve the original version. By introducing your idea into feature selection part (we do have feature selection based on normal vector).

If you want to enhance the positioning accuracy of our dddmr_lego_loam_bor. You can look into featureAssociation.cpp part to improve the laser odometery which has significant impact on the mapOptimization.

tsengapola avatar Oct 11 '25 14:10 tsengapola

@tsengapola Hello, I am also researching scenarios of quadruped robots climbing stairs. However, I don’t quite understand your description of "local planning." Why is it necessary to detect the stairs and then remove them? Could you please explain in detail the local planning approach for stair-climbing scenarios? Thank you very much!

AstroBoy362 avatar Oct 13 '25 02:10 AstroBoy362

If you don't care obstacles avoidance on the stairs it should be fine. But I think you need it!

When the robot is doing local planning, it will generate multiple trajectories and reject those trajectories which conflicting with obstacles.

If you include stairs into the perception_3d stack which provide the information for the local planner, the trajectories will all be rejected.

tsengapola avatar Oct 14 '25 07:10 tsengapola

@tsengapola Thank you very much.

AstroBoy362 avatar Oct 20 '25 02:10 AstroBoy362

hello @tsengapola I am thinking of using the dddmr_semantic_segmentation to differentiate the staircase and filter them out as non-obstacles. Is there any launch file or sample file that currently the seg mentation is being used along with the local planner or p2p move base? Thank you.

zheyisoo avatar Oct 23 '25 17:10 zheyisoo

hello @tsengapola I am thinking of using the dddmr_semantic_segmentation to differentiate the staircase and filter them out as non-obstacles. Is there any launch file or sample file that currently the seg mentation is being used along with the local planner or p2p move base? Thank you.

May I ask if you have successfully deployed on GO2W

hitersyw avatar Oct 25 '25 03:10 hitersyw

@zheyisoo I am working on a launch file and some source code, I need couple days. Also, just to remind the current segmentation model can not find stairs. So my plan will be something like: semantic segmentation sidewalk removal example.

tsengapola avatar Oct 27 '25 14:10 tsengapola

@zheyisoo I am working on a launch file and some source code, I need couple days. Also, just to remind the current segmentation model can not find stairs. So my plan will be something like: semantic segmentation sidewalk removal example.

thank you, that would be very helpful!

zheyisoo avatar Oct 28 '25 13:10 zheyisoo

hello @tsengapola I am thinking of using the dddmr_semantic_segmentation to differentiate the staircase and filter them out as non-obstacles. Is there any launch file or sample file that currently the seg mentation is being used along with the local planner or p2p move base? Thank you.

May I ask if you have successfully deployed on GO2W

yes, i am currently running on B2-W but haven't tested on multi floor yet, but mapping and navigation on the same floor is working without issue for me.

zheyisoo avatar Oct 28 '25 13:10 zheyisoo

@zheyisoo check the new commit for semantic segmentation example. There is a new section in README in dddmr_semantic_segmentation. And there is a perception_3d example in: https://github.com/dfl-rlab/dddmr_navigation/blob/main/src/dddmr_perception_3d/launch/semantic_segmentation_depth_camera_demo/semantic_segmentation_depth_camera_3d_ros_launch.py

tsengapola avatar Oct 31 '25 07:10 tsengapola

@zheyisoo check the new commit for semantic segmentation example. There is a new section in README in dddmr_semantic_segmentation. And there is a perception_3d example in: https://github.com/dfl-rlab/dddmr_navigation/blob/main/src/dddmr_perception_3d/launch/semantic_segmentation_depth_camera_demo/semantic_segmentation_depth_camera_3d_ros_launch.py

thank you very much! Will try it and update here.

zheyisoo avatar Nov 02 '25 04:11 zheyisoo