Robotic web applications

ROS is a great tool to develop new robotic applications. Its ease of use and its large amount of tools and wide community makes ROS a great way to start learning robotics, or to develop a state of the art industrial applications. In spite of all these advantages, one of ROS main limitations is that it must work on Linux systems, mainly Ubuntu. Linux and Ubuntu are increasing the number of desktop users, but nowadays the most used Operating Systems are Windows for desktop users, and Android for mobile. This makes hard to integrate applications when the end user has never used a Linux Ubuntu system, or its infrastructure is based on Windows or Android. This problem can be solved by developing robotic applications taking advantage of the ROS web framework. ROS web framework is a collection of open-source tools and modules, built around the Robot Web Tools project, with the goal of converge ROS with modern web and network technologies. This will create a broadly accessible environment for robot development and human-interaction research used over wide area networks.

Robot Web Tools uses WebSockets to communicate with ROS middleware, and offers several tools to help develop applications using rosbridge. The main front-end tools is the roslibjs package, that is a library to build ROS nodes using Javascript, and allows usage of ROS topics, services, goals, parameters and TF. ros2djs and ros3djs are used to create 2D and 3D visualization of the ROS environment, allowing to visualize maps, costmaps, grids, URDF models, InteractiveMarkers, PointClouds and other basic geometric shapes. This can be very useful to create your own navigation packages that can be controlled from any device.  Other useful tools are keyboardteleopjs, to move a robot using a simple keyboard interface, mjpegcanvasjs to visualize image topics, and speech_commands to control a robot using speech. Robot Web Tools also includes all necessary server nodes to interface the client-based modules with ROS. This nodes are  rosbridge_server, web_video_server, and tf2_web_republisher.

All these tools can help to solve the problem of the isolation of ROS in Linux systems, and allows the deployment of ROS applications on any device that can use a web browser (Mozilla Firefox, Google Chrome, Safari, etc … ) In the future we can expect more development of the Robot Web Tools project, for example with the addition of new communication standards, like WebRTC, that will help with applications demanding intensive and high-bandwidth streaming.

Robotnik Summit XL

Illustration 1: SUMMIT XL Web 3D visualization

Illustration 2: Turtlebot web visualization

Illustration 3: Turtlebot web map navigation


ROS-Industrial, merging ROS and the industry

ROS and open source software have increased in popularity in the last few years, mainly in universities and research centers. The industry is now trying to modernize its manufacturing processes, and are seeing ROS as a viable approach for solving new and more complex manufacturing problems.

ROS-Industrial was created in 2012 to develop collaboration between ROS and the industry. Until now, manufacturer processes have been based on simple and repetitive tasks performed by robots, but in the last few years there has been an increasing demand for more dynamic and intelligent robots that can perform more difficult tasks. It offers high level tools and programs that can solve this difficult tasks, thanks to the collaboration of universities and open source software.

The industry can benefit from the research and development that has been created around ROS. Its framework provides excellent tools for visualization and Human Machine Interaction, which can ease the use of these robotics systems by personal not considered robotic experts. The standardization of it, and its advantages in the industry will also mean a faster deploy time of advanced robotic systems in the manufacturer places.

On the other hand, ROS can also benefit from the symbiosis created by ROS-Industrial. For example in the form of new drivers created by the arm manufacturers. This new robotic arm drivers could be used by universities and researchers for new development projects. Also, there are an increasing number of tools being improved by ROS-Industrial, like tools for navigation, perception, manipulation and calibration.

In navigation, ROS-Industrial has improved the moveit package to optimize arm path planning.

It has also developed a calibration library that allows to calibrate cameras extrinsically using a robotic arm.

And, what can we expect of ROS-Industrial in the near future? One of the most expected features is the compatibility of ROS and ROS-Industrial with Microsoft Windows. ROS is a Linux-based software, but Windows support will help the acceptance of ROS-Industrial in more manufacturing environments. For now, ROS-Industrial is delaying Windows support until the release of ROS 2.0, which currently does not have a release date, but released its first alpha version in September 2015, so a final version could still need some more time to release.

In conclusion, ROS (based on open source software) is currently an important framework for research, development and industry. And big companies are trying to use this progress to improve its manufacturer process. In the future, ROS could become and standard in the industry, and this could benefit all the ROS subsystem, including universities and researchers.


Augmented Reality going into action

The Augmented Reality (AR) is said to be a live direct or indirect view of a physical, real-world environment whose elements are augmented (or supplemented) by computer-generated sensory input (sound, video, graphics, etc.)

Can you remember all the hype surrounding the computer interface of Steven Spielberg’s Minority report? This gestural interface is not at all the only AR reference in Sci-Fi movies. Now you may have Iron-Man’s display in mind. But it is not all about fantasy. This movie-like technologies have indeed inspired the development of the real ones.

It’s been quite a long time since the augmented reality is involved in some of the most interesting and innovative projects. This is the case of the now well-known Google glasses or the last sensation Microsoft Holo-Lens. The AR has a wide range of applications that can be revolutionary in many ways.

For instance, Google Tango Project turns out to be very interesting for roboticists. This project is focused on incorporating powerful 3D-mapping technology into mobile devices, making a huge amount of 3D measurements per second, and updating the location and position of a device while it maps a 3D model of the surrounding environment.

This technology is highly related to the mapping features integrated in Robotnik’s platforms.

The mobile robots like the Summit XL or Turtlebot2 are also carrying cameras with depth sensors such as Kinect or Asus Xtion, which allow them to obtain a 3d pointcloud of the environment. This can be done thanks to a ROS interface to depth sensors using the OpenNI standard.

Provided the data, this information can be processed with ROS powered packages and API’s such as RGBD-Slam and Octomap that are able to incrementally build a 3D map.

