Leo Rover specification

Introductionβ
Leo Rover is a compact, 4-wheeled, remote-controlled robot designed for indoor and outdoor robotic project development, learning, and research applications. It is equipped with a built-in computer, a high-resolution camera, and a powerful battery, making it suitable for various tasks, including autonomous navigation, obstacle detection, and remote monitoring.
Main parametersβ
Parameter | Value |
---|---|
Dimensions (LxWxH) | 424 mm x 445 mm x 303 mm |
Weight | 7 kg |
Maximum payload | 5 kg* |
Maximum linear speed | 0.4 m/s |
Maximum angular speed | 1 Rad/s |
Estimated max. obstacle size | 70 mm |
IP protection rating | IP 55 |
Operating temperature | -10 Β°C to +40 Β°C |
Run time | up to 4 hours with standard battery |
Connection range | Up to 100 m |
* - on standard tires
Traction parametersβ
Parameter | Value |
---|---|
Track Width | 354 mm |
Wheelbase length | 295 mm |
Ground clearance | 108 mm |
Climb grade (no payload) | 45Β° (100 %) |
Climb grade with 5kg payload | 45Β° (100 %) |
Hill grade traversal | 45Β° (100 %) |
Nominal torque | 4 Nm |
Maximum torque | 5.6 Nm |
Rover overviewβ


Hardware specificationβ
Dimensionsβ


Componentsβ
Name | Quantity | Description |
---|---|---|
Built-in computer | 1 | Raspberry Pi 5 - A single-board computer developed by Raspberry Pi Ltd. Key features:
|
Wi-Fi adapter | 1 | Alfa AWUS036ACS: USB 2.0 Wi-Fi adapter (Realtek RTL8811AU). Dual-band 802.11ac (AC600: 150 Mbps 2.4GHz + 433 Mbps 5GHz). |
Antenna | 1 | Dual-band (2.4 GHz / 5 GHz) placed on the top of the robot. |
Front camera | 1 | Arducam 12.3MP 477M HQ Camera Module for Raspberry Pi with 158Β°(D) M12 Wide Angle Lens. |
DC motors | 4 | BΓΌhler Motors 1.61.077.414 connected to LeoCore. |
Block diagramβ
LeoCore controllerβ
Leo Rover since version 1.8 is based on the LeoCore electronics board which, together with the Raspberry Pi computer, controls all the Rover's functionalities.

