Skip to content

Commit

Permalink
Attempt at controller with .fmu file
Browse files Browse the repository at this point in the history
  • Loading branch information
luca7084 authored and adriendelsalle committed Jul 5, 2023
1 parent 03d889e commit 4cfa018
Show file tree
Hide file tree
Showing 6 changed files with 416 additions and 0 deletions.
Binary file added controller.fmu
Binary file not shown.
75 changes: 75 additions & 0 deletions rocket_twin/notebooks/sequences_fmu.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4f4a8914-1f1e-43ab-8e9f-a57876a0bbf0",
"metadata": {},
"outputs": [],
"source": [
"from rocket_twin.systems import Station\n",
"from rocket_twin.utils import run_sequences"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "307706e5-4ba7-4947-8b30-16b4f3a6cfcd",
"metadata": {},
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: 'rocket_twin/systems/station/sequence_1.fmu'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[2], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m#System creation\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m sys \u001b[38;5;241m=\u001b[39m \u001b[43mStation\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43msys\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n",
"File \u001b[1;32m~\\micromambaenv\\envs\\rocket_twin\\Lib\\site-packages\\cosapp\\systems\\system.py:256\u001b[0m, in \u001b[0;36mSystem.__init__\u001b[1;34m(self, name, **kwargs)\u001b[0m\n\u001b[0;32m 253\u001b[0m kwargs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_initialize(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 255\u001b[0m \u001b[38;5;66;03m# Customized the `System` according to user wishes\u001b[39;00m\n\u001b[1;32m--> 256\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msetup\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 257\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mupdate()\n\u001b[0;32m 259\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__enforce_scope()\n",
"File \u001b[1;32m~\\Documents\\Polytechnique\\PSC\\rocket-twin\\rocket_twin\\systems\\station\\station.py:21\u001b[0m, in \u001b[0;36mStation.setup\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madd_child(Pipe(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpipe\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madd_child(Tank(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mg_tank\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[1;32m---> 21\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madd_child(\u001b[43mFMUSystem\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcontroller\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfmu_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrocket_twin/systems/station/sequence_1.fmu\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m)\n\u001b[0;32m 23\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconnect(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mg_tank\u001b[38;5;241m.\u001b[39moutwards, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpipe\u001b[38;5;241m.\u001b[39minwards, {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw_out\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw_in\u001b[39m\u001b[38;5;124m\"\u001b[39m})\n\u001b[0;32m 24\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconnect(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpipe\u001b[38;5;241m.\u001b[39moutwards, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrocket\u001b[38;5;241m.\u001b[39minwards, {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw_out\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw_in\u001b[39m\u001b[38;5;124m\"\u001b[39m})\n",
"File \u001b[1;32m~\\micromambaenv\\envs\\rocket_twin\\Lib\\site-packages\\cosapp\\systems\\system.py:253\u001b[0m, in \u001b[0;36mSystem.__init__\u001b[1;34m(self, name, **kwargs)\u001b[0m\n\u001b[0;32m 250\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_add_port(ModeVarPort(System\u001b[38;5;241m.\u001b[39mMODEVARS_OUT, PortType\u001b[38;5;241m.\u001b[39mOUT))\n\u001b[0;32m 252\u001b[0m \u001b[38;5;66;03m# Customized subclass `System` before applying user wishes\u001b[39;00m\n\u001b[1;32m--> 253\u001b[0m kwargs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_initialize\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 255\u001b[0m \u001b[38;5;66;03m# Customized the `System` according to user wishes\u001b[39;00m\n\u001b[0;32m 256\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msetup(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
"File \u001b[1;32m~\\micromambaenv\\envs\\rocket_twin\\Lib\\site-packages\\cosapp_fmu\\FMUsystem.py:42\u001b[0m, in \u001b[0;36mFMUSystem._initialize\u001b[1;34m(self, fmu_path, **kwargs)\u001b[0m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmu_path \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 40\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfmu_path is missing\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m---> 42\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload_fmu\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfmu_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmu\u001b[38;5;241m.\u001b[39menterInitializationMode()\n\u001b[0;32m 44\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfmu\u001b[38;5;241m.\u001b[39mexitInitializationMode()\n",
"File \u001b[1;32m~\\micromambaenv\\envs\\rocket_twin\\Lib\\site-packages\\cosapp_fmu\\FMUsystem.py:161\u001b[0m, in \u001b[0;36mFMUSystem.load_fmu\u001b[1;34m(self, filename)\u001b[0m\n\u001b[0;32m 158\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfmpy\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m supported_platforms\n\u001b[0;32m 159\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mfmpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m can_simulate\n\u001b[1;32m--> 161\u001b[0m platforms \u001b[38;5;241m=\u001b[39m \u001b[43msupported_platforms\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 162\u001b[0m can_sim, remote_platform \u001b[38;5;241m=\u001b[39m can_simulate(platforms, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mauto\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 163\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m can_sim:\n",
"File \u001b[1;32m~\\micromambaenv\\envs\\rocket_twin\\Lib\\site-packages\\fmpy\\__init__.py:84\u001b[0m, in \u001b[0;36msupported_platforms\u001b[1;34m(filename)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m: \u001b[38;5;66;03m# FMU as path or file like object\u001b[39;00m\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mzipfile\u001b[39;00m\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mzipfile\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mZipFile\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mr\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m zf:\n\u001b[0;32m 85\u001b[0m names \u001b[38;5;241m=\u001b[39m zf\u001b[38;5;241m.\u001b[39mnamelist()\n\u001b[0;32m 87\u001b[0m platforms \u001b[38;5;241m=\u001b[39m []\n",
"File \u001b[1;32m~\\micromambaenv\\envs\\rocket_twin\\Lib\\zipfile.py:1283\u001b[0m, in \u001b[0;36mZipFile.__init__\u001b[1;34m(self, file, mode, compression, allowZip64, compresslevel, strict_timestamps, metadata_encoding)\u001b[0m\n\u001b[0;32m 1281\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m 1282\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 1283\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfp \u001b[38;5;241m=\u001b[39m \u001b[43mio\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfilemode\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1284\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m:\n\u001b[0;32m 1285\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m filemode \u001b[38;5;129;01min\u001b[39;00m modeDict:\n",
"\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'rocket_twin/systems/station/sequence_1.fmu'"
]
}
],
"source": [
"#System creation\n",
"\n",
"sys = Station('sys')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fd2c6fc5-99ed-44ac-acd3-8858bc4e1d71",
"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.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Binary file added rocket_twin/systems/station/sequence_2.fmu
Binary file not shown.
5 changes: 5 additions & 0 deletions rocket_twin/systems/station/station.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from cosapp.base import System
from cosapp_fmu.FMUsystem import FMUSystem

from rocket_twin.systems import Pipe, Rocket, Tank

Expand All @@ -20,5 +21,9 @@ def setup(self):

self.connect(self.g_tank.outwards, self.pipe.inwards, {"w_out": "w_in"})
self.connect(self.pipe.outwards, self.rocket.inwards, {"w_out": "w_in"})
self.connect(self.controller.outwards, self.pipe.inwards, ["is_open"])
#self.connect(self.controller.outwards, self.rocket.inwards, ["switch"])
#self.connect(self.controller.outwards, self.g_tank.inwards, {'w_out_t' : 'w_out_temp'})
#self.connect(self.controller.outwards, self.rocket.tank.inwards, {'w_out_r' : 'w_out_temp'})

self.g_tank.weight_max = 10.0
Binary file added sequence_1.fmu
Binary file not shown.
Loading

0 comments on commit 4cfa018

Please sign in to comment.