V-RPC : Vision-Based Reactive Planning and Control of Quadruped Robots in Unstructured Dynamic Environments
Website: https://sites.google.com/view/v-rpc
Paper: https://arxiv.org/pdf/2307.10243.pdf
Note: Users should install all the following dependencies into one ros work space.
OCS2:
git clone https://github.com/P1terQ/ocs2 -b master
Original Repo: https://github.com/leggedrobotics/ocs2
(note: OCS2 also needs Hpp-fcl,ocs2_robotic_assets,pinocchio. Users should follow the installation manual in https://leggedrobotics.github.io/ocs2/installation.html)
Quad_Controller:
git clone https://github.com/P1terQ/quad_controller -b master
Original Repo: https://github.com/qiayuanliao/legged_control
Elevation_Mapping_Cupy:
https://github.com/P1terQ/elevation_mapping_cupy -b master
Original Repo: https://github.com/leggedrobotics/elevation_mapping_cupy
realsense_ros_gazebo:
https://github.com/P1terQ/realsense_ros_gazebo -b master
Original Repo: https://github.com/nilseuropa/realsense_ros_gazebo
- Build OCS2 by 'catkin build ocs2_legged_robot_ros ocs2_self_collision_visualization'
- Build Elevation_Mapping_Cupy by 'catkin build elevation_mapping_cupy' and 'catkin build convex_plane_decomposition_ros'
- Build realsense_ros_gazebo by 'catkin build realsense_ros_gazebo'
- Build Quad_Controller by 'legged_controllers legged_unitree_description legged_gazebo legged_unitree_hw'
- Launch gazebo simulation:
roslaunch legged_unitree_description empty_world.launch
- Launch controller:
roslaunch legged_controllers load_controller.launch
Use ros controller_manager plugin to start the controller. Note: User can specify whether to use perceptive controller by modifying 'if_perceptive' flag in the launch file. - Launch mapping:
roslaunch elevation_mapping_cupy a1_segmentation.launch
- Input the gait in the terminal of controller and Input target by
/cmd_vel
,/move_base_simple/goal
,/dummy_navigator_PTP/rel_goal
, and/dummy_navigator_PTP/abs_goal
(The above are ros topics.)
Now this repo support unitree A1 and unitree aliengo. To play with different robots, user should modify the robot and parameters in load_controller.launch
, empty_world.launch
, SwitchedModelReferenceManager.cpp
.
Users should modify IP address in udp.h
to your robot's PC IP address.
To compensate for IMU drift or model error, modify the valuezyxOffset_
in StateEstimateBase.cpp
.
4-26.4.mp4
This work was supported in part by the National Natural Science Foundation of China under Grant U2013601, 62173314 and CAAI-Huawei MindSpore Open Fund.