Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (4.89 KB)

1
#!/usr/bin/env Rscript
2

    
3
#Argumente einlesen
4
args <- commandArgs(TRUE)
5
if(length(args) == 3){
6
    cat("basisname=\"",args[1],"\"\n",sep="")
7
    cat("diagrammtitle=\"",args[2],"\"\n",sep="")
8
    cat("achsenbeschriftung=\"",args[3],"\"\n",sep="")
9
    basisname <- args[1]
10
    title <- args[2]
11
    xlab <- args[3]
12
    }else
13
    {
14
    cat("Fehler: Bitte Basisname für die Ausgabedateien, Diagrammtitle und Beschriftung     der X-Achse angeben!","\n")
15
    quit()
16
}
17

    
18
## Hilfsfunktionen ##
19

    
20
#Entfernt Einträge aus der übergebenen Liste mit Rotationsungenauigkeiten, die durch
21
# numerische Probleme verfälscht sein dürften.
22
entferneFehlerhafteRotationsungenauigkeiten <- function(liste){
23
    laengeAlt <- nrow(liste)
24

    
25
    #Quadrat der Vektornorm berechnen
26
    liste <- within(liste,Norm <- (DELTA1*DELTA1+DELTA2*DELTA2+DELTA3*DELTA3))
27
    #Einträge entfernen, deren Quadrat der Vektornorm zu groß ist
28
    liste <- liste[liste$Norm < 0.3,]
29

    
30
    #Veränderungen protokollieren
31
    laengeNeu <- nrow(liste)
32
    if(laengeNeu < laengeAlt){
33
       if((laengeAlt-laengeNeu) == 1)
34
           cat("Warnung: Es wurde 1 Eintrag aussortiert!","\n")
35
       else
36
           cat("Warnung: Es wurden",(laengeAlt-laengeNeu),"Einträge aussortiert!","\n")
37
    }
38
    #Temporäre Spalte abschneiden
39
    return(liste[1:6])
40
}
41

    
42
#Einlesen und berechnen von möglichen Datensätzen für die Beschriftung
43
beschriftungEinlesen <- function(basisname){
44
    gruppenname <- "Rotationen"
45
    data <- read.csv(file=paste("~/Dokumente/Studium/Bachelorarbeit/blender-files/Positions/",gruppenname,"/",basisname,".csv",sep=""),header=FALSE) 
46

    
47
    #Geeignete Spalten:
48
    #entfernungKamera: data$V16
49
    #Rotation um die X-Achse: data$V17-(pi/2)
50
    data <- within(data,V17 <- V17-(pi/2))
51
    #Rotation um die Y-Achse: data$V19
52
    #Rotation um die Z-Achse: data$V18 * (-1.0)
53
    data <- within(data,V18 <- V18 * (-1.0))
54

    
55
    #Bitte hier als dritte Zahl die gewünschte Spaltennummer eintragen
56
    return(data[c(1,2,19)])
57
}
58

    
59
#Extrahiert zu einer Bildnummer die Beschriftung aus dem übergebenem Datensatz
60
lookup <- function(bildnummer, beschriftungsdaten){
61
    ret <- beschriftungsdaten[(beschriftungsdaten$V1==bildnummer),3]
62
    return(ret)
63
}
64

    
65
#Erstellt einen Plot der übergebenen Rotationsgenauigkeiten (datensatz)
66
plotte <- function(datensatz,dateiname,title,xBeschriftung,bibliotheksbez){
67
    #Ausschnitt berechnen
68
    ymin = min(datensatz$DELTA1,datensatz$DELTA2,datensatz$DELTA3)
69
    ymax = max(datensatz$DELTA1,datensatz$DELTA2,datensatz$DELTA3,abs(ymin))
70
    # Datei öffnen
71
    svg(filename=paste("rotationsungenauigkeit_",bibliotheksbez,"_",dateiname,".svg",sep=""))
72
    # Plotten
73
    plot(datensatz$X1,datensatz$DELTA3,ylim=c(ymin,ymax),type="l",main=paste(bibliotheksbez,":",title,sep=""),col="green4",xlab=xBeschriftung,ylab="Abweichung (rad)")
74
    lines(datensatz$X1,datensatz$DELTA2,col="blue")
75
    lines(datensatz$X1,datensatz$DELTA1,col="orange")
76
    legend("topleft", border=NA, c("Winkel um X","Winkel um Y","Winkel um Z"), fill=c("orange","blue","green4"))
77
    # Datei schreiben
78
    dev.off()
79
}
80

    
81
## Hauptfunktionen ##
82

    
83
leseUndPlotte <- function(dateiname){
84

    
85
    #Einlesen
86
    bart <- read.csv(file=paste("/home/jonas/Bachelorarbeit/bart2/rot/",dateiname,".csv",sep=""),header=TRUE)
87
    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/rot/",dateiname,".csv",sep=""),header=TRUE)
88
    aruco <- read.csv(file=paste("/home/jonas/Dokumente/Studium/Bachelorarbeit/aruco/aruco-1.2.5/rot/",dateiname,".csv",sep=""),header=TRUE)
89

    
90
    #Bereinigen
91
    cat("Bereinige BART \n")
92
    bart  <- entferneFehlerhafteRotationsungenauigkeiten(bart)
93
    cat("Bereinige ALVAR \n")
94
    alvar <- entferneFehlerhafteRotationsungenauigkeiten(alvar)
95
    cat("Bereinige ARUCO \n")
96
    aruco <- entferneFehlerhafteRotationsungenauigkeiten(aruco)
97

    
98
    cat("Maxima:","\nBART ",max(bart$DELTA1),max(bart$DELTA2),max(bart$DELTA3),"\nALVAR",max(alvar$DELTA1),max(alvar$DELTA2),max(alvar$DELTA3),"\nARUCO",max(aruco$DELTA1),max(aruco$DELTA2),max(aruco$DELTA3),"\n")
99

    
100
    #Achsenbeschriftung
101
    #achse <- beschriftungEinlesen(basisname)
102
    #bart <- within(bart,X1 <- sapply(X1,lookup,achse))
103
    #alvar <- within(alvar,X1 <- sapply(X1,lookup,achse))
104
    #aruco <- within(aruco,X1 <- sapply(X1,lookup,achse))
105

    
106
    #Plotten 
107
    plotte(bart, dateiname, title, xlab, "BART")
108
    plotte(alvar, dateiname, title, xlab, "ALVAR")
109
    plotte(aruco, dateiname, title, xlab, "ARUCO")
110

    
111
    return(0)
112
}
113

    
114
## Hauptpogramm ##
115
leseUndPlotte(paste(basisname,"_1080p48",sep=""))
116
leseUndPlotte(paste(basisname,"_1080p24",sep=""))
117
leseUndPlotte(paste(basisname,"_1080p12",sep=""))
118
leseUndPlotte(paste(basisname,"_720p48",sep=""))
119
leseUndPlotte(paste(basisname,"_720p24",sep=""))
120
leseUndPlotte(paste(basisname,"_720p12",sep=""))
121
leseUndPlotte(paste(basisname,"_360p48",sep=""))
122
leseUndPlotte(paste(basisname,"_360p24",sep=""))
123
leseUndPlotte(paste(basisname,"_360p12",sep=""))
124

    
125

    
126