openfig added
This commit is contained in:
parent
1e7877f4f1
commit
c0643fd5db
14
README.md
14
README.md
|
@ -1,15 +1,19 @@
|
||||||
# Go2Py
|
# 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.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="docs/assets/openfig.png" alt="image" width="60%" height="auto"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
This project is comprised of the following components:
|
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 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 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.
|
- **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:
|
Communication with the robot will be as simple as importing a Python class:
|
||||||
```python
|
```python
|
||||||
from Go2Py.robot.interface.dds import GO2Real
|
from Go2Py.robot.interface.dds import GO2Real
|
||||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
After Width: | Height: | Size: 1.3 MiB |
|
@ -188,20 +188,6 @@
|
||||||
"text": [
|
"text": [
|
||||||
"p_gains: [20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20. 20.]\n"
|
"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": [
|
"source": [
|
||||||
|
@ -213,31 +199,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 6,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
"source": [
|
||||||
"controller.command_profile.pitch_cmd=0.0\n",
|
"controller.command_profile.pitch_cmd=0.0\n",
|
||||||
"controller.command_profile.body_height_cmd=0.0\n",
|
"controller.command_profile.body_height_cmd=0.0\n",
|
||||||
|
|
Loading…
Reference in New Issue