This documentation is based on: http://www.ros.org/wiki/fuerte/Installation/OSX/Homebrew/Source.  Only the three points in red are different from the official documentation.

Start by installing Homebrew and configuring the environment to use Homebrew.

Requirements

Install Homebrew

You can install Homebrew, after satisfying the requirements, by running this script in a terminal:

ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)

Once the installation is completed update Homebrew to ensure the latest sources:

brew update

Prepare Environment for Homebrew

You will need to add these lines to your ~/.bash_profile to have Homebrew be at the front of the PATH.

export PATH=/usr/local/bin:$PATH

export PYTHONPATH=”/usr/local/lib/python2.7/site-packages:/usr/local/lib/python:$PYTHONPATH”

In order for the above changes to take effect reopen the terminal or run this command:

source ~/.bash_profile

Add the ROS Fuerte Homebrew Tap

Execute the following line to add the official ROS Fuerte Homebrew repository (“tap” in Homebrew terminology).

brew tap ros/fuerte

Bootstrapping

In order to install the first part of ROS some system dependencies need to manually be satisfied.

Env Setup

export ROS_OS_OVERRIDE=osx:homebrew

Python Dependencies

Change the permissions of your Python, Ruby, and Perl library directories to prevent the need for sudo when running pip. This is recommended by the Homebrew developers, but not strictly necessary.

sudo chown -R $USER /Library/Ruby /Library/Perl /Library/Python

Install pip and setup tools from easy_install:

easy_install pip
easy_install setuptools

Install the PyYAML dependency by executing the lines below:

brew install libyaml
pip install -U PyYAML

Install Mercurial:

pip install mercurial

Install some Catkin Python Dependencies:

pip install -U empy nose

Homebrew Dependencies

Install some other dependencies for the Catkin based ROS stacks to be installed:

brew install cmake
cd /usr/local && git checkout 57665ff /usr/local/Library/Formula/boost.rb
brew install boost
cd /usr/local/Library/Formula && curl -O https://raw.github.com/mxcl/homebrew/ac18935be50d603a64363ba9104b91c643992dce/Library/Formula/gtest.rb
brew install gtest
brew install log4cxx
brew install qt

To install swig-wx :

git clone –branch 1.3.29_fuerte git://github.com/ros/swig-wx.git /Library/Caches/Homebrew/swig-wx–git
2) cd /Library/Caches/Homebrew/swig-wx–git/
3) ./configure
4) make
5) make install

Binary Dependencies

Install wxPython by downloading and installing the binary distribution from their development website: http://downloads.sourceforge.net/wxpython/wxPython2.9-osx-2.9.4.0-cocoa-py2.7.dmg

At least Mountain Lion has problems with package format. After mounting the image you have to run

sudo installer -pkg /Volumes/wxPython2.9-osx-2.9.4.0-cocoa-py2.7/wxPython2.9-osx-cocoa-py2.7.pkg/ -target /

After installing wxPython from the binary, you need to add this line to your ~/.bash_profile in order for ROS to find it:

export PATH=/usr/local/lib/wxPython/bin:$PATH

Make sure to make the changes take effect:

source ~/.bash_profile

Install the nVidia CG toolkit for rViz by download their installation package: http://developer.download.nvidia.com/cg/Cg_3.1/Cg-3.1_April2012.dmg

rosinstall

The core ROS libraries and tools are installed into /opt/ros/fuerte. The higher-level ROS libraries are simply built using rosmake, which is familiar to users of previous versions of ROS. The higher-level ROS stacks are downloaded and built in inside the ~/ros directory.

First install rosinstallrospkg and rosdep:

sudo pip install -U rosinstall
sudo pip install -U rospkg
sudo pip install -U rosdep

Install core libraries

The following instructions will create a system install of the core ROS libraries and tools. The installation is done using standard CMake/make tools, so experts can adjust to their liking.

rosinstall –catkin ~/ros-underlay http://ros.org/rosinstalls/fuerte-ros-full.rosinstall

Build and install the underlay into /opt/ros/fuerte:

cd ~/ros-underlay mkdir build cd build

Before running cmake, change the source code of the file: ~/ros-underlay/ros_comm/utilities/xmlrpcpp /src/XmlRpcSocket.cpp. Replace MSG_NOSIGNAL by 0. MSG_NOSIGNAL is a proprietary Linux manifest (i.e. it is non-posix/Xopen). Just replace it with 0 (the number 0).

Now, run cmake.

cmake .. -DCMAKE_INSTALL_PREFIX=/opt/ros/fuerte -DSETUPTOOLS_DEB_LAYOUT=OFF

