diff --git a/README.md b/README.md index 680dfab..b8ba0c1 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,19 @@ # Go2Py -## What is it? -This is a Pythonic interface and driver for low-level and high-level control of Unitree Go2 quadruped robots. The motivation of this project is to ease the burden of initial interface development, safety systems of Go2 quadruped by providing a modular pipeline for real-time communication with the robot in both simulated and real world with a unified interface. + +Go2Py is a Pythonic interface and driver for low-level and high-level control of Unitree Go2 quadruped robots. The motivation of this project is to ease the burden of initial interface development, safety systems of Go2 quadruped by providing a modular pipeline for real-time communication with the robot in both simulated and real world with a unified interface. + +

+ image +

This project is comprised of the following components: -- **C++ Bridge:** A dockerized ROS2 bridge built upon the [unitree_ros2](https://github.com/unitreerobotics/unitree_ros2) that implements an remote controlled emergency stop and publishes the robot states as standard ROS2 topics usable by upstream systems such as NAV2. +- **C++ Bridge:** A dockerized ROS2 bridge built upon the [unitree_ros2](https://github.com/unitreerobotics/unitree_ros2) that implements a remote controlled emergency stop and publishes the robot states as standard ROS2 topics usable by upstream systems such as NAV2. - **Robot Interface:** A simple Python class that represents the robot and communicates with the C++ bridge through either DDS (ROS independent) or ROS2 interfaces. - **Robot Management FSM:** A finite state machine for controlling the behavior of the robot up to the point of handover to the user low-level controller (sitting down, standing up) with safety monitors (motor temperatures, emergency stops). - **Robot Model:** A simple to use [Pinocchio](https://github.com/stack-of-tasks/pinocchio) wrapper for computing the kinematics and dynamics parameters of the robot. -- **Simulation Interface:** Simulation environments based on Mujoco and Nvidia Orbit (To be added) with a Python interface identical to the read robot. +- **Simulation Interface:** Simulation environments based on Mujoco and Nvidia Orbit (To be added) with a Python interface identical to the real robot. -## How does it look like? +## How Does Using it Look Like? Communication with the robot will be as simple as importing a Python class: ```python from Go2Py.robot.interface.dds import GO2Real diff --git a/docs/assets/openfig.drawio b/docs/assets/openfig.drawio new file mode 100644 index 0000000..c6e8355 --- /dev/null +++ b/docs/assets/openfig.drawio @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/openfig.png b/docs/assets/openfig.png new file mode 100644 index 0000000..8ff2c25 Binary files /dev/null and b/docs/assets/openfig.png differ diff --git a/examples/walk_these_ways_sim.ipynb b/examples/walk_these_ways_sim.ipynb index 471fbc6..7a77f33 100644 --- a/examples/walk_these_ways_sim.ipynb +++ b/examples/walk_these_ways_sim.ipynb @@ -188,20 +188,6 @@ "text": [ "p_gains: [20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20.]\n" ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "frq: 0.10237921921805228 Hz\n", - "frq: 46.14348108298404 Hz\n", - "frq: 44.397794032030994 Hz\n", - "frq: 45.603148715941465 Hz\n", - "frq: 45.86595514341641 Hz\n", - "frq: 44.16591026356524 Hz\n", - "frq: 45.82636627843454 Hz\n", - "frq: 45.51950772169346 Hz\n" - ] } ], "source": [ @@ -213,31 +199,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "frq: 45.741406386320016 Hz\n", - "frq: 44.6901430961184 Hz\n", - "frq: 44.451434445775085 Hz\n", - "frq: 45.19042385846963 Hz\n", - "frq: 45.1087737411542 Hz\n", - "frq: 46.690013692073066 Hz\n", - "frq: 45.09228519824546 Hz\n", - "frq: 45.70053825535531 Hz\n", - "frq: 46.01388873651992 Hz\n", - "frq: 44.94924554183813 Hz\n", - "frq: 45.49383372200228 Hz\n", - "frq: 44.522684330085134 Hz\n", - "frq: 44.42130458266699 Hz\n", - "frq: 43.71525649844704 Hz\n", - "frq: 44.37383889464886 Hz\n" - ] - } - ], + "outputs": [], "source": [ "controller.command_profile.pitch_cmd=0.0\n", "controller.command_profile.body_height_cmd=0.0\n",