NooTriX

Virtualizing ROS

Virtualizing ROS
September 01
22:04 2012

UPDATE: ROS Fuerte was released on April 2012. You might want use a more recent version of ROS:


If you want to use the Robot Operating System (ROS), the first step is to install it on some PC. Ideally, it should be an Ubuntu box. In a previous post, we explained the installation procedure step by step in an attempt to make easy this tedious task. In this post, we provide you with an even simpler solution! Yes, we made all the setup for you, in a VirtualBox virtual machine that you can Download (~2.4GB), duplicate and use freely for your experiments. Please note that we provide this file with no warranty. We will though try our best to answer questions and fix reported issues.

We assume that you have VirtualBox installed on your laptop as well as the VirtualBox Extension Pack. The archive we provide is actually an OVA (Open Virtualization Archive) which is an open standard format for packaging virtual machines. We will show step by step how to use it with Mac OS X as a host operating system. The setup should be similar with other operating systems if you use the same version of VirtualBox as we do, which is 4.1.20.

Step 1: Launch the import process by selecting the “Import Appliance…” menu (see Picture 1). Note that this requires an extra 6.3 GB approximatively on you disk.

Picture 1: Launch the import process

Step 2: Adjust the settings of the new virtual machine (see Picture 2). The default name is ROS. Since we want to be able to  run our tutorial on networking with ROS, we will rename this virtual machine to C3PO. You may want to also adjust other properties such as the amount of memory allocated to the virtual machine or the number of CPU cores it will be using.

Picture 2: Adjust the virtual machine settings

 Step 3: You need to agree with the licenses (see Picture 3). Those are free sotware licenses of Ubuntu and ROS. Once you have pressed the Agree button, it takes a few minutes to get the virtual machine ready.

Picture 3: Accept the licence agreement

Step 4: Launch the virtual machine by pressing the Start button of the VirtualBox Manager as shown by Picture 4. The virtual machine automatically opens the default user account which login and password are both viki (a reference to the V.I.K.I character from the I, Robot movie).

Picture 4: Start the C3PO virtual machine

Step 5: Rename the host name from ROS to c3po by editing the /etc/hostname file. To do so, evaluate the following command line in a terminal.

sudo gedit /etc/hostname

You’ll get prompted to povide the password for the viki account which is also viki. Then, an editor will open. Change the content of the file to c3po before saving (see Picture 5).

Picture 5: Edit the /etc/hostname file

Step 6: Map the IP address to the c3po host name by editing the /etc/hosts file. This can be done by evaluating the following command line in a terminal.

sudo gedit /etc/hosts

It will open an editor on the /etc/hosts file. Replace ROS by c3po and save the file (see Picture 6). So far, we just set the loopback address (127.0.0.1) to map to c3po. You can map it to other IP addresses as explained in our ROS networking tutorial.

Picture 6: Edit the /etc/hosts file

Step 7: Reboot Ubuntu, et voilà! You are ready to use ROS or run some ROS tutorial.

Regarding networking, there is a caveat. We set the virtual machine with a network bridged adapter connected to the Ethernet interface. If your hosting machine is connected to the network through internet via Ethernet, that’s fine. If you are using Wifi, you need to change the network setting (after having switched-off the virtual machine). However, on Mac OS X, the bridged adapter does not work with Airport for VirtualBox 4.1.2. Different solutions are possible:

  • Keep the virtual machine original settings (use of bridged adapter connected to the ethernet interface), and share the internet connection through ethernet under Mac OS X.
  • Attach the virtual machine adapter to “Internal Network”. With this setting, the virtual machine won’t be visible outside your computer, but it can interact with other virtual machines running on the same host.

There is an nice post about virtual machine network setup with VirtualBox. It provides clear explanations and drawings. We recommand you to read it if you wish to learn more about VirtualBox network options.

About Author

NooTriX Editor

NooTriX Editor

Related Articles

