aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2015-03-27 17:43:02 +0100
committerJakob Odersky <jodersky@gmail.com>2015-03-27 17:43:02 +0100
commitf75765eb4652e0b6e3ba6bd7ecb266b15119f82b (patch)
tree52c7839d30842b4a0e4e00d2d1aa3d4a347bb687
parentc18222560943f958cfb0e8498232f732ca4d6a96 (diff)
downloadmavigator-f75765eb4652e0b6e3ba6bd7ecb266b15119f82b.tar.gz
mavigator-f75765eb4652e0b6e3ba6bd7ecb266b15119f82b.tar.bz2
mavigator-f75765eb4652e0b6e3ba6bd7ecb266b15119f82b.zip
fix units: use SI in instruments)
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala26
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala4
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala2
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala4
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala6
-rw-r--r--vfd-uav/src/main/scala/vfd/uav/MockConnection.scala4
-rw-r--r--vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala6
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