Newer
Older
{
"cells": [
{
"cell_type": "markdown",
{
"cell_type": "markdown",
"id": "1c5d41dc",
"metadata": {},
"source": [
"Formulieren Sie eine oder mehrere Forschungsfragen zu der Lerneinheit:"
]
},
{
"cell_type": "markdown",
"id": "14e306b5",
"metadata": {},
"source": [
"Mit welchen Konfigurationen lässt sich die Qualität eines Elektrofahrzeugs in Bezug auf Aufwand, Verfügbarkeit und Akzeptanz optimieren?"
]
{
"cell_type": "markdown",
"id": "de070039",
"metadata": {},
"source": [
{
"cell_type": "markdown",
"id": "531d890a",
"metadata": {},
"source": [
"### Versuchsziel\n",
"Formulieren Sie ein Versuchsziel für diesen ersten Versuch:"
]
},
{
"cell_type": "markdown",
"id": "30ddd8dc",
"metadata": {},
"source": [
"Bestimmen Sie, wie sich verschiedene Elemente des Fahrzeugs (z. B. das Antriebssystem und die Art der Teile) auf die Qualitäts-KPIs auswirken, um das Design in zukünftigen Iterationen zu optimieren."
]
},
{
"cell_type": "markdown",
"id": "50dd9ff3",
"metadata": {},
"source": [
"### Versuchsaufbau\n",
"\n",
"Bauen Sie ein erstes Fahrzeug aus den gegebenen LEGO-Teilen in der CAD-Software LeoCAD auf.\n",
"\n",
"Hierbei gelten die folgenden Rahmenbedingungen:\n",
"- Das Fahrzeug muss aus Baugruppen, Bauteilen und Komponenten bestehen.\n",
"- Es muss mindestens vier Räder besitzen\n",
"- Es muss sich durch den elektrischen Antrieb fortbewegen können. \n",
"- Die Verwendung eines Getriebes zwischen Motor und Antriebsachse(n) ist verpflichtend. \n",
"- Die Farbe von mindestens einem Teil soll sich von der in LeoCAD hinterlegten Standardfarbe unterscheiden.\n",
"- Es sind nur die LEGO-Teile zu verwenden, welche sich in den JSON-Dateien bzw. in\n",
"der zur Verfügung gestellten Teilebibliothek befinden."
]
},
{
"cell_type": "markdown",
"id": "0ebba2d8",
"metadata": {},
"source": [
"Fügen Sie eine Abbildung des fertigen Autos in LeoCAD hinzu (*Hinweise: Ein Bild lässt sich mit \\!\\[Bildbeschreibung](/Pfad/zum/Bild) hinzufügen. Achten Sie darauf, das Bild später auch in Git hinzuzufügen*):\n"
]
},
{
"cell_type": "markdown",
"id": "935c200c",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "05a8eb21",
"metadata": {},
"source": [
"Beschreiben Sie kurz und präzise Ihr Fahrzeug:"
"cell_type": "markdown",
"id": "df7f1d01",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "e622f83b",
"Bauen Sie das Fahrzeug nun in unserem Software-Framework zusammen. Instanziieren Sie die LEGO-Teile und lesen Sie dabei auch die Eigenschaften ein. Ergänzen Sie zusätzliche Eigenschaften, wie z.B. die Farbe. Referenzieren Sie die Teile aufeinander und erstellen Sie auf diese Weise sinnvolle Bauteile, Baugruppen und das\n",
"Gesamtsystem. Nutzen Sie die hierfür bereitgestellten Klassendefinitionen und Methoden. Achten Sie auf eine gute Code-Dokumentation. Sie können sich für die Bearbeitung an den zur Verfügung gestellten Code-Zellen orientieren, können hiervon jedoch auch abweichen.\n",
"\n",
"*Hinweise: Achten Sie auf die Unterschiede zum Minimalbeispiel. Eine direkte Kopie ist nicht möglich. Achten Sie außerdem darauf, ein Teil (eindeutig identifiziert durch seine UUID) nicht an mehreren Stellen zu verbauen*"
]
},
{
"cell_type": "code",

Rivera Alcalde, Andrés Daniel
committed
"execution_count": null,
"id": "690da270",
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import pprint\n",
"from functions import calculation_rules\n",
"from functions.classes import *"
]
},
{
"cell_type": "code",

Rivera Alcalde, Andrés Daniel
committed
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# initialize components\n",
"\n",
"with open(\"datasheets/axles.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" axles_data = json.load(json_file)\n",
"with open(\"datasheets/motors.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" motors_data = json.load(json_file)\n",
"with open(\"datasheets/gears.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" gears_data = json.load(json_file)\n",
"with open(\"datasheets/batteries.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" batteries_data = json.load(json_file)\n",
"with open(\"datasheets/frame.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" frame_data = json.load(json_file)\n",
"with open(\"datasheets/tires.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" tires_data = json.load(json_file)\n",
"with open(\"datasheets/rims.json\") as json_file:\n",

Rivera Alcalde, Andrés Daniel
committed
" rims_data = json.load(json_file)\n",
"\n",
"\n",
"battery = LegoComponent(\"battery\", batteries_data[\"8881-1\"])\n",
"\n",
"green_base = LegoComponent(\"green base\", frame_data[\"39790\"])\n",
"\n",
"motor = LegoComponent(\"Motor\", motors_data[\"8883-1\"])\n",
"\n",
"axle_input = LegoComponent(\"axle input\", axles_data[\"32073\"])\n",
"\n",
"gear_1 = LegoComponent(\"gear 1\", gears_data[\"6589\"])\n",
"gear_2 = gear_1.clone(\"gear 2\")\n",
"\n",
"axle_side_1 = LegoComponent(\"axle side 1\", axles_data[\"50451\"])\n",
"axles=[axle_side_1]\n",
"for i in range (2,4):\n",

Rivera Alcalde, Andrés Daniel
committed
" cloned_axle=axle_side_1.clone(f\"axle_side_{i}\")\n",
" axles.append(cloned_axle)\n",
"\n",
"tire_1 = LegoComponent(\"tire 1\", tires_data[\"30699\"])\n",
"tires=[tire_1]\n",
"for i in range (2,5):\n",

Rivera Alcalde, Andrés Daniel
committed
" cloned_tire=tire_1.clone(f\"tire_{i}\")\n",
" tires.append(cloned_tire)\n",
"\n",
"rim_1 = LegoComponent(\"rim 1\", rims_data[\"56904\"])\n",
"rims=[rim_1]\n",
"for i in range (2,5):\n",

Rivera Alcalde, Andrés Daniel
committed
" cloned_rim=rim_1.clone(f\"rim_{i}\")\n",
" rims.append(cloned_rim)\n",
"\n",
"technic_bush_1 = LegoComponent(\"technic bush 1\", frame_data[\"32123\"])\n",

Rivera Alcalde, Andrés Daniel
committed
"technic_bushes=[technic_bush_1]\n",
"for i in range (2,7):\n",

Rivera Alcalde, Andrés Daniel
committed
" cloned_technic_bush=technic_bush_1.clone(f\"technic_bush_{i}\")\n",
" technic_bushes.append(cloned_technic_bush)\n",
"\n",
"technic_pin_1=LegoComponent(\"technic pin 1\", frame_data[\"55615\"])\n",
"technic_pins=[technic_pin_1]\n",
"for i in range (2,3):\n",
" cloned_technic_pin=technic_pin_1.clone(f\"technic_pin_{i}\")\n",
" technic_pins.append(cloned_technic_pin)"
]
},
{
"cell_type": "code",

Rivera Alcalde, Andrés Daniel
committed
"execution_count": null,

Rivera Alcalde, Andrés Daniel
committed
"outputs": [],
"# set properties\n",
"\n",
"\n",
"color = \"grey\"\n",
"\n",
"\n",
"components_teile = [battery, green_base, motor, axle_input, gear_1, gear_2] + axles + tires + rims + technich_bushes\n",
"\n",
"\n",
"for component in components_teile:\n",
" component.properties[\"color\"] = color\n",
"\n",
"\n",
"for component in components_teile:\n",
" pprint.pprint(component.properties)\n",
"\n",
"\n",
"green_base.properties[\"color\"] = \"green\"\n",
"\n"
]
},
{
"cell_type": "code",

Rivera Alcalde, Andrés Daniel
committed
"execution_count": null,

Rivera Alcalde, Andrés Daniel
committed
"outputs": [],
"# aggregate components\n",

Rivera Alcalde, Andrés Daniel
committed
"\n",
"wheels = []\n",
"\n",
"for i in range(4):\n",
" wheel = LegoAssembly(AggregationLayer.SUBASSEMBLY, f\"wheel_{i+1}\", assembly_method=\"join lego blocks\")\n",
" wheel.add([rims[i], tires[i]])\n",

Rivera Alcalde, Andrés Daniel
committed
" wheels.append(wheel)\n",
"\n",
"forefront_axle= LegoAssembly(AggregationLayer.ASSEMBLY, \"forefront axle\")\n",
"forefront_axle.add([wheels[0], axle_side_1, wheels[1]])\n",
"\n",
"mid_axle=LegoAssembly(AggregationLayer.ASSEMBLY, \"mid axle\")\n",
"mid_axle.add([technich_bushes[0], axles[2], technich_bushes[1]])\n",
"\n",
"tail_axle= LegoAssembly(AggregationLayer.ASSEMBLY, \"tail axle\")\n",
"tail_axle.add([wheels[2], axles[1], wheels[3]])"
]
},
{
"cell_type": "markdown",
"id": "c1fef7f0",
"metadata": {},
"source": [
"### Analyse\n",
"Bestimmen Sie die Qualität Ihres Fahrzeugs mittels KPIs.\n",
"Die Qualität des Fahrzeugs ist mit mindestens einem KPI je Qualitätsdimension (Aufwand, Verfügbarkeit, Akzeptanz) zu bestimmen. Enwickeln Sie zunächst sinnvolle KPIs, welche mit den gegebenen Daten umsetzbar sind. Halten Sie die Berechnungsvorschriften im Jupyter Notebook fest. Implementieren Sie deren Berechnung für das Gesamtsystem \"Fahrzeug\" mittels einzelner Funktionen im Skript `calculation_rules`. Sie können zusätzlich Ihre Methoden auch auf die niedrigeren Aggregationsebenen anwenden."
]
},
{
"cell_type": "markdown",
"id": "d5f02096",
"metadata": {},
"source": [
"Beschreiben Sie den jeweiligen KPI und geben Sie seine Berechnungsvorschrift an:"
]
},
{
"cell_type": "markdown",
"id": "a793bce8",
"metadata": {},
"source": [
"$$\n",
"a = \\frac{b}{c} + d\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "9a21b4ac",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "e300a005",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "2aad773a",
"metadata": {},
"source": [
"Halten Sie die berechneten Werte für die KPIs im Notebook\n",
"fest:"
]
},

Rivera Alcalde, Andrés Daniel
committed
"execution_count": null,

Rivera Alcalde, Andrés Daniel
committed
"outputs": [],
"# calculate the KPIs for your car\n",

Rivera Alcalde, Andrés Daniel
committed
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c774b381",
"metadata": {},
"outputs": [],
"source": [

Rivera Alcalde, Andrés Daniel
committed
"# print your KPIs\n"
{
"cell_type": "markdown",
"id": "b89e8fb9",
"metadata": {},
"source": [
"Exportieren Sie schließlich Ihr entworfenes Fahrzeug inklusive der entwickelten KPIs:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d518275f",
"metadata": {},
"outputs": [],
"source": [
"# export car and its properties"
]
},
{
"cell_type": "markdown",
"id": "89c75440",
"metadata": {},
"source": [
{
"cell_type": "markdown",
"id": "f8a2e1b0",
"metadata": {},
"source": [
]
},
{
"cell_type": "markdown",
"id": "80407e7f",
"metadata": {},
"source": [
"Setzen Sie sich ein Ziel, welche Qualitätsdimensionen in einem zweiten Fahrzeug verbessert werden sollen und bauen\n",
"Sie darauf aufbauend ein zweites Fahrzeug aus den gegebenen LEGO-Teilen auf.\n",
"Die Anforderungen an das Fahrzeug sind identisch zum ersten. Wählen Sie die Einzelteile und deren Zusammenspiel entsprechend Ihrer Zielstellung aus."
]
},
{
"cell_type": "markdown",
"id": "f4c620ee",
"metadata": {},
"source": [
"Formulieren Sie ein Versuchsziel für diesen Versuch. Beschreiben Sie unter anderem, welche Verbesserung Sie vornehmen möchten:"
]
},
{
"cell_type": "markdown",
"id": "e3dc7e29",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "73c454f2",
"metadata": {},
"source": [
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
"cell_type": "markdown",
"id": "2b381a60",
"metadata": {},
"source": [
"Fügen Sie eine Abbildung des fertigen Autos in LeoCAD hinzu:"
]
},
{
"cell_type": "markdown",
"id": "2b6e7f12",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "23c19009",
"metadata": {},
"source": [
"Beschreiben Sie kurz und präzise den Aufbau des zweiten Fahrzeugs:"
]
},
{
"cell_type": "markdown",
"id": "a08bf9cf",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "14011b6f",
"Erstellen Sie das Fahrzeug in unserem Softwareframework:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0b7336fb",
"metadata": {},
"outputs": [],
"source": [
"# set properties"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
]
},
{
"cell_type": "markdown",
"id": "89e54480",
"metadata": {},
"source": [
"Bestimmen Sie die KPIs des zweiten Fahrzeugs"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "762a1e93",
"metadata": {},
"outputs": [],
"source": [
"# calculate the KPIs for your car"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1ed67328",
"metadata": {},
"outputs": [],
"source": [
"# print your KPIs"
]
},
{
"cell_type": "markdown",
"id": "0f11b370",
"metadata": {},
"source": [
"Exportieren Sie Ihr Fahrzeug inklusive der KPIs:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "05d9d6f7",
"metadata": {},
"outputs": [],
"source": [
"# export car and its properties"
]
},
{
"cell_type": "markdown",
"id": "e413cd84",
"metadata": {},
"source": [
"### Ergebnisse\n",
"Stellen Sie die entwickelten KPIs beider Fahrzeuge gegenüber und wählen Sie hierfür unter anderem eine geeignete\n",
"grafische Darstellung. Stellen Sie dabei insbesondere sicher, dass die Datengrundlage ersichtlich ist. Halten Sie\n",
"auch die Plotbefehle im Notebook fest:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b0f93e22",
"metadata": {},
"outputs": [],
"source": [
"# plot the data, save diagramm as svg-file"
]
},
{
"cell_type": "markdown",
"Interpretieren Sie Ihre Ergebnisse. Vergleichen Sie die KPIs Ihrer Autos. Konnten Sie Ihre gewünschte Verbesserung erzielen? Welche Schlüsse ziehen Sie aus den Ergebnissen für die Qualität der beiden\n",
]
},
{
"cell_type": "markdown",
"id": "0ca884b1",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "4f117169",
"Diskutieren Sie, inwieweit Ihre entwickelten KPIs die im Skript erläuterten FAIR-Prinzipien erfüllen:"
"cell_type": "markdown",
"id": "f8ed82d2",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "bfed164a",
"metadata": {},
"source": [
"## Fazit"
]
},
{
"cell_type": "markdown",
"id": "5d440f87",
"Ziehen Sie ein persönliches Fazit. Was haben Sie Neues gelernt?"
},
{
"cell_type": "markdown",
"id": "b4151784",
"metadata": {},
"source": []
}
],
"metadata": {
"hide_input": false,
"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",
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
},
"vscode": {
"interpreter": {
"hash": "386d359a8531ffdc4805ead3a16e7983e89a5ab7bba0cbec0e7ad9597b7a2b64"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}