This project contains a contact-aided invariant-ekf for MiniCheetah. It directly takes the contact estimation results from our deep-contact-estimator via LCM, and output the estimated pose in ROS.
This repository has the following features:
- Directly compatible with the deep-contact-estimator.
- Use ROS for easier communication with other robotics program.
- Tested real-time performance on a Jetson AGX Xavier along with the deep contact estimator.
- lcm 1.4.0
- invariant-ekf/devel Note: Remember to checkout to the
devel
branch. - Eigen3
- Boost
- YAML
project_root_dir
: Filepath to your installation directory for this repoestimator_enable_debug
: Enable debug print on the screen.estimator_publish_visualization_markers
: Enable LCM publisher for the estimated pose.estimator_lcm_pose_channel
: Name of the LCM channel for output robot pose.estimator_static_bias_initialization
: Enable static bias initialization using the first several measurements from IMU.system_enable_pose_publisher
: Enable pose logger and publish the robot pose over ROS. Enable this will write down the estimated pose in a txt file and publish the pose to ROS at the same time.system_inekf_pose_filename
: Path for the logged txt file. Kitti means the file will be recorded following the Kitti format.system_inekf_tum_pose_filename
: Path for the logged txt file in TUM format.
cd cheetah_inekf_lcm_root_directory/scripts
bash ./make_types.sh
- cd
~/${PATH_TO}/catkin_ws
- In a new terminal in the catkin_ws, do catkin_make (perhaps multiple times)
- Run
source ~/devel/setup.bash
roslaunch cheetah_inekf_lcm cheetah_estimator
- Run
lcm-logplayer-gui NAME_OF_LCM_LOG_FILE_HERE
- The terminal should begin printing out the robot state if the settings.yaml output variables are enabled
- Start running the cheetah estimator using the instructions above
- Enter
rviz
in the terminal - Select
Add by topic
setting and select path - Changed fixed frame to the same value as
map_frame_id
in config/settings.yaml - The robot pose should begin being drawn in rviz
If you find this work useful, please kindly cite our publication in 2021 Conference on Robot Learning:
- Tzu-Yuan Lin, Ray Zhang, Justin Yu, and Maani Ghaffari. "Legged Robot State Estimation using Invariant Kalman Filtering and Learned Contact Events." In Conference on robot learning. PMLR, 2021
@inproceedings{
lin2021legged,
title={Legged Robot State Estimation using Invariant Kalman Filtering and Learned Contact Events},
author={Tzu-Yuan Lin and Ray Zhang and Justin Yu and Maani Ghaffari},
booktitle={5th Annual Conference on Robot Learning },
year={2021},
url={https://openreview.net/forum?id=yt3tDB67lc5}
}