From 1254261a8b78909aa4a0b416de2629898fab5b59 Mon Sep 17 00:00:00 2001 From: Christoph Hertzberg Date: Mon, 24 Jul 2017 20:42:12 +0200 Subject: [PATCH] Proof-of-concept KSP-Style NavBall visualization for orientation --- .../cplusplus_extensions/orientation.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/vizkit/cplusplus_extensions/orientation.rb b/lib/vizkit/cplusplus_extensions/orientation.rb index a5d004a..a256c2a 100644 --- a/lib/vizkit/cplusplus_extensions/orientation.rb +++ b/lib/vizkit/cplusplus_extensions/orientation.rb @@ -20,3 +20,22 @@ def update(sample,port_name) Vizkit::UiLoader.register_default_widget_for("OrientationView",'/base/samples/RigidBodyState',:update) Vizkit::UiLoader.register_widget_for("OrientationView",'/base/Orientation',:update) Vizkit::UiLoader.register_widget_for("OrientationView",'/base/Pose',:update) + +Vizkit::UiLoader.extend_cplusplus_widget_class "NavBallView" do + def update(sample,port_name) + if sample.respond_to?(:orientation) # pose and rigid body state + sample = sample.orientation + end + + if !sample.kind_of?(Eigen::Quaternion) + # The base typelib plugin is not loaded, do the convertions by ourselves + sample = Eigen::Quaternion.new(sample.re, *sample.im.to_a) + end + + setQuaternion(sample.to_qt) + end +end + +Vizkit::UiLoader.register_default_widget_for("NavBallView",'/base/samples/RigidBodyState',:update) +Vizkit::UiLoader.register_widget_for("NavBallView",'/base/Orientation',:update) +Vizkit::UiLoader.register_widget_for("NavBallView",'/base/Pose',:update)