Close
0%
0%

Aina - Humanoid AI based social ROS robot

Aina is an open-source social robot that's able to speak and move with nearly no human intervention based in ROS that has AI inbuilt.

Similar projects worth following

Related links

https://github.com/magokeanu/aina_robot

https://hub.docker.com/repository/docker/magokeanu/aina_ros_jetson

------------------------------------------------------------------------------------------------------------------------------------------

Aina is a humanoid robot that has social capabilities based on a head with facial expressions and a conversational AI called RIVA, or at least that's the idea, this project is still under construction, but I'm going to explain to you why this is an interesting project.

Humanoid robots are fascinating because when are well done they are capable of communicating with people in a significant way, and that's the core of my project, I mean "effective social interaction", to achieve that I was working under the (now in term of design) the concept of modularity, this allows me to divide the robot among three mayor subsystems wich characteristic are/will be:

  • Head: this is part that enables the emotional side of the communication through facial expressions with the eyes and eyebrows (and sometimes the neck), no mouth is added because I think that the noise of it moving can be annoying when the robot talks.
  • Arms: No much to say, the arms are designed in an anthropological way and due to financial constraints this cant can have a huge torque, but I can it move with some NEMA 14 with 3d printed cycloidal gear to gesticulate and grasp very light things, so it is fine.
  • Mobile base: This is the part that enables the robot to map, positioning, and move the robot in the world through a visual slam with a Kinect V1.

Divide to conquer also applied to the software counterpart, thanks to docker I can create very different diverse programs grouped in containers (one for each subsystem and another one for the AI part) and that allow me to say "hey, I want to change the way that the mobile base perceives the word without but keep everything else working", but this is not only good for me because if one of you want to modify or just make one of the parts for your projects you can not only have the 3d parts, but also the working software in a container ready to work in minutes.

To interconnect all the programs ROS melodic containers are used and implemented in a jetson nano, this is important because thanks to that development kit and the base containers provided by Nvidia developers I can also run neural network models, in this case, is the RIVA model.

I really think that this can be not only a good companion because of its social interaction design orientation, but also due to its ROS and docker based is easy to add more functionalities like connect it to google calendar or to smart home to manage calendars, light and so on, besides in the hardware part is also easy to modify.

In the logs, I'll explain everything about how I design it and all the parts involved, but in the mid-time, you can see an image of me and the current state of the robot.

I think that this robot can be a good companion due to its facial and conversational habilities, the possibilities maybe not be endless, but sure are a lot, it has a webcam in the head and also en the base (the RGB part of the Kinect) so it can follow a person for example, or by it slam process check the house and inform if something odd is happening (neural networks can make the detection part works with just images), it can al remember things to you (meetings for the calendar maybe), I aim to create a cheap and easy to mod version of the Pepper humanoid robot, so follow the project if you are interested and any feedback is welcome.

Aina_robot_design.part2.rar

F3D and STEP format part 2.

RAR Archive - 50.00 MB - 09/27/2021 at 07:33

Download

Aina_robot_design.part1.rar

F3D and STEP format part 1.

RAR Archive - 50.00 MB - 09/27/2021 at 07:32

Download

Aina_robot_design.part3.rar

F3D and STEP format part 3.

RAR Archive - 9.58 MB - 09/27/2021 at 07:31

Download

Cycloidal_Gear_20_1.rar

F3D and STEP format.

RAR Archive - 666.70 kB - 09/27/2021 at 07:31

