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= ViMarks=
[view-settings,view=0,item:main.tex] [view-settings,view=0,item:main.tex]
CursorColumn=0 CursorColumn=89
CursorLine=245 CursorLine=117
Dynamic Word Wrap=false Dynamic Word Wrap=false
JumpList= JumpList=
TextFolding={"checksum":"5c50dc53ef39690810318af01f4ba4d3cb14fab0","ranges":[]} TextFolding={"checksum":"5c50dc53ef39690810318af01f4ba4d3cb14fab0","ranges":[]}
ViMarks= ViMarks=
[view-settings,view=0,item:tex/1_Einleitung.tex] [view-settings,view=0,item:tex/1_Einleitung.tex]
CursorColumn=114 CursorColumn=28
CursorLine=46 CursorLine=41
Dynamic Word Wrap=false Dynamic Word Wrap=false
JumpList= JumpList=
TextFolding={"checksum":"72da509f7bb04dfaf40002d46af28410e2acb580","ranges":[]} TextFolding={"checksum":"72da509f7bb04dfaf40002d46af28410e2acb580","ranges":[]}
ViMarks= ViMarks=
[view-settings,view=0,item:tex/2_Konzept.tex] [view-settings,view=0,item:tex/2_Konzept.tex]
CursorColumn=73 CursorColumn=0
CursorLine=8 CursorLine=36
Dynamic Word Wrap=false Dynamic Word Wrap=false
JumpList= JumpList=
TextFolding={"checksum":"21b8ecf4269d0711922f5a58a25d2691a2aebc7f","ranges":[]} TextFolding={"checksum":"21b8ecf4269d0711922f5a58a25d2691a2aebc7f","ranges":[]}
ViMarks= ViMarks=
[view-settings,view=0,item:tex/3_Auswahl.tex] [view-settings,view=0,item:tex/3_Auswahl.tex]
CursorColumn=49 CursorColumn=0
CursorLine=422 CursorLine=147
Dynamic Word Wrap=false Dynamic Word Wrap=false
JumpList= JumpList=
TextFolding={"checksum":"ee9b56159ddf3293cde4120dfc5d90bbd2f0759a","ranges":[]} TextFolding={"checksum":"ee9b56159ddf3293cde4120dfc5d90bbd2f0759a","ranges":[]}
ViMarks= ViMarks=
[view-settings,view=0,item:tex/4_Umsetzung.tex] [view-settings,view=0,item:tex/4_Umsetzung.tex]
CursorColumn=0 CursorColumn=15
CursorLine=43 CursorLine=520
Dynamic Word Wrap=false Dynamic Word Wrap=false
JumpList= JumpList=
TextFolding={"checksum":"4295e3061710c9927f85d166e7535280f0a82f8e","ranges":[]} TextFolding={"checksum":"3e818d80aa0680fb9664cb90786bb0abf72bfd24","ranges":[]}
ViMarks= ViMarks=
[view-settings,view=0,item:tex/Einleitung.tex] [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. Nach der Verbindung wird automatisch die ROS2-Umgebung eingerichtet.
Diese kann ohne weitere Befehle nach Verbindungsaufbau genutzt werden. 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} \begin{minted}[breaklines,frame=single]{bash}
#!/bin/bash #!/bin/bash
@ -71,7 +71,7 @@ Dadurch befindet sich der Fehlers immer im letzten Paket der Ausgabe, da alle an
\section{Entwicklungsumgebung} \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. 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. 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. 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. Er ist als das Programm \code{ros_actor_action_server} im gleichnamigen Paket enthalten.
Dieser weitere Dienst bindet das ActorPlugin an ROS an. 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. Nach dem Start des ActorServers werden zwei ROS-ActionServer gestartet.
Beide ActionServer prüfen bei dem Empfang eines neuen Ziels zuerst, ob bereits eine andere Aktion ausgeführt wird. Diese können jeweils zum Abspielen von Animationen oder zum Starten von Bewegungen des simulierten Menschen genutzt werden.
Wird bereits eine andere Aktion ausgeführt, kommt es zur Ablehnung weiterer Anfragen. Wenn ein Client eine dieser Aktionen startet, überträgt er die Zieldaten an den entsprechenden ActionServer.
Im anderen Fall wird die Aufgabe akzeptiert und in das MessageQueue-Format übersetzt und an das ActorPlugin gesandt. 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. 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. 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 @startuml animation_states
hide empty description hide empty description
skinparam Shadowing true
[*] --> Standing [*] --> Standing
state Standing{ state Standing{
[*] --> StandingIdle [*] --> [*]
StandingIdle --> [*] [*] --> standing_extend_arm
StandingIdle --> ExtendArm standing_extend_arm --> standing_retract_arm
ExtendArm --> RetractArm standing_retract_arm --> [*]
RetractArm --> StandingIdle
StandingIdle --> Walk [*] --> standing_walk
Walk --> StandingIdle standing_walk --> [*]
} }
Standing -> Standing
state Low{ state Low{
[*] --> LowIdle [*] --> [*]
LowIdle --> [*] [*] --> low_inspect
LowIdle --> InspectLow low_inspect --> low_put_back
InspectLow --> PutBackLow low_inspect --> low_grab
InspectLow --> GrabLow low_put_back --> [*]
PutBackLow --> LowIdle low_grab --> [*]
GrabLow --> LowIdle
} }
Standing -> ToLow Low -> Low
ToLow -> Low
Low --> ToStanding 'Spacer :D
ToStanding --> Standing 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 @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 "ROS ActionClient" as client
participant ActorServer as server participant ActorServer as server
participant ActorPlugin as plugin participant ActorPlugin as plugin
note left of client: Protocol:
/note left of server: ros_action
/note left of plugin: MessageQueue
==Goal==
activate server activate server
activate plugin activate plugin
[-> client: create ActionClient ==Goal==
[-> client: neuer ActionClient
activate client activate client
client -> server: goal request client -> server: Goal-Anfrage
server -->> client: goal response server -->> client: Antwort auf Anfrage
alt goal accepted alt Anfrage akzeptiert?
server ->> plugin: set state and target server ->> plugin: neuen Status und Ziel setzen
plugin -->> server: state change plugin -->> server: Zustandswechsel bei\nnächstem Simulationsschritt
== Feedback== == Feedback==
group opt par [abort of current action] group opt par [Abbruch der Aktion]
client->server: abort request client->server: Cancel-Anfrage
server->plugin: set state to Idle server->plugin: Status auf Idle setzen
server-->>client: abort response plugin -->> server: Zustandswechsel auf Idle
server-->>client: positive Abbruchantwort
end end
loop until action is completed or aborted loop Bis Aktion vollständig ausgeführt oder abgebrochen ist
plugin -->> server: feedback plugin -->> server: Feedback
server -->> client: feedback callback server -->> client: Feedback
end end
==Result== ==Result==
plugin -->> server: state change plugin -->> server: Zustandswechsel auf Idle
server -->> client: result callback server -->> client: Result-Antwort
end end
destroy client destroy client
@enduml @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