Tank fixes (#892)

* fixing turnration computation

* updated tank computation

* fix rendering glitch

* restore tank computation

* rounding errors
This commit is contained in:
Peli de Halleux
2019-08-30 05:40:51 -07:00
committed by GitHub
parent 0de8a84de2
commit 277c9903bb
5 changed files with 106 additions and 16 deletions

View File

@ -129,7 +129,7 @@ namespace sensors.internal {
let nonActivated = 0;
function detectDevices() {
control.dmesg(`detect devices (${nonActivated} na)`)
//control.dmesg(`detect devices (${nonActivated} na)`)
const conns = analogMM.slice(AnalogOff.InConn, DAL.NUM_INPUTS)
let numChanged = 0;
const uartSensors: SensorInfo[] = [];
@ -198,7 +198,7 @@ namespace sensors.internal {
}
}
}
control.dmesg(`detect devices done`)
//control.dmesg(`detect devices done`)
}
export class Sensor extends control.Component {

View File

@ -339,7 +339,7 @@ namespace motors {
}
protected setOutputType(large: boolean) {
for (let i = 0; i < DAL.NUM_OUTPUTS; ++i) {
for (let i = 0; i < DAL.NUM_OUTPUTS; ++i) {
if (this._port & (1 << i)) {
// (0x07: Large motor, Medium motor = 0x08)
MotorBase.output_types[i] = large ? 0x07 : 0x08;
@ -561,10 +561,12 @@ namespace motors {
speedRight = Math.clamp(-100, 100, speedRight >> 0);
const speed = Math.abs(speedLeft) > Math.abs(speedRight) ? speedLeft : speedRight;
const turnRatio = speedLeft == speed
? (100 - speedRight / speedLeft * 100)
: (speedLeft / speedRight * 100 - 100);
let turnRatio = speedLeft == speed
? speedLeft == 0 ? 0 : (100 - speedRight / speedLeft * 100)
: speedRight == 0 ? 0 : (speedLeft / speedRight * 100 - 100);
turnRatio = Math.floor(turnRatio);
//control.dmesg(`tank ${speedLeft} ${speedRight} => ${turnRatio} ${speed}`)
this.steer(turnRatio, speed, value, unit);
}