jetzt hoffentlich xD
This commit is contained in:
parent
b4a3b09fb1
commit
ed60415f27
@ -55,15 +55,19 @@ scene.add(pointLight);
|
|||||||
cube.position.x = 0
|
cube.position.x = 0
|
||||||
cube2.position.x = 0
|
cube2.position.x = 0
|
||||||
|
|
||||||
let manCalibration = new THREE.Euler( 0, 0, 0, 'XYZ' )
|
// calibration globals
|
||||||
|
let manCalibration = new THREE.Euler( 0, 0, 0, 'YXZ' )
|
||||||
let calibrationRot = new THREE.Quaternion()
|
let calibrationRot = new THREE.Quaternion()
|
||||||
|
let calPitch = 0
|
||||||
|
let calRoll = 0
|
||||||
|
let calYaw = 0
|
||||||
|
|
||||||
let quaternionOffset = document.getElementById("quaternionOffset")
|
let quaternionOffset = document.getElementById("quaternionOffset")
|
||||||
|
|
||||||
function renderTCP(x, y, z) {
|
function renderTCP(x, y, z) {
|
||||||
let calibration = new THREE.Quaternion().setFromEuler(manCalibration)
|
let calibration = new THREE.Quaternion().setFromEuler(manCalibration)
|
||||||
// let calibration = new THREE.Quaternion().setFromEuler(new THREE.Euler( radFromAngle, 0, 0, 'YXZ' ))
|
// let calibration = new THREE.Quaternion().setFromEuler(new THREE.Euler( radFromAngle, 0, 0, 'YXZ' ))
|
||||||
let eul = new THREE.Euler( x, z, y, 'YXZ' );
|
let eul = new THREE.Euler( x, y, z, 'YXZ' );
|
||||||
|
|
||||||
// let eul = new THREE.Euler( x, z, y, 'ZXY' ); // XYZ XZY YZX YXZ ZXY ZYX
|
// let eul = new THREE.Euler( x, z, y, 'ZXY' ); // XYZ XZY YZX YXZ ZXY ZYX
|
||||||
cube2.quaternion.setFromEuler(eul).multiply(calibrationRot).multiply(calibration)
|
cube2.quaternion.setFromEuler(eul).multiply(calibrationRot).multiply(calibration)
|
||||||
@ -76,9 +80,7 @@ function renderTCP(x, y, z) {
|
|||||||
function renderSerial(x, y, z) {
|
function renderSerial(x, y, z) {
|
||||||
// requestAnimationFrame(renderSerial);
|
// requestAnimationFrame(renderSerial);
|
||||||
|
|
||||||
// let eul = new THREE.Euler( x, y, z, 'YXZ' ); // XYZ XZY YZX YXZ ZXY ZYX
|
let eul = new THREE.Euler( x, y, z, 'YXZ' ); // XYZ XZY YZX YXZ ZXY ZYX
|
||||||
// let eul = new THREE.Euler( x, z, y, 'ZXY' ); // XYZ XZY YZX YXZ ZXY ZYX
|
|
||||||
let eul = new THREE.Euler( x, z, y, 'YXZ' );
|
|
||||||
|
|
||||||
cube.quaternion.setFromEuler(eul)
|
cube.quaternion.setFromEuler(eul)
|
||||||
|
|
||||||
@ -106,10 +108,12 @@ rollRange.oninput = () => {
|
|||||||
|
|
||||||
function delCalibration(evt) {
|
function delCalibration(evt) {
|
||||||
calibrationRot = new THREE.Quaternion()
|
calibrationRot = new THREE.Quaternion()
|
||||||
manCalibration = new THREE.Euler( 0, 0, 0, 'XYZ' )
|
manCalibration = new THREE.Euler( 0, 0, 0, 'YXZ' )
|
||||||
pitchRange.value = 0
|
pitchRange.value = 0
|
||||||
yawRange.value = 0
|
yawRange.value = 0
|
||||||
rollRange.value = 0
|
rollRange.value = 0
|
||||||
|
calRoll = 0
|
||||||
|
calPitch = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
var calState = false;
|
var calState = false;
|
||||||
@ -126,7 +130,7 @@ function manualCalibration(evt) {
|
|||||||
calState = !calState
|
calState = !calState
|
||||||
console.log("mancal OFF")
|
console.log("mancal OFF")
|
||||||
con.style.display = "none"
|
con.style.display = "none"
|
||||||
manCalibration = new THREE.Euler( 0, 0, 0, 'XYZ' )
|
manCalibration = new THREE.Euler( 0, 0, 0, 'YXZ' )
|
||||||
pitchRange.value = 0
|
pitchRange.value = 0
|
||||||
yawRange.value = 0
|
yawRange.value = 0
|
||||||
rollRange.value = 0
|
rollRange.value = 0
|
||||||
@ -137,6 +141,14 @@ function calibrate(evt) {
|
|||||||
let serOrientation = cube.quaternion.clone()
|
let serOrientation = cube.quaternion.clone()
|
||||||
let tcpOrientation = cube2.quaternion.clone().multiply(calibrationRot.clone().invert())
|
let tcpOrientation = cube2.quaternion.clone().multiply(calibrationRot.clone().invert())
|
||||||
let diff = tcpOrientation.invert().multiply(serOrientation)
|
let diff = tcpOrientation.invert().multiply(serOrientation)
|
||||||
|
|
||||||
|
let old = new THREE.Euler().setFromQuaternion( cube2.quaternion, 'YXZ' )
|
||||||
|
let dif = new THREE.Euler().setFromQuaternion( diff )
|
||||||
|
console.log("OLD:","pitch", old.x * 180/Math.PI, "yaw", old.y * 180/Math.PI, "roll", old.z * 180/Math.PI)
|
||||||
|
console.log("DIFF:","pitch", dif.x * 180/Math.PI, "yaw", dif.y * 180/Math.PI, "roll", dif.z * 180/Math.PI)
|
||||||
|
calPitch = dif.x // * 180/Math.PI
|
||||||
|
calYaw = dif.y // * 180/Math.PI
|
||||||
|
calRoll = dif.z // * 180/Math.PI
|
||||||
calibrationRot = diff
|
calibrationRot = diff
|
||||||
};
|
};
|
||||||
document.getElementById("deleteCalibration").onclick = delCalibration
|
document.getElementById("deleteCalibration").onclick = delCalibration
|
||||||
@ -176,9 +188,9 @@ function setIndicatorsTcp(sensordata) {
|
|||||||
|
|
||||||
if (sensordata.Orientation[0] !== 0 && sensordata.Orientation[1] !== 0) {
|
if (sensordata.Orientation[0] !== 0 && sensordata.Orientation[1] !== 0) {
|
||||||
//attitudeTcp.setPitch(sensordata.Orientation[0])
|
//attitudeTcp.setPitch(sensordata.Orientation[0])
|
||||||
attitudeTcp.setPitch(-q.x * 180 / Math.PI * -1)
|
attitudeTcp.setPitch(q.x * 180 / Math.PI)
|
||||||
//attitudeTcp.setRoll(sensordata.Orientation[1])
|
//attitudeTcp.setRoll(sensordata.Orientation[1])
|
||||||
attitudeTcp.setRoll(-q.z * 180 / Math.PI * -1)
|
attitudeTcp.setRoll(q.z * 180 / Math.PI)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Heading from quaternion
|
// Heading from quaternion
|
||||||
@ -197,8 +209,8 @@ function setIndicatorsSer(sensordata) {
|
|||||||
let q = new THREE.Euler().setFromQuaternion( cube.quaternion, 'YXZ' )
|
let q = new THREE.Euler().setFromQuaternion( cube.quaternion, 'YXZ' )
|
||||||
|
|
||||||
if (sensordata.Orientation[0] !== 0 && sensordata.Orientation[1] !== 0) {
|
if (sensordata.Orientation[0] !== 0 && sensordata.Orientation[1] !== 0) {
|
||||||
attitudeSer.setPitch(-sensordata.Orientation[0])
|
attitudeSer.setPitch(sensordata.Orientation[0])
|
||||||
attitudeSer.setRoll(-sensordata.Orientation[1])
|
attitudeSer.setRoll(sensordata.Orientation[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Heading from quaternion
|
// Heading from quaternion
|
||||||
|
|||||||
@ -40,7 +40,7 @@ window.addEventListener("load", function(evt) {
|
|||||||
// if (dat.SOURCE_TCP.HeadDevice !== 0) { heading = dat.SOURCE_TCP.HeadDevice; }
|
// if (dat.SOURCE_TCP.HeadDevice !== 0) { heading = dat.SOURCE_TCP.HeadDevice; }
|
||||||
// if (dat.SOURCE_TCP.HeadMotion !== 0) { heading = dat.SOURCE_TCP.HeadMotion; console.log("head motion") }
|
// if (dat.SOURCE_TCP.HeadMotion !== 0) { heading = dat.SOURCE_TCP.HeadMotion; console.log("head motion") }
|
||||||
|
|
||||||
renderTCP(dat.SOURCE_TCP.Orientation[0]*Math.PI/180,-dat.SOURCE_TCP.Orientation[1]*Math.PI/180,heading*Math.PI/180)
|
renderTCP((dat.SOURCE_TCP.Orientation[0]*Math.PI/180),heading*Math.PI/180,-(dat.SOURCE_TCP.Orientation[1]*Math.PI/180))
|
||||||
}
|
}
|
||||||
if(!(dat.SOURCE_TCP.Position[1] === 0) && !(dat.SOURCE_TCP.Position[0] === 0)){
|
if(!(dat.SOURCE_TCP.Position[1] === 0) && !(dat.SOURCE_TCP.Position[0] === 0)){
|
||||||
document.getElementById("TCPlong").innerHTML = "Smartphone long: " + dat.SOURCE_TCP.Position[1]
|
document.getElementById("TCPlong").innerHTML = "Smartphone long: " + dat.SOURCE_TCP.Position[1]
|
||||||
@ -70,7 +70,7 @@ window.addEventListener("load", function(evt) {
|
|||||||
if(!(dat.SOURCE_SERIAL.Orientation[0] === 0) && /*!(dat.SOURCE_SERIAL.Orientation[1] === 0) &&*/ !(dat.SOURCE_SERIAL.Orientation[2] === 0)){
|
if(!(dat.SOURCE_SERIAL.Orientation[0] === 0) && /*!(dat.SOURCE_SERIAL.Orientation[1] === 0) &&*/ !(dat.SOURCE_SERIAL.Orientation[2] === 0)){
|
||||||
// document.getElementById("gyroscopeSERIAL").style.transform = `rotateX(${dat.SOURCE_SERIAL.Orientation[0]}deg) rotateY(${dat.SOURCE_SERIAL.Orientation[1]}deg) rotateZ(0deg)`
|
// document.getElementById("gyroscopeSERIAL").style.transform = `rotateX(${dat.SOURCE_SERIAL.Orientation[0]}deg) rotateY(${dat.SOURCE_SERIAL.Orientation[1]}deg) rotateZ(0deg)`
|
||||||
// document.getElementById("gyroscopeSERIAL").style.transform = `rotateX(${dat.SOURCE_SERIAL.Orientation[0]}deg) rotateY(${dat.SOURCE_SERIAL.Orientation[1]}deg) rotateZ(${dat.SOURCE_SERIAL.Orientation[2]}deg)`
|
// document.getElementById("gyroscopeSERIAL").style.transform = `rotateX(${dat.SOURCE_SERIAL.Orientation[0]}deg) rotateY(${dat.SOURCE_SERIAL.Orientation[1]}deg) rotateZ(${dat.SOURCE_SERIAL.Orientation[2]}deg)`
|
||||||
renderSerial(dat.SOURCE_SERIAL.Orientation[0]*Math.PI/180,dat.SOURCE_SERIAL.Orientation[1]*Math.PI/180,-dat.SOURCE_SERIAL.Orientation[2]*Math.PI/180)
|
renderSerial(dat.SOURCE_SERIAL.Orientation[0]*Math.PI/180,-dat.SOURCE_SERIAL.Orientation[2]*Math.PI/180,dat.SOURCE_SERIAL.Orientation[1]*Math.PI/180)
|
||||||
}
|
}
|
||||||
if(!(dat.SOURCE_SERIAL.Position[1] === 0) && !(dat.SOURCE_SERIAL.Position[0] === 0)){
|
if(!(dat.SOURCE_SERIAL.Position[1] === 0) && !(dat.SOURCE_SERIAL.Position[0] === 0)){
|
||||||
document.getElementById("SERIALlong").innerHTML = "Ublox long: " + dat.SOURCE_SERIAL.Position[1]
|
document.getElementById("SERIALlong").innerHTML = "Ublox long: " + dat.SOURCE_SERIAL.Position[1]
|
||||||
|
|||||||
@ -182,11 +182,11 @@
|
|||||||
<button id="manualCalibration">Manuelle Kalibrierung</button>
|
<button id="manualCalibration">Manuelle Kalibrierung</button>
|
||||||
<div id="manCalContainer">
|
<div id="manCalContainer">
|
||||||
<p><br>Manuelle Kalibrierung</p>
|
<p><br>Manuelle Kalibrierung</p>
|
||||||
<label>Pitch<input type="range" min="-90" max="90" value="0" class="slider" id="pitchRange"
|
<label>Pitch<input type="range" min="-180" max="180" value="0" class="slider" id="pitchRange"
|
||||||
style="margin: 10px 0px"></label>
|
style="margin: 10px 0px"></label>
|
||||||
<label>Yaw<input type="range" min="-90" max="90" value="0" class="slider" id="yawRange"
|
<label>Yaw<input type="range" min="-180" max="180" value="0" class="slider" id="yawRange"
|
||||||
style="margin: 10px 0px"></label>
|
style="margin: 10px 0px"></label>
|
||||||
<label>Roll<input type="range" min="-90" max="90" value="0" class="slider" id="rollRange"
|
<label>Roll<input type="range" min="-180" max="180" value="0" class="slider" id="rollRange"
|
||||||
style="margin: 10px 0px"></label>
|
style="margin: 10px 0px"></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user