diff --git a/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.cpp b/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.cpp
index 7a936d5ee0da9e305ada2b3b7209d266446a6588..e435a0a61169edb0a495f877e9f57256318e915f 100644
--- a/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.cpp
+++ b/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.cpp
@@ -1,24 +1,5 @@
 #include "OrientationVisualizer.h"
 
-#include <Qt3DRender/qpointlight.h>
-
-#include <QSizePolicy>
-#include <Qt3DCore/QAspectEngine>
-#include <Qt3DCore/QEntity>
-#include <Qt3DExtras/QConeMesh>
-#include <Qt3DExtras/QFirstPersonCameraController>
-#include <Qt3DExtras/QForwardRenderer>
-#include <Qt3DExtras/QOrbitCameraController>
-#include <Qt3DExtras/QPhongMaterial>
-#include <Qt3DExtras/QSphereMesh>
-#include <Qt3DExtras/QTorusMesh>
-#include <Qt3DExtras/Qt3DWindow>
-#include <Qt3DInput/QInputAspect>
-#include <Qt3DRender/QCamera>
-#include <Qt3DRender/QCameraLens>
-#include <Qt3DRender/QGeometryRenderer>
-#include <Qt3DRender/QRenderAspect>
-
 OrientationVisualizer::OrientationVisualizer(QWidget *parent)
     : DefaultModule(parent)
 {
@@ -29,7 +10,7 @@ OrientationVisualizer::OrientationVisualizer(QWidget *parent)
     updateOrientation(0, 0, 0, 1);
 
     getCore()->getMessageBroker()->subscribe(
-        Filter::fromString("Mav/ROCKET_FLIGHT_TM"), this,
+        Filter::fromString("Mav/PAYLOAD_FLIGHT_TM"), this,
         [this](const Message &message, const Filter &filter)
         {
             updateOrientation(message.getField("nas_qx").getDouble(),
@@ -49,12 +30,32 @@ XmlObject OrientationVisualizer::toXmlObject()
 
 void OrientationVisualizer::fromXmlObject(const XmlObject &xmlObject) {}
 
+void OrientationVisualizer::updateOrientation(double qx, double qy, double qz,
+                                              double qw)
+{
+    float yaw, pitch, roll;
+
+    QQuaternion quaternion(qw, qx, qy, qz);
+    quaternion.getEulerAngles(&pitch, &yaw, &roll);
+
+    yawLabel->setText(QString::asprintf("Y: %.2lf", yaw));
+    pitchLabel->setText(QString::asprintf("P: %.2lf", pitch));
+    rollLabel->setText(QString::asprintf("R: %.2lf", roll));
+
+    QQuaternion displayQuaternion = QQuaternion::fromRotationMatrix(
+        quaternion.toRotationMatrix() * sceneRotation.toRotationMatrix());
+
+    rocketTransform->setRotation(displayQuaternion);
+}
+
 void OrientationVisualizer::setupUi()
 {
     Qt3DExtras::Qt3DWindow *view = new Qt3DExtras::Qt3DWindow;
     QWidget *windowContainer     = QWidget::createWindowContainer(view);
 
-    Qt3DCore::QEntity *rootEntity   = new Qt3DCore::QEntity;
+    Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity;
+
+    // Cone
     Qt3DCore::QEntity *rocketEntity = new Qt3DCore::QEntity(rootEntity);
 
     Qt3DExtras::QConeMesh *rocketMesh = new Qt3DExtras::QConeMesh();
@@ -74,11 +75,17 @@ void OrientationVisualizer::setupUi()
     rocketEntity->addComponent(rocketMaterial);
     rocketEntity->addComponent(rocketTransform);
 
+    // Axes lines
+    drawLine({0, 0, 0}, {100, 0, 0}, QColorConstants::Red,
+             rootEntity);                                                  // X
+    drawLine({0, 0, 0}, {0, 100, 0}, QColorConstants::Green, rootEntity);  // Y
+    drawLine({0, 0, 0}, {0, 0, 100}, QColorConstants::Blue, rootEntity);   // Z
+
     // Spheres
 
-    Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh;
-    sphereMesh->setRadius(3);
-    sphereMesh->setGenerateTangents(true);
+    // Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh;
+    // sphereMesh->setRadius(3);
+    // sphereMesh->setGenerateTangents(true);
 
     // Qt3DCore::QEntity *sphereEntity1 = new Qt3DCore::QEntity(rootEntity);
     // Qt3DCore::QTransform *sphereTransform1 = new Qt3DCore::QTransform;
@@ -114,9 +121,9 @@ void OrientationVisualizer::setupUi()
     Qt3DRender::QCamera *camera = view->camera();
     camera->lens()->setPerspectiveProjection(45.0f, 16.0f / 9.0f, 0.1f,
                                              1000.0f);
-    camera->setPosition(QVector3D(30.0f, 30.0f, 30.0f));
+    camera->setPosition(QVector3D(-30, -30, -30));
     camera->setViewCenter(QVector3D(0, 0, 0));
-    camera->setUpVector(QVector3D(-1, -1, 1));
+    camera->setUpVector(QVector3D(0, 0, -60));
 
     // Light
     Qt3DCore::QEntity *lightEntity = new Qt3DCore::QEntity(rootEntity);
@@ -130,10 +137,10 @@ void OrientationVisualizer::setupUi()
     lightEntity->addComponent(lightTransform);
 
     // For camera controls
-    // Qt3DExtras::QFirstPersonCameraController *camController = new
-    // Qt3DExtras::QFirstPersonCameraController(rootEntity);
-    // camController->setLinearSpeed( 50.0f );
-    // camController->setLookSpeed( 180.0f );
+    // Qt3DExtras::QFirstPersonCameraController *camController =
+    //     new Qt3DExtras::QFirstPersonCameraController(rootEntity);
+    // camController->setLinearSpeed(50.0f);
+    // camController->setLookSpeed(180.0f);
     // camController->setCamera(camera);
 
     view->setRootEntity(rootEntity);
@@ -164,21 +171,72 @@ void OrientationVisualizer::setupUi()
     container->setStretch(1, 0);
 }
 
-void OrientationVisualizer::updateOrientation(double qx, double qy, double qz,
-                                              double qw)
+void OrientationVisualizer::drawLine(const QVector3D &start,
+                                     const QVector3D &end, const QColor &color,
+                                     Qt3DCore::QEntity *rootEntity)
 {
-    float yaw, pitch, roll;
-
-    QQuaternion quaternion(QVector4D(qx, qy, qz, qw));
-    quaternion.getEulerAngles(&pitch, &yaw, &roll);
-
-    yawLabel->setText(QString::asprintf("Y: %.2lf", yaw));
-    pitchLabel->setText(QString::asprintf("P: %.2lf", pitch));
-    rollLabel->setText(QString::asprintf("R: %.2lf", roll));
-
-    QQuaternion displayQuaternion = QQuaternion::fromRotationMatrix(
-        quaternion.toRotationMatrix() *
-        QQuaternion::fromEulerAngles(90, 0, 0).toRotationMatrix());
-
-    rocketTransform->setRotation(displayQuaternion);
-}
+    auto *geometry = new Qt3DRender::QGeometry(rootEntity);
+
+    // Position vertices (start and end)
+    QByteArray bufferBytes;
+    bufferBytes.resize(
+        3 * 2 *
+        sizeof(float));  // start.x, start.y, start.end + end.x, end.y, end.z
+    float *positions = reinterpret_cast<float *>(bufferBytes.data());
+    *positions++     = start.x();
+    *positions++     = start.y();
+    *positions++     = start.z();
+    *positions++     = end.x();
+    *positions++     = end.y();
+    *positions++     = end.z();
+
+    auto *buf = new Qt3DRender::QBuffer(geometry);
+    buf->setData(bufferBytes);
+
+    auto *positionAttribute = new Qt3DRender::QAttribute(geometry);
+    positionAttribute->setName(
+        Qt3DRender::QAttribute::defaultPositionAttributeName());
+    positionAttribute->setVertexBaseType(Qt3DRender::QAttribute::Float);
+    positionAttribute->setVertexSize(3);
+    positionAttribute->setAttributeType(
+        Qt3DRender::QAttribute::VertexAttribute);
+    positionAttribute->setBuffer(buf);
+    positionAttribute->setByteStride(3 * sizeof(float));
+    positionAttribute->setCount(2);
+    geometry->addAttribute(
+        positionAttribute);  // We add the vertices in the geometry
+
+    // Connectivity between vertices
+    QByteArray indexBytes;
+    indexBytes.resize(2 * sizeof(unsigned int));  // start to end
+    unsigned int *indices = reinterpret_cast<unsigned int *>(indexBytes.data());
+    *indices++            = 0;
+    *indices++            = 1;
+
+    auto *indexBuffer = new Qt3DRender::QBuffer(geometry);
+    indexBuffer->setData(indexBytes);
+
+    auto *indexAttribute = new Qt3DRender::QAttribute(geometry);
+    indexAttribute->setVertexBaseType(Qt3DRender::QAttribute::UnsignedInt);
+    indexAttribute->setAttributeType(Qt3DRender::QAttribute::IndexAttribute);
+    indexAttribute->setBuffer(indexBuffer);
+    indexAttribute->setCount(2);
+    geometry->addAttribute(indexAttribute);  // We add the indices linking the
+                                             // points in the geometry
+
+    // Mesh
+    auto *line = new Qt3DRender::QGeometryRenderer(rootEntity);
+    line->setGeometry(geometry);
+    line->setPrimitiveType(Qt3DRender::QGeometryRenderer::Lines);
+    auto *material = new Qt3DExtras::QPhongMaterial(rootEntity);
+    material->setAmbient(color);
+
+    // Entity
+    auto *lineEntity = new Qt3DCore::QEntity(rootEntity);
+    lineEntity->addComponent(line);
+    lineEntity->addComponent(material);
+
+    // auto *transform = new Qt3DCore::QTransform();
+    // transform->setRotation(sceneRotation);
+    // lineEntity->addComponent(transform);
+}
\ No newline at end of file
diff --git a/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h b/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h
index b7192d3ece2434c4814083424d9cc08c8eeb4c6f..eb9030050753b73ea27525fd2923ed56cfdd9a94 100644
--- a/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h
+++ b/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h
@@ -1,26 +1,52 @@
 #pragma once
 
 #include <Modules/DefaultModule/DefaultModule.h>
+#include <Qt3DRender/qpointlight.h>
 
+#include <QSizePolicy>
+#include <Qt3DCore/QAspectEngine>
+#include <Qt3DCore/QEntity>
 #include <Qt3DCore/QTransform>
+#include <Qt3DExtras/QConeMesh>
+#include <Qt3DExtras/QCuboidMesh>
+#include <Qt3DExtras/QFirstPersonCameraController>
+#include <Qt3DExtras/QForwardRenderer>
+#include <Qt3DExtras/QOrbitCameraController>
+#include <Qt3DExtras/QPhongMaterial>
+#include <Qt3DExtras/QSphereMesh>
+#include <Qt3DExtras/QTorusMesh>
+#include <Qt3DExtras/Qt3DWindow>
+#include <Qt3DInput/QInputAspect>
+#include <Qt3DRender/QAttribute>
+#include <Qt3DRender/QBuffer>
+#include <Qt3DRender/QCamera>
+#include <Qt3DRender/QCameraLens>
+#include <Qt3DRender/QGeometry>
+#include <Qt3DRender/QGeometryRenderer>
+#include <Qt3DRender/QRenderAspect>
 
 class OrientationVisualizer : public DefaultModule
 {
     Q_OBJECT
 
 public:
-    explicit OrientationVisualizer(QWidget* parent = nullptr);
+    explicit OrientationVisualizer(QWidget *parent = nullptr);
 
-    QWidget* toWidget() override;
+    QWidget *toWidget() override;
 
     XmlObject toXmlObject() override;
-    void fromXmlObject(const XmlObject& xmlObject) override;
+    void fromXmlObject(const XmlObject &xmlObject) override;
 
 private:
     QLabel *rollLabel, *pitchLabel, *yawLabel;
 
-    Qt3DCore::QTransform* rocketTransform;
+    Qt3DCore::QTransform *rocketTransform;
 
     void updateOrientation(double qx, double qy, double qz, double qw);
     void setupUi();
+
+    void drawLine(const QVector3D &start, const QVector3D &end,
+                  const QColor &color, Qt3DCore::QEntity *rootEntity);
+
+    QQuaternion sceneRotation = {-0.5, -0.5, -0.5, 0.5};
 };