testing-framework / R / transl.r @ 17a68f48
History | View | Annotate | Download (10.498 KB)
1 |
#!/usr/bin/env Rscript |
---|---|
2 |
|
3 |
#Argumente einlesen |
4 |
args <- commandArgs(TRUE) |
5 |
if(length(args) == 2){ |
6 |
cat("basisname=\"",args[1],"\"\n",sep="") |
7 |
cat("diagrammtitle=\"",args[2],"\"\n",sep="") |
8 |
basisname <- args[1] |
9 |
title <- args[2] |
10 |
}else |
11 |
{ |
12 |
cat("Fehler: Bitte Eingabedateiname, Basisname für die Ausgabedateien und Diagrammtitle angeben!","\n") |
13 |
quit() |
14 |
} |
15 |
|
16 |
### Hilfsfunktionen ### |
17 |
|
18 |
#Einlesen des übergebenen Dateinamens für jede der Bibliotheken |
19 |
einlesen <- function(dateiname){ |
20 |
bart <- read.csv(file=paste("/home/jonas/Bachelorarbeit/bart2/transl/",dateiname,sep=""),header=FALSE) |
21 |
alvar <- read.csv(file=paste("/home/jonas/Dokumente/Studium/Bachelorarbeit/alvar/2.0.0/alvar-2.0.0-sdk-linux64-gcc44/build/build_gcc44_release/sample/transl/",dateiname,sep=""),header=FALSE) |
22 |
aruco <- read.csv(file=paste("/home/jonas/Dokumente/Studium/Bachelorarbeit/aruco/aruco-1.2.5/transl/",dateiname,sep=""),header=FALSE) |
23 |
return(list(bart,alvar,aruco)) |
24 |
} |
25 |
|
26 |
#Einlesen und berechnen von möglichen Datensätzen für die Beschriftung |
27 |
beschriftungEinlesen <- function(basisname){ |
28 |
gruppenname <- "Bewegungen" |
29 |
data <- read.csv(file=paste("~/Dokumente/Studium/Bachelorarbeit/blender-files/Positions/",gruppenname,"/",basisname,".csv",sep=""),header=FALSE) |
30 |
#entfernungKamera: data$V16 |
31 |
#Rotation um die X-Achse: data$V17-(pi/2) |
32 |
#data <- within(data,V17 <- V17-(pi/2)) |
33 |
#Rotation um die Y-Achse: data$V19 |
34 |
#Rotation um die Z-Achse: data$V18 * (-1.0) |
35 |
#data <- within(data,V18 <- V18 * (-1.0)) |
36 |
return(data[c(1,2,12)]) |
37 |
} |
38 |
|
39 |
#Plottet den übergebenen Datensatz einer Auflösung |
40 |
plotten <- function(daten,basisname,korrektur){ |
41 |
bart <- daten[[1]] |
42 |
alvar <- daten[[2]] |
43 |
aruco <- daten[[3]] |
44 |
|
45 |
#Korrektur (überspringe k (= korrektur) Bildnummern) |
46 |
bart <- within(bart,V1<-lapply(V1,function(x,k){return(x*(k+1)-k)},korrektur)) |
47 |
alvar <- within(alvar,V1<-lapply(V1,function(x,k){return(x*(k+1)-k)},korrektur)) |
48 |
aruco <- within(aruco,V1<-lapply(V1,function(x,k){return(x*(k+1)-k)},korrektur)) |
49 |
|
50 |
cat("Maxima:","\nBART ",max(bart$V3),max(bart$V4),max(bart$V5),"\nALVAR",max(alvar$V3),max(alvar$V4),max(alvar$V5),"\nARUCO",max(aruco$V3),max(aruco$V4),max(aruco$V5),"\n") |
51 |
#Plotten BART |
52 |
ymin = min(bart$V3,bart$V4,bart$V5) |
53 |
ymax = 1.2*max(bart$V3,bart$V4,bart$V5,abs(ymin)) |
54 |
svg(filename=paste("translationsungenauigkeit_bart_",basisname,".svg",sep="")) |
55 |
#Feste Grenzen: |
56 |
#plot(bart$V1,bart$V5,ylim=c(0,0.01),xlim=c(0,20),type="l",main=paste("BART:",title),col="green4",xlab="Bildnummer",ylab="Abweichung (m)") |
57 |
# Variable Grenzen: |
58 |
plot(bart$V1,bart$V5,ylim=c(ymin,ymax),type="l",main=paste("BART:",title),col="green4",xlab="Bildnummer",ylab="Abweichung (m)") |
59 |
lines(bart$V1,bart$V4,col="blue") |
60 |
lines(bart$V1,bart$V3,col="orange") |
61 |
legend("topleft", border=NA, c("Position entlang X","Position entlang Y","Position entlang Z"), fill=c("orange","blue","green4")) |
62 |
|
63 |
dev.off() |
64 |
|
65 |
#Plotten ALVAR |
66 |
ymin = min(alvar$V3,alvar$V4,alvar$V5) |
67 |
ymax = 1.2*max(alvar$V3,alvar$V4,alvar$V5,abs(ymin)) |
68 |
svg(filename=paste("translationsungenauigkeit_alvar_",basisname,".svg",sep="")) |
69 |
#Feste Grenzen: |
70 |
#plot(alvar$V1,alvar$V5,ylim=c(0,0.01),xlim=c(0,20),type="l",main=paste("ALVAR:",title),col="green4",xlab="Bildnummer",ylab="Abweichung (m)") |
71 |
# Variable Grenzen: |
72 |
plot(alvar$V1,alvar$V5,ylim=c(ymin,ymax),type="l",main=paste("ALVAR:",title),col="green4",xlab="Bildnummer",ylab="Abweichung (m)") |
73 |
lines(alvar$V1,alvar$V4,col="blue") |
74 |
lines(alvar$V1,alvar$V3,col="orange") |
75 |
legend("topleft", border=NA, c("Position entlang X","Position entlang Y","Position entlang Z"), fill=c("orange","blue","green4")) |
76 |
|
77 |
dev.off() |
78 |
|
79 |
|
80 |
#Plotten ARUCO |
81 |
ymin = min(aruco$V3,aruco$V4,aruco$V5) |
82 |
ymax = 1.2*max(aruco$V3,aruco$V4,aruco$V5,abs(ymin)) |
83 |
svg(filename=paste("translationsungenauigkeit_aruco_",basisname,".svg",sep="")) |
84 |
#Feste Grenzen: |
85 |
#plot(aruco$V1,aruco$V5,ylim=c(0,0.01),xlim=c(0,20),type="l",main=paste("ARUCO:",title),col="green4",xlab="Bildnummer",ylab="Abweichung (m)") |
86 |
# Variable Grenzen: |
87 |
plot(aruco$V1,aruco$V5,ylim=c(ymin,ymax),type="l",main=paste("ARUCO:",title),col="green4",xlab="Bildnummer",ylab="Abweichung (m)") |
88 |
lines(aruco$V1,aruco$V4,col="blue") |
89 |
lines(aruco$V1,aruco$V3,col="orange") |
90 |
legend("topleft", border=NA, c("Position entlang X","Position entlang Y","Position entlang Z"), fill=c("orange","blue","green4")) |
91 |
|
92 |
dev.off() |
93 |
|
94 |
svg(filename=paste("translationsungenauigkeit_x_",basisname,".svg",sep="")) |
95 |
boxpX <- boxplot(bart$V3,alvar$V3,aruco$V3,names=c("BART","ALVAR","ARUCO"),main=paste(title,"entlang X"),xlab="Bibliothek",ylab="Abweichung (m)",range=0) |
96 |
dev.off() |
97 |
|
98 |
svg(filename=paste("translationsungenauigkeit_y_",basisname,".svg",sep="")) |
99 |
boxpY <- boxplot(bart$V4,alvar$V4,aruco$V4,names=c("BART","ALVAR","ARUCO"),main=paste(title,"entlang Y"),xlab="Bibliothek",ylab="Abweichung (m)",range=0) |
100 |
dev.off() |
101 |
|
102 |
svg(filename=paste("translationsungenauigkeit_z_",basisname,".svg",sep="")) |
103 |
boxpZ <- boxplot(bart$V5,alvar$V5,aruco$V5,names=c("BART","ALVAR","ARUCO"),main=paste(title,"entlang Z"),xlab="Bibliothek",ylab="Abweichung (m)",range=0) |
104 |
dev.off() |
105 |
|
106 |
return(list(boxpX,boxpY,boxpZ)) |
107 |
} |
108 |
|
109 |
#Extrahiert zu einer Bildnummer die Beschriftung aus dem übergebenem Datensatz |
110 |
lookup <- function(bildnummer, beschriftungsdaten){ |
111 |
ret <- beschriftungsdaten[(beschriftungsdaten$V1==bildnummer),3] |
112 |
return(ret) |
113 |
} |
114 |
|
115 |
#Plottet den übergebenen Datensatz einer Auflösung wobei die Beschriftung aus dem zweiten übergebenem Datensatz gewonnen wird. |
116 |
plotten2 <- function(daten,basisname,achsendaten,korrektur){ |
117 |
bart <- daten[[1]] |
118 |
alvar <- daten[[2]] |
119 |
aruco <- daten[[3]] |
120 |
|
121 |
#Beschriftung der X-Achse |
122 |
xlab="X-Position" |
123 |
#Bildnummer der unteren Grenze |
124 |
xmin=1 |
125 |
#Bildnummer der oberen Grenze |
126 |
xmax=300 |
127 |
ymax2=1 |
128 |
#Prefix |
129 |
prefix="" |
130 |
|
131 |
if(bart[1,1]==0){ |
132 |
bart <- within(bart,V1<-lapply(V1,function(x){return(x+1)})) |
133 |
} |
134 |
#Korrektur (überspringe k (= korrektur) Bildnummern) |
135 |
bart <- within(bart,V1<-lapply(V1,function(x,k){return(x*(k+1)-k)},korrektur)) |
136 |
alvar <- within(alvar,V1<-lapply(V1,function(x,k){return(x*(k+1)-k)},korrektur)) |
137 |
aruco <- within(aruco,V1<-lapply(V1,function(x,k){return(x*(k+1)-k)},korrektur)) |
138 |
|
139 |
bart <- within(bart,V1<-lapply(V1,lookup,beschriftungsdaten=achsendaten)) |
140 |
alvar <- within(alvar,V1<-lapply(V1,lookup,beschriftungsdaten=achsendaten)) |
141 |
aruco <- within(aruco,V1<-lapply(V1,lookup,beschriftungsdaten=achsendaten)) |
142 |
|
143 |
cat("Maxima:","\nBART ",max(bart$V3),max(bart$V4),max(bart$V5),"\nALVAR",max(alvar$V3),max(alvar$V4),max(alvar$V5),"\nARUCO",max(aruco$V3),max(aruco$V4),max(aruco$V5),"\n") |
144 |
#Plotten BART |
145 |
ymin = min(bart$V3,bart$V4,bart$V5) |
146 |
ymax = 1.2*max(bart$V3,bart$V4,bart$V5,abs(ymin)) |
147 |
svg(filename=paste("translationsungenauigkeit_bart_",basisname,"",prefix,".svg",sep="")) |
148 |
#Feste Grenzen: |
149 |
#plot(bart$V1,bart$V5,ylim=c(0,ymax2),xlim=c(lookup(xmin,beschriftungsdaten=achsendaten),lookup(xmax,beschriftungsdaten=achsendaten)),type="l",main=paste("BART:",title),col="green4",xlab=xlab,ylab="Abweichung (m)") |
150 |
# Variable Grenzen: |
151 |
plot(bart$V1,bart$V5,ylim=c(ymin,ymax),type="l",main=paste("BART:",title),col="green4",xlab=xlab,ylab="Abweichung (m)") |
152 |
lines(bart$V1,bart$V4,col="blue") |
153 |
lines(bart$V1,bart$V3,col="orange") |
154 |
legend("topleft", border=NA, c("Position entlang X","Position entlang Y","Position entlang Z"), fill=c("orange","blue","green4")) |
155 |
|
156 |
dev.off() |
157 |
|
158 |
#Plotten ALVAR |
159 |
ymin = min(alvar$V3,alvar$V4,alvar$V5) |
160 |
ymax = 1.2*max(alvar$V3,alvar$V4,alvar$V5,abs(ymin)) |
161 |
svg(filename=paste("translationsungenauigkeit_alvar_",basisname,"",prefix,".svg",sep="")) |
162 |
#Feste Grenzen: |
163 |
#plot(alvar$V1,alvar$V5,ylim=c(0,ymax2),xlim=c(lookup(xmin,beschriftungsdaten=achsendaten),lookup(xmax,beschriftungsdaten=achsendaten)),type="l",main=paste("ALVAR:",title),col="green4",xlab=xlab,ylab="Abweichung (m)") |
164 |
# Variable Grenzen: |
165 |
plot(alvar$V1,alvar$V5,ylim=c(ymin,ymax),type="l",main=paste("ALVAR:",title),col="green4",xlab=xlab,ylab="Abweichung (m)") |
166 |
lines(alvar$V1,alvar$V4,col="blue") |
167 |
lines(alvar$V1,alvar$V3,col="orange") |
168 |
legend("topleft", border=NA, c("Position entlang X","Position entlang Y","Position entlang Z"), fill=c("orange","blue","green4")) |
169 |
|
170 |
dev.off() |
171 |
|
172 |
|
173 |
#Plotten ARUCO |
174 |
ymin = min(aruco$V3,aruco$V4,aruco$V5) |
175 |
ymax = 1.2*max(aruco$V3,aruco$V4,aruco$V5,abs(ymin)) |
176 |
svg(filename=paste("translationsungenauigkeit_aruco_",basisname,"",prefix,".svg",sep="")) |
177 |
#Feste Grenzen: |
178 |
#plot(aruco$V1,aruco$V5,ylim=c(0,ymax2),xlim=c(lookup(xmin,beschriftungsdaten=achsendaten),lookup(xmax,beschriftungsdaten=achsendaten)),type="l",main=paste("ARUCO:",title),col="green4",xlab=xlab,ylab="Abweichung (m)") |
179 |
# Variable Grenzen: |
180 |
plot(aruco$V1,aruco$V5,ylim=c(ymin,ymax),type="l",main=paste("ARUCO:",title),col="green4",xlab=xlab,ylab="Abweichung (m)") |
181 |
lines(aruco$V1,aruco$V4,col="blue") |
182 |
lines(aruco$V1,aruco$V3,col="orange") |
183 |
legend("topleft", border=NA, c("Position entlang X","Position entlang Y","Position entlang Z"), fill=c("orange","blue","green4")) |
184 |
|
185 |
dev.off() |
186 |
|
187 |
svg(filename=paste("translationsungenauigkeit_x_",basisname,".svg",sep="")) |
188 |
boxpX <- boxplot(bart$V3,alvar$V3,aruco$V3,names=c("BART","ALVAR","ARUCO"),main=paste(title,"entlang X"),xlab="Bibliothek",ylab="Abweichung (m)",range=0) |
189 |
dev.off() |
190 |
|
191 |
svg(filename=paste("translationsungenauigkeit_y_",basisname,".svg",sep="")) |
192 |
boxpY <- boxplot(bart$V4,alvar$V4,aruco$V4,names=c("BART","ALVAR","ARUCO"),main=paste(title,"entlang Y"),xlab="Bibliothek",ylab="Abweichung (m)",range=0) |
193 |
dev.off() |
194 |
|
195 |
svg(filename=paste("translationsungenauigkeit_z_",basisname,".svg",sep="")) |
196 |
boxpZ <- boxplot(bart$V5,alvar$V5,aruco$V5,names=c("BART","ALVAR","ARUCO"),main=paste(title,"entlang Z"),xlab="Bibliothek",ylab="Abweichung (m)",range=0) |
197 |
dev.off() |
198 |
|
199 |
return(list(boxpX,boxpY,boxpZ)) |
200 |
} |
201 |
|
202 |
### Hauptprogramm ### |
203 |
|
204 |
#Einlesen |
205 |
daten360 <- einlesen(paste(basisname, "_360p48_transl.csv",sep="")) |
206 |
daten720 <- einlesen(paste(basisname, "_720p48_transl.csv",sep="")) |
207 |
daten1080 <- einlesen(paste(basisname,"_1080p48_transl.csv",sep="")) |
208 |
|
209 |
#Plotten |
210 |
#boxp360 <- plotten(daten360,paste(basisname,"_360p48",sep=""),0) |
211 |
#boxp720 <- plotten(daten720,paste(basisname,"_720p48",sep=""),0) |
212 |
#boxp1080 <- plotten(daten1080,paste(basisname,"_1080p48",sep=""),0) |
213 |
|
214 |
|
215 |
#Alternative: Plotten mit Achsendaten |
216 |
achse <- beschriftungEinlesen(basisname) |
217 |
boxp360 <- plotten2(daten360,paste(basisname,"_360p48",sep=""),achse,0) |
218 |
boxp720 <- plotten2(daten720,paste(basisname,"_720p48",sep=""),achse,0) |
219 |
boxp1080 <- plotten2(daten1080,paste(basisname,"_1080p48",sep=""),achse,0) |
220 |
|
221 |
#Unterschiede zwischen den Auflösungen ausgeben |
222 |
cat("Differenzen zwischen 1080p und 720p: \n") |
223 |
cat("X\n") |
224 |
print(boxp1080[[1]]$stats-boxp720[[1]]$stats) |
225 |
cat("Y\n") |
226 |
print(boxp1080[[2]]$stats-boxp720[[2]]$stats) |
227 |
cat("Z\n") |
228 |
print(boxp1080[[3]]$stats-boxp720[[3]]$stats) |
229 |
cat("Differenzen zwischen 720p und 360p: \n") |
230 |
cat("X\n") |
231 |
print(boxp720[[1]]$stats-boxp360[[1]]$stats) |
232 |
cat("Y\n") |
233 |
print(boxp720[[2]]$stats-boxp360[[2]]$stats) |
234 |
cat("Z\n") |
235 |
print(boxp720[[3]]$stats-boxp360[[3]]$stats) |
236 |
|
237 |
|
238 |
|