Finally, build and install the code:

make -j8
sudo make install

Verify the installed environment:

. /opt/ros/fuerte/setup.sh
which roscore

You should see:

/opt/ros/fuerte/bin/roscore

You can delete ~/ros-underlay now, if you wish. The ROS core libraries are now installed onto your system.

Higher-level robotics libraries and tools

Desktop-Full Install: ROS Full, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

rosinstall ~/ros “http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=fuerte&variant=desktop-full&overlay=no”

Environment Setup

You’ll now need to update your environment. You can do this by typing:

source ~/ros/setup.bash

It’s convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched, which you can do with the command below:

echo “source ~/ros/setup.bash” >> ~/.bash_profile . ~/.bash_profile

Build Higher-level/tools

First, initialize your rosdep. ROS Fuerte comes with rosdep 2. If you get a message that your default sources list exists, then don’t worry as it means you’ve done this before.

sudo rosdep init rosdep update

Before finishing installation: remove the <catkin/> tag in /opt/ros/fuerte/share/rospack/manifest.xml.

Now, use rosdep 2 to install system dependencies.

rosdep install -ay

Finally, build the ROS stacks using rosmake.

rosmake -a

The 11th IEEE International Symposium on Safety, Security, and Rescue Robotics continues its tradition of attracting cutting-edge papers in the theory and practice of robots for all types of safety, security, and rescue applications such as disaster response, mitigation and recovery; rapid and secure inspection of critical infrastructure; detection of chemical, biological and radiological risks, and operations in these dangerous sites.

SSRR 2013 also serves as an entry point for researchers and technologists who want to learn more about safety, security and rescue robotics, through tutorials and keynotes.

A Rescue Robotics Camp, attached to the conference, gives participants the opportunity to learn about the state of the art algorithms for Search and Rescue Robots and their use. The camp is organized in collaboration with the NIFTi EU project and RoboCup.

Papers and participation fall into:

  • Regular papers (4-6 pages) describing original work in SSR or work that can be applied to SSR domains.
  • Center/project papers (2-4 pages) describing work at centers or active multi-institutional projects.
  • Vision papers (2-4) presenting long-term challenges or new ideas outside of the mainstream in computing for SSR robotics.
  • Late Breaking Reports (1-2 pages) contributing novel directions or work which has not been fully analyzed or explored. Late Breaking Reports are reviewed and the relevance of the material to the SSR domains must be clear.

Topics include but are not limited to:

  • Biologically inspired solutions
  • Casualty assessment, care and extraction
  • Chemical, biological, or radiological events
  • Computer vision
  • GPS-denied navigation and mapping
  • Humanoid robots
  • Humanitarian demining
  • Human-robot interaction
  • Inspection of critical infrastructure
  • Manipulation
  • Multi-agent coordination
  • Nuclear decommissioning
  • Sensing and sensor fusion
  • SLAM in extreme environments
  • Structural assessment
  • Telemedicine
  • Unmanned ground, aerial, and marine vehicles
  • Urban search and rescue
  • Wildland fire fighting

In addition, SSRR 2013 encourages the submission of “non-traditional” papers which contribute to understanding robot systems for Public Safety and have an explicit link to Public Safety but may not have results in a high fidelity SSRR domain.

SSRR 2013 will have three paper awards:

  • Best Paper Award
  • Best Student Paper Award
  • Outrageous Visions Award

