As part of the PhaROS and related projects, Santiago Bragagnolo had developed TaksIt a  framework for to ease handling concurrency. Expressing and managing concurrent computations is indeed a concern of importance to develop applications that scale. A robotic application often have different processes dealing with different activities (e.g. preception, planning, …).

TaskIT provides abstractions to schedule and/or parallelize of the execution of pieces of code. They will be described in the forthcoming chapter of the Pharo for the Entreprise book. First content is already available online. You can also get the code by evaluating the following expression in a Pharo workspace:

Gofer it
smalltalkhubUser: 'sbragagnolo' project: 'TaskIT';
configurationOf: 'TaskIT';
loadVersion: #bleedingEdge


PhaROS has being in this last edition of FOSDEM (2014) we are proud to share our time and space with a lot of open source projects. Thank you very much for good feelings, feedback and sharing this amazing time.
Video and photos from this great event will be soon available here. Meanwhile, here are the slides

Keep tuned!

PhaROS tool has the mission of installing and creating packages into a ROS installation.

For doing this we have several commands, from installing and creating to administrating repositories, so you can manage your own packages and creating templates without major problems.

Install PhaROS tool

We are working for having this package in Ubuntu and ROS repositories, but meanwhile you can download it from here: pharos-deb

Once downloaded just execute

sudo dpkg -i pharos.deb

pharos –help


Install PhaROS based Package

pharos install PACKAGE [OPTIONS]


pharos install esug –location=/home/user/ros/workspace –version=2.0


pharos install –help

 Create PhaROS based Package

pharos create PACKAGE [OPTIONS]


pharos create –location=/home/user/ros/workspace –version=2.0 –author=YourName –author-email=YourEmail

Tip: Be sure the email is a correct one. If is not a correctly spelled one you will notice during last step.
pharos create –help

Register Repository of packages

pharos register-repository –url=anUrl –package=aPackage [ OPTIONS ]


pharos register-repository –url= –package=YourProjectDirectory –directory=YourProjectDirectory

Tip: If your repository requires user/password for reading add –user=User –password=Password to the example.
Disclaimer: User/Password will be stored in a text file without any security.

pharos register-repository –help

Listing registered repositories

pharos list-repositories

Creating a directory for your own project repository

pharos create-repository PACKAGENAME [ OPTIONS ]


pharos create-repository example –user=UserName >
pharos create-repository example –user=UserName  –output=


pharos create-repository –help




We are now really glad to present an enhanced way to deal with PhaROS.

Since we want to keep with the ROS community spirit of collaborative development for robotics, we introduce now our own command for managing packages made in PhaROS.

This command is mean to install existing packages and create new packages with cool snippets and examples for going faster through the learning time.

PhaROS tool is made completely in Pharo smalltalk and it allows to deploy an existent package into a pharo 1.4/2.0/3.0 in any distribution of ROS that uses catkin package. It automatize the generation xml, makefiles, type and scripts creation, going on the direction of letting the pharo programmer to focus just in programming and not in infrastructure stuff.

For Installing and Using please check this post: using-pharos-tool







Do you know Lego MindStorms ? The last one is the Ev3 serie ( One particularity of this version compared to the previous ones is the possibility to plug a Wifi key and connect via TCP.

So, if you have this material (one Mindstorms Ev3, one compatible Wifi key), you can control your robot with Pharo !

Just load these lines:

Gofer it
     url: ''      username: '' 
     password: ''; 
     package: 'ConfigurationOfJetStorm';
(Smalltalk at: #ConfigurationOfJetStorm) loadBleedingEdge.

I know also that for Christmas, it is not possible to learn a new API, we all have a lot of other things to do ! So, you can play with it into Phratch.

For that, just load Phratch and the package EV3Phratch as follow.

Gofer it
       url: ''        username: '' 
       password: ''; 
       package: 'ConfigurationOfPhratch';
(Smalltalk at: #ConfigurationOfPhratch) loadBleedingEdge.
Gofer it
       url: ''        username: '' 
       password: ''; 
       package: 'EV3Phratch';

Have fun !

After initials tests we have made at the lab, we presented our RoboShop project on the 16th of October, as well as during 3 days from 21st to 23rd october in two different events outside our university. The stand was small. Yet we managed to successfully run our demo of a helper robot that targets shopping malls (see video below). We will be presenting even more demos to the public on thursday 28th november as part of the European Robotics Week. We will report them here. Stay tuned.  

At the ESUG 2013 conference, we presented the current status of the RoboShop project. Santiago did a great job and now we are able to run tests of our scenario of a helper robot  in a shopping mall. Based on a map built using laser SLAM, the robot computes the shortest path to fetch items listed by a customer in a shopping list. The slides below include a video of the first tests. They also give a bird’s eye view of the architecture, where we use Pharo for orchestration. We also reuse existing software from the ROS community through our client PhaROS.

In the RoboShop project, we aim at developing a platform for robotic applications in a shopping mall. We took the decision to use ROS, the robotic middleware backed by the Open Source Robotic Foundation. We also wanted to continue using our favorite language Pharo. This is how we end up developing PhaROS, a client for Pharo-based ROS nodes.

Today, we are glad to announce that the first version of PhaROS is now officially available, that is there is :

There is still much to do in PhaROS, and more broadly in the RoboShop project. But, so far we already have a PhaROS node that wraps the robot that we are using. We connected it to the gmapping SLAM algorithm and we have used it to buid a map of our lab. More to come soon.

The goal of the RoboShop project is to make a robot for services into a shopping mall. From the hardware point of view, we are using two wheeled robots, equipped with a laser SICK 300 range finder, as well IR and sonar telemeters (see Picture 1). Each robot has a pole that is about 1.5 m heigh. It holds a tablet PC and Pan/Tilt camera.

Picture 1: Robots we use for the RoboShop project

On the software side, we have chosen the ROS middleware. The rational behind this choice is that ROS is backed by an active community, structured around Willow Garage and more recently the Open Source Robotics Foundation (OSRF). On the programming side, we took the reflective language Pharo. As Object-Oriented experts, we believe that Pharo is among the best (if not THE best) object-oriented programming language. Besides, it’s available under a free software license, and it’s community (backed by the INRIA french public research organization dedicated to computer science) is continuously improving it.

The first step was to develop a ROS client in Pharo: PhaROS = PHAro + ROS (initially named RoSt). So far, we have a first complete, running version. We have also developed a ROS node to control our robot. As a first validation, we drove the robot inside our lab and make it build a map (see Picture 2). That was also an opportunity to test our client with a third party ROS node, namely gmapping. We fed this Synchronous Localization And Mapping (SLAM) algorithm with data from the laser embedded on the robot.

Picture 2: Our lab’s map built by a robot

We are currently working on automatic map construction. The robot should be able to roam autonomously to build the map. This will lead us to test other parts of our infrastructure. Ultimately, the robot should be able to navigate in the building based on the existing map. It should be able to plan its trajectories to reach it destination while avoiding obstacles even if they are not on its initial map. Such obstacles include moving ones such as people or other robots.

Santiago Bragagnolo joined the team since the beginning of the month, as we announced during our talk on Smalltalk for robotics last ESUG conference (see slides below). Santiago is working full time on the RoboShop project where we aim at building an infrastructure for service robotics in the context of a shopping mall. We are using ROS (Robot Operating System) as a middleware. Currently, we are focusing on RoSt a framework to bridge Pharo Smalltalk with ROS. The end of the tunnel is becoming closer. We can call services provided by ROS nodes and we can send ROS topic messages. We are currently making tests with the ROS turtle simulator. We hopefully will soon start experimenting with our human size robots.