Skip to main content
Version: Leo Rover 1.9

Leo Rover specification

Leo Rover 1.9

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​

ParameterValue
Dimensions (LxWxH)424 mm x 445 mm x 303 mm
Weightβ‰ˆ\approx 7 kg
Maximum payloadβ‰ˆ\approx 5 kg*
Maximum linear speedβ‰ˆ\approx 0.4 m/s
Maximum angular speedβ‰ˆ\approx 1 Rad/s
Estimated max. obstacle sizeβ‰ˆ\approx 70 mm
IP protection ratingIP 55
Operating temperature-10 Β°C to +40 Β°C
Run timeup to 4 hours with standard battery
Connection rangeUp to 100 m

* - on standard tires

Traction parameters​

ParameterValue
Track Width354 mm
Wheelbase length295 mm
Ground clearance108 mm
Climb grade (no payload)45Β° (100 %)
Climb grade with 5kg payload45Β° (100 %)
Hill grade traversal45Β° (100 %)
Nominal torque4 Nm
Maximum torque5.6 Nm

Rover overview​

Overview of main features of Raph Rover
Leo Rover overview
Overview of main features of Raph Rover
Leo Rover overview

Hardware specification​

Dimensions​

Leo Rover Dimensions
Dimensions of Leo Rover
Leo Rover Dimensions
Dimensions of Leo Rover

Components​

NameQuantityDescription
Built-in computer1Raspberry Pi 5 - A single-board computer developed by Raspberry Pi Ltd.

Key features:
  • Processor: Broadcom BCM2712, 2.4GHz quad-core 64-bit Arm Cortex-A76 CPU with cryptography extensions.
  • Memory: 4GB LPDDR4X-4267 SDRAM.
  • Storage: Micro SD card slot with support for high-speed SDR104 mode; PCIe 2.0 x1 interface for fast peripherals (requires separate M.2 HAT or adapter).
  • Connectivity:
    • Gigabit Ethernet (supports PoE+ with separate PoE+ HAT)
    • Dual-band 802.11ac Wi-Fi
    • Bluetooth 5.0 / Bluetooth Low Energy (BLE)
    • 2 x USB 3.0 ports supporting simultaneous 5Gbps operation
    • 2 x USB 2.0 5 ports
    • 2 x micro-HDMI ports supporting resolutions up to 4kp60 with HDR support
    • 2 x 4-lane MIPI camera/display transceivers
    • standard 40-pin GPIO header
Wi-Fi adapter1Alfa AWUS036ACS: USB 2.0 Wi-Fi adapter (Realtek RTL8811AU). Dual-band 802.11ac (AC600: 150 Mbps 2.4GHz + 433 Mbps 5GHz).
Antenna1Dual-band (2.4 GHz / 5 GHz) placed on the top of the robot.
Front camera1Arducam 12.3MP 477M HQ Camera Module for Raspberry Pi with 158Β°(D) M12 Wide Angle Lens.
DC motors4BΓΌhler Motors 1.61.077.414 connected to LeoCore.

Block diagram​

Buhler DC motor A
+ encoder
Buhler DC motor A...
Buhler DC motor B
+ encoder
Buhler DC motor B...
Buhler DC motor C
+ encoder
Buhler DC motor C...
Buhler DC motor D
+ encoder
Buhler DC motor D...
12V battery
+
status LED
12V battery...
UARTLEDPWR+PWR-
LeoCore
controller
LeoCore...
USBUSBCSI
Raspberry Pi 5
Raspberry Pi 5
Arducam 12.3MP 477M camera
Arducam 12.3MP 477M...
u.FL
Alfa AWUS036ACS
wi-fi adapter
Alfa AWUS036ACS...
External
USB-C socket
External...
External
antenna
External...

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.

LeoCore controller

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.

PortFunctionality
Power inputto power the board
RPi portto power and RPi serial communication
LED outputto 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 portused 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:

ParameterValue
Tire size (diameter x thickness)β‰ˆ\approx 125 mm x β‰ˆ\approx 70 mm
Tire lock typenon beadlock
Tire insertsoft foam (non pneumatic)
Wheel rim diameter98 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:

ParameterValue
Voltage11.1 V (nominal)
Battery typeLi-Ion
Battery cell18650 (Samsung INR18650-35E)
Capacity7 Ah (77,7 Wh - flight safe)
Battery pack type3S2P
Maximum output powerβ‰ˆ\approx 120 W
Safety systemsOvercurrent, 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 nameCable color
DC-black
DC+red / black with white stripe
LEDgreen
2
2
3
3
1
1
LED signal
LED signal
DC -
DC -
DC +
DC +

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.

ParameterValue
Voltage12.6 V
Current2 A (max)
Charger typeLi-Ion
Charger plugDC 5.5/2.1 mm (center positive)
Charger adapterWeipu 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:

πŸ“„Getting started
Leo Rover Setup: Quick guide on connecting, operating, and charging Leo Rover for optimal performance and longevity.

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.

ParameterValue
Payload capacityβ‰ˆ\approx 5 kg
Hole grid spacing18 mm x 15 mm
Mounting hole dimensions7 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.

00188 MEB cover for Leo Rover
Powerbox
The Powerbox module significantly enhances Leo Rover's capabilities by providing versatile power options and enabling continuous operation through battery hot-swaps and external power access.

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.
Overview of Leo Rover's software components
Overview of the software components
Overview of Leo Rover's software components
Overview of the software components

ROS nodes​

ROS NodeDescription
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:

  • State of the dynamic joints controlled by LeoCore.
  • Data retrieved from the onboard IMU sensor.
  • Battery voltage.
  • Computed odometry.
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:

  • Fixed joints, like sensor positions, are published as static transforms.
  • Movable joints, such as wheel states, are published as dynamic transforms, based on the current joint states published by the Firmware Node.

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:

  • Color image.
  • Monochrome image.
  • Rectified images in color and monochrome.

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:

  • Combines accelerometer and gyroscope data to estimate orientation.
  • Computes roll, pitch, and yaw (RPY) angles.
  • Automatically adjusts gyroscope bias when it detects steady state (no movement) of the rover.

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.

Simplified graph of core ROS nodes running on Leo Rover
Simplified graph of core ROS nodes running on Leo Rover
Simplified graph of core ROS nodes running on Leo Rover
Simplified graph of core ROS nodes running on Leo Rover
note

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.
info

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