Teaching Robotics in the Lab

This year (course 2014-15), I started a new subject called Robotics Laboratory (Laboratorio de Robótica) which belongs to the degree called Engineering on Electronics, Robotics and Mechatronics. This is an official degree of the Universidad de Málaga, taught at the School of Industrial Engineering.

The course goal is to provide the students with practical competences in robot design and control. This subject is taught among other robotic subjects (some mandatory and some optional) so special care has to be taken when designing the specific contents of this course. This subject is optional in the last semester of the degree, so I had a small and enthusiastic group of student that allowed me to take some risks.

We started building a set of four additional medium-size mobile manipulator platform called PIERO and designed and built a small 4 DoF’s manipulator for each robots.

Teaching Robotics Laboratory

Teaching Robotics Laboratory

As can be seen in the picture, these were among the most student-engaging sessions I ever had. I also had very rewarding classes providing them with this kind of experience and knowledge that you cannot put on a powerpoint.

Probably, the biggest challenge was to embrace the model-based development as the tool for the implementation of the robot control software. In this course we are using Simulink as the main development tool which produces real-time code for the Arduino microcontroller.

Students testing the control of the PIERO platform

Students testing the control of the PIERO platform

This model-based engineering approach applied to the education may have important advantages in therms of efficiency.

They implemented discrete time model of wheel speed control, Cartesian mobile robot control and read-reckoning, mobile robot control and kinematic arm control. Also hybrid models have been developed for reactive navigation tasks

Hybrid models for reactive navigation

Hybrid models for reactive navigation

FSM for collision avoidance behavior

FSM for collision avoidance behavior

Students testing PIERO performing a reactive navigation task

Students testing PIERO performing a reactive navigation task

Finally, a higher level of control has been implemented for vision guided navigation using the PIERO’s on-board Raspberry Pi computer, also developed under Simulink.

The success of this approach was possible with the help of my colleage Antonio Muñoz and my group of students who used it for the first time.

Thank you to all, but this is just the beginning.

My brother

Miguel Angel

Miguel Angel

Miguel Ángel Gómez de Gabriel died on July, the 27th, 2014.

Was born in Córdoba (Spain) when I was just one and a half years old.

Great father of two little girls, good husband, excellent friend and best brother. Not always well understood.

Life didn’t played fair with him and Death caught him trying to be happy again.

Rest in Peace.

Creating a library for Novint’s Falcon haptic programming with LabVIEW

Novint, the device manufacturer provides both a driver (It is just a UART over USB device) and a C++ SDK. You need to install them. I don’t want to use C++ and learn how to use a set of classes hierarchy. I just want to read potitions and send forces!

If you Google for a LabVIEW library for this device you may find Mauro’s page with a password protected ZIP file with the library. Unfortunately its e-mail is not alive.

Another programming option is to use the Siena’s Haptik library. This is a vendor-independent hardware library, which is nice because you don’t need to learn how to use different haptic API’s but you still need to learn to use C++ classes which is not compatible with LabVIEW. However some examples of use of this library from matlab and simulink are a plus.

I felt a bit frustrated because I didn’t wanted to spend a lot of time developing my teaching tools, but surprisingly it has been surprisingly easy to create a Falcon library with LabVIEW. You just need to tell LabVIEW the locations of the main SDK’s .dll and .h file and the library creation tool builds the library for you. No C++ classes programming knowledge is needed. Just initialize and read/write positions/forces inside a loop.

What follows is a step-by-step guide on how to program a Nivont’s Falcon haptic device under LabVIEW development system. In this example I used version 2009 and 2011. Hopefully it works in the same way in the latest versions.

Step 1: Start the Library Creation Tool

Menu shared Library

Step 2: Create the libraryMenu create Library


Just press “Next”.

Step 3: Specify the library locationMenu Library location


Step 4: Specify the includes: WARNING! Here you need to include bot the folder for the include files but also the preprocessor definition “WIN32” as shown in the figure.

Menu Library includes


Step 5: 23 out of 25 functions are automatically recognized. I don’t care about this. Enough for me. Click “Next”.Menu Functions

Step 6: It’s time for naming the library. I just left the original name and clicked “Next”.Menu Configure project library

Step 7: Select error handling. I choose the default option here too.

Menu No error handling

Step 8: Last chance for customizing functions VI’s. Execution model and input/output parameters. Happily you can use the default values here too.

Menu Configure VI

Step 9: Congratulations. This is the generation summary

Menu Summary


Step 10: You are done.

Menu Finish

Step 11: The library is yours now, and ready to be used.



Also remember that you can always find it right-clicking on your VI diagram and then selecting User Libraries …Menu Find Library

That’s all.

Here you can find the hdl library (hdl Library). Make sure you have installed the latest Falcon drivers and SDK and then copy the folder “hdl” into your LabVIEW’s user.lib folder (2009 version).

Check also my other post about start programming the haptic.