To make it easier, we listed all the interfaces used by Leo Rover as default. Just to make sure you don't interfere with them when developing.
Port | Functionality |
---|---|
Power input | to power the board |
RPi port | to power and RPi serial communication |
LED output | to control the battery LED (to show system readiness) |
Motor output A, B, C & D (PWM H-bridge) | to power the rover motors and encodes |
5-pin debug port | used to flash firmware to the board using ST-link/V2 (optionally) |
Drivetrainβ
The standard configuration of the Leo Rover features a drivetrain comprising four fixed wheels. This design enhances the mobility of the Rover, enabling it to execute precise maneuvers such as:
- turning in place ( around center of mass of the rover)
- turning around a curve
In addition, Leo Rover has a differential suspension system, which allows it to traverse uneven terrain and obstacles. The suspension system is designed to provide a smooth ride and maintain stability while driving over rough surfaces.
Motorsβ
The Rover is equipped with four in-hub DC motors, each featuring a planetary gearbox with a gear ratio of 73.2:1. This configuration allows for precise control of the Rover's movement and enables it to navigate various terrains with ease. The motors are equipped with encoders that provide feedback on the wheel's position and speed, allowing for accurate control of the Rover's movement.
Wheelsβ
As standard, Leo Rover comes with rubber tires with a diameter of about 130 mm. Whole drive assembly has following characteristics:
Parameter | Value |
---|---|
Tire size (diameter x thickness) | 125 mm x 70 mm |
Tire lock type | non beadlock |
Tire insert | soft foam (non pneumatic) |
Wheel rim diameter | 98 mm |
Battery & chargingβ
Leo Rover is powered by a 3S Li-Ion battery with a capacity of 7000 mAh. The battery is equipped with an internal battery management system (BMS) that provides protection against overcharging, over-discharging, and short circuits. The battery is designed to be easily replaceable, allowing for quick swaps during extended use.
Each battery pack has following characteristics:
Parameter | Value |
---|---|
Voltage | 11.1 V (nominal) |
Battery type | Li-Ion |
Battery cell | 18650 (Samsung INR18650-35E) |
Capacity | 7 Ah (77,7 Wh - flight safe) |
Battery pack type | 3S2P |
Maximum output power | 120 W |
Safety systems | Overcurrent, Reverse polarity protection |
Connectorsβ
By default Leo Rover uses standard WEIPU SP13-3 connectors for connecting battery, Main Electronics Box and other possible addons.
Pin name | Cable color |
---|---|
DC- | black |
DC+ | red / black with white stripe |
LED | green |
Battery chargerβ
The Rover is equipped with a 2A 12.6V Li-Ion battery charger that can charge the standard battery in approximately 4 hours. The charger is designed to be compact and portable, making it easy to transport and use in various environments. The charger is equipped with a standard 5.5/2.1 mm DC plug.
The charger is outfitted with an LED status indicator designed to provide information about the charging status of the battery. A green LED signifies that the battery has reached full charge, while a red LED indicates that the battery is currently in the charging process.
Parameter | Value |
---|---|
Voltage | 12.6 V |
Current | 2 A (max) |
Charger type | Li-Ion |
Charger plug | DC 5.5/2.1 mm (center positive) |
Charger adapter | Weipu SP13-3 - DC 5.5/2.1 mm |
To connect the charger to the battery, a Weipu SP13-3 - DC 5.5/2.1 mm adapter is included with each Rover. This adapter allows for easy and secure connection between the charger and the battery, ensuring that the charging process is efficient and safe.
For more information on how to charge the battery, please refer to the Leo Rover Getting started guide:
Payload specificationβ
Leo Rover is designed to be modular and customizable, allowing users to attach various payloads and accessories to the Rover. The Rover features a mounting platform on the top, which can accommodate different payloads and accessories. The payload capacity of the Rover is approximately 5 kg, making it suitable for a wide range of applications, including research, education, and development.
Parameter | Value |
---|---|
Payload capacity | 5 kg |
Hole grid spacing | 18 mm x 15 mm |
Mounting hole dimensions | 7 mm, equipped with T-KFS-M4-1 press-in nuts |
Main mounting plate dimensions (L x W x D) | 299 mm x 183 mm x 2 mm |
Apart from the mounting plate, it is possible to mount payloads directly to v-slot extrusions of the Leo Rover.
In order to power the payload, we recommend purchasing a Powerbox module which replaces the additional quarter of the rover.

Software specificationβ
Overviewβ
Leo Rover's software heavily relies on the Robot Operating System (ROS), which offers the robot the following functionalities:
- Abstraction layer facilitating communication between software components.
- Open-source software components, maintained by the community.
- A collection of standard message interfaces.
- Tools for introspection.
The primary segment of the software stack consists of several ROS Nodes, which are computational units, each performing a single logical function. The nodes interact via:
- Topics - Named buses enabling message exchange between nodes. They are strongly typed and employ anonymous publish/subscribe semantics.
- Services - A client/server mechanism for remote procedure calls between nodes. The service server accepts remote procedure requests identified by name and type, which must be known to the service client beforehand.
- Parameters - Sets of key/value pairs maintained separately by each node, utilized for node configuration during startup and runtime without necessitating code modifications.
- TF transforms - A single transform describes the relationship between two coordinate frames at a specific point in time. TF transforms are distributed between nodes using topics, but, for the sake of clarity, we will refer to them as separate entities.
There are two important software components that don't run as native ROS nodes:
- Controller firmware - The firmware itself acts as a ROS node, but uses eProsima's Micro XRCE-DDS as its middleware. Therefore, it requires the presence of the Micro-ROS Agent on the built-in computer to communicate with other ROS nodes.
- Web User Interface - The WebUI establishes a connection with the Rosbridge Server via the WebSocket transport layer and employs the Rosbridge protocol for communication with ROS nodes.


