testing-framework / R / transl.r @ 17a68f48
History | View | Annotate | Download (10.498 KB)
1 | 8526ae8c | Jonas Diekmann | #!/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 |