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= ViMarks=
[view-settings,view=0,item:main.tex] [view-settings,view=0,item:main.tex]
CursorColumn=89 CursorColumn=0
CursorLine=117 CursorLine=245
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=28 CursorColumn=114
CursorLine=41 CursorLine=46
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=0 CursorColumn=73
CursorLine=36 CursorLine=8
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=0 CursorColumn=49
CursorLine=147 CursorLine=422
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=15 CursorColumn=0
CursorLine=520 CursorLine=43
Dynamic Word Wrap=false Dynamic Word Wrap=false
JumpList= JumpList=
TextFolding={"checksum":"3e818d80aa0680fb9664cb90786bb0abf72bfd24","ranges":[]} TextFolding={"checksum":"4295e3061710c9927f85d166e7535280f0a82f8e","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 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} \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 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. 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,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. 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.
Nach dem Start des ActorServers werden zwei ROS-ActionServer gestartet. Dafür werden zwei ROS-ActionServer gestartet, die jeweils Bewegungen oder Animationen des simulierten Menschen auslösen können.
Diese können jeweils zum Abspielen von Animationen oder zum Starten von Bewegungen des simulierten Menschen genutzt werden. Beide ActionServer prüfen bei dem Empfang eines neuen Ziels zuerst, ob bereits eine andere Aktion ausgeführt wird.
Wenn ein Client eine dieser Aktionen startet, überträgt er die Zieldaten an den entsprechenden ActionServer. Wird bereits eine andere Aktion ausgeführt, kommt es zur Ablehnung weiterer Anfragen.
Beide ActionServer prüfen bei dem Empfang eines neuen Ziels als erstes, ob bereits eine andere Aktion ausgeführt wird. Im anderen Fall wird die Aufgabe akzeptiert und in das MessageQueue-Format übersetzt und an das ActorPlugin gesandt.
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

@ -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 @startuml animation_states
hide empty description hide empty description
skinparam Shadowing true
[*] --> Standing [*] --> Standing
state Standing{ state Standing{
[*] --> [*] [*] --> StandingIdle
[*] --> standing_extend_arm StandingIdle --> [*]
standing_extend_arm --> standing_retract_arm StandingIdle --> ExtendArm
standing_retract_arm --> [*] ExtendArm --> RetractArm
RetractArm --> StandingIdle
[*] --> standing_walk StandingIdle --> Walk
standing_walk --> [*] Walk --> StandingIdle
} }
Standing -> Standing
state Low{ state Low{
[*] --> [*] [*] --> LowIdle
[*] --> low_inspect LowIdle --> [*]
low_inspect --> low_put_back LowIdle --> InspectLow
low_inspect --> low_grab InspectLow --> PutBackLow
low_put_back --> [*] InspectLow --> GrabLow
low_grab --> [*] PutBackLow --> LowIdle
GrabLow --> LowIdle
} }
Low -> Low Standing -> ToLow
ToLow -> Low
'Spacer :D Low --> ToStanding
state a #transparent;line:transparent;text:transparent ToStanding --> Standing
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

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