Construction and steering of a two-wheeled balancing robot

Krzysztof Lorenc, Adam Białkowski, Jan Awrejcewicz

Faculty of Mechanics, Lodz University of Technology

Abstract: Our aim is the construction and steering of a two-wheeled balancing robot. It is a mechatronic device, combining mechanical construction with electronic elements such as sensors and motor drives, as well as control with steering and programming. The robot uses readings from both analog gyroscope and digital accelerometer to compute its current angle position and maintain the upward position. Standard DC gear motors with plastic model wheels are used to move the body on a flat and non-slippery surface. Independent power supply in form of batteries has been mounted. The robot uses a PID regulator to control the signal for drives in order to smooth the movement and minimize the overshooting. PID parameters can be adjusted both in physical (using potentiometers) and software-wise manner. Board on the robot communicates wirelessly with a computer. Obtained data is sent to LabVIEW, so it can be easily plotted in real time to show various dynamic values such as motors PWM signal, computed angle or angular velocity of wheels. The connection to computer also allows steering the robot and commanding different routes. Dedicated controls can be used to tweak PID parameters and analyze their influence on robots stability.

Keywords: balancing robot, inverted pendulum

1. Introduction

The construction of a two-wheeled balancing robot is a very interesting sample of a mechatronic device. It consists of all basic elements that are considered as necessary to call it as a mechatronic project. There is mechanical design, which deals with the body of the robot and drives with attached wheels. Electrical design covers power supply, H-bridges, microprocessor and others. There is steering enabling the whole body to stand in upright position, and of course programming to read data from sensors and process them in a proper manner. All of topics mentioned above can be easily developed in future, thus allowing further studies and improvements.

2. Mechanical design

For balancing, the robot acts as an inverted pendulum and maintains its balance with the help of the wheels attached directly to the engines. We used a combination of off-the-shelf and special order parts to construct the robot. The frame of the robot was created by exploiting the aluminum profiles. It has the form of cuboid, which ensures adequate rigidity and ease of mounting of necessary measuring elements.

The robot has two DC (direct current) motors with supply voltage of 6 volts and maximum load of current of 1.6 A. In order to reduce the very high rotational speed of the engines, we equipped them with mechanical transmissions. These engines are powered by separate batteries Li-Pol 1800 mAh each. They were attached to the frame with metal handles which had rubber elements. Rubber grips act to suppress vibrations during engine operations and provide adequate attachment to prevent uncontrolled movement of the drives. Directional control of motors is provided by two H-bridges with increased current efficiency. This has been done by connecting appropriate output pins in accordance with catalog data provided by the manufacturer [1]. The wiring diagram is shown in fig. 1 and table 1.

Fig. 1. Pin connection diagram – current efficiency increase of H-bridge [1]
Rys. 1. Schemat połączenie pinów mostka H w celu zwiększenia wydajności prądowej [1]

Tab. 1. H-bridge pin connection
Tab. 1. Mostek H – połączenie pinów

Pin number

Connection

2 – 14

OUTPUT 1 – OUTPUT 4

3 – 13

OUTPUT 2 – OUTPUT 3

5 – 12

INPUT 1 – INPUT 4

6 – 11

ENABLE A – ENABLE B

7 – 10

INPUT 2 – INPUT 3

The most important element of the robot is board Arduino Mega 1280 where the microcontroller Atmega1280 is placed. The board is powered by a third Li-Pol battery connected in place of an external power supply. Built-in stabilizers ensure the availability of the most basic and desired voltages of 5 V and 3.3 V. Information on the current position of the robot is collected from sensors and can be displayed on a computer screen thanks to a module FT232 RL
built into the board and a USB cable connected to the computer. In addition, for construction purposes, a PCB (Printed Circuit Board) was designed and created. Two H-bridges and gyroscope have been placed on the PCB.
All the major pins of these components were placed on PCB for easy connection. In addition, there are pins supporting the accelerometer that are used for transmission and reception of both data and power. Information about the angular position of the robot is supplied by accelerometer ADLX345 from Analog Devices. This is a digital three-axis module. The robot was used for sensitivity of ±2g.

Fig. 2. Allocation of an angle composition of vector R (gravitational acceleration)
Rys. 2. Rozkład wektora przyspieszenia grawitacyjnego R na składowe Rx, Ry i Rz

Accelerometer allows measurement of the static acceleration – gravitational and dynamic – as well as the instantaneous accelerations occurring during engine operations. This accelerometer that measures the acceleration of gravity vector R due to proper scaling in the output gives signals that are components of Rx, Ry, Rz of given vector R to relevant x, y, z axes.

