Compare commits

..

2 Commits

Author SHA1 Message Date
37459bc12d Merge branch 'master' of https://gitea.yenon.at/yenon/MasterarbeitLaTeX 2023-06-19 14:33:48 +02:00
85a23b1352 Changes on tower 2023-06-19 14:26:36 +02:00
10 changed files with 8543 additions and 57 deletions

View File

@ -121,43 +121,43 @@ TextFolding={"checksum":"cf8b2614fde9a70da69bd9296f0dc1ae50c584e2","ranges":[]}
ViMarks=
[view-settings,view=0,item:main.tex]
CursorColumn=0
CursorLine=245
CursorColumn=89
CursorLine=117
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"5c50dc53ef39690810318af01f4ba4d3cb14fab0","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/1_Einleitung.tex]
CursorColumn=114
CursorLine=46
CursorColumn=28
CursorLine=41
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"72da509f7bb04dfaf40002d46af28410e2acb580","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/2_Konzept.tex]
CursorColumn=73
CursorLine=8
CursorColumn=0
CursorLine=36
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"21b8ecf4269d0711922f5a58a25d2691a2aebc7f","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/3_Auswahl.tex]
CursorColumn=49
CursorLine=422
CursorColumn=0
CursorLine=147
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"ee9b56159ddf3293cde4120dfc5d90bbd2f0759a","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/4_Umsetzung.tex]
CursorColumn=0
CursorLine=43
CursorColumn=15
CursorLine=520
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"4295e3061710c9927f85d166e7535280f0a82f8e","ranges":[]}
TextFolding={"checksum":"3e818d80aa0680fb9664cb90786bb0abf72bfd24","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/Einleitung.tex]

View File

@ -48,7 +48,7 @@ Hierbei ist zu beachten, dass der SSH-Server im Container auf Port 2222 antworte
Nach der Verbindung wird automatisch die ROS2-Umgebung eingerichtet.
Diese kann ohne weitere Befehle nach Verbindungsaufbau genutzt werden.
Um die erstellten Pakete zu kompillieren, wurde das Skript \code{build.sh} im \code{workspace}-Verzeichnis erstellt.
Um die erstellten Pakete zu kompilieren, wurde das Skript \code{build.sh} im \code{workspace}-Verzeichnis erstellt.
\begin{minted}[breaklines,frame=single]{bash}
#!/bin/bash
@ -71,7 +71,7 @@ Dadurch befindet sich der Fehlers immer im letzten Paket der Ausgabe, da alle an
\section{Entwicklungsumgebung}
Ein einfacher Texteditor ist für das Schreiben von ROS-Packages ausreichend und bietet bei der Arbeit mit Containern sogar einen großen Vorteil.
Ein Texteditor ist für das Schreiben von ROS-Packages ausreichend und bietet bei der Arbeit mit Containern sogar einen großen Vorteil.
Das Editieren von Dateien ist mit einem Texteditor auch von außerhalb des Containers möglich.
Jedoch besitzt ein Texteditor nur wenige Funktionen einer vollständigen Entwicklungsumgebung, die den Prozess der Softwareentwicklung beschleunigen.
Um diese Funktionen bieten zu können, analysieren Entwicklungsumgebungen den geschriebenen Code.
@ -534,10 +534,12 @@ Der ActorServer ist die Brücke zwischen ROS und dem ActorPlugin.
Er ist als das Programm \code{ros_actor_action_server} im gleichnamigen Paket enthalten.
Dieser weitere Dienst bindet das ActorPlugin an ROS an.
Dafür werden zwei ROS-ActionServer gestartet, die jeweils Bewegungen oder Animationen des simulierten Menschen auslösen können.
Beide ActionServer prüfen bei dem Empfang eines neuen Ziels zuerst, ob bereits eine andere Aktion ausgeführt wird.
Wird bereits eine andere Aktion ausgeführt, kommt es zur Ablehnung weiterer Anfragen.
Im anderen Fall wird die Aufgabe akzeptiert und in das MessageQueue-Format übersetzt und an das ActorPlugin gesandt.
Nach dem Start des ActorServers werden zwei ROS-ActionServer gestartet.
Diese können jeweils zum Abspielen von Animationen oder zum Starten von Bewegungen des simulierten Menschen genutzt werden.
Wenn ein Client eine dieser Aktionen startet, überträgt er die Zieldaten an den entsprechenden ActionServer.
Beide ActionServer prüfen bei dem Empfang eines neuen Ziels als erstes, ob bereits eine andere Aktion ausgeführt wird.
Wird bereits eine andere Aktion ausgeführt, kommt es zur Ablehnung der aktuellen Anfrage.
Im anderen Fall wird die Anfrage akzeptiert und in das MessageQueue-Format übersetzt und an das ActorPlugin gesandt.
Um das Starten mehrerer gleichzeitiger Aktionen zu unterbinden, muss der Empfang einer neuen Anfrage bestätigt werden, bevor weitere Befehle über den ROS-ActionServer entgegen genommen werden können.
Hierzu wird ein Mutex verwendet, der die Auswertung neuer Nachrichten verhindert, so lange der aktuelle Befehl noch nicht durch das Plugin bestätigt wurde.

View File

@ -0,0 +1,13 @@
@startuml
start
:Initialisiere MessageQueue;
if (Graphviz installed?) then (yes)
:process all\ndiagrams;
else (no)
:process only
__sequence__ and __activity__ diagrams;
endif
stop
@enduml

View File

@ -1,32 +1,39 @@
@startuml animation_states
hide empty description
skinparam Shadowing true
[*] --> Standing
state Standing{
[*] --> StandingIdle
StandingIdle --> [*]
StandingIdle --> ExtendArm
ExtendArm --> RetractArm
RetractArm --> StandingIdle
[*] --> [*]
[*] --> standing_extend_arm
standing_extend_arm --> standing_retract_arm
standing_retract_arm --> [*]
StandingIdle --> Walk
Walk --> StandingIdle
[*] --> standing_walk
standing_walk --> [*]
}
Standing -> Standing
state Low{
[*] --> LowIdle
LowIdle --> [*]
LowIdle --> InspectLow
InspectLow --> PutBackLow
InspectLow --> GrabLow
PutBackLow --> LowIdle
GrabLow --> LowIdle
[*] --> [*]
[*] --> low_inspect
low_inspect --> low_put_back
low_inspect --> low_grab
low_put_back --> [*]
low_grab --> [*]
}
Standing -> ToLow
ToLow -> Low
Low --> ToStanding
ToStanding --> Standing
Low -> Low
'Spacer :D
state a #transparent;line:transparent;text:transparent
Low -up[hidden]-> a
Standing -up-> standing_to_low
standing_to_low -down-> Low
Low -up-> low_to_standing
low_to_standing -down-> Standing
@enduml

2175
uml/out/animation_states.eps Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -8,38 +8,34 @@ skinparam ArrowColor #404040
participant "ROS ActionClient" as client
participant ActorServer as server
participant ActorPlugin as plugin
note left of client: Protocol:
/note left of server: ros_action
/note left of plugin: MessageQueue
==Goal==
activate server
activate plugin
[-> client: create ActionClient
==Goal==
[-> client: neuer ActionClient
activate client
client -> server: goal request
server -->> client: goal response
client -> server: Goal-Anfrage
server -->> client: Antwort auf Anfrage
alt goal accepted
server ->> plugin: set state and target
plugin -->> server: state change
alt Anfrage akzeptiert?
server ->> plugin: neuen Status und Ziel setzen
plugin -->> server: Zustandswechsel bei\nnächstem Simulationsschritt
== Feedback==
group opt par [abort of current action]
client->server: abort request
server->plugin: set state to Idle
server-->>client: abort response
group opt par [Abbruch der Aktion]
client->server: Cancel-Anfrage
server->plugin: Status auf Idle setzen
plugin -->> server: Zustandswechsel auf Idle
server-->>client: positive Abbruchantwort
end
loop until action is completed or aborted
plugin -->> server: feedback
server -->> client: feedback callback
loop Bis Aktion vollständig ausgeführt oder abgebrochen ist
plugin -->> server: Feedback
server -->> client: Feedback
end
==Result==
plugin -->> server: state change
server -->> client: result callback
plugin -->> server: Zustandswechsel auf Idle
server -->> client: Result-Antwort
end
destroy client
@enduml

25
uml/subtree_deposit.puml Normal file
View File

@ -0,0 +1,25 @@
@startmindmap
skinparam Linetype ortho
skinparam defaultTextAlignment center
top to bottom direction
* Sequence
** WeightedRandom\nWichtung 1:1:1
*** Laufe zu 1. Regal
*** Laufe zu 2. Regal
*** Laufe zu 3. Regal
** WeightedRandom\nWichtung 1:1
*** Sequence
**** Animation\nstanding_extend_arm
**** Animation\nstanding_retract_arm
*** Sequence
**** Animation\nstanding_to_low
**** Animation\nlow_inspect
**** Animation\nlow_put_back
**** Animation\nlow_to_standing
@endmindmap

0
uml/subtree_work.puml Normal file
View File