This study represents work in progress towards a complete system of a humanoid robot. With this aim, the system must be capable to interact with a human, Give response to the question, do gestures, assist with finding an information, remember different types of thing, find internet data regarding to the users query, find errors in its system and save a log file in order to further development and debug, autonomous servo control with the help of PID (proportional-integral-derivative) controlling. Open CV, Servo Control (Head) the system integrates with facial and object recognition to achieve its objectives based on PID quality, among other advanced capabilities derived from Open CV (camera). Details of the implementation of the currently developed system will be displayed. Towards the end, after success in the preliminary results obtained on our campus, we are encouraged to do so in order to obtain a complete prototype.
This is basically a Humanoid Robot Project and entitled as ‘Development of a humanoid robot system. This project can be categorized as ‘Upper Torso Humanoid. The head goal of the project is to create a skilled and movable body using different kind of motors and make a software system that will operate the robot motors and other components of the robot and there are also development arrange-ments. The robot is controlled help Arduino micro-controllers those are connected to the computer using USB cable (Lentin Joseph, 2015).
Our project use MyRobotLab software for control. MyRobotLab is an open sources service based robotics framework. It is primarily written in Java, but has bindings for Python. It has web UI written in AngularJS which allows remote control (My-Robot-Lab video, 2019; MyRobotLab CookBook borg, 2019). The term humanoid comes from English word “Human” and “oid” and the oid means something and resembles in the outer form but actually not the same. So in this sense, a humanoid is something that looks like a human but not a human. The first recorded use of the term in 1870 was to refer to the aborigines in the European colonies. In the twentieth century, the term describes fossils resembling human skeletons that are similar in morphology, but not identical (Humanoid Robot, 2019).
A robot is a machine, especially programmable by a computer that is capable of automatically performing a complex series of actions. A robot can be operated by an external control device or embedded in the control. Robots can be built on the basis of human appearance, but most robots are machines that are designed to perform any task related to their aesthetics. Robots can be autonomous or semi-auto-nomous and can range from humanoids to industrial robots, medical operating robots, patient support robots, dog therapy robots, co-programmed Swarm robots, UAV drones and even microscopic Nano robots (Humanoid Robot, 2019).
A humanoid robot is a robot based on the general structure of a human, such as a robot that walks on two legs and has an upper torso, or a robot that has two arms, two legs and a head. A humanoid robot certainly doesnt look like a real person, The ASIMO humanoid robot, for example, has a helmet instead of a facial sub-section. An Android (male) or Gynoid (female) is a humanoid robot designed to look as real as possible, although these words often seem to be synonymous with humanoid. While there are many humanoid robots in fiction, some real humanoid robots have been built since the 1990s, and some real human-looking Android robots have been developed since 2002. Like robots, virtual avatars can be called humanoid when they resemble humans (Mamun et al., 2020).
Review of Literature
An autonomous human-like robot that is able to adapt to changes in its environment and continues to reach its goals is considered a humanoid robot. These features set Android apart from other types of robots. There has been a lot of progress in the development of humanoid in recent years and there are still many opportunities in this field. Several research groups are trying to design and develop various platforms for humanoid based on mechanical and biological concepts. Many researchers focus on the designing of lower torso to make the Robot navigating as like as a normal human being do. Incorporating the west, buttocks, knees, ankles and lower legs is a more complex and more challenging task. High torso design is complex but interesting work which includes arm and neck design. Walking guide analysis, optimal control of multiple motors or other actors, degree of freedom control (DOF), adaptability control, and intelligence are also chal-lenging tasks to treat humanoids as human (Humanoid Robot, 2019).
Leonardo da Vinci drew a humanoid process in 1495, considered the first man. It was designed for sitting, for arms, for moving the head, and for closing the jaw. The 18th century can be considered as a fertile time for the development of May autonomies that were able to reproduce some human movements. In 1773, Pierre and Henry Louis invented the first automation that was able to write. The mechanical trumpet was made by Friedrich Kaufmann 1810. The trumpeter has a marked drum that was used to activate some valves that helped air flow in twelve languages.
The period of construction and development of the humanoid began in the 19th century when John Brainard discovered the steam man in when 1865. It was moved by the steam engine and used to pull the cart. The Electric Man was created by Frank Red Jr. in 1885, which was a more or less electronic version of the Steam Man. A prototype soldier named Boiler-plate was built in 1893 by Dr. Achibald Campion. An evolutionary number of humanoid systems appeared in the 20th century. At the turn of the century, the Westinghouse Society developed a humanoid robot called LEEACTRO in 1938, which was able to move, talk and smoke.
From the 1960s to the 1990s, a wide variety of legged robot platforms began to appear in the United States, Russia, France, and especially Japan. A great job was done with the jumping robot at the Mass-achusetts Institute of Technology (MIT) in the 1980s. The bipod planar, Spring Flamingo, Spring Turkey, Uniru and the 3D bipad were built at MIT, which excels in walking in a dynamic and stable way (Akhtaruzzaman and Shafie, 2010).
1. Hardware
In this study project we have used various types of hardware components for different purposes. In the box below:
Arduino
Arduino is an open-source hardware and software company, project and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its products are licensed under the GNU Laser General Public License (LGPL) or the GNU General Public License (GPL), which allows the production and distribution of Arduino Board software by anyone.
I used as medium of communication from the computer in the robot to different servo. Arduino flashed first with the MRLcom code that can be found in MRLs (My Robot Lab) resource folder. After Flashing with the code, now the arduino is ready to communicate with the computer using a USB port (MRLComm to the Arduino, 2019). Use Arduino AT MEGA 2560 is given below:
Table 1: Specification of the Arduino AT MEGA 2560
Servo Motor
A servomotor is a rotating activator or linear activator that allows precise control of angular or linear position, speed and acceleration. It has suitable motors for sensor or position response. This requires a relatively sophisticated controller, a dedicated module designed specifically for use with most servomotors. Servomotor not a specific class of motors, basically the term servomotor is often used to refer to a motor for a closed loop control system. Servomotors are used in applications such as robotics, CNC machinery or automotive manufacturing. Servo-motors are commonly used as a high-efficiency alternative to stepper motors. Steeper motors have some innate ability to control position, as they have internal output steps. This allows the encoder to be used as an open-loop position control without any feedback, as their drive signal deter-mines the number of movement steps. However, this requires the controller to know the location of the stepper motor.
Fig 2: A servo motor.
So, after the first power-up, the controller needs to activate the stepper motor and turn it to a familiar position, such as, e.g. until it activates the limit switch. This can be noticed when switching to an inkjet printer; the controller ink will move the jet carrier to the extreme left and right to establish the end positions. Regardless of the initial position of a servomotor power-up, the angle at which the controller points it will be turned on immediately (Akhtaruzzaman and Shafie, 2010). We were used kind of 2 servo motors this project (MG-996R DIGI HI TORQUE & MG90s Micro Servo), MG-996R in Head X, Head Y, Omoplate, Shoulder, Arm, Wrist and MG90s in the Thumb, Index Finder, Middle Finger, Ring & Pinky Finger. Use MG996R and MG90s Micro Servo is given below:
Table 2: Features and Specification of the MG996R
LED Dot Matrix
A LED dot-matrix is an electronic digital display device that displays information from machines, clocks and watches, public transport departure indicators, and many other devices needed to display a simple alphabet (and / or graphic) of limited resolution. The display has an LED dot matrix equipped with a rectangular configuration (other sizes are possible, though not common) For example, text or graphics may be displayed by turning on or off the selected lights.
Table 3: Features and Specification of the MG90s Micro Servo
The dot matrix converts the instructions of the controller processor into signals, which turns on or off the index elements of the matrix to produce the required display. This project we will use LED 8x8 dot matrix which includes a total of 64 LED (Cheng, 2016).
Table 4: General Features of the MG90s Micro Servo
Fig 3: A 8x8 LED dot matrix display.
Other Hardware components
Among the hardware components I have discussed above there are some more hardware components we need as well.
2. Software: Different softwares are used in this study. The list of required software is below:
Table 5: List of required software
Myrobotlab - Myrobotlab is an open source Java service based framework for robotics and creative machine control. Myrobotlab runs on the Java Run-time Environment 8 (or above) JVM, so any computer or device which supports this JVM conceptually could run Myrobotlab. Many of MyRobot-Lab Services will run on Androids Dalvik JVM. The services myrobotlab include machine vision from Javacv/Opencv, speech recognition from Sphinx 4, text to speech from Free TTS, Motor control, Servo control, GUI control and microcontroller communication. Third party services are wrapped in Myrobotlab Service wrappers and add to the framework (MyRobotLab-Video, 2019; My-RobotLab CookBook borg, 2019).
Fig 4: Desktop interface of myrobotlab.
Starting MyRobotLab - Its pretty easy to start myrobotlab, just matter of following some specific things.
Required services of Myrobotlab - This project I have used several services from myrobotlab to run the robot. The types of required services for this project are given below:
Arduino Service - The Arduino service is uses by communicate and control the very popular Arduino microcontroller. MyRobotLab runs on a computer and controls the Arduino hardware through a serial port.Arduino sketch called MRLComm which loaded by Arduino. The latest can be available in this last page. This sketch allows commands from MyRobotLab will process on Arduino hardware, it also allows the Arduino is capability to send data back to MyRobotLab (MRL) (MRLComm to the Arduino, 2019).
Once MRL is connected by Arduino, it allows all other services to interact with Arduino.
Fig 5: Arduino service diagram.
With MRLs WebGUI service you can very quickly and easily setup a web interface for an Arduino.
AudioFile Service - This service can play different types of audio files. I use this service to play feedback output audio files from robots.
CLI service - CLI; command line interface service allows you to interact directly with MyRobotLab (MRL) when its started from an operating system shell (MRLComm to the Arduino, 2019).
For example; /runtime/start/python/Python will start a service named python of type Python.
ClockService - The watch can generate regular messages to engage other services.
HTML Filter Service - Htmlfilter is a service used by either strip out text or wrap the input text in html tags. For example, it uses the program to filter HTML code from AB before sending text to the speech synthesis service.
Local Speech Service - This text to speech synthesis service use local operating system text to speech engine. I have used this service for act as the voice of the robot and also installed Custom teen female voice from VE.
Log Service - Log is a helpful diagnostic service that knows how to connect itself to the user interface. It can display messages from other Servi-ces. It can also detect different types of errors and save the log in a text file so that developer can run further Bug fix and development process.
Open Weather Map Service - This service helps gather weathers current data as well as the prediction for MRL. This service I created an API token from the website for this project. API key will be found from this site: https://home.openweathermap.org/
PID Service - A PID service allows input-related tracking and output conversion. Tracking services are currently used as tracking strategies. Input is sent to PID, a "compute" method is sent and appropriate output is sent to a servo (PID Controller, 2019).
PIR Service - A passive infrared sensor (PIR sensor) is an electronic sensor that radiates infrared (IR) light from objects in its field of view. PIR-based speeds are often used in detectors. Arduino schema (We can also use another compatible controller).
Program AB Service - AIML is known as Artificial Intelligence Markup Language. Dr. Richard Wallace its created by to get the ALIAS bot. AIML is a repetitive language that allows breaking down natural language text input to match the feedback that the chatbot can send.
Servo Service - The Servo service is use to control servos through a micro-controller such that an Arduino or a Raspberry pi (Servo Controller). The service will allow control of device attachment or disconnection, control his position and the speed at which it move to that position, and turn off/on the servo.
servo.attach (controller, pin, pos, velocity): Primary servo device attachment with microcontroller servo.detach (controller): detach the servo from the microcontroller
servo.enable (): will turn the servo motor on
servo.disable (): will turn the servo motor off
servo.moveTo (pos): ask the servo to move to a position
servo.moveToBlocking (pos): Ask the servo to go to a location and wait for the location to arrive
servo.map (inputMin, inputMax, outputMin, outputMax): default to (0,180, 0, 180). Allow range maps in any valid output range to be understood by servo. The values of outputmin and outputmax must be into 0 and 180. Modular Block Diagram showing the differences of sweeping a Servo from MyRobotLab versus sweeping from the microcontroller (Arduino) (MRLCommtothe Arduino, 2019).
WebkitSpeechRecognition Service
WebkitSpeechRecognition - uses the speech recog-nition that is built into the chrome web browser. This service requires the webgui to be running on chrome web browser. We used this service for speech recognition.
Fig 6: Modular diagram for different sweeping of a servo.
WikiDataFeatcher Service
This service grabs data from wikis website (for now wikidata). Wikidata store data by entities with an ID. For example, Adam Sandler has the ID Q132952. Each entity contains several elements: To use wikiDataFetcher, we need an ID for the feature, but not for the label
Natural Language Processing
Natural language processing, usually abbreviated as NLP, A branch of artificial intelligence that uses computers and natural language to interact with humans. The ultimate goal of the NLP is to read, understand, comprehend and comprehend human languages in a valuable way (Ashish Singh Bhatia, 2018). By processing natural language a common conversation between humans and machines can go as follow:
Fig 7: Block model of NLP.
Use of Natural Language Processing
Natural Language Processing is the driving the following common applications:
Model of NLP project
The basic model of NLP we have use this project can be divided into 3 parts, here we have a figure for the illustration (Mike Barlow, 2016).
Fig 8: Elements of wikidata statement.
STT
We have used a Service from the framework called “WebkitSpeechRecognition” for Speech to Text conversion, this service requires the webgui to be running on chrome web browser. This service actually developed by Google and the service often called Web Speech (Mike Barlow, 2016).
AIML, or Artificial Intelligence Markup Language, is an XML dialect for creating natural language software agents. The XML dialect, called AIML, was developed between 1995 and 2002 by Richard Wallace and the global free software community. Initially, Eliza was referred to as "ALICEE." AIML formed the basis for naming ("Artificial Linguistic Internet Computer Entity"), which won the annual Labna Award for Artificial Intelligence three times and was also the Chatterbox Challenge Champion in 2004; because A.L.I.C.E.
Fig 9: An image of webkit speech recognition web interface.
AIML
The ANML set was published under the GNU GPL, and most AIML interpreters are offered under a free or open source license, many "Alicebot clones" have been created based on the original implementation of the program and its AIML knowledge. Free AIML sets have been developed and made available by the user community in several languages. AIML Interpreter in Java, Ruby, Python, C ++, C #, Pascal and other languages (Lentin Joseph, 2015; Shahriare Satu, 2015).
Elements of AIML
AIML contains a variety of elements. The most important of these are described in more detail below:
Fig 10: A typical TTS system.
Categories - In AIML the departments form the basic unit of knowledge. A section contains at least two more elements: pattern and template elements.
Patterns - A pattern is a string of characters that matches the inputs of one or more users.
Templates - A template specifies the response to a matched pattern. A template can be as simple as some literal text. Template elements include basic text formatting, conditional (if-then / otherwise) and random feedback. They can also redirect to other patterns using an element called SRAI (Symbolic Reduction in Artificial Intelligence). This can be used to implement synonymy.
Fig 11: Servo motor connection.
Processing - In the processing section we used a service called "Program AB" in process data from STT. STT Sends the data to Program AB service, Program AB contains a variety of pre added AIML files, including various sections, template, pattern, sets, etc. The program then matches the data by prioritizing the AIML files compiled by AB. Finally it gives sends the output to the TTS to be produced as a Voice.
TTS - For Text to Speech (TTS) we have used Local Speech Service, This text to speech synthesis service use local operating system text to speech engine. Speech synthesis is an artificial production of human. A computer system used for this purpose is called a speech computer or speech synthesizer, and can be applied to software or hardware products. A text-to-speech (TTS) system converts ordinary language text into sentences; other systems represent symbolic linguistics, such as phonetic transcriptions in speech. In our project we have used “American Noelle VE” Voice of a teen aged girl (Mike Barlow, 2016). A diagram of typical Text to Speech synthesis system is given below:
Servo Control
A servomotor is a rotary actuator or linear actuator that allows precise control of angular or linear position, speed and acceleration. It consists of a suitable motor attached to a sensor for position response. It requires a relatively sophisticated con-troller, a dedicated module designed specifically for use with almost all servomotors. To control the servo we add two service calls from the framework, "Arduino" and "Servo". The Arduino service has a servo motor connected to the Arduino. And the servo service is for sending signals to the servo using Arduino board. The figure below shows how the servo will be connected.
Performance Testing
Two types of tests are performed,
Hardware testing process can be divided into two type, Individual hardware testing and combined hardware testing. Individual testing includes individual tests of other parts of the robot, such as head test, mouth test, ear test, hand test, fingers test etc. and Combines testing includes all the parts testing in a body as well as program code to run those components.
Fig 12: Instruments to
design of the Humanoid Robot system.
Different Components used in this project:
This project was tested in all forms of hardware testing and we also have tested all the hardware in different Voltage, Ampere and Register value. And in software testing, this project was tested by giving different servo results the code to configure and calibrate the robot.
Fig 13: Structure of the Humanoid Robot (MIRAA).
Its an humanoid project where we have applied a variety of abilities such as listening, speaking back, asking questions, remembering different things, learning from questions, taking internet data and talking back, moving different parts of body, making different gestures, randomly. Move the body, blink of an eye, etc. Since this is a humanoid project, so we have applied some basic capabilities to the robot.
There are many more things to like in this project and we can add these things to our future projects. They are:
Thanks to the supervisor and Head of the department supported with proper assistance and help for analysis and writing to conduct successful research study. Special thanks to Vice-Chancellor of Gono Bishwabidyalay, Professor Dr. Laila Parveen Banu to help us Robot MIRAA exhibition.
The authors declare that they have no conflicts of interest in this research to publish it.
UniversePG does not own the copyrights to Supplemental Material that may be linked to, or accessed through, an article. The authors have granted UniversePG a non-exclusive, worldwide license to publish the Supplemental Material files. Please contact the corresponding author directly for reuse.
Academic Editor
Dr. Wiyanti Fransisca Simanullang, Assistant Professor, Department of Chemical Engineering, Universitas Katolik Widya Mandala Surabaya, East Java, Indonesia
Department of Computer Science and Engineering, Gono Bishwabidyalay, Savar, Dhaka-1344, Bangladesh
Akter M, Rahman M, Rifat M, Hasan M, Nahar S, and Hasan S. (2021). Development and design of a humanoid Robot system MIRAA: intelligent & autonomous mobile assistant, Aust. J. Eng. Innov. Technol., 3(1), 10-20. https://doi.org/10.34104/ajeit.021.01020