Statistics
| Branch: | Revision:

testing-framework / R / transl.r @ 8526ae8c

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