The robot Leona is designed to hold electronic devices such as iPads and phones for its users. Its aim is to free people's hands even when one is moving around.
I got the idea of its function for I need to use electronic devices even when I have no spare hands. For example, I need to look through the recipe on devices from time to time when I am cooking. I also need to walk around the kitchen with my wet hands.
The robot is driven by Raspberry Pi and Arduino. Its shell is made of acrylic boards. The use of mecanum wheels enables it to move in all directions. It used a camera to detect the position of the user.
I started to realise my idea of the robot in early August, 2017.
Before that, I had very little knowledge and experience about coding and robotics.
Python and Arduino
Since I did not know anything about robotics before this project, I needed to acquire coding skills. I did this by attending Python courses. I also learned how to use Arduino and did a bit coding with it, since it is a crucial component in controlling the robot.
From initial to latest
My initial design was quite different from my final outcome. It was my initial idea to cover all the wires and components, and the robot was designed to be around 1.5m tall. I first used a illustrator to imitate the design. For the final outcome, I laser cut black acrylic boards and used them for the outer shell of the robot, considering their density and appearance. I also acquired CAD skills to design some special components and 3D printed them to fit the robot.
OpenCV on Python and testing the code
My partner did most of the software part of the robot. We used openCV on Python to detect human faces and follow it. After the code was mostly finished, I made a small robot to test the code. This was a robot that only had the electric components and a board made of wood.
Centre of mass, motors and wheels
My work was mainly the hardware part of the robot, and problems did come up frequently.. Since the height of the robot, the centre of mass of the robot was relatively high. Therefore, there was a great chance for the robot to tilt when its acceleration was high. There could also be risks of falling. To solve this problem, I put all the electric components on the bottom of the robot. Also, the thickness of the shell of the bottom part of the robot was increased. The robot does not tilt as much now. Another major problem occurred on the motors and the wheels for not being powerful enough. They were then changed.
The main adjustments I did on the code was the speed and angle changes when the robot was on. The tilt of the robot was reduced after changing the speed of the robot on Python.
The detection of user is not quick enough. The robot easily lose sight of the user when the user's face is moving upward or downward. Adding another camera above the initial one may solve the problem. Mapping may also be added into system in order to let the robot follow the user more fluently. The robot still tilt a bit when it is accelerating. This problem needs to be solved.
SPECIAL THANKS TO
Frank Zheng Xu
Undergraduate Year 1
Frank's work mainly focused on the software part of the robot.
ZZ helped a lot in all ways. From material collecting to demonstration shooting.