33 Comments

  1. Ricky
    Ricky November 07, 11:04

    Hi there,

    Could you please tell me what is the password for root authority of the virtual machine.

    Many thanks,
    Ricky

    Reply to this comment
  2. Pablo
    Pablo November 16, 20:21

    I could not run Kinect with Primisense Openni from the virtual box and ubuntu with ros. I installed virtual box and ROS.ova. And it run good. Later, I updated and upgrade ubuntu system and I downloaded the openni driver and I installed openni-camera and openni-launch in the fuerte version but the device from usb is not detected.

    Reply to this comment
  3. Lucas
    Lucas November 22, 18:38

    Hello!
    Could you tell me how to start the ROS, or any GUI?
    I need to configure it to use here in the institution where I work.

    Thankful.

    Reply to this comment
  4. rob
    rob November 23, 14:16

    sudo passwd root
    type viki for the first password
    then type in whatever you want for the root password the next 2 time

    Reply to this comment
  5. clausqr
    clausqr December 04, 21:52

    Hi, thank you very much for your image!
    Just wanted to say that it runs fine in Parallels too.
    Just use ovftool (availiable to download from vmware, needs registration but it’s free) to convert .ova to .vmx, then import from Parallels and you’re done!

    Reply to this comment
  6. Metaja
    Metaja December 07, 13:50

    Hi,
    Just to say that I imported the image in VMWare Fusion 5.0.2 and it works fine.

    Reply to this comment
  7. David
    David December 19, 02:24

    Dear,

    I just installed this VirtualBox ROS and the firefox runs fine. Now I would like to install turtlebot simulator but I got stuck at the first step. I cannot see any Software Center or Software Sources that allows me to set “universe”, “multiverse” etc. Also, it seems turtlebot is for electric version only, or not? Thank you very much for your help.

    David

    Reply to this comment
    • NooTriX
      NooTriX December 19, 14:04

      The turtlebot simulator is supposed to work for ROS Fuerte. Try evaluating in a terminal:
      sudo apt-get update

      and then
      sudo apt-get install ros-fuerte-turtlebot-robot

      You should not have any trouble with repositories. But, to answer your question there are different kinds of Ubunutu repositories (main, restricted, universe, and multiverse) depending on the licence (free software or not) and whether it is officially supported by Ubuntu or not. You’ll find out more inthe Ubuntu help .

      Reply to this comment
      • David
        David December 20, 01:28

        Dear NooTriX,

        Thank you very much indeed for your help. I have successfully installed turtlebot simulator. The command should read

        sudo apt-get install ros-fuerte-turtlebot-simulator

        that is, without ssh and replace robot by simulator. Thank you very much again.

        David

        Reply to this comment
  8. roid
    roid January 10, 02:44

    Are there plans to update the ROS version in the downloadable virtual machine from the April 2012 “Fuerte” version, to the new Dec 2012 “Groovy Galapagos” version?

    Reply to this comment
  9. Ian
    Ian January 11, 05:33

    Hi, NooTriX:

    I downloaded the virtual box 4.2.6 and the corresponding expansion pack and your ROS.ova file. I did all the things according to your instructions but I got stuck at the 2nd step.

    I got an error when importing the appliance, the error information is:

    Failed to import appliance /Users/Ian/Downloads/ROS.ova.

    Could not create the clone medium ‘/Users/Ian/VirtualBox VMs/C3RO/C3RO-disk1.vmdk’ (VERR_VD_VMDK_INVALID_FORMAT).

    Result Code: VBOX_E_FILE_ERROR (0x80BB0004)
    Component: Appliance
    Interface: IAppliance {3059cf9e-25c7-4f0b-9fa5-3c42e441670b}

    I am using a Mac OS X 10.8.2. Could you give me a hand on this?

    I really appreciate your help.

    Ian

    Reply to this comment
  10. Jeff Johnson
    Jeff Johnson January 29, 19:51

    I installed the VM as directed, and then ran system updates. Now when I try `source /opt/ros/groovy/setup.bash’ I get the following error:

    File “”, line 1
    import os; print(os.pathsep.join([x for x in “/opt/ros/groovy/bin:# reset environment variables by unrolling modifications based on all workspaces in CMAKE_PREFIX_PATH
    ^
    SyntaxError: EOL while scanning string literal
    bash: cat: No such file or directory
    bash: python: No such file or directory

    Anyone else run into this?

    Reply to this comment
    • NooTriX
      NooTriX January 31, 20:20

      With ROS Galapagos the update breaks something with catkin that eventually empties the PATH environment variable. This can be easily fixed.
      First, comment the line which sources the catkins workspace setup.bash line. Then regenerate the setup.*sh files of ROS.
      Here is the sequence of operations step by step:
      1-Open a new terminal or in an existing one go to your home directory by evaluating:
      cd
      2-Open the .bashrc file using a text editor by evaluating:
      /usr/bin/gedit .bashrc
      3-In the text editor insert a # in the line that causes the bug. It is located at the end of the .bashrc file. The commmented line will become:
      #source ~/catkin_ws/devel/setup.bash
      4-save the .bashrc file
      5-regenerate the ROS setup files by evaluating in the terminal:
      source /opt/ros/groovy/setup.bash
      6-In the editor uncomment the line commented in step 3, by removing the #. It will become:
      source ~/catkin_ws/devel/setup.bash
      7-save the .bashrc file
      8-Open a new terminal or source the .bashrc file in the one already open. ROS should work again.

      Reply to this comment
      • Jeff Johnson
        Jeff Johnson February 03, 19:11

        Thanks for the reply, unfortunately, the steps you listed don’t seem to work. If I leave out step 6, everything works fine (except for catkin, of course). But as soon as I source the catkin setup.bash file, ROS breaks with the same error.

        It appears that something that the catkin setup.sh file is doing is setting environment variables incorrectly. Before step 6 my PATH variable looks like this:

        viki@c3po:~$ echo $PATH
        /opt/ros/groovy/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

        immediately after step 6 it looks like this:

        viki@c3po:~$ echo $PATH
        # reset environment variables by unrolling modifications based on all workspaces in CMAKE_PREFIX_PATH export CMAKE_PREFIX_PATH=”” export PATH=”/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games” export PKG_CONFIG_PATH=”” export PYTHONPATH=”” # prepend folders of workspaces to environment variables export CMAKE_PREFIX_PATH=”/opt/ros/groovy” export CPATH=”/opt/ros/groovy/include:$CPATH” export LD_LIBRARY_PATH=”/opt/ros/groovy/lib:$LD_LIBRARY_PATH” export PATH=”/opt/ros/groovy/bin:$PATH” export PKG_CONFIG_PATH=”/opt/ros/groovy/lib/pkgconfig” export PYTHONPATH=”/opt/ros/groovy/lib/python2.7/dist-packages”/opt/ros/groovy/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

        It’s like some script isn’t properly terminating a string, and it’s dumping the script into the environment variables. Several other environment variables are also affected, like PYTHONPATH and PKG_CONFIG_PATH.

        This seems only to affect Nootrix VM installs… there’s a post on ROS Answers to the same effect: http://answers.ros.org/question/53844/after-update-ubuntu-1204-and-groovy-ros-doesnt-work-more/

        Any ideas? I tried debugging, but my shell scripting skills aren’t up to par for the task :-)

        Reply to this comment
  11. Jeff Johnson
    Jeff Johnson February 04, 15:28

    Turns out there was a very simple fix for the garbage in environment variables issue: I just had to re-initialized the catkin_workspace and did a catkin_make. Everything now works as expected. Thanks!

    Reply to this comment
    • roid
      roid February 22, 00:53

      What commands do i run to re-initialize the catkin_workspace and do a catkin_make ?

      Reply to this comment
      • NooTriX
        NooTriX March 03, 11:30

        To re-initialize catkin_workspace, you need to evaluate the following command lines in a terminal. Beware that this will delete packages you might have built, so make a backup before
        rm -rf ~/catkin_ws
        mkdir -p ~/catkin_ws/src
        cd ~/catkin_ws/src
        catkin_init_workspace
        cd ~/catkin_ws/
        catkin_make

        If you are doing this reinitialization to recover from an update bug, you should do the full sequence of fix steps as described in my other comment on this topic.

        Reply to this comment
  12. Tony
    Tony April 30, 00:46

    Recently I’ve downloaded Nootrix pre-installed ROS-groovy virtual machine. BTW great job on that.
    The problem is that the password isn’t viki.
    I have a 5 character password, where as viki has only 4.
    I’ve tried doubling all of the letters without any luck. What to do?
    Please help me.
    Thank you in advanced.

    Reply to this comment
    • NooTriX
      NooTriX April 30, 21:15

      Just checked again and did a fresh rebuild of the virtual machine from .OVA file. The password is four letters: viki
      Try installing rebuilding the virtual machine.

      Reply to this comment
  13. Laszlo-Andras Zsurzsa
    Laszlo-Andras Zsurzsa July 10, 22:33

    Is there a 64bit version of the image files? I Installed fuerte but it was 32 bit …

    Thank you in advance,
    Laszlo

    Reply to this comment
  14. mbkv
    mbkv September 27, 17:04

    The galapagos Ubuntu12.02 virtual applicance does not work on my 64bit Fedora machine. When starting the appliance, i get the initramfs prompt. http://imgur.com/g2Un7V9

    Reply to this comment
  15. new2ros
    new2ros April 03, 08:59

    I am getting an error message “failed to open a session for the virtual machine c3po. nonexistent host networking interface, name “name of interface” (VERR_INTERNAL_ERROR)

    Reply to this comment
    • NooTriX Editor
      NooTriX Editor Author April 03, 20:33

      Which virtual machine are you using? The one with ROS Fuerte or with ROS Groovy? Which software are you using? VirtualBox?

      Reply to this comment
      • Cati
        Cati April 07, 17:24

        I got the same error for virtual box with ROS fuerte on virtual box 4.1.16
        I appreciate your help

        Reply to this comment
        • NooTriX Editor
          NooTriX Editor Author April 07, 19:38

          Hi Cati, We’d just tried with a more recent VirtualBox (4.3.10) and indeed Ubuntu fails to establish a network connection. But, this was easily fixed by switching the Network Adapter in VirtualBox settings to attach it to NAT.

          Reply to this comment
  16. Kiwoo
    Kiwoo May 04, 08:20

    Hi
    I tried to download fuerte from your website, but it stops at 1 GB for two times.
    Is it problem on my side or your side?

    Thank you.

    Reply to this comment

Write a Comment

Your email address will not be published.
Required fields are marked *