ROS nodesβ
ROS Node | Description |
---|---|
Firmware Node | The node spawned by the LeoCore controller firmware. Allows control of the robot's wheels via topics. Additionally, it publishes relevant information, including:
|
Robot State Publisher | Parses the kinematic tree model of the robot in URDF format and broadcasts the robot state using TF transforms. Here's how it operates:
It also publishes the robot URDF description on a designated topic, making it easily accessible to other nodes. |
Camera Driver | Publishes camera information and various camera images, including:
All images are published at 15 FPS, both in their original resolution and in compressed versions. |
Firmware Message Converter | Converts messages from the Firmware Node to standard ROS messages. |
IMU Filter | Processes raw IMU data using a complementary filter which:
The gyroscope bias is periodically saved to persistent storage and loaded on startup. The node also enables calibration reset via a service. |
Odometry Filter | Fuses wheel odometry and filtered IMU data to compute the robot's pose and velocity, and publishes this information. It can optionally broadcast an odometry TF transform and supports resetting the odometry via a service. |
Web Video Server | Provides HTTP video streaming of ROS image topics to the Web User Interface. |
Rosbridge Server | Provides a WebSocket interface to the ROS system, allowing the Web User Interface to communicate with ROS nodes. |


The names of nodes, topics, services are simplified for clarity.
For the exact names and a detailed description of the ROS Entities please refer
to the ROS API documentation.
Firmwareβ
The "Firmware" refers to the low-level software running on the LeoCore controller. It utilizes Micro-ROS to communicate with the built-in computer via the Micro XRCE-DDS protocol and exposes functionalities such as:
- velocity commands for the robot,
- velocity and PWM commands for individual wheels,
- battery voltage feedback,
- wheel states (position, velocity, torque, PWM duty) feedback,
- odometry feedback (calculated from wheel encoders),
- feedback from the IMU sensor.
Web user interfaceβ
This is a user interface that can be accessed via a web browser. It communicates with the Rosbridge server using roslibjs to access features available on ROS topics. The default leo_ui provides features such as:
- control of the rover via a keyboard or a virtual joystick,
- display of a camera stream from the Web video server, with the ability to select the source ROS topic for the video stream,
- display of the current battery voltage measurement,
- reboot and shutdown buttons.
LeoOSβ
LeoOS is a Debian-based Operating System distribution for the Raspberry Pi computer running inside Leo Rover.
It uses Ubuntu and Fictionlab package archives and comes with:
- a ROS distribution with Leo-specific packages installed,
- a network configured to act as a Wi-Fi access point,
- an SSH server for remote access,
- an HTTP server that hosts the Web User Interface,
- a desktop environment and remote desktop access (in the "full" variant),
- services for starting base functionalities at boot.
Network configurationβ
Work in progress
ROS Startupβ
LeoOS provides an easy mechanism for adding new functionalities without building any of the base packages. The whole process of starting the ROS nodes can be summarized as follows, using the following files:
- /etc/ros/robot.launch.xml - a launch file in XML format that starts the robot's functionality. It includes the launch file from the leo_bringup package, which starts the base functionality of the rover. It can be extended by the user, for example, to add additional nodes to be started at boot.
A launch file describes a system configuration to be executed. This includes what set of nodes to start, what parameters to pass to each node and many more.
-
/etc/ros/setup.bash - the environment setup file that sets all the environment variables necessary for the successful start of the ROS system. It sources the environment setup file from the target ROS workspace (by default
/opt/ros/jazzy/setup.bash
), and sets additional environment variables used by ROS or startup services. -
/etc/ros/urdf/robot.urdf.xacro - the URDF description (in xacro format) that is passed to the Robot State Publisher node. It includes the robot's model from the leo_description package and can be extended by the user to add additional links or joints to the model.
-
/etc/ros/firmware_overrides.yaml - a YAML file that contains parameters for the Firmware Node. It is used to override default parameters defined in the Firmware Node's source code.
Additionally, systemd user units are used to start the ROS nodes at boot. The following units are defined:
- ros-nodes.service - A service that starts the
/etc/ros/robot.launch.xml
ROS 2 launch file. - uros-agent.service - A service that starts the Micro-ROS Agent.
- ros.target - A target that groups the above two services together.
Both services can be configured through the /etc/ros/setup.bash
file.
To facilitate managing these services, LeoOS comes with a set of bash aliases:
<unit>
-start - Starts the specified unit.<unit>
-stop - Stops the specified unit.<unit>
-restart - Restarts the specified unit.<unit>
-status - Displays the status of the specified unit.<unit>
-enable - Enables the specified unit to start at boot.<unit>
-disable - Disables the specified unit from starting at boot.<unit>
-logs - Displays the logs of the specified unit (can be used with-f
flag to follow the logs).
Where <unit>
can be either ros
, ros-nodes
, uros-agent
.
For example, to stop both services, you can type:
ros-nodes-stop
uros-agent-stop
or just:
ros-stop
To check logs from both services, you can type:
ros-logs