Changes on tower
This commit is contained in:
parent
330bce82ec
commit
85a23b1352
@ -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=68
|
CursorColumn=89
|
||||||
CursorLine=32
|
CursorLine=117
|
||||||
Dynamic Word Wrap=false
|
Dynamic Word Wrap=false
|
||||||
JumpList=
|
JumpList=
|
||||||
TextFolding={"checksum":"88153af05e2be709e828e4e8a1a9f54b756bcefe","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":"052cc01250adb0f5e3ea2eff211696be3fc560ae","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":"462cd841a4ae5cfb2a0372ff60c2f3b89035b3ea","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":"f762ea508da691b2b7d6eed6f6ab298eb722fa32","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=97
|
CursorLine=520
|
||||||
Dynamic Word Wrap=false
|
Dynamic Word Wrap=false
|
||||||
JumpList=
|
JumpList=
|
||||||
TextFolding={"checksum":"0a72214ff4945abde5acc7ce77e1e946a152971f","ranges":[]}
|
TextFolding={"checksum":"3e818d80aa0680fb9664cb90786bb0abf72bfd24","ranges":[]}
|
||||||
ViMarks=
|
ViMarks=
|
||||||
|
|
||||||
[view-settings,view=0,item:tex/Einleitung.tex]
|
[view-settings,view=0,item:tex/Einleitung.tex]
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
13
uml/actor_server_activity.puml
Normal file
13
uml/actor_server_activity.puml
Normal 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
|
||||||
@ -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
2175
uml/out/animation_states.eps
Normal file
File diff suppressed because it is too large
Load Diff
6268
uml/out/plugin_connectivity.eps
Normal file
6268
uml/out/plugin_connectivity.eps
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
@ -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
25
uml/subtree_deposit.puml
Normal 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
0
uml/subtree_work.puml
Normal file
Loading…
x
Reference in New Issue
Block a user