In a recent experiment we demoed a scenario of how a robot can be used to help shoppers (see Video below). The robot computes the optimal path for picking items of an arbitrary shopping list. It carries the bag and guides the shopper to items locations.  As we explain in the slideshow (below the video), there are other possible applications of mobile robots in a shopping. We also give a quick overview of hardware and software. We reused some existing ROS packages that we combined with our own software built using the PhaROS client based on Pharo a Smalltalk inspired OO dynamic language.

Video: A Robot Made to Help Shoppers

Slideshow about the RoboShop project

Firstly, assuming you have already installed ROS Groovy and MORSE 1.x.x.

Then you need two additional packages p2os and exploration:

git clone
svn co

Finally, download the attachment (yz_morse_sim), decompress it and enter into the folder morse_sim.

Now, let’s start the simulation!

1. Launch roscore in a terminal window:


2. Launch MORSE simulator in a new terminal window:

morse run

3. Launch ROS nodes in a new terminal window (This step will also launch gmapping and rivz):

roslaunch single_robot.launch

4. Save the map if you want, in a new terminal window:

rosrun map_server map_saver


Firstly, assuming you have already installed ROS Groovy and Stage 3.x.x.

Then you need two additional packages p2os and exploration:

git clone
svn co

Finally, download the attachment (yz_stage_sim), decompress it and enter into the folder stage_sim.

Now, let’s start the simulation!

1. Launch roscore in a terminal window:


2. So, you have three options to implement the exploration: teleoperation, exploration and exploration with SLAM, in a new terminal window:

roslaunch teleop.launch (or explore.launch, or explore_slam.launch)

3. You can track the exploration progress by using rviz, in a new terminal window:

rosrun rviz rviz -d stage.rviz

4. If you want build a map by teleoperation, in a new terminal window:

rosrun gmapping slam_gmapping scan:=base_scan

5. Save the map, in a new terminal window:

rosrun map_server map_saver


Zhi YAN (Web Page) is a new postdoc in our team since september, 15th 2013. He will work 12 months on our CAIRE project. Today, Zhi presented us some of its work during its PhD.

Presentation title: Tasks and motion planning for multi-robot systems

Summary: This presentation focuses on the issue of multi-robot coordination from the standpoint of planning, which contains task planning and motion planning.
Two new approaches are proposed for the task planning. The first one is a decentralized approach based on trading rules. This approach is designed to simulate the relationship between buyers and sellers in a business system, to achieve dynamic task allocation by using a mechanism of unsolicited bid. The second approach is an heuristic one which is based on an empirical model. It is designed to assign the transportation task to individual robots by estimating the production rate of goods in a centralized system.
Two new approaches are proposed for the motion planning. Both are sampling-based approaches, designed to plan separate kinematic paths for multiple robots to minimize the issue of waiting situation including congestion, collision and deadlock, in an effective way in order to improve the system planning efficiency. All these proposed approaches have been tested and evaluated through simulation experiments.

Slides (in French)


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.

Last may, Dr. Luc Fabresse presented at the ICRA 2013 workshop on Software Development and Integration in Robotics (SDIRIII) our first results in the CAIRE project. It’s about a first version of BoTest, a first version of a UnitTest framework based on the work done in eXtreme Programming, that we adapted to the context of robotics. We give a glimpse of experiments we are doing with our robots. The slides of the presentation are available below.


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 CAR team  ( carries research at the frontier of Software Engineering and Robotics. We study software architectures, languages and tools for controlling individual robots. We have developed an expertise in reflective and dynamic languages, as well as component models, for a modular robotic software architectures. Besides, our research also addresses coordination and cooperation in robotic fleets. We mainly focus on communication models as well as emerging or predefined organizations for multi-agent robotic systems.

The post-doc position is part of the CAIRE project. The goal of the project is  to propose innovative solutions for the agile development of robotic software. The study will be validated by developing new robotic-based exploration and mapping solutions.

The candidate must have a PhD in Computer Science or Robotics, should demonstrate strong programming skills, and have research interests in at least one of the following areas:
- modularity and software composition
- programming languages design
- agile software development
- robotic middleware
- control architectures for robots
- multi-agent robotic systems

Important information:
-Workplace : Douai (Lille area), France
-Start: Between May and October 2013
-Duration : 18 months
-Salary approx. 2000 Euros.

To apply, please send your CV + references to : noury (DOT) bouraqadi (AT)

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.