diff options
author | Jakob Odersky <jodersky@gmail.com> | 2015-03-27 17:43:02 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2015-03-27 17:43:02 +0100 |
commit | f75765eb4652e0b6e3ba6bd7ecb266b15119f82b (patch) | |
tree | 52c7839d30842b4a0e4e00d2d1aa3d4a347bb687 | |
parent | c18222560943f958cfb0e8498232f732ca4d6a96 (diff) | |
download | mavigator-f75765eb4652e0b6e3ba6bd7ecb266b15119f82b.tar.gz mavigator-f75765eb4652e0b6e3ba6bd7ecb266b15119f82b.tar.bz2 mavigator-f75765eb4652e0b6e3ba6bd7ecb266b15119f82b.zip |
fix units: use SI in instruments)
7 files changed, 22 insertions, 30 deletions
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala index f17e91a..6465f26 100644 --- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala +++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala @@ -1,9 +1,5 @@ package vfd.dashboard.ui -import org.mavlink.messages.Attitude -import org.mavlink.messages.Motor -import org.mavlink.messages.Power - import rx.Obs import scalatags.JsDom.all._ import vfd.dashboard.Environment @@ -14,6 +10,8 @@ import vfd.dashboard.ui.instruments.Bar import vfd.dashboard.ui.instruments.Compass import vfd.dashboard.ui.instruments.Generic import vfd.dashboard.ui.instruments.Horizon +import org.mavlink.messages.Heartbeat +import org.mavlink.messages.Attitude class Layout(socket: MavlinkSocket)(implicit env: Environment) { @@ -133,21 +131,15 @@ class Layout(socket: MavlinkSocket)(implicit env: Environment) { //message router Obs(socket.message, skipInitial = true) { socket.message() match { + + case att: Attitude => + horizon.value() = (att.pitch, att.roll) + compass.value() = att.yaw - case Motor(m0, m1, m2, m3) => - motor0.value() = m0 - motor1.value() = m1 - motor2.value() = m2 - motor3.value() = m3 - powerDistribution.value() = (m0, m1, m2, m3) - - case Power(mV) => - batteryLevel.value() = (100 * (mV - 9600) / 12600) + //TODO route other messages - case Attitude(roll, pitch, yaw) => - horizon.value() = (pitch, roll) - compass.value() = (yaw) - + case _ => () + } } diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala index 9ff3bb5..732ab43 100644 --- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala +++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala @@ -12,8 +12,8 @@ class Altimeter(implicit env: Environment) extends SvgInstrument[Double] { lazy val hand = part("hand") lazy val moveable = Seq(hand) - // 36deg === 1m + // 1m === 36deg = 2Pi / 10 ~= 0.62832 protected def update(altitude: Double) = { - rotate(hand, (altitude * 36).toInt) + rotate(hand, (altitude * 0.62832).toInt) } }
\ No newline at end of file diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala index e2d79e4..341c866 100644 --- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala +++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala @@ -13,6 +13,6 @@ class Compass(implicit env: Environment) extends SvgInstrument[Double] { lazy val moveable = Seq(plate) protected def update(heading: Double) = { - rotate(plate, heading.toInt) + rotate(plate, heading) } }
\ No newline at end of file diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala index 2484561..0e95843 100644 --- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala +++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala @@ -14,7 +14,7 @@ class Horizon(implicit env: Environment) extends SvgInstrument[(Double, Double)] lazy val moveable = Seq(pitch, roll) protected def update(pitchRoll: (Double, Double)) = { - translate(pitch, 0, pitchRoll._1.toInt) - rotate(roll, pitchRoll._2.toInt) + translate(pitch, 0, (pitchRoll._1 * 180 / math.Pi).toInt) // 1deg === 1px + rotate(roll, pitchRoll._2) } } diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala index c639cec..fe6c58a 100644 --- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala +++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala @@ -23,7 +23,7 @@ trait SvgInstrument[A] extends Instrument[A] { /** Called when element has been loaded. */ protected def load(event: dom.Event): Unit = { for (part <- moveable) { - part.style.transition = "transform 250ms ease-out" + part.style.transition = "transform 50ms ease-out" } ready() } @@ -47,8 +47,8 @@ object SvgInstrument { } /** Applies rotation styling to an element. */ - def rotate(elem: html.Element, deg: Int): Unit = { - elem.style.transform = "rotateZ(" + deg + "deg)"; + def rotate(elem: html.Element, rad: Double): Unit = { + elem.style.transform = "rotateZ(" + rad + "rad)"; } }
\ No newline at end of file diff --git a/vfd-uav/src/main/scala/vfd/uav/MockConnection.scala b/vfd-uav/src/main/scala/vfd/uav/MockConnection.scala index 1051607..d05d824 100644 --- a/vfd-uav/src/main/scala/vfd/uav/MockConnection.scala +++ b/vfd-uav/src/main/scala/vfd/uav/MockConnection.scala @@ -39,8 +39,8 @@ class MockConnection(localSystemId: Byte, localComponentId: Byte, remoteSystemId system.scheduler.schedule(0.01.seconds, 0.01.seconds){plan.tick(0.01)} //send messages - scheduleMessage(0.1.seconds)(plan.position) - scheduleMessage(0.1.seconds)(plan.attitude) + scheduleMessage(0.05.seconds)(plan.position) + scheduleMessage(0.05.seconds)(plan.attitude) scheduleMessage(2.seconds)(plan.heartbeat) //simulate noisy line diff --git a/vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala b/vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala index e2c5708..df05d98 100644 --- a/vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala +++ b/vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala @@ -49,9 +49,9 @@ class RandomFlightPlan { def attitude = Attitude( (time * 1000).toInt, - (time / 5 * math.Pi * 2).toFloat, - (time / 4 * math.Pi * 2).toFloat, - (time / 3 * math.Pi * 2).toFloat, + (2 * math.Pi * time / 6).toFloat, + (math.sin(2 * math.Pi * time / 5) * math.Pi / 6).toFloat, + (2 * math.Pi * time / 4).toFloat, 0, 0, 0 |