diff --git a/cspell.json b/cspell.json
index 4a982c57..241ce9fb 100644
--- a/cspell.json
+++ b/cspell.json
@@ -30,12 +30,14 @@
"artag",
"aruco",
"Balena",
+ "BESTGNSSPOS",
"BHCS",
"BLDC",
"bringup",
"buehler",
"Bühler",
"convolutional",
+ "CORRIMU",
"CUDA",
"Dawe",
"DCMAKE",
@@ -97,7 +99,9 @@
"picamera",
"pincherx",
"pololu",
+ "POIVRTK",
"Raph",
+ "RAWIMU",
"Raspicam",
"realsense",
"Realtek",
@@ -144,6 +148,7 @@
"URDF",
"uros",
"velodyne",
+ "VRTKCAM",
"WEIPU",
"widowx",
"wlan",
diff --git a/docs/integrations/positioning-systems/fixposition-vision-rtk-2.mdx b/docs/integrations/positioning-systems/fixposition-vision-rtk-2.mdx
new file mode 100644
index 00000000..73057244
--- /dev/null
+++ b/docs/integrations/positioning-systems/fixposition-vision-rtk-2.mdx
@@ -0,0 +1,326 @@
+---
+title: Fixposition Vision-RTK 2 GPS
+sidebar_label: Fixposition Vision-RTK 2 GPS
+keywords:
+ - fixposition
+ - vision
+ - rtk
+ - gps
+ - accurate
+ - leo
+ - integration
+ - Real-Time Kinematic
+ - example
+description: >-
+ Integrate Fixposition's centimeter-level accurate GPS module with Leo Rover to
+ enable unparalleled navigation for research and industry.
+image: /img/robots/leo/integrations/vision-rtk2/leo-with-vision-rtk2.webp
+---
+
+import Powerbox from '@site/src/products/powerbox.mdx';
+import Fixposition from '@site/src/products/fixposition-vision-rtk2.mdx';
+import LiteYouTubeEmbed from 'react-lite-youtube-embed';
+
+{/* TODO add a render or a photo of the rover with the integration */}
+
+This tutorial will guide you through the process of connecting Fixposition
+Vision-RTK 2 to Leo Rover.
+
+Fixposition Vision RTK2 is a great GPS module capable of achieving up-to a
+centimeter-level accuracy. This system leverages Real-TimeKinematic (RTK) and
+vision-based positioning technology to provide precise localization even in
+challenging environments. With its compact design Vision-RTK 2 empowers Leo
+Rover users to navigate with unparalleled accuracy, unlocking new possibilities
+for research, exploration, and industrial applications.
+
+## What to expect?
+
+Your rover will be able to gather accurate GPS data and publish it on these
+[ROS topics](https://docs.fixposition.com/fd/fixposition-ros-driver#FixpositionROSDriver-AvailableROStopics),
+enabling you to use it for navigation and other purposes in your projects.
+
+
+
+
+
+## Prerequisites
+
+
+
+
+
+
+
+### Referenced products
+
+
+
+
+## Hardware integration
+
+### Mounting
+
+The module needs to be attached to the rover in a spot that provides an
+uninterrupted view of the terrain. An adapter plate (eg. the one we provide
+[here](../addon-adapters#fixposition-vision-rtk2-adapter)) might be helpful to
+mount the module on the top of the rover.
+
+The accuracy of the system depends on how far apart the GNSS antennas are
+spaced. Since Leo Rover is rather small it might be hard to place them more than
+30cm apart. The system provides a satisfactory accuracy with setup like this,
+but it's not advised to go any closer. If your project allows it, try to
+position the antennas even further apart. It's also a good choice to move the
+GNSS antennas away from any parts of the rover that might be a source of
+electromagnetic interferences (e.g. motors).
+
+
+
+### Wiring
+
+The only wire needed for the module to work is a power cable. An external power
+distribution module like our [Powerbox](/leo-rover/addons/powerbox) might come
+in handy in this case.
+
+When using Powerbox, you can connect the Vision RTK-2 power cable to one of the
+BAT ports.
+
+## Software integration
+
+:::info
+
+Before starting the software integration, please make sure that the sensor is
+properly configured. To do that you can complete the
+[quick start guide](https://docs.fixposition.com/fd/quick-start-guide) and
+optionally follow the 4th and 5th chapters of the
+[integration manual](https://docs.fixposition.com/fd/integration-manual).
+
+Few key points that can be helpful during the configuration process:
+
+- Make sure that the sensor's firmware is at least version 2.102.2 or newer. You
+ can check the firmware version in the `system -> info` tab of the web UI,
+ under the `software` field. If you have an older version, please update it
+ following the instructions in the
+ [documentation](https://docs.fixposition.com/fd/updating-software-version).
+- Make sure to remember the sensor's IP address after connecting it to the rover
+ network. You will need it later to configure the ROS driver.
+- Make sure to enable the data flow from the sensor on `TCP0` port in the web UI
+ as this is the port used to communicate with the rover. I/O configuration
+ options can be found in the
+ [I/O section of the documentation](https://docs.fixposition.com/fd/i-o-messages).
+ Recommended minimal options to enable are:
+ - FP_A-ODOMETRY
+ - FP_A-LLH
+ - NOV_B-BESTGNSSPOS_GNSS1
+ - NOV_B-BESTGNSSPOS_GNSS2
+ - FP_A-RAWIMU
+ - FP_A-CORRIMU
+ - FP_A-TF_POIVRTK
+ - FP_A-TF_VRTKCAM
+- For more information refer to the
+ [official documentation](https://docs.fixposition.com/fd/).
+
+:::
+
+### Installing the driver
+
+Having configured the sensor, you can now proceed with installing the
+fixposition driver.
+
+For this task you need to install the fixposition ROS driver into a ROS
+workspace, therefore log in using ssh to the rover, and create a ROS workspace
+if you don't have one already:
+
+```bash
+mkdir -p ~/ros_ws/src
+```
+
+Then ensure that your rover has
+[access to the internet](/leo-rover/guides/connect-to-network) and download the
+GitHub repository with the driver:
+
+```bash
+cd ~/ros_ws/src
+git clone https://github.com/fixposition/fixposition_driver --recurse-submodules
+```
+
+Run the script from the driver repository to pre-configure the driver for
+installation:
+
+```bash
+cd fixposition_driver
+./setup_ros_ws.sh
+```
+
+Now you can install all dependencies:
+
+```bash
+sudo apt update
+sudo apt install git libyaml-cpp-dev libboost-all-dev zlib1g-dev libeigen3-dev linux-libc-dev nlohmann-json3-dev
+cd ~/ros_ws
+rosdep update
+rosdep install --from-paths src -iry
+```
+
+Finally, you can build the workspace:
+
+```bash
+colcon build --symlink-install --cmake-args -DBUILD_TESTING=OFF
+```
+
+### Driver configuration
+
+Once the packages are installed, the driver needs to be configured to work
+properly. To edit the configuration files, you can use `nano` or your preferred
+text editor:
+
+```bash
+nano src/fixposition_driver/fixposition_driver_ros2/launch/config.yaml
+```
+
+Once you have the file open, change the `stream` parameter to include the
+sensor's IP address in the rover network. It should look like this:
+
+```yaml title="fixposition_driver/fixposition_driver_ros2/launch/config.yaml"
+stream: tcpcli://:21000
+```
+
+:::note
+
+To avoid creation of numerous ROS topics, you can comment out (using `#`) the
+unnecessary data streams in the `messages` field.
+
+If you want the best performance make sure that the `messages` field corresponds
+to the data streams enabled in the sensor's web UI.
+
+:::
+
+Optionally to enable the driver to use the odometry data from the robot, you can
+modify the `converter` parameters in the same file:
+
+```yaml title="fixposition_driver/fixposition_driver_ros2/launch/config.yaml"
+converter:
+ enabled: true
+ topic_type: 'Odometry' # Supported types: nav_msgs/{Twist, TwistWithCov, Odometry}
+ input_topic: '/merged_odom' # Input topic name
+ scale_factor: 1000.0 # To convert from the original unit of measurement to mm/s (note: this must be a float!)
+ use_x: true # Transmit the x axis of the input velocity
+ use_y: true # Transmit the y axis of the input velocity
+ use_z: false # Transmit the z axis of the input velocity
+```
+
+:::warning
+
+If your robot has a namespace different than the default `/`, you need to
+provide the `input_topic` param with the namespace. Make sure that the provided
+topic name is in the global namespace - starting with `/`, e.g.
+`/namespace/merged_odom`.
+
+:::
+
+### Adding the driver to autostart
+
+The last part of the setup is to add the driver to autostart and make sure that
+the frames published by the driver are connected to Leo Rover's `tf tree`.
+
+Enter the `setup.bash` file of the Rover:
+
+```bash
+nano /etc/ros/setup.bash
+```
+
+Edit this file to source the ROS workspace where the driver is installed.
+Remember to comment out the default ROS setup line and source the custom
+workspace.
+
+```bash title="/etc/ros/setup.bash"
+#source /opt/ros/jazzy/setup.bash
+source ~/ros_ws/install/setup.bash
+```
+
+Now you can edit the launch file that is launched at the robot's startup to
+include the fixposition driver launch file and the static transform publisher
+that will connect the frames published by the driver to the robot:
+
+```bash
+nano /etc/ros/robot.launch.xml
+```
+
+And add these lines somewhere in between the `launch` tag:
+
+```xml title="/etc/ros/robot.launch.xml"
+
+
+```
+
+:::note
+
+Replace the `args` in the static transform publisher with the correct values for
+your setup. The example above assumes that the `base_link` frame is in the same
+position as the `FP_POI` frame.
+
+:::
+
+To launch the driver, you can reboot the robot or restart the ROS nodes:
+
+```bash
+ros-nodes-restart
+```
+
+:::tip
+
+To view the ROS nodes logs for debugging purposes, you can use the following
+command:
+
+```bash
+ros-nodes-logs -f
+```
+
+:::
+
+Now you should have the driver up and running, and be able to see the data from
+the sensor in ROS, provided that the sensor has been properly configured and the
+correct data flow has been enabled in the sensor's web UI.
+
+## What's next?
+
+Fixposition Vision-RTK 2 can be used in projects involving
+[autonomous navigation](/leo-rover/advanced-guides/autonomous-navigation). You
+might be interested in a tutorial about it.
+
+You can also deploy long-duration mapping runs to capture centimeter-accurate
+site models or use the data from the sensor to improve the stability of your
+SLAM system.
diff --git a/src/products/fixposition-vision-rtk2.mdx b/src/products/fixposition-vision-rtk2.mdx
new file mode 100644
index 00000000..92429860
--- /dev/null
+++ b/src/products/fixposition-vision-rtk2.mdx
@@ -0,0 +1,12 @@
+import ProductPreview from '@site/src/components/ProductPreview';
+
+
diff --git a/static/_redirects b/static/_redirects
index 3822a213..6b6714a5 100644
--- a/static/_redirects
+++ b/static/_redirects
@@ -64,7 +64,6 @@
/integrations/legacy/* /integrations/noetic/legacy/:splat 302
/integrations/lidars/ouster-os0 /integrations/noetic/lidars/ouster-os0 302
/integrations/lidars/velodyne-puck /integrations/noetic/lidars/velodyne-puck 302
-/integrations/positioning-systems/fixposition-vision-rtk-2 /integrations/noetic/positioning-systems/fixposition-vision-rtk-2 302
/integrations/positioning-systems/marvelmind-rtls /integrations/noetic/positioning-systems/marvelmind-rtls 302
/integrations/robotic-arms /integrations/noetic/robotic-arms 302
/integrations/robotic-arms/* /integrations/noetic/robotic-arms/:splat 302
diff --git a/static/img/robots/leo/integrations/vision-rtk2/leo-with-fixposition-render.webp b/static/img/robots/leo/integrations/vision-rtk2/leo-with-fixposition-render.webp
new file mode 100644
index 00000000..33746b06
Binary files /dev/null and b/static/img/robots/leo/integrations/vision-rtk2/leo-with-fixposition-render.webp differ