Another AR application currently used by Robotnik involves the identification of landmarkers or QR-like codes. They offer different information to the robot itself and can be used in order to identify poses of some objects in the environment or to be related with a certain location in the map.

Augmented Reality going into action

Again the ROS community and the proliferation of AR ROS packages like Ar_Track_Alvar or Ar_Pose states the relevance that AR is taking within the last years.

For sure we will see what else AR has to offer to the Robotics community in the coming years.


New ROS driver available for the Barrett robotic Hand

Robotnik developed a new ROS package for the Barrett Hand BH8-28X which allows the control of the hand either in velocity or position, while reading the current state of the joints and the sensors (fingertip torque and tactile sensors). Moreover, the software includes packages with the model description and a graphical interface to interact with the hand.

If you are interested in verifying all these features of the hand, you can visit us from 14th until 18th of September in booth nº303 at IROS 2014.

http://wiki.ros.org/Robots/BarrettHand -> Technical description

http://wiki.ros.org/barrett_hand -> ROS package description

http://youtu.be/aDvykgDyEg8 -> Video

 

 


Ros graphic user interfaces

As robotic systems become more functional, the need to get an overall vision of the operations, control the system and acquire and handle the data becomes more necessary. To solve these and other needs we employ HMI’s (Human-Machine-Interface) as a mean of interaction between final users and systems.

HMI’s design has to be focused on the user and it has to be an open and simple environment that makes interaction and system tasks easier. Its main purpose is to hide the system complexity to the user, providing a tool to improve usability. We can find them of many types and in many places, from a simple LED that shows the status of a device to the machine interface that we use to get cash.

HMIs in robotics can be as important as the robotic system itself. It is useless to have a complex system in where the user or operator doesn’t know how to work. Usability is one of the main features that makes ROS[1] one of the first candidates for this field of robotics and embedded control.

By using this framework we can find a couple of tools that greatly facilitate the interaction through a comfortable and editable graphic interface: Rviz[2] and ROS-GUI[3]. Both interfaces, consist of a 3D environment visualizer that allows the viewing, measurement and interaction with the environment. Based on a plugin architecture, this software not only provides the possibility of developing custom packages but also reusing third party tools.

Although these two interfaces could not supply the requirements for certain robotic systems by default, the simplicity employed by ROS to read component’s information or interact with them, makes much easier the development of customizables HMI’s that can fulfill any requirement. Moreover, thanks to the ROS architecture based on topics/services, we can interact with all the system’s components without low level programming knowledge, just basic knowledge of ROS. For example, we can get sensors’ values, robot’s current state, etc. reading from topics[4], or we can perform actions on components (i.e setting the speed of a mobile robot) publishing on another topic or calling a service[5] that starts certain actions (i.e the GoTo command of a robot).

Without knowing details about the used hardware, the programmer can develop a HMI that is able to satisfy the requirements of any system. On the other hand, thanks to programming frameworks like wxWidgets[6] or Qt[7], developers can go beyond the basic HMI, creating complex and attractive GUIs that make the human-machine interaction more enjoyable. The possibilities, which are many and diverse, range from basic HMIs that show certain component’s values, to more sophisticated GUIs that allow the robot teleoperation or control the state of its components.

We can find many examples of these interfaces in multiple packages that are in the ROS repositories, like the PR2 dashboard[8] which provides detailed information about the ‘health’ of the PR2 robot[9]. Whenever the PR2 is not behaving exactly as expected, the dashboard must be checked. There are more robots with dashboards, for example the Care-O-Bot3[10] dashboard[11], which consists of a control panel to move and interact with the robot. You can perform some basic actions for every robot’s component. Another kind of interface is the srs_ui_pro[12] developed by Robotnik for the SRS project[13]. This interface has been developed to be the intermediary between the robot Care-o-Bot3 and the teleoperator. On the other hand, in the last ROS distro (called Groovy[14]) we can find the rqt[15] tool, which is a framework for plugin development. It’s possible to run all the existing GUI tools as dockable windows within rqt (even rviz). Moreover, the tools  still can run in a traditional standalone method, but rqt makes it easier to manage all the diverse windows in a unique application.

Srs_ui_pro user interface developed using wxWidgets

The cited interfaces are just a small part of many options that we can find for all the robots and components supported by ROS.

ROS intends (and is achieving) to be a serious and reliable standardization for Robotic Systems Development, and one important part is the HMI. ROS developers have employed a lot of time and resources improving its usability, and as we have seen, we have many possibilities for HMIs development, from using the standard interfaces that ROS provides to developing our own interfaces from scratch.

[1] http://www.ros.org

[2] http://ros.org/wiki/rviz

[3] http://www.willowgarage.com/blog/2012/10/21/ros-gui

[4] http://www.ros.org/wiki/Topics

[5] http://www.ros.org/wiki/Services

[6] http://www.wxwidgets.org/

[7] http://qt-project.org/

[8] http://pr2support.willowgarage.com/wiki/Tutorials/Dashboard

[9] http://www.willowgarage.com/pages/pr2/overview

[10] http://www.ros.org/wiki/Robots/Care-O-bot/Tutorials/Dashboard

[11] http://www.care-o-bot.de/english/

[12] http://www.ros.org/wiki/srs_ui_pro

[13] http://srs-project.eu/

[14] http://www.ros.org/wiki/groovy

[15] http://ros.org/wiki/rqt


5 years of ROS

ROS was 5 years last November and has not stopped growing since its inception.

Currently, there are 175 organizations and individuals who have made their public ROS software version in the repositories that has indexed, compared to 50 that were registered in 2009.

The video includes footage of the V anniversary of the G-WAM mobile manipulator and Robotnik Summit XL platform.