testing-framework / R / main2.r @ 1fdee286
History | View | Annotate | Download (5.924 KB)
1 |
#!/usr/bin/env Rscript |
---|---|
2 |
|
3 |
#Laden |
4 |
source("./fit.r") |
5 |
|
6 |
#Argumente einlesen |
7 |
args <- commandArgs(TRUE) |
8 |
if(length(args) == 3){ |
9 |
cat("dateiname=\"",args[1],"\"\n",sep="") |
10 |
cat("vergleichsdatei=\"",args[2],"\"\n",sep="") |
11 |
cat("basisname=\"",args[3],"\"\n",sep="") |
12 |
dateiname <- args[1] |
13 |
vergleichsdatei <- args[2] |
14 |
basisname <- args[3] |
15 |
}else |
16 |
{ |
17 |
cat("Fehler: Bitte zwei Eingabedateinamen und einen Basisnamen für die Ausgabedateien angeben!","\n") |
18 |
quit() |
19 |
} |
20 |
|
21 |
#Hilfsfunktionen |
22 |
minusEins <- function(x){return (x-1)} |
23 |
|
24 |
#Vergleicht zwei Winkel auf dem (mathematischen) Ring der Winkel zwischen 0 und pi |
25 |
#Das Vorzeichen ist positiv, falls alpha in Drehrichtung der Winkel der Koordinatenachse näher an beta liegt, als gegen die Drehrichtung |
26 |
verglWinkel <- function(alpha,beta){ |
27 |
alpha <- abs(alpha) |
28 |
beta <- abs(beta) |
29 |
while(alpha < 0){ |
30 |
alpha <- alpha + (2*pi) |
31 |
} |
32 |
while(beta < 0){ |
33 |
beta <- beta + (2*pi) |
34 |
} |
35 |
alpha <- alpha%%(2*pi) |
36 |
beta <- beta%%(2*pi) |
37 |
ret <- alpha-beta |
38 |
if(abs(ret) > (pi)){ |
39 |
if(alpha < beta){ |
40 |
alpha <- alpha+(2*pi) |
41 |
} |
42 |
else { |
43 |
beta <- beta+(2*pi) |
44 |
} |
45 |
ret <- alpha-beta |
46 |
} |
47 |
return(ret) |
48 |
} |
49 |
|
50 |
#Vergleicht eine Liste von Winkeln |
51 |
verglListen <- function(x,y){ |
52 |
return(mapply(verglWinkel,x,y,USE.NAMES = FALSE)) |
53 |
} |
54 |
|
55 |
#Einlesen der Datensätze |
56 |
source("./share/hauptdatensaetze_laden.r") |
57 |
|
58 |
#Winkel für Blender analytisch berechnen (Matritzen sollten ideale Rotationsmatritzen sein) |
59 |
print("Bestimme Winkel für Blendereingabe") |
60 |
winkelBlender <- sapply(split(blender[,1:11],c(row(blender[,1:11]))),Rot2XYZeulerBLENDER) |
61 |
blenderFrame <- data.frame(t(winkelBlender)) |
62 |
names(blenderFrame)[1]<- "X1" |
63 |
names(blenderFrame)[2]<- "X2" |
64 |
names(blenderFrame)[3]<- "BW1" |
65 |
names(blenderFrame)[4]<- "BW2" |
66 |
names(blenderFrame)[5]<- "BW3" |
67 |
|
68 |
|
69 |
#Zusammenführen von Zeilen, die sich auf die gleichen Bildnummern und Marker beziehen |
70 |
print("Führe Blender und Bart zusammen") |
71 |
bartFrame <- data.frame(bart) |
72 |
names(bartFrame)[1]<- "X1" |
73 |
names(bartFrame)[2]<- "X2" |
74 |
alvarFrame <- data.frame(alvar) |
75 |
names(alvarFrame)[1]<- "X1" |
76 |
names(alvarFrame)[2]<- "X2" |
77 |
arucoFrame <- data.frame(aruco) |
78 |
names(arucoFrame)[1]<- "X1" |
79 |
names(arucoFrame)[2]<- "X2" |
80 |
|
81 |
#Markerids und Bildnummern ggf. korrigieren |
82 |
print("Korrigiere Daten") |
83 |
#bartFrame <- within(bartFrame,X2 <- lapply(X2,minusEins)) |
84 |
|
85 |
for(i in 1:9){ |
86 |
names(bartFrame)[(i+2)]<- paste("R",i,sep="") |
87 |
} |
88 |
|
89 |
#Zusammenführung von Frames |
90 |
tempBart <- merge(bartFrame,blenderFrame,by = c("X1","X2")) |
91 |
tempAlvar <- merge(alvarFrame,blenderFrame,by = c("X1","X2")) |
92 |
tempAruco <- merge(arucoFrame,blenderFrame,by = c("X1","X2")) |
93 |
|
94 |
#Doppelte Zeilen mit identischen Daten entfernen |
95 |
tempBart <- unique(tempBart) |
96 |
tempAlvar <- unique(tempAlvar) |
97 |
tempAruco <- unique(tempAruco) |
98 |
|
99 |
#Berechunung der Winkel der Bibliotheken |
100 |
t1 <- split(tempBart[,1:11],c(row(tempBart[,1:11]))) |
101 |
t2 <- split(tempBart[,grep("BW",names(tempBart))],row(tempBart[,grep("BW",names(tempBart))])) |
102 |
winkelBart <- mapply(Rot2XYZeulerBART,t1,t2) |
103 |
t1 <- split(tempAlvar[,1:11],c(row(tempAlvar[,1:11]))) |
104 |
t2 <- split(tempAlvar[,grep("BW",names(tempAlvar))],row(tempAlvar[,grep("BW",names(tempAlvar))])) |
105 |
winkelAlvar <- mapply(Rot2XYZeulerALVAR,t1,t2) |
106 |
t1 <- split(tempAruco[,1:11],c(row(tempAruco[,1:11]))) |
107 |
t2 <- split(tempAruco[,grep("BW",names(tempAruco))],row(tempAruco[,grep("BW",names(tempAruco))])) |
108 |
winkelAruco <- mapply(Rot2XYZeulerARUCO,t1,t2) |
109 |
|
110 |
#Zusammenführung von Frames (Die try-Blöcke sind notwendig, da die Frames leer sein könnten (s.o) ) |
111 |
print(winkelBart) |
112 |
bartFrame <- data.frame(t(winkelBart)) |
113 |
try(bartFrame <- within(bartFrame,X2 <- unlist(X2))) |
114 |
try(tempBart <- merge(bartFrame,blenderFrame)) |
115 |
|
116 |
alvarFrame <- data.frame(t(winkelAlvar)) |
117 |
try(alvarFrame <- within(alvarFrame,X2 <- unlist(X2))) |
118 |
tempAlvar <- merge(alvarFrame,blenderFrame) |
119 |
arucoFrame <- data.frame(t(winkelAruco)) |
120 |
try(arucoFrame <- within(arucoFrame,X2 <- unlist(X2))) |
121 |
tempAruco <- merge(arucoFrame,blenderFrame) |
122 |
|
123 |
|
124 |
#winkelBart <- sapply(split(bart[,1:11],c(row(bart[,1:11]))),Rot2XYZeulerREF) |
125 |
#winkelBlender <- sapply(split(blender[,1:11],c(row(blender[,1:11]))),Rot2XYZeulerREF) |
126 |
#winkelAlvar <- sapply(split(alvar[,1:11],c(row(alvar[,1:11]))),Rot2XYZeulerREF) |
127 |
#winkelAlvar <- sapply(split(alvar[,1:11],c(row(alvar[,1:11]))),Rot2XYZeulerALVAR) |
128 |
#winkelAruco <- sapply(split(aruco[,1:11],c(row(aruco[,1:11]))),Rot2XYZeulerARUCO) |
129 |
|
130 |
|
131 |
#Differenzen bestimmen (falls die Listen die angegebenen Attribute enthalten) |
132 |
try(tempBart <- within(tempBart, DELTA1 <- verglListen(X3,BW1))) |
133 |
try(tempBart <- within(tempBart, DELTA2 <- verglListen(X4,BW2))) |
134 |
try(tempBart <- within(tempBart, DELTA3 <- verglListen(X5,BW3))) |
135 |
try(tempAlvar <- within(tempAlvar, DELTA1 <- verglListen(X3,BW1))) |
136 |
try(tempAlvar <- within(tempAlvar, DELTA2 <- verglListen(X4,BW2))) |
137 |
try(tempAlvar <- within(tempAlvar, DELTA3 <- verglListen(X5,BW3))) |
138 |
try(tempAruco <- within(tempAruco, DELTA1 <- verglListen(X3,BW1))) |
139 |
try(tempAruco <- within(tempAruco, DELTA2 <- verglListen(X4,BW2))) |
140 |
try(tempAruco <- within(tempAruco, DELTA3 <- verglListen(X5,BW3))) |
141 |
|
142 |
print("BART") |
143 |
tempBart <- within(tempBart,X1 <- unlist(X1)) |
144 |
tempBart <- tempBart[order(tempBart$X1),] |
145 |
try(print(tempBart[c(1,2,9,10,11)])) |
146 |
try(write.csv(tempBart[c(1,2,9,10,11)],file=paste("/home/jonas/Bachelorarbeit/bart2/rot/",basisname,".csv",sep=""))) |
147 |
print("ALVAR") |
148 |
tempAlvar <- within(tempAlvar,X1 <- unlist(X1)) |
149 |
tempAlvar <- tempAlvar[order(tempAlvar$X1),] |
150 |
try(print(tempAlvar[c(1,2,9,10,11)])) |
151 |
try(write.csv(tempAlvar[c(1,2,9,10,11)],file=paste("/home/jonas/Dokumente/Studium/Bachelorarbeit/alvar/2.0.0/alvar-2.0.0-sdk-linux64-gcc44/build/build_gcc44_release/sample/rot/",basisname,".csv",sep=""))) |
152 |
print("ARUCO") |
153 |
tempAruco <- within(tempAruco,X1 <- unlist(X1)) |
154 |
tempAruco <- tempAruco[order(tempAruco$X1),] |
155 |
try(print(tempAruco[c(1,2,9,10,11)])) |
156 |
try(write.csv(tempAruco[c(1,2,9,10,11)],file=paste("/home/jonas/Dokumente/Studium/Bachelorarbeit/aruco/aruco-1.2.5/rot/",basisname,".csv",sep=""))) |
157 |
|
158 |
print("Bitte Ergebnisse auf Plausibilität prüfen!") |
159 |
print("Eine numerische Stabilität der verwendeten Verfahren ist nicht garantiert.") |