Important Dates

  • Jun 14, 2013 Submission of proposals for tutorials and special sessions
  • Jul 19, 2013 Submission of regular papers, center/project papers, and vision papers
  • Aug 26, 2013 Notification of acceptance
  • Sep 6, 2013 Submission of Late Breaking Reports
  • Sep 16, 2013 Notification of acceptance of Late Breaking Reports
  • Sep 27, 2013 Submission of final papers

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  (http://car.mines-douai.fr) 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) mines-douai.fr

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.

The 8th french national conference on “Control Architectures of Robots” will be held this year in the beautiful city of Angers next 12-13 june. As for every edition since 2006, the CAR conference will gather researchers of the french robotics community interested in the transverse theme of embedded software for controlling autonomous robots. This event is an opportunity to get an overview of research currently conducted in french labs.

Important Dates

  • Paper submission (full paper or extended abstract) : 5th April 2013
  • Notification of acceptance : 26th April 2013
  • Camera ready due: 26th May 2013
  • Conference: 12-13 June 2013

Submission Guideline

  • Even if CAR is a french conference, we prefer article written in english
  • No specific style is required
  • No limit on article length, usually articles for CAR are between 6 and 17 pages long !
  • Send the PDF of  to car2013@contact.univ-angers.fr

During the execution of object-oriented applications, several millions of objects are created, used and then collected if they are not referenced. Problems appear when objects are unused but cannot be garbage-collected because they are still referenced from other objects. This is an issue because those objects waste primary memory and applications use more primary memory than they actually need.

Relying on the operating system’s (OS) virtual memory is not always enough since it cannot take into account the domain and structure of applications. At the same time, applications have no easy way to parametrize nor cooperate with memory management.

In our latest paper published in JOT, we present Marea, an efficient application-level object graph swapper for object-oriented programming languages. Its main goal is to offer the programmer a novel solution to handle application-level memory. Developers can instruct our system to release primary memory by swapping out unused yet referenced objects to secondary memory. Our approach has been qualitatively and quantitatively validated. Our experiments and benchmarks on real-world applications show that Marea can reduce the memory footprint between 23% and 36%.

While working on robots, we needed to work with a sensor that uses a serial communication protocol. However, we also needed UDP sockets to work with other parts of the robot. The problem is:

  • SerialPlugin only work in squeak VM (old VM) and not in the Cog VM
  • UDP sockets only work in Cog VM and not in squeak VM

I decided to take the bull by the horns and modify the Cog VM so that the SerialPlugin works. In this post, I will quickly explain what I did.

1. Get the VM sources

git clone git://gitorious.org/cogvm/blessed.git

I cloned the git repository of Cog. I did not used the svn repository (http://squeakvm.org/svn/squeak/trunk) because the git repository also includes useful scripts. Then, I followed the steps described in the HOWTOBUILD file.

2. Create your own VMMaker image

cd image
PHARO_VM=/Applications/SmalltalkVMs/CogVM.app/Contents/MacOS/CogVM ./newImage.sh

You should specify your own VM path. Then, you can use the generator.image that has loaded the right VMMaker package.

3. Generate C source code from Slang

In the generator.image, a workspace contains a lot of useful snippets. Execute the right one depending on your setup. For me it was:

"Configuration for OSX"
CogCocoaIOSConfig new
addExternalPlugins: #( FT2Plugin );
addInternalPlugins: #( UnixOSProcessPlugin );
"generateForDebug;"
generateSources; generate.

You can analyse the generated C source code in the src/ directory.

4. Compile C code

# as of 10.7 llvm is the default but incompatible compiler
export CC='/usr/bin/gcc-4.2'
export MACOSX_DEPLOYMENT_TARGET=10.5
cd build
sh ../codegen-scripts/extract-commit-info.sh
cmake .
make

5. Check your new VM

In the result/ directory you should find your new VM.

6. Modify VM sources

You can now either modify the C source code (plugins, …) or the Slang code. In my case, I changed a single method in the SerialPlugin class. Then I rebuilt a new modified VM and tested it. I also verified that I worked on the latest version.

Note: In my case, I worked on the VMMaker-oscog branch (Pharo branch?) and not the VMMaker.oscog (Eliot’s branch).

7. Publish your patch

I am not sure that I followed the “right” process in this step. What I did is to fill a bug entry in the Cog bug tracker https://code.google.com/p/cog/issues/list and I attached a .mcz (or .st) file to the bug entry.

Thanks to Igor, Esteban and others who made this process simple.

This end of the year comes with good news. Our research on robotic exploration and mapping received a two years funding from the Région Nord-Pas de Calais for a proposal entitled: CAIRE. This project that will be kicked off in 2013 involves two other partners: the RMoD team from INRIA Lille, and the Telice team from the IEMN lab of Lille.

The goal of the CAIRE project is to propose a methodology as well as an infrastructure for developing modular software to control robot for building maps of unknown buildings. One originality of our approach is that we fully rely on dynamic languages and more specifically on the Pharo reflective language. Dynamicity enables fast development and eases debugging. Besides, we rely on reflective and meta-level facilities for building tools and adapting the language to fit our needs.

Research we will be conducting in the CAIRE project will complement our previous work on cooperative exploration of unknown terrain using a fleet of robots. CAIRE is also related to our ongoing project RoboShop which aims at experimenting with robots in a shopping mall. In both projects we are using human size wheeled robots. They also share the same middleware: the de facto standard ROS, from the Open Source Robotics Foundation.

Last october the 29th, Mariano Martinez Peck successufuly  defended his PhD entitled “Application-Level Virtual Memory for Object-Oriented Systems“. The jury agreed on the importance and the quality of the contributions that were published in different journals and conferences. If you are interested learn more, you can find below the slides of the defense, as well as the video recording of Mariano’s talk.

Slides of the PhD Defense

Video of the PhD Presentation