From 424caeea7c2ade4c0201c30e4915a90e8fb8ffa6 Mon Sep 17 00:00:00 2001 From: MikhailChaikovskii Date: Mon, 5 Aug 2024 15:13:48 +0300 Subject: [PATCH] tutorial update --- rostok/block_builder_chrono/block_classes.py | 4 +- tests_jupyter/robotic_rules_tutorial.ipynb | 99 ++++++++++++++------ 2 files changed, 74 insertions(+), 29 deletions(-) diff --git a/rostok/block_builder_chrono/block_classes.py b/rostok/block_builder_chrono/block_classes.py index f10feb96..186ef622 100644 --- a/rostok/block_builder_chrono/block_classes.py +++ b/rostok/block_builder_chrono/block_classes.py @@ -300,8 +300,8 @@ def _add_limiting_link(self, in_block: BuildingBody, out_block: BuildingBody, p = joint_limiting_link.GetLimit_Rz() #joint_limiting_link. p.SetActive(True) - p.SetMax(0.01) - p.SetMin(-0.01) + p.SetMax(1) + p.SetMin(-1) system.AddLink(joint_limiting_link) system.Update() diff --git a/tests_jupyter/robotic_rules_tutorial.ipynb b/tests_jupyter/robotic_rules_tutorial.ipynb index de8c95a4..db13ba78 100644 --- a/tests_jupyter/robotic_rules_tutorial.ipynb +++ b/tests_jupyter/robotic_rules_tutorial.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -93,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -129,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -152,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -180,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -207,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -225,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -242,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -276,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -310,16 +310,25 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Jupyter environment detected. Enabling Open3D WebVisualizer.\n", + "[Open3D INFO] WebRTC GUI backend enabled.\n", + "[Open3D INFO] WebRTCWindowSystem: HTTP handshake server disabled.\n" + ] + }, { "data": { "text/plain": [ "[[22], [6, 10, 13]]" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -329,32 +338,68 @@ "from rostok.simulation_chrono.simulation_scenario import GraspScenario\n", "from rostok.graph_grammar.node_block_typing import get_joint_matrix_from_graph, get_joint_vector_from_graph\n", "\n", - "scenario = GraspScenario(10000, 1e-3)\n", + "\n", "get_joint_matrix_from_graph(graph)\n" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'material'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[15], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m control \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minitial_value\u001b[39m\u001b[38;5;124m\"\u001b[39m: [\u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m4\u001b[39m}\n\u001b[1;32m----> 2\u001b[0m \u001b[43mscenario\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_simulation\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgraph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontrol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstarting_positions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m7\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m7\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m30\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m60\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m30\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m60\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m30\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m60\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m30\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m60\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvis\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdelay\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32md:\\work\\projects\\rostok\\rostok\\simulation_chrono\\simulation_scenario.py:91\u001b[0m, in \u001b[0;36mGraspScenario.run_simulation\u001b[1;34m(self, graph, controller_data, starting_positions, vis, delay)\u001b[0m\n\u001b[0;32m 88\u001b[0m vis_manager \u001b[38;5;241m=\u001b[39m ChronoVisManager(delay)\n\u001b[0;32m 89\u001b[0m simulation \u001b[38;5;241m=\u001b[39m SingleRobotSimulation(system, env_creator, vis_manager)\n\u001b[1;32m---> 91\u001b[0m grasp_object \u001b[38;5;241m=\u001b[39m \u001b[43mcreator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_environment_body\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgrasp_object_callback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 92\u001b[0m grasp_object\u001b[38;5;241m.\u001b[39mbody\u001b[38;5;241m.\u001b[39mSetNameString(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mGrasp_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 93\u001b[0m set_covering_ellipsoid_based_position(grasp_object,\n\u001b[0;32m 94\u001b[0m reference_point\u001b[38;5;241m=\u001b[39mchrono\u001b[38;5;241m.\u001b[39mChVectorD(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0.1\u001b[39m, \u001b[38;5;241m0\u001b[39m))\n", - "File \u001b[1;32md:\\work\\projects\\rostok\\rostok\\block_builder_chrono\\block_builder_chrono_api.py:42\u001b[0m, in \u001b[0;36mChronoBlockCreatorInterface.create_environment_body\u001b[1;34m(cls, blueprint)\u001b[0m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;129m@classmethod\u001b[39m\n\u001b[0;32m 40\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_environment_body\u001b[39m(\u001b[38;5;28mcls\u001b[39m, blueprint: EnvironmentBodyBlueprint) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ChronoEasyShapeObject:\n\u001b[0;32m 41\u001b[0m blueprint_chrono \u001b[38;5;241m=\u001b[39m deepcopy(blueprint)\n\u001b[1;32m---> 42\u001b[0m material_blue \u001b[38;5;241m=\u001b[39m \u001b[43mblueprint_chrono\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmaterial\u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;66;03m# This works because the name of initialization arguments is equal to Blueprint\u001b[39;00m\n\u001b[0;32m 44\u001b[0m blueprint_chrono\u001b[38;5;241m.\u001b[39mmaterial \u001b[38;5;241m=\u001b[39m material_blue \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'material'" + "name": "stdout", + "output_type": "stream", + "text": [ + "Irrlicht Engine version 1.8.5\n", + "Linux 6.5.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Jul 15 16:40:02 UTC 2 x86_64\n", + "Using plain X visual\n", + "This driver is not available in Linux. Try OpenGL or Software renderer.\n", + "Irrlicht Engine version 1.8.5\n", + "Linux 6.5.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Jul 15 16:40:02 UTC 2 x86_64\n", + "Using renderer: OpenGL 4.6\n", + "Mesa Intel(R) UHD Graphics 630 (CFL GT2): Intel\n", + "OpenGL driver version is 1.2 or better.\n", + "GLSL version: 4.6\n", + "Loaded texture: /home/be2r-lab-210134/Python/anaconda3/envs/rostok/share/chrono/data/fonts/arial80.bmp\n", + "Loaded texture: /home/be2r-lab-210134/Python/anaconda3/envs/rostok/share/chrono/data/skybox/sky_lf.jpg\n", + "Loaded texture: /home/be2r-lab-210134/Python/anaconda3/envs/rostok/share/chrono/data/skybox/sky_up.jpg\n", + "Loaded texture: /home/be2r-lab-210134/Python/anaconda3/envs/rostok/share/chrono/data/skybox/sky_dn.jpg\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot use default video driver - fall back to OpenGL\n" ] } ], "source": [ - "control = {\"initial_value\": [1]*4}\n", - "scenario.run_simulation(graph, control, starting_positions=[[0,0,-7,7], [0,0,-5,5], [0, 30, -60, -30, 60], [0, 30, -60, -30, 60]], vis = True, delay=True)\n" + "from rostok.simulation_chrono.simulation import (ChronoSystems, EnvCreator, SingleRobotSimulation,\n", + " ChronoVisManager)\n", + "from rostok.control_chrono.controller import (ConstController, SinControllerChrono)\n", + "env_creator = EnvCreator([])\n", + "system = ChronoSystems.chrono_NSC_system(gravity_list=[0, 0, 0])\n", + "vis_manager = ChronoVisManager(delay=False)\n", + "\n", + "control = {\"initial_value\": [2,1,1,1]}\n", + "\n", + "simulation = SingleRobotSimulation(system, env_creator, vis_manager)\n", + "\n", + "simulation.add_design(graph, control,\n", + " ConstController)\n", + " \n", + "# setup parameters for the data store\n", + "\n", + "n_steps = 1000\n", + "\n", + "\n", + "robot_data_dict = {}\n", + "simulation.add_robot_data_type_dict(robot_data_dict)\n", + "simulation.simulate(n_steps, 1e-3, 10000, [], vis_manager)\n", + "\n", + "#scenario.run_simulation(graph, control, starting_positions=[[0,0,-7,7], [0,0,-5,5], [0, 30, -60, -30, 60], [0, 30, -60, -30, 60]], vis = True, delay=True)\n" ] } ],