Hardware and Software Solutions in SMP’s Mobile Robots

Mobile Robot Motion Control System Software

ROVER series mobile robots work under the control of a RedCore software engine. Software solutions are implemented in six embedded computers running in Linux OS. Movement control is implemented on the 7th computer, based on a signal processor that works in real-time mode without any operating system.

Robot Stereo Vision navigation module

arrow_left

Hardware and Software Solutions Perform Multiple Functions

  • Stereo vision module calculates a dense disparity map and filters it to eliminate inaccurate correspondences.
  • Visual navigation module determines the current position and orientation of robot while analyzing and comparing current images with data obtained during the training drive.
  • Onboard computer calculates a local map and possible drive-ways. It processes data received from the stereo vision module, IMU (Inertial Measurement Unit), and a mechanical odometer to generate a 3D map of the local area. It also analyzes images of underlying terrain and performs its segmentation with classification to find its optimal trajectory.
  • Navigation module calculates the robot’s position and associates it with its digital map, taking into account all available sources of information. It prepares data for the operator’s interface on a remote tablet PC. In addition, this module collects and saves logs from all onboard computers and periodically tests all of the robot’s electronic systems.
Robot embedded computers with Inertial Messurment Unit module

arrow_left

Robot Navigation System

All embedded computers are interconnected by Ethernet networking and can be accessed outside using WiFi. The following software development frameworks and technologies are actively used: OpenCL, OpenMP, and Qt.

  • IMU (Inertial Measurement Unit) module deploys micro-mechanical gyroscopes and accelerometers. It automatically determines course, roll, and pitch angles of robot’s chassis. Embedded software running under control of FreeRTOS resolves the problem of inertial navigation with strict-time reference. In the background, it adjusts the drift of MEMS sensors. Algorithms processing raw data obtained from acceleration and angular rate sensors are based on a Kalman filter.
  • Adaptive motion control subsystem performs synthesis of motion trajectory. Combining data from mechanical odometers on wheels and IMU sensors, the multi-core computer sets and tracks a motion path while giving commands to low-level motor controllers. This subsystem adjusts control actions according to the robot’s current maneuver, speed, and wheels’ adhesion, and it also stops mobile robot in emergency situations.

Basic software configuration is enough for unimpaired operation of the mobile robot. However, there are plenty of software application peculiarities that present opportunities for research and optimization, along with opening possibilities of creating new modules.

Robot API

arrow_left

Robotic Application Programming Interface (API)

SMP Robotics Company welcomes software enhancements made by developers of dealer-companies and by other partners that have access to our ROVER series mobile robots.

The company issued and supports API at three levels.

  • Low-level difficult route programming that is not accessible via operator’s interface on tablet PC. Additional devices could be connected through Ethernet, CAN, or RS-485. Data exchange between new devices and built-in computers is compiled according to agreed protocol.
  • Separate Linux processing level for modification of existing software modules in order to meet requirements of particular applications and service conditions. Programing, implementing new additional features runs on one of robot’s computers, and exchanging data with other processes using standard Linux mechanisms according to agreed protocols is considered.
  • Loaded-library level for the creation of personal software modules to extend the robot’s skills. Code implementing additional features is compiled into a Linux library and runs within one of the processes on its corresponding embedded computer.