Moreover, thanks to information obtained about the components of vector R, by using simple mathematical equations we have the ability to accurately determine the angular position of the robot relevant to the desired axis.

The equations follow:

(1)

Fig. 3. Wiring diagram of accelerometer via I2C [2]
Rys. 3. Diagram podłączenia akcelerometru przez magistralę I2C [2]

The accelerator is powered by a voltage of 3.3 V. The sensor is highly sensitive to interference and that is why it is necessary to use appropriate filtering and a stable supply voltage. The information from the sensors are transmitted to the controller via the I2C Accelerometer pins SDA and SCL must be connected via external resistors R10K aka “pull up” [2].

The robot is also equipped with a gyroscope, by means of which we can determine the rotational speed of the whole structure. This gyroscope is an analog biaxial module LP550AL made by STMicroelectronics [3]. The measurement takes place relative to the x axis with a sensitivity of ±500 degrees/s at a four-enhancing signal. Just like the accelerometer this module is supplied by a voltage of 3.3 V.

2.1. Sensors

The robot uses two sensors – analog gyroscope and digital accelerometer. The gyroscope outputs analog signal, which represents separately angular accelerations in every axis (that is X, Y and Z axis). This signal is converted from analog form to digital form using ADC built in the Arduino. Its resolution is 10-bit and results in 1024 possible readings. Accelerometer readings on the other hand are used to calculate current angular position of the robot with use of common atan2 function. The signal from it is already transmitted in digital form, so there is no need for conversion. For practical use only one of the readings from gyroscope is needed (angular acceleration on X-axis) and two readings from accelerometer (X and Y axis).

2.2. Drives control

Two drives are controlled with help of dual H-bridges (coupled together to withstand higher current). H-bridge is supplied with PWM (Pulse-Width Modulation) signal produced on Arduino. PWM simulates analog signal with use of digital outputted values form range 0 to 255. The higher the values, the more power drives receive form H-bridge. During tests there has been noticeable level-value, from which the drives would start to operate (PWM at the level of around 100). Presumably it is an effected by poor quality of used drives and gearboxes [4].

3. Programming platform

This balancing robot uses Arduino platform and benefits from all of its advantages. The Arduino language originates from Wire language and is in fact based on C/C++ languages, which makes it easy to use and learn, but it is also powerful and universal. Many already prepared libraries are available, resulting in quick implementation and enabling focusing on the main matter of the project without dwelling into too many details. In the same time, it leaves the opportunity to improve the code with basic C commands.

4. PID regulation and signal filtering

To help with continuous keeping upward position a PID regulator has been implemented. The difference between desired position, which was 0 degrees from vertical axis laid through the center of the robot and its actual position calculated from accelerometer readings, is an error used by PID components. The proportional element produces the output proportionally to the error and alone is not sufficient to successfully balance around 0 point. The robot oscillates from one side to another, immediately falling down. It has to be supported with derivative term functioning as a damper. Derivative term reacts to sudden changes and corrects the output. Integral term sums series of last errors and also influences the output. This output is being represented as PWM value and sent to H-bridges mentioned above.

The signal from accelerometer is distorted by vibrations of the body and rapid changes of directions caused by drives. It results in noise in readings, which has negative influence on angle calculation and of course balancing of the robot. It has been compensated with implementation of the Kalman filter. It is a widely used and admired tool and it possesses a very good effect on maintain stability of the robot [5].

One way easily recognize advantages of the applied Kalman filter comparing with the signals obtained with the Kalman filter (fig. 4), without the Kalman filter (fig. 5), as well as the signal obtained from the gyroscope (fig. 6).

Fig. 4. Signal with Kalman Filter
Rys. 4. Sygnał po przejściu przez filtr Kalmana

Fig. 5. Signal without using Kalman Filter
Rys. 5. Sygnał bez użycia filtra Kalmana

Fig. 6. Signal from the gyroscope
Rys. 6. Sygnał z żyroskopu

5. Communication with LabVIEW

Arduino board communicates with LabVIEW via standard USB cable. Basic variables used in the code can be presented (plotted) on-screen in real time. The data is sent using serial.write() command in form of packets of bytes. It is superior to serial.print, as it doesn’t clog the buffer and therefore doesn’t cause delays. On the LabVIEW side the code has been prepared on basis of LIFA (LabVIEW Interface for Arduino). It supports user with ready to use VI’s, with help of which communication can be implemented with little effort. Sending variables form Labview to Arduino board, like PID parameters, is also possible and enables fluent and dynamic regulation.

6. Conclusion

