Four wheeled mobile robot with Raspberry Pi
The wheeled mobile robot was made as my engineer project in 2013. The main reason why I build this platform was need to do tests of localization algorithms. The mobile platform can be used mainly in inspection tasks like a monitoring of some area. However, advanced sensory system of robot provides a significant universality. Moreover, robot equipped with a manipulator can be used to manipulation or transport with load and unload.
Considerations concerning the project:
- Four wheeled construction and every wheel driven independly
- Change direction of move by different side speeds of wheels, similary like in a tanks.
- Construction elements with aluminum.
- Bearing wheels axes.
- Low located center of gravity of mobile platform.
- To allows to easy develop of project it should have components structure. The main modules should be following:
- power supply module,
- motors control module,
- sensor module,
- higher level control unit.
- Modules communicate by I2C interface.
- Each wheel has corresponding magnetic incremental encoder.
- Platform equipped with inertial sensors.
- Raspberry Pi B with Raspbian system as a higher level control unit..
- Communication with robot by Wi-Fi network.
A range of the robot depends mainly on the accumulators and implemented solutions for energy save. Initially it is assumed that robot can operate on area less than 0.5 hectare. Additionaly, robot can be load with 3 kg and a curb weight should be about 3.5 kg. Used drives should provide speeds about 0.9 m/s on the flat ground.
The mechanical system has been designed in student version of Autodesk Inventor 2013. The main design criterion was to obtain a compact, reliable and robust construction.
A robot case
The robot case was made of aluminum profiles (EN AW-6060). A floor plate was cut from aluminum sheet having a thickness of 2 mm. Inside of the robot were placed two protected chambers for batteries made of aluminum profiles 30x50x2.5. The main purpose of chamber application is protection main robot modules against unstable lithium-polymer batteries (somtimes may be burn).
As robot drives were used brushed DC motors Pololu 37D with hears 67:1 without integrated encoders. The motors have torque about 1.4 Nm and nominal rotational speed equal to 150 RPM and it consumes about 0.3 A without load. The stall current is similar to 5 A for every motor. The described parameters can be received with 12 V power supply. It was estimated that robot with such drives may enter the hill with a slope about 45 o.
It was used Mobot MBW-120/55/4 wheels, which have hubs of plastic and rubber tread. Outside diameter of wheel is 120 mm and inner diameter is about 55 mm. Wheels can be used even on rugged terrain.
The power transmission was realized with a designed axle mounted to wheel on one side and to motor shaft on the other side. Every wheel has corresponding bearing. Bearing seats were placed outside of the robot
body and were used 61901 2RS (12x24x6 mm) bearings.
Power supply system
To supply robot components like a control modules or motors two lithium-polymer (li-poly) batteries were used (each has three cells). That kind of batteries have a very high discharge currents. The acceptable level of voltage is between 9.3 V and 12.6 V.
Power supply module
The robot is equipped with dedicated power supply unit. It supplies other components of robot and protects batteries. The impulse inverters were used to provide 5 V and 3.3 V for robot modules. Moreover, the power supply module has auxiliary power line for stand by mode and batteries charging monitoring. This line uses linear stabilizator.
A hardware architecture of robot was designed to allows implement localization methods and other methods which will be developed in future. The robot hardware consists of three parts:
- sensors module,
- motors control module,
- higher level control unit – Raspberry Pi.
Additionaly, it was used encoders modules and distance sensors directly connected with main module.
The idea behind the system is that the computer gains information about robot state and environment using connected modules with sensors. The main unit process data and is responsible for localization and decision processes. Moreover, it controls robot drives through motors module. The platform computer is connected with ground station by Wi-Fi. On the ground station is running user application where user can control robot and supervise it work.
Motors control module
To control motors was designed dedicated hardware module. The motors control module supports four DC motors and four incremental encoders with quadrupe outputs. The module will be described more precisely in other note.
To provide robot informations about it’s state and enviroment state was designed sensors module. It retrieves data from sensors like a accelerometers, gyroscopes, compasses, distance sensors and GPS module. Then it sends it to the host computer.
Raspberry Pi – a higher level control unit
As a higher level control unit it was used Raspberry Pi B minicomputer. It is cheap and sufficient to that purposes. Moreover, Raspberry Pi has a very large community what is helpful in development process. Features of Raspberry Pi:
- processor ARM1176JZF-S, 700 MHz,
- 512 MB RAM,
- 8 General Purposes Input Output (GPIO),
- 2x USB 2.0, Ethernet, UART, I2C, SPI, audio (mini jack, HDMI), video (RCA, HDMI)
- input for SD memory card.
- power consumption about 700mA with 5V,
- size 85.6 mm na 54 mm, weight about 45 g.
On the computer is running Raspbian system what mean Debian version optimized to RPi platform. Software of robot was written in C and C++. Moreover, for computer configuration was used bash scripts.
Communication between modules
All robot modules communicates with I2C interface. The Raspberry Pi is the master device and others are slaves.
Communication with user work station
Communication with user station was realized with wireless network card TP-Link WN725N because for this card are available drivers . As a user computer it was used notebook with a Windows 7 system. It was created hot-spot on the computer with tool netsh . The initialization of connection process needs a two steps. The first one is set the parameters of connection with following commands:
netsh wlan set hostednetwork mode=allow “ssid=robot” “key=hasło” keyUsage=persistent
Next the connection should be establish.
netsh wlan start hostednetwork
After that, the robot can connect to Raspberry Pi for example by SSH (Secure Shell) protocol.
- Michał Drwięga. Application of sensor fusion to wheeled robot localization. Engineering work, Wrocław University of Technology, Wrocław, 2013