Skip to content

chengruiz/stepit

Repository files navigation

StepIt Logo

Ubuntu 20.04/22.04/24.04 License DeepWiki

A flexible framework for connecting legged robots, input devices, and locomotion algorithms, especially learning-based ones. Out-of-the-box policies and configurations can be found in stepit_zoo.

Caution

Disclaimer: User acknowledges that all risks and consequences arising from using this code shall be solely borne by the user, the author assumes no liability for any direct or indirect damages, and proper safety measures must be implemented prior to operation.

Note: This project is under active development, which means the interface is unstable and breaking changes are likely to occur frequently.

Quick Start

Setup the workspace, build StepIt, and run the demo configuration:

mkdir stepit_ws && cd stepit_ws
bash -c "$(curl -fsSL https://raw.githubusercontent.com/chengruiz/stepit/main/scripts/setup.sh)"
./scripts/build.sh
./scripts/run.sh ./configs/demo.conf.sh

Manual Setup

Prerequisites

Tested on Ubuntu 20.04, 22.04 and 24.04.

sudo apt install cmake build-essential
sudo apt install libboost-dev libboost-filesystem-dev libboost-program-options-dev \
                 libeigen3-dev libfmt-dev libyaml-cpp-dev
mkdir -p stepit_ws/src && cd stepit_ws
git clone https://github.com/chengruiz/stepit.git src/stepit

Build

# In the stepit_ws directory
cmake -Bbuild -Ssrc/stepit -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install
cmake --build build -j && cmake --install build

You can configure the build by passing CMake variables via -D flags:

  • STEPIT_WHITELIST_PLUGINS (string): semicolon-separated list of plugins to build. Default is all available plugins.
  • STEPIT_BLACKLIST_PLUGINS (string): semicolon-separated list of plugins not to build. Default is "".
  • STEPIT_PLUGIN_DIRS (string): semicolon-separated list of directories to search for plugins.

StepIt searches for plugins in directories plugin and the specified STEPIT_PLUGIN_DIRS. All subdirectories with CMakeLists.txt and without STEPIT_IGNORE are considered plugins. Built-in plugins are listed below. Read the corresponding README.md first if you use any of the plugins.

Run

# Run StepIt to control the robot
./install/bin/stepit

Command line arguments:

Option Type Description
-c / --control string The control input type.
-f / --factory string The default factory for a specified type.
-P / --publisher string The publisher type.
-p / --policy string The policy type and directory.
-r / --robot string The controlled robot type.
-v / --verbosity int Verbosity level ranging from [0, 3]. Defaults to 2.
-- [arg1 arg2 ...] Additional arguments passed to plugins' entry function.

Run ./install/bin/stepit --help for more information.

Notes

  • Environment Variable: StepIt reads environment variables listed in environment.sh. Environment variables have lower precedence than their corresponding command-line arguments.
  • Control Input: Generally, StepIt accepts strings as control inputs, and returns a response for each one. These inputs can be provided via the console, joysticks, or topics/services in ROS1/ROS2. See doc/control.md for more details.
  • State Publishing: StepIt publishes the robot states to CSV files, or via ROS1 or ROS2 topics.
  • Plugin Mechanism: StepIt provides a flexible plugin architecture to enable integration of new modules without modifying existing code. See doc/plugin.md for more details.
  • ROS Intergrations: StepIt works well with ROS1 and ROS2. Make sure you read the README.md of ROS1 or ROS2 before you start.
  • Simulation: StepIt supports unitree_mujoco-based simulation. See robot_unitree2 or stepit_sim for more details.

About

A flexible framework for connecting legged robots, input devices, and locomotion algorithms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors