{ "cells": [ { "cell_type": "markdown", "id": "25b7b3cc-7e8b-4584-809c-f40a8e0dd5c3", "metadata": {}, "source": [ "© Copyright, 2025 G. Schaer.\n", "\n", "SPDX-License-Identifier: GPL-3.0-only" ] }, { "cell_type": "markdown", "id": "c1833768-99b3-48d6-a330-5cfba7a813a1", "metadata": {}, "source": [ "# Simulator Example" ] }, { "cell_type": "markdown", "id": "b55cfe6f-a38f-469b-8e88-9221e6a681f3", "metadata": {}, "source": [ "This module provides an example usage case of the Simulator class. Here we\n", "simulate a cart with an inverted pendulum atop it. Because this is just an\n", "example for the Simulator, no visualization is included." ] }, { "cell_type": "code", "execution_count": 17, "id": "9cba826f-056b-4336-ae49-5c6ec1002037", "metadata": {}, "outputs": [], "source": [ "import time\n", "from condynsate import Simulator\n", "from condynsate import __assets__ as assets\n", "import matplotlib.pyplot as plt\n", "# This is required so that matplotlib plots plot in the notebook\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "4848b466-f844-4f20-8249-4272e3254965", "metadata": {}, "source": [ "To start, we will create an instance of the simulator with the default gravity and time step." ] }, { "cell_type": "code", "execution_count": 18, "id": "39887d2a-d435-4184-b192-bd388b99402b", "metadata": {}, "outputs": [], "source": [ "sim = Simulator()" ] }, { "cell_type": "markdown", "id": "46b90f4b-87ee-4394-9c2d-600445939837", "metadata": {}, "source": [ "Next we will load some objects into the simulator. The first is a simple plane that will be the floor on which a cart will roll. " ] }, { "cell_type": "code", "execution_count": 19, "id": "61d0f023-91c0-4289-a014-a86c218dd88f", "metadata": {}, "outputs": [], "source": [ "# Load a plane for the ground. This this case, fixed means that the\n", "# base of the ground will not be affected by external forces\n", "ground = sim.load_urdf(assets['plane_big.urdf'], fixed=True)" ] }, { "cell_type": "markdown", "id": "f6267817-6add-496b-87b8-86e847792d66", "metadata": {}, "source": [ "Next we add the cart. In this case, the cart is balancing an inverted pendulum on top of it. The angle of the pendulum is defined by `chassis_to_arm` joint." ] }, { "cell_type": "code", "execution_count": 20, "id": "80fbdb41-6eea-4239-98b3-6e3f85f10de7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Add the cart from the default condynsate assets to the simulator.\n", "cart = sim.load_urdf(assets['cart.urdf']) #return 0 on success\n", "\n", "# Set its initial position such that the wheels start 0.001 meters above\n", "# The ground plane\n", "cart.set_initial_state(position=(0,0,0.251)) #return 0 on success\n", "\n", "# Set the pendulum joint to some non-zero initial angle\n", "cart.joints['chassis_to_arm'].set_initial_state(angle=0.001) #return 0 on success" ] }, { "cell_type": "markdown", "id": "f0653917-311f-4e6d-8542-7e92d8907894", "metadata": {}, "source": [ "Next we will run a simulation. In this simulation we will \n", "1. Keep track of the angle of the pendulum, the position of the cart, and the simulation time\n", "2. Apply a small force in the -x direction to the center of mass of the cart\n", "3. Take a simulation step\n", "\n", " When the simulation is done, we print to the screen how long it took. Because `real_time` is set to false in `sim.step`, the simulator will attempt to run as quickly as possible." ] }, { "cell_type": "code", "execution_count": 21, "id": "4c5e0a1c-2733-42a5-b951-205a750220ea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simulation took: 0.26 seconds\n" ] } ], "source": [ "# Run a 5 second simulation loop\n", "start = time.time()\n", "pendulum_angle = []\n", "cart_x_pos = []\n", "simtime = []\n", "while sim.time < 5.0:\n", " # Note the angle of the pendulum joint at each time step\n", " # Note the x coordinate of the cart at each time step\n", " # Note the simulation time at each step\n", " pendulum_angle.append(cart.joints['chassis_to_arm'].state.angle)\n", " cart_x_pos.append(cart.state.position[0])\n", " simtime.append(sim.time)\n", "\n", " # Apply a small force the the center of mass of the cart\n", " cart.apply_force((-0.025, 0.0, 0.0))\n", "\n", " # Attempt a simulation step. If something has gone wrong,\n", " # break the simulation loop\n", " if sim.step(real_time=False) != 0:\n", " break\n", "\n", "# Note the terminate angle, position, and time\n", "pendulum_angle.append(cart.joints['chassis_to_arm'].state.angle)\n", "cart_x_pos.append(cart.state.position[0])\n", "simtime.append(sim.time)\n", "\n", "# Print how long the simulation took in real time\n", "print(f\"Simulation took: {(time.time() - start):.2f} seconds\")" ] }, { "cell_type": "markdown", "id": "af02619a-8d43-4a96-a09b-53de1ea2cd53", "metadata": {}, "source": [ "When done, the terminate command will ensure graceful exit of all children threads" ] }, { "cell_type": "code", "execution_count": 22, "id": "b6937a49-e633-4b70-bb90-e8263974a28a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sim.terminate()" ] }, { "cell_type": "markdown", "id": "b712a82e-52b4-4037-a7c4-6728f17238b1", "metadata": {}, "source": [ "Finally, we will plot the results of the simulation" ] }, { "cell_type": "code", "execution_count": 23, "id": "d6bd8f81-0db4-470b-9a98-b8ddfca6c873", "metadata": {}, "outputs": [ { "data": { "image/png": "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3xQUFET29vb05JNPUkZGhgTVfFw3Nzd69dVXKS8vT3OsrKwseuONN6hq1apyHlq3bi2fXVGnTp2Sa+zk5CTnoHnz5nT06FHN83v37tVcTz7X3I709PRi7Xj77bflOc7s1q5dm3788UfN87t27ZKfHX6OA92pU6dSbm5usevPn/nWW29J8MXnSX291C5dukQdO3YkW1tbql+/Pm3durXY8/wHyIQJE+Tz+TX88zpr1qwKnwsAY4PADgAEBzq8cdDGv7grYsaMGfTee+/R8ePHydLSkp555hn5pc3ZLA4WIyIiaPr06Y/2j5W5OS1YsIDOnTsnwc/27dvlGIy7Ojl44yCFuzx54wDoXvn5+RLUJSYmSvDBwcKVK1doyJAhxV53+fJlOQ8cePHGry2aldMGDuL4+6xYsYI2bdokAdqgQYPon3/+kY0Dy2+//ZZWr16teQ8HMgcOHJD3nD59mp566inJDHIQVBHDhw+natWqSfB97NgxCbysrKw0350/k7O3fIyVK1dKoMfHVhsxYgQtX75c2n/hwgVpJ//ssOvXr1OfPn0kwOcA8ptvvpGg7+OPPy7WBr6GHJweOnSI5syZQx9++KEmeOPrNHjwYMl08vOLFy+WQLIoPvZff/0lf1SEh4fTb7/9JgExgMlTAQAUWr16tcrNzU1la2uratu2rWratGmqU6dOFTs/RKRau3at3I+MjJTHP/zwg+b55cuXy75t27Zp9s2aNUsVFBSkedypUyfVa6+9VuxzBwwYoBo5cqTmcUBAgGrevHmlXptVq1ap3N3dNY+XLFmicnFxue91RT9ny5YtKgsLC1VUVJTm+XPnzkl7Dx8+LI9nzJihsre3V6WkpGhe8+abb6pat25drp+ToudHbceOHbL/zp07mrby44iICM1rXnrpJTluamqqZl+vXr1kP7t27Zq0/fr168U+u1u3bnKdKtIeJycn1dKlS0t8/ZgxY1Rjx44ttm/Pnj0qc3Nz1d27d1Xh4eHymVu3bi3x/e+8845c6/z8fM2+RYsWqRwdHVV5eXma69++ffti72vZsqXq7bfflvubN29WWVpaFvuuGzduLPZdJk6cqOratWux49zr3vMOYAqQsQMADc7SxMbGSiaEszacRWrWrJl0HZYlJCREc9/b21tuudu06L74+PhHOtP//vsvdevWTbohuQvxueeek7F/nPkq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the results\n", "fig, axes = plt.subplots(nrows=2,ncols=1)\n", "axes[0].plot(simtime, cart_x_pos)\n", "axes[0].set_xlabel('Simulation Time [seconds]')\n", "axes[0].set_ylabel('Cart x-position [meters]')\n", "axes[1].plot(simtime, pendulum_angle)\n", "axes[1].set_xlabel('Simulation Time [seconds]')\n", "axes[1].set_ylabel('Pendulum Angle [rad]')\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "b494f4bd-27d2-4c8e-b551-9cda46a95686", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.14.0" } }, "nbformat": 4, "nbformat_minor": 5 }