Download

  • Subsystem - mobile base

    Maximiliano Rojas09/27/2021 at 09:45 0 comments

    Hi guys, in this log I intend to explain a little bit how the mobile platform works, so as usual this subsystem will be divided into two main topics: hardware and software, but before that lets see a video!


    Software

    One of the main concepts in the whole process of this robot design is modularity, for this reason, I think ROS is a good choice, with this meta operative system you can easily create programs and interconnect them, basically, it establishes a solid way to create complex robotic systems with not only a high degree of personalization but also its wiki provides a large amount of documentation and ready-to-go packages of programs, a good characteristic to fastenest the prototype development process, of course, ROS by itself can be very confusing and tangled when the projects become big enough and that's why I decided to use docker with it, containers allow me to separate the software in different groups that can communicate between them (a nice trick is to configure them to connect to the host network so no multimachine ROS parameters assignment are necessary), in the light orange square of the Figure 1 you can see the general and simplified structure of the docker-ROS:

    Figure 1 - General software configuration.

    Let's briefly summarise what all the navigation nodes do and how they work together:

    • Rosserial: This a ROS package provided for the community that allows the computer to communicate easily with some microcontrollers development boards such as Arduino and Esp8226, the microcontroller can be a node with a very similar structure with a c++ one, and there are enough messages types to prototype[1].
    • Freenect: This is another ROS package that provides all the necessary files to connect a PC with a Kinect V1, when is launched it provides several topics with RGB, cloud point, registered point cloud, and tilt control messages (between others) basically with this I can obtain the necessary data to create the navigation maps[2}.
    • Depth_to_laserscan: As its name says this package simulates a laser scan sensor (like a lidar) from the depth cloud map from the, in this case, the Kinect V1, a necessary part because this message type (laserscan) is necessary to create a 2D grid map[3].
    • Odom_tf: This is just a custom made node that connects the reference frame of the Kinect V1 with the reference frame of the mobile robot, this is important because the general system needs to know where the camera is positioned to adequate the position of the cloud points in the representation of the real world [4].
    • Mov_base: It provides the implementation of the actions to control the robot mobile base in the real world given a goal in it, it has global and local maps and planners to modify the mobile base behavior to the grid map and the local objects that can suddenly appear, at first it can be a little tricky to make it works with all the other packages (at least for me), so in [5] you can read more about it in a more comprehensive way.
    • RTAB-map: This is a ROS wrapper of the Real-Time Appearance-Based Mapping algorithm, basically it is a visual RGB-D SLAM implementation for ROS, which means the robot can generate a 3D map of the environment and through a global loop closure detector with real-time constraints, it can know where the robot is in the map, more information in [6].
    • RVIZ: This is a 3D visualization tool for ROS and is used to see all the sensor information and how the packages make sense of it in a visual way [7].

    In the Figure 2 you can see how all of these packages send information to others in a more ROS-like way.

    Figure 2 - How Packages works together.


    Hardware

    Here three topics are presented, the CAD model, the 3D print parts, and the electronics, for the first one I must say that all the modeling was made with Fusion360 (student license, although there is a free license with like one year of use).

    I want it to be easy to modify for others, that's why I designed the base with various interchangeable parts,...

    Read more »

  • Introduction - a general overview

    Maximiliano Rojas09/27/2021 at 08:24 0 comments

    As I said in the description, Aina is an open-source humanoid robot which aim is to be able to interact not only with its environment in terms of moving through it and grasp some light things but also speak and interact with humans by voice and facial expressions. There are several tasks that this robot can accomplish once it's finished like:

    • Assistance: Interaction to assist, for example, elders, students, and office workers through remembering events, looking for unusual circumstances in the home, between others
    • Development: Aina is also a modular platform to test algorithms of robotics and deep learning.
    • Hosting: It can guide people in different situations and places to inform, help, or even entertain someone.

    These tasks by no means are far from reality, a good example of it is the pepper robot, used in banks, hotels, and even houses., so let think about which characteristic the robot must have to do similar things:

    1. Navigation: It must be able to move through the environment.
    2. Facial expressions: It must have a good-looking face with enough set of emotions.
    3. Modularity: Easy to modify the software and hardware.
    4. Recognition: Of objects with Deep Learning techniques.
    5. Socialization: Be able to talk like a chatbot.
    6. Open source: Based on open-source elements as much as possible.

    Because there is a lot to do a good strategy is divide to conquer, for this reason, the project is separated into three main subsystems and a minor one:

    • Head: this is part that enables the emotional side of the communication through facial expressions with the eyes and eyebrows (and sometimes the neck), no mouth is added because I think that the noise of it moving can be annoying when the robot talks.
    • Arms: No much to say, the arms are designed in an anthropological way and due to financial constraints this cant can have high torque, but I can it move with some NEMA 14 with 3d printed cycloidal gear to gesticulate and grasp very light things, so it's fine.
    • Mobile base: This is the part that enables the robot to map, position it, and move the robot in the world through a visual slam with a Kinect V1.
    • Torso: As the middle part that interconnects the other subsystems.

    The general characteristics of the robot are:

    • A mobile base of area 40x40 cm2.
    • Total height of 1.2 meters.
    • A battery bank of 16.4@17000 mAh.
    • estimated autonomy of one and a half hours.
    • It has spaces for modularity, which means that it's easy to adapt it to future necessities.
    • The arms has 3 degrees of freedom each one and three more in the hand.
    • The software is based on ROS and docker, so it's faster and easy to develop.
    • Part of its behavior is based on deep learning techniques.

    Several parts of the robot has holes or are detachable and even interchangeable, the holes are useful to attach electronic components to the robot keeping the possibility to remove them (or add others) whenever necessary, meanwhile, the detachable parts can be modified to fulfill future requirements, like add a sensor, a screen or just make room for more internal functionalities, a good example of this is the mobile base, as you can see in the next images there are several parts that others can modify (light blue ones), and if you want to move or exchange some electronic part just unscrew it.


    Of course, the same principle applied to the rest of the robot.


    In regards to the software, as I said before is ROS and docker based, the simplified scheme of connections between the different elements are presented in the next image.

    As you can see several containers are running on a Jetson Nano, let me clarify the purpose of them, the docker container on the right part is responsible for the navigation task, it's able to do the whole slam process with  a Kinect V1 and control the non-holonomic mobile base to the goal point specified by the user, the yellow squares represent the ROS packages implemented to accomplish the task, the up-left docker container has all the necessary programs to control the head, neck, and arms,...

    Read more »

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates