This is an old revision of the document!
Beginners Guide to PODO
Author: Keitaro Nishimura email: katnimura@gmail.com
Date Last Edited:07/25/16
How to use this tutorial
This tutorial is for students interested in learning about how to program Hubo robots. As both DRC-HUBO and HUBO2 both use similar software. These tutorials are written with the expectation that the student has knowledge in programming and components such as motors and computers.
This tutorial is seperated into these parts:
What is PODO?
PODO is the software architecture used to communicate with the HUBO robots. It was made in house by students at the HUBO KAIST lab in South Korea. There are 4 main components to PODO, the GUI (Graphical User Interface), the shared memory, the Daemon, and the AL.
GUI
The GUI is where the user interacts with the various codes written for the robot. This is also where you will be able to see feedback from motor and FT sensor encoders.
Shared Memory
This is similar to RAM in a computer. This is where different programs can store data until it is needed by another program. The various programs are sharing memory so that they can all access the same data.
Daemon
This converts the C++ program into an output that the motor boards can understand. Please do not try to mess with this part of PODO as there is little to no documentation on it.
AL
These are the different user made programs. PODO means bushel of grapes in korean, while al is a single grape. So within the PODO there are many al.
How Do They Interact?
The shared memory is what connects the other 3 components. Once the use interacts with the GUI and sends some data into the shared memory one of two things can happen. Depending on the code the data can go directly to Daemon and to the boards, or it can be taken by an Al. If an Al takes the data it is processed through the Al code and then an output is put back into the shared memory. Which then finally taken by the Daemon to the boards. It is also possible to call for data from Daemon through shared memory. This is how you are able to get data on the current situation of various motors and sensors. Thus data is able to move freely back and forth between all of the components with shared memory at the center. It is not possible to go directly from the GUI to Daemon or Al, you will always have to go through shared memory.
What is and how to use AL
As explained in the earlier tutorial an Al is some code written by the user. This is where the user is able to create code specific to their needs and conditions. Thus it is important they the user understands how to use and create an Al.
For this tutorial the reader will need to have an Ubuntu running computer, with QT installed on it.
If you do not have Ubuntu please follow these tutorials on how to get it.
For QT please follow these instructions:
- Go to this link to download the latest version of qt for Linux.
- Open a terminal (Ctrl+Alt+T)
- Go to the directory (Folder) that has the qt download using the 'cd' command. In my case the Downloads directory. (to execute a command press 'Enter')
- Once in the correct directory use the 'ls' command to find the qt download. Notice that its name is white. This means that we can't execute it and is useless to us. To change that use the 'chmod +x [name of file]' command to make the file executable. Use Ctrl+Shift+C/V to copy and past the name of the file inside the terminal.
- Now use the 'ls' command to check if it worked. The name of the qt download should be green, meaning that it is an executable. Use the ./[name of executable] command to run it.
- Then follow the installer dialogue to finish the installation. Note: Skip the login/sign up step.
- Now you have qt installed!
Please follow the link to the download of podo_nrl which holds all of the files we will be using for the rest of the tutorial. https://www.dropbox.com/s/s2rm81u2se0b4vd/podo_nrl.zip?dl=0
I will now take you through how to open podo_nrl in qt to edit and create files:
- Open qt
- Go to File>Session Manager
- Click New and enter a name for your session. Once you click 'Ok' you will see your new session inside the manager. Now close the manager, and open your session from Welcome tab in qt under Sessions.
- Once you open your session qt will take you to an empty Edit tab. We now have to populate the Session with the GUI, AL, and PODO launcher projects in podo_nrl. Go to File>Open File or Project and find the podo_nrl folder, mine was in my Desktop.
- Open it and go into the 'src' folder and then the '__PODOLauncher' folder. Finally open the PODOLauncher.pro file to insert the podo launcher project into your session. Then repeat the last two steps to insert the ALPrograms and PODOGUI .pro projects. Note: when you open the .pro files a warning message will pop up.