diff --git a/cspell.json b/cspell.json index a30f8778..956f0338 100644 --- a/cspell.json +++ b/cspell.json @@ -48,6 +48,7 @@ "linuxarm", "Loctite", "madgwick", + "Marvelmind", "microcontroller", "Morenia", "moveit", @@ -90,10 +91,12 @@ "rosservice", "rostopic", "rplidar", + "RSSI", "rviz", "showinfo", "sshfs", "stereovision", + "submap", "systray", "Szymon", "teleop", @@ -125,6 +128,7 @@ "VRTKCAM", "Xsrv", "actionlib", + "blox", "dialout", "imager", "isie", diff --git a/docs/leo-rover/integrations/components/marvelmind-indoor-gps.mdx b/docs/leo-rover/integrations/components/marvelmind-indoor-gps.mdx new file mode 100644 index 00000000..e0cf59b7 --- /dev/null +++ b/docs/leo-rover/integrations/components/marvelmind-indoor-gps.mdx @@ -0,0 +1,711 @@ +--- +title: 'Marvelmind Indoor GPS' +sidebar_label: 'Marvelmind Indoor GPS' +sidebar_position: 7 +--- + +import LinkButton from '@site/src/components/LinkButton'; +import ImageZoom from '@site/src/components/ImageZoom'; + +In this tutorial, we will show you how to connect Marvelmind Indoor GPS system +with Leo Rover. + +**Marvelmind Indoor Navigation System** is an off-the-shelf indoor navigation +system, designed to provide precise (±2cm) location data to autonomous robots, +vehicles (AGV), and copters. It can also be used to track moving objects via +mobile beacons attached to them. Other applications include, for example, +forklifts, virtual reality (VR) systems, helmets for construction workers or +miners, etc. + +For the purpose of this tutorial, we have prepared `leo_marvelmind` package +which makes use of Marvelmind ROS packages to provide the rover's estimated +position, from the Marvelmind system. You won't have to write a single line of +code, but some configuration may need to be tweaked to work best in your +environment. + +Make sure you are operating on the newest image for the Raspberry Pi and you are +up-to-date with the packages and have the newest firmware flashed. + +You will also need to have ROS installed on your computer and some previous +experience with ROS is also recommended. + +:::info + +This tutorial was done on linux. If you are using windows, you might need to +download and install STM32 Drivers and (optionally) DfuSe (DFU programmer). Both +can be found on [Marvelmind page](https://marvelmind.com/download/). + +::: + +## Prerequisites + + + + + + +## List of components + +In this tutorial, we integrate Marvelmind Starter Set Super-MP-3D consisting of: + +- 4 stationary [Super-Beacons](https://marvelmind.com/product/super-beacon/) +- 1 mobile [Super-Beacon](https://marvelmind.com/product/super-beacon/) +- 1 [Modem v5.1](https://marvelmind.com/product/modem-hw-v5-1/) supporting up to + 250 beacons + + + +Marvelmind provides a few architectures for their system. This tutorial is +configured for `Inverse Architecture (IA)`: + + + +Here is a quick comparison of the architectures: + + + +You can find some more information in this and +[FAQ section](https://marvelmind.com/faq/) on the Marvelmind page. + +:::note + +Inverse architecture requires stationary beacons to have different frequencies. + +::: + +## Software integration + +### Downloading Marvelmind software and API + +In order to use Marvelmind system for navigation, you need Marvelmind API and +their software. In the software, you can find the newest firmware for the +beacons and modem, and API is needed to upload it to the device. + +To download the required files, you can go to Marvelmind +[page with downloads](https://marvelmind.com/download/), and find the newest +package, or download it from +[here](https://marvelmind.com/pics/marvelmind_SW.zip). + +Once you have downloaded the package, you need to unzip it. On Linux, it can be +done with the `unzip` command line tool. In terminal, just go to the directory +where the zip file has been downloaded (default is `~/Downloads`) and type: + +```bash +unzip marvelmind_SW.zip +``` + +Then, in the extracted directory, go to `Dashboard/linux`. The next directory +you need to choose based on your computer's architecture (for us it was `x86`). + +:::tip + +In the `Dashboard/linux` directory, there is a PDF file with instructions for +the linux versions of dashboard. It's worth to do the things described there. + +::: + +You can check what your architecture is with: + +```bash +uname -m +``` + +or: + +```bash +dpkg --print-architecture +``` + +Then, go to the specified directory, and give execution rights to +`dashboard_` file: + +```bash +chmod +x dashboard_x86 +``` + +### Updating firmware on beacons and modem + +:::note + +For each beacon you will need to do the same things. There is only one +additional step for the mobile beacon, but it will be mentioned later. + +Beacon configuration requires it to be connected to the computer, so it might be +faster for you to complete upgrading and configuring beacon and then switching +to the next beacon, than switching beacons after firmware update, and then +connecting them once again, for configuration. + +::: + +First, charge all the beacons with a USB cable (full charging takes 2-4 hours). + +Run the dashboard by typing in the correct directory: + +```bash +./dashboard_ +``` + +You should see something like this: + + + +Now, you need to turn on your beacons (or just the currently upgraded ones not +to waste the battery in other beacons) by placing the DIP switches like it is +shown below: + + + +Now, connect the beacon to the computer with the USB cable. Once it is found, +your screen should change to something like this: + + + +:::info + +If you have problems with connecting beacons to the computer, there are some +solutions: + +- Check with `dmesg -w` if your computer detects connection of usb device (run + it before connecting beacon to computer), +- If you see the message “**Not found modem connection to computer through + USB**” it usually means that you don't have STM32 drivers installed. To + install the driver, down load it with link at top window in the Dashboard and + run the installation file, then click on the link under and install the + driver. + +::: + +If your beacon is connected, go to **Firmware** -> **Upload firmware**. You +should see a new window. + + + +Click **Open file** and choose the correct firmware file. As we are integrating +for Inverse Architecture, choose from the base directory of unzipped package +**Software_ia**. Then, choose **super_beacon_ia** (if you have some other type +of beacon, choose the directory for your device). From there, choose the `.hex` +file (there should be only one in the directory) and click **Open**. Then, click +the **Next** button in the bottom part of the window, and the firmware upload +will start. + +:::info + +For modem, the only difference is that from `Software_ia` directory you need to +choose `modem_hw51_ia` or `modem_hw49_ia` directory, depending on the type of +the modem you have. + +::: + +When the update is complete, you will see something like this: + + + +:::warning + +Make sure that you upload right firmware (beacon's SW to beacons and modem's SW +to modem) and that you chose right version of the device (if you have doubts, +you can check it on the sticker that's on the bottom part of the device). + +::: + +If you have any problems with HEX programming, use DFU. Full instruction can be +found +[here](https://marvelmind.com/pics/marvelmind_navigation_system_manual.pdf) on +page 109. + +### Configuring Beacons + +While the beacon is connected, click **Default** in the dashboard to upload the +default settings (the beacon will reconnect to the dashboard). + + + +Change the **Device address** at your convenience (it's important, as we will +wake the beacons based on their IDs). + + + +Change the **Ultrasonic frequency** to the frequency given on the sticker on the +bottom side of the device. + + + +You can also change the **Radio frequency** band to some value that is legal in +your country. + + + +**Only for the mobile beacon**: change the **Hedgehog mode** to `enabled`. + + + +Choose IMU mode `Normal` from **IMU** section. + + + +**Only for the mobile beacon**: in **Interfaces** section enable **Processed IMU +data** and **Raw internal sensors data**. + + + +:::info + +Don't worry if during configuration device reconnects to the computer, it +sometimes happens. + +::: + +To save changes, press **Write changes** in the upper right part of the +dashboard, and reset the device (the button above the DIP switches for beacon; +the button on the side - for modem). + +### Mounting Beacons to the walls + +With each beacon, there is a velcro in the box. You need to attach one part to +the beacon, and the other to the wall. + +Place the stationary beacons high on the walls vertically in a way that will +provide optimal ultrasonic coverage (make sure that the antenna is in the upper +right corner of the beacons). + +Measure the height at which the beacons are placed, as we will need it for +future change in settings. + +[Here is a video](https://www.youtube.com/watch?v=WY0HkLzmjys) with additional +instructions on installing the beacons on the walls. + +Possible setup: + + + + + +:::warning + +Make sure that beacons can "see" each other. If there is something in the way, +the system might have problems with measuring distance between beacons. + +::: + +### Setting Map + +If you have turned off the dashboard, turn it on and connect the modem to your +computer. Turn on all the stationary beacons. Now, you need to wake them up. In +the dashboard, with the connected modem (in the lower left corner, the modem +should be shown as connected), in the lower part of the dashboard, there are +numbers of devices. Double click on a number to wake up a device with a given +number. + +:::info + +It might take 7-10 seconds for the beacons to wake up. + +::: + + + +Now, when the beacons are turned on, the system may run the frequency search if +it is the very first time you are waking up the beacons. + +:::note + +If this step does not work, disconnect the modem and connect that beacon again +via USB. Press the DEFAULT button in the Dashboard and the Read All button to +make sure that the radio settings are the default ones. + +Also check that the radio settings on the modem and the radio settings on the +beacon are the same. + +::: + +Now, by clicking on the woken device, you can see and change its options (you +can check RSSI, voltage, ultrasonic filter settings, etc.) on the panel in the +right part of the Dashboard. + +:::info + +Double click on the device to both put it into sleep mode and to wake it up. + +If the modem is not active and is not powered, the beacons will go into sleep +mode automatically after 1 minute + +::: + +For each beacon you have turned on, enter the height it's placed at. + + + +At this moment, the map should zoom in and form automatically. If the map didn't +form well, check the table of distances in the upper left corner. + + + +:::note + +Only 4 stationary beacons may be in 1 submap. If you wake up more beacons, +create new submap for them. Or it won't be displayed on the map and in the table +of distances. + +::: + +Next, you need to make the service zone. To do so, just press **Shift+Left mouse +button** on the map to add a point (press the same combination on a point to +remove it). Two points will form a line; three and more - a polygon. In the end, +you should have something like this: + + + +The last step is to freeze the submap and the map (provided that everything in +the previous steps was good). When you freeze the map, stationary beacons will +stop measuring relative distances and will be ready to measure distance from the +mobile beacon. + + + +#### Solving problems with table of distances + +If in the table you see some empty cells (except for the cells on diagonal) or +marked yellow/red, it is an indication that distances between some beacons are +measured inconsistently or are not measured at all. Try re-positioning them +because usually there is an obstruction of some sort between the beacons. + +You can also input the distance between beacons manually. To do so, just +**right-click** on a cell that corresponds to a given pair of beacons, then, +choose **Enter distance for pair**. After that, you can also freeze the distance +for that pair (or you can later freeze the whole submap at once). + + + +Here are the meanings of possible cell colors: + +- white - everything is good, you can freeze the map +- yellow - something seems to be wrong, check distances and sensors before + freezing +- red - some critical misses, do not freeze the map; manually measure and input + distance, or reposition the beacon +- green - frozen distance, you can freeze the map, but be careful with values + +It's also worth considering the diagnostic messages in the upper part of the +Dashboard. There, you can find important system's messages which may contain a +lot of useful information (for example, a message about repeating beacon +frequency when you have IA). + + + +### Starting measurement + +As you could mount beacons to the walls, you can also mount the mobile beacon on +the rover using velcro. + +:::warning + +For the beacon to have the same rotation axes as the rover, you need to mount it +in such way, that the beacon antenna is in the upper right corner, when looking +from above the rover (in z axis). + +You also need to connect the mobile beacon to the rover, with a micro-usb cable +(connect the cable to the slot, of the beacon, which you used to charge the +beacons), to the usb socket on the rover's mounting plate (you may need some +adapters to do so). + +::: + +When you have the map, and mobile beacon is mounted on the rover, you can turn +it on following the steps for stationary beacons (turn on the power of the +beacon, wake it up in the dashboard, input height). After you have done those +steps, mobile beacon should be traceable in 5-7 seconds. The system is now fully +operational. + +:::info + +It's possible, that after waking the mobile beacon, you will have to unfreeze +the map, and freeze it again. Doing this, will allow the system to add the +mobile beacon to the map. Follow the diagnostic messages in case of a problem. + +::: + +## Examples + +### Marvelmind navigation with ROS + +Right now, the only way we see the estimated position of the rover is in the +dashboard. But it would be more useful to integrate the Marvelmind navigation +system with ROS, as it will allow us to do anything with the position (for +example, navigating the rover). + +To do so, we utilize +[leo_marvelmind](https://github.com/LeoRover/leo_marvelmind) package which +provides: + +- marvelmind `hedge_rcv_bin` node which is able to communicate with mobile + beacon or modem and provide received location and other data +- nodes for parsing messages from Marvelmind topics to ROS msgs +- robot localization nodes to have estimation of the rover position using rover + data and Marvelmind data + +#### Installing packages: + +First you need to download our `leo_marvelmind` package, from github repository. +To do so, connect to the rover via ssh. Once you are connected, you need to +download the package in your `ros workspace`, in the src directory. If it's in +your home directory, type: + +```bash +cd ~/ros_ws/src +git clone https://github.com/LeoRover/leo_marvelmind_tutorial.git +``` + +Now we need to install all required rosdep dependencies: + +```bash +cd ~/ros_ws +source devel/setup.bash +rosdep install --from-paths src -i +``` + +And in the end, if everything installed successfully, you have to build the +package: + +```bash +catkin build +``` + +#### Adding mobile beacon to URDF model + +The rover should be aware of where the beacon is located, and what space it +occupies. You can ensure it does that by making URDF model of the beacon. + +We will have separate URDF file for the beacon model, and we will link it to the +rover's URDF. + +Our beacon model is `5.5 x 5.5 x 6.5 cm` large, and we mounted it `7 cm` in +front of the mounting hole that serves as a `base_link` in robot's URDF model. +Therefore, our beacon URDF model looks like this: + +```xml title="/etc/ros/urdf/beacon.urdf.xacro" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +Now, we need to link it to the main urdf file. To do so, you need to include +this line in `/etc/ros/robot.urdf.xacro` file (somewhere between `` and +`` tags): + +```xml title="/etc/ros/urdf/robot.urdf.xacro" + +``` + +Now, to make beacon visible for the rover, you need to reboot the robot, or +restart `leo` service: + +```bash +sudo systemctl restart leo +``` + +#### Description of all the nodes and topics + +- `hedge_rcv_bin` - node from `marvelmind_nav` package. Gives us topics: + - `hedge_pos_ang` which contains the position of mobile beacon returned from + marvelmind system + - `hedge_imu_fusion` which contains fused data from mobile beacon imu + - `hedge_imu_raw` with raw data from imu +- `wheel_odom_parser` which subscribes to `wheel_odom` topic, and adds to it + covariance matrix. It's also publishing such message as + `TwistWithCovarianceStamped` msg on `wheel_odom_with_covariance` topic +- `pose_parser` which takes the pose from marvelmind system, adds to the + position wheel odometry with covariance, and publishes it as `Odometry` msg. +- `imu_parser` which subscribes to marvelmind imu topics, and organizes two + messages into `sensor_msgs/Imu` +- `robot_loc_odom` and `robot_loc_map` which are robot localization nodes. One + publishing odom to base link transform, and the other map to odom. + +Lists of parameters for parsers are in the `leo_marvelmind/config` directory. +Except for subscribed/published topic names, there are also covariances, so you +can change those at your convenience. + +You can run all nodes using `marvelmind_localization.launch` file by sourcing +the devel directory and typing command: + +```bash +roslaunch leo_marvelmind marvelmind_localization.launch +``` + +Here's a diagram that illustrates the nodes launched by the +`marvelmind_localization.launch` file and the connections between them: + + + +Then, you can also run `rviz` (on your computer if it is not installed on the +rover - you need to export ros variables) and add robot model, and visualize the +estimated position (remember to chose map as fixed frame). You can find more +instructions here: + + + +## What next? + +{/* TODO ADD LINK TO U-BLOX */} + +Now, that you know how to use in-door GPS you might want to learn about outdoor +GPS. Check out our tutorial on U-blox GPS Module. Or go to our +[Knowledge Base](/docs/category/integrations) site, where you can find more +tutorials on a range of topics. diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/architecture-comparison.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/architecture-comparison.webp new file mode 100644 index 00000000..252f18bf Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/architecture-comparison.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-1.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-1.webp new file mode 100644 index 00000000..79ec6e8d Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-1.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-2.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-2.webp new file mode 100644 index 00000000..2d92ce9f Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-2.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-3.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-3.webp new file mode 100644 index 00000000..9b84a996 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-3.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-4.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-4.webp new file mode 100644 index 00000000..be1fb9d8 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-4.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-5.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-5.webp new file mode 100644 index 00000000..334cde6c Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-5.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-6.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-6.webp new file mode 100644 index 00000000..c4e55899 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-6.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-7.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-7.webp new file mode 100644 index 00000000..0eecd4bd Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/configure-beacons-7.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/connected-beacon.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/connected-beacon.webp new file mode 100644 index 00000000..ef560d90 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/connected-beacon.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/dashboard.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/dashboard.webp new file mode 100644 index 00000000..5c92793b Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/dashboard.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/diagnostic-messages.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/diagnostic-messages.webp new file mode 100644 index 00000000..821a15fc Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/diagnostic-messages.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/dip-switches.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/dip-switches.webp new file mode 100644 index 00000000..6ce948bd Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/dip-switches.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/distance-table.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/distance-table.webp new file mode 100644 index 00000000..55594237 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/distance-table.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/firmware-update-completed.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/firmware-update-completed.webp new file mode 100644 index 00000000..3fbfa67b Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/firmware-update-completed.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/inverse-architecture.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/inverse-architecture.webp new file mode 100644 index 00000000..8ecc9c51 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/inverse-architecture.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/marvelmind-gps-node-graph.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/marvelmind-gps-node-graph.webp new file mode 100644 index 00000000..1ad3da3f Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/marvelmind-gps-node-graph.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/marvelmind-set.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/marvelmind-set.webp new file mode 100644 index 00000000..4eec6988 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/marvelmind-set.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/mounting-setup-1.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/mounting-setup-1.webp new file mode 100644 index 00000000..74919446 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/mounting-setup-1.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/mounting-setup-2.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/mounting-setup-2.webp new file mode 100644 index 00000000..54923e6f Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/mounting-setup-2.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-1.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-1.webp new file mode 100644 index 00000000..6cf1f436 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-1.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-2.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-2.webp new file mode 100644 index 00000000..e4635494 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-2.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-3.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-3.webp new file mode 100644 index 00000000..96d327a7 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-3.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-4.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-4.webp new file mode 100644 index 00000000..cf64aaaf Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-4.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-5.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-5.webp new file mode 100644 index 00000000..d01b9f53 Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/setting-map-5.webp differ diff --git a/static/img/docs_images/leo-rover/integrations/marvelmind-gps/upload-firmware.webp b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/upload-firmware.webp new file mode 100644 index 00000000..f160d6ac Binary files /dev/null and b/static/img/docs_images/leo-rover/integrations/marvelmind-gps/upload-firmware.webp differ