Compare commits

..

No commits in common. "37459bc12dcec9a6a8b1655cb01f66272df514ad" and "99008ee9fd97adb192ff1b04688236e108db19f8" have entirely different histories.

10 changed files with 57 additions and 8543 deletions

View File

@ -121,43 +121,43 @@ TextFolding={"checksum":"cf8b2614fde9a70da69bd9296f0dc1ae50c584e2","ranges":[]}
ViMarks=
[view-settings,view=0,item:main.tex]
CursorColumn=89
CursorLine=117
CursorColumn=0
CursorLine=245
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"5c50dc53ef39690810318af01f4ba4d3cb14fab0","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/1_Einleitung.tex]
CursorColumn=28
CursorLine=41
CursorColumn=114
CursorLine=46
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"72da509f7bb04dfaf40002d46af28410e2acb580","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/2_Konzept.tex]
CursorColumn=0
CursorLine=36
CursorColumn=73
CursorLine=8
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"21b8ecf4269d0711922f5a58a25d2691a2aebc7f","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/3_Auswahl.tex]
CursorColumn=0
CursorLine=147
CursorColumn=49
CursorLine=422
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"ee9b56159ddf3293cde4120dfc5d90bbd2f0759a","ranges":[]}
ViMarks=
[view-settings,view=0,item:tex/4_Umsetzung.tex]
CursorColumn=15
CursorLine=520
CursorColumn=0
CursorLine=43
Dynamic Word Wrap=false
JumpList=
TextFolding={"checksum":"3e818d80aa0680fb9664cb90786bb0abf72bfd24","ranges":[]}
TextFolding={"checksum":"4295e3061710c9927f85d166e7535280f0a82f8e","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 kompilieren, wurde das Skript \code{build.sh} im \code{workspace}-Verzeichnis erstellt.
Um die erstellten Pakete zu kompillieren, 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 Texteditor ist für das Schreiben von ROS-Packages ausreichend und bietet bei der Arbeit mit Containern sogar einen großen Vorteil.
Ein einfacher 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,12 +534,10 @@ 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.
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.
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.
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

@ -1,13 +0,0 @@
@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,39 +1,32 @@
@startuml animation_states
hide empty description
skinparam Shadowing true
[*] --> Standing
state Standing{
[*] --> [*]
[*] --> standing_extend_arm
standing_extend_arm --> standing_retract_arm
standing_retract_arm --> [*]
[*] --> StandingIdle
StandingIdle --> [*]
StandingIdle --> ExtendArm
ExtendArm --> RetractArm
RetractArm --> StandingIdle
[*] --> standing_walk
standing_walk --> [*]
StandingIdle --> Walk
Walk --> StandingIdle
}
Standing -> Standing
state Low{
[*] --> [*]
[*] --> low_inspect
low_inspect --> low_put_back
low_inspect --> low_grab
low_put_back --> [*]
low_grab --> [*]
[*] --> LowIdle
LowIdle --> [*]
LowIdle --> InspectLow
InspectLow --> PutBackLow
InspectLow --> GrabLow
PutBackLow --> LowIdle
GrabLow --> LowIdle
}
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
Standing -> ToLow
ToLow -> Low
Low --> ToStanding
ToStanding --> Standing
@enduml

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
uml/plugin_connectivity.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -8,34 +8,38 @@ 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
==Goal==
[-> client: neuer ActionClient
[-> client: create ActionClient
activate client
client -> server: Goal-Anfrage
server -->> client: Antwort auf Anfrage
client -> server: goal request
server -->> client: goal response
alt Anfrage akzeptiert?
server ->> plugin: neuen Status und Ziel setzen
plugin -->> server: Zustandswechsel bei\nnächstem Simulationsschritt
alt goal accepted
server ->> plugin: set state and target
plugin -->> server: state change
== Feedback==
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
group opt par [abort of current action]
client->server: abort request
server->plugin: set state to Idle
server-->>client: abort response
end
loop Bis Aktion vollständig ausgeführt oder abgebrochen ist
plugin -->> server: Feedback
server -->> client: Feedback
loop until action is completed or aborted
plugin -->> server: feedback
server -->> client: feedback callback
end
==Result==
plugin -->> server: Zustandswechsel auf Idle
server -->> client: Result-Antwort
plugin -->> server: state change
server -->> client: result callback
end
destroy client
@enduml

View File

@ -1,25 +0,0 @@
@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

View File