This article presents the results of research aimed on the development of two-wheel balancing robot prototype. All components of the robot and the impact of certain elements on the stability of the structure have been presented. Some of them, such as the appropriate choice of parameters of PID regulators, are essential elements for the stability of the whole structure and that is the correct settings are an important element in the design. The use of the control program filter made by Kalman significantly improves the timing of information obtained by the sensors and enables the realization of synchronous stability by the engines. This allows the robot to maintain balance in spite of external disturbances affecting both the sensors and the entire structure. The created robot represents one of the solutions that can be applied by combining the mechanical structure of the inverted pendulum with control elements in order to study the influence of the many parameters affecting the model.

Bibliography

1. Dual full-bridge driver, STMicroelectronics, L298 Data Sheet, January 2000.

2. Digital Accelerometer, Analog Devices, ADXL345 Data Sheet Rev C, 05/2011.

3. MEMS motion sensor dual axis pitch and yaw ±500°/s analog gyroscope, STMicroelectronics, LPY550AL Data Sheet Doc ID 15808 Rev 1, June 2009.

4. [http://arduino.cc/it/Tutorial/PWM], Hirzel T., Arduino – PWM.

5. Kędzierski J., Kalman filter used in a simple sensory system, 2007, (in Polish).

Budowa i sterowanie dwukołowego robota balansującego

Streszczenie: Naszym celem było zaprojektowanie i wykonanie dwukołowego robota balansującego razem z systemem sterowania. Jest to urządzenie mechatroniczne łączące w sobie elementy mechaniczne, elektryczne oraz elektroniczne, takie jak silniki, akumulatory, czujniki. Robot wykorzystuje odczyty z dwóch sensorów, analogowego żyroskopu oraz cyfrowego akcelerometru do wyznaczenia swojego położenia kątowego i utrzymania równowagi w pozycji pionowej. Dwa silniki prądu stałego z zamocowanymi przekładniami i kołami służą do poruszania całą konstrukcją robota po płaskich powierzchniach. Robot zasilany jest z niezależnego źródła energii w postaci trzech akumulatorów. System stabilizacji wykorzystuje regulator PID do kontroli ruchu w celu minimalizacji odchylenia od zadanej pozycji pionowej. Robot komunikuje się w sposób bezprzewodowy z komputerem, przesyłając informacje o aktualnej pozycji kątowej do programu LabVIEW. W programie tym informacje z czujników mogą być wyświetlone w czasie rzeczywistym na wykresie w celu zobrazowania dynamicznych zmian aktualnych wartości sygnałów przyspieszenia kół, prędkości kątowej czy obliczonego kąta położenia robota. Dodatkowe oprogramowanie służy do doboru parametrów PID oraz umożliwia analizę wpływu dobory parametrów regulatora na stabilność całej konstrukcji robota.

Słowa kluczowe: robot balansujący, odwrócone wahadło

Krzysztof Lorenc, Eng.

A graduate of the Faculty of Mechanical Engineering Mechatronics Technical University of Lodz. Interests associated with automation, robotics and mechanics.

e-mail: krzysiek.lorenc1@gmail.com

Adam Białkowski, Eng.

A graduate of the Faculty of Mechanical Engineering Mechatronics Technical University of Lodz. Passionate about new technologies and solutions, and in particular those deriving from various, seemingly unrelated to each other technological areas.

e-mail: adamblodz@gmail.com

Prof. Jan Awrejcewicz, DSc, PhD

He was born in Telesze, Poland on August 26, 1952. He received the MSc and PhD degrees in the field of Mechanics from the Technical University of Lodz in 1977 and 1981, respectively. He received also his bachelor’s degree in Philosophy in 1978 from the University of Lodz, and DSc. degree in Mechanics from Technical University of Lodz in 1990. He is an author or co-author of 538 publications in scientific journals and conference proceedings, monographs (37), text books (2), edited volumes (4), conference proceedings (11), journal special issues (12), and other books (8) and other short communications and unpublished reports (238). He is now the Head of Department of Automatics and Biomechanics, and the Head of PhD School on ‘Mechanics’ associated with the Faculty of Mechanical Engineering of the Technical University of Lodz. In 1994 he earned the title of Professor from the President of Poland, Lech Wałęsa, and in 1996 he obtained the golden cross of merit from the next President of Poland, Aleksander Kwaśniewski. He is a contributor to 50 different research journals and to 300 conferences. During his scientific travel he visited 60 different countries. His papers and research cover various disciplines of mathematics, mechanics, biomechanics, automatics, physics and computer oriented sciences.

e-mail: awrejcew@p.lodz.pl