Compare commits
No commits in common. "37459bc12dcec9a6a8b1655cb01f66272df514ad" and "99008ee9fd97adb192ff1b04688236e108db19f8" have entirely different histories.
37459bc12d
...
99008ee9fd
@ -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]
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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
|
|
||||||
@ -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
BIN
uml/plugin_connectivity.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
@ -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
|
||||||
@ -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
|
|
||||||
Loading…
x
Reference in New Issue
Block a user