Set up Odroid U3 with ROS

Flash the MicroSD card with new image (optional)

The MicroSD card which comes with the Odroid set has been flashed with the image on Odroid official website: http://com.odroid.com/sigong/nffileboard/nfileboard.php
However a Robotics Edition image is also available here: http://forum.odroid.com/viewtopic.php?f=77&t=7445
Here is the guide to flash the image:
* http://forum.odroid.com/viewtopic.php?f=53&t=23
* http://odroid.us/mediawiki/index.php?title=Step-by-step
Three things need to be noticed here or it would not boot:
1. In most cases, the MicroSD card should be on /dev/sdg
2. Use the micro SD card reader to connect the 16 G micro SD card to the computer.
3. Use 7 zip to extract the image. (7z e xxxx)

First Steps

  1. Insert MicroSD card w/ Ubunutu Installation (14.04).
  2. Connect keyboard, mouse, monitor, and wifi stick (or ethernet).
  3. Connect power cable to start Odroid.
  4. Resolution may not be correct, easy fix (“Preferences->Monitor Settings”)
  5. Connect to you local network LOCALNETWORK_NAME.
  6. If you are using the image on the official website, run ODROID Utility to change Hostname (for example: myodroid) and resize root partition.
  7. Else if you are using the* Robotics Edition* image, change Hostname buy typing
    sudo vim /etc/hostname
    and resize root partition by using gparted,
    and type iwconfig to check which wlan is used (for example: wlan4), then open Network Manager and click on the triangle on the right-up corner, choose preferences, and input the correct Wireless interface (for example: wlan4), then choose to connect Autolab, and go to the properties, select Use Encryption and choose WEP 1/2(Hex 0-9/A-F)
  8. Change network settings for Odroid, open the network preference and click the local network you are using now and then make the following modification:
IPV4: Method: Manual  
Address: 192.168.1.XXX   Netmask:   Gateway: YOU_ROUTER_ADDRESS  
DNS Server:,  
Search domains: LOCALNETWORK_NAME (you need to change this with the one you use, or you can just use your global ip and you can check it in www.whatismyip.com)   
(If there is DNS domain, it should be the same as Hostname (for example: myodroid)
  1. If you want to use ether net, you need to delete the MAC address file by rm /etc/sms...* and it will generate a new one automatically. If you don’t do this when using multiple odroids at the same time, different odroids will encounter a network conflict issue.
  2. Reboot.

“Can not open /dev/video0: 13 Permission denied.”

sudo adduser odroid video
-logout and login again

Set up ROS on Odroid and base station:

Follow ROS installation guide to install ROS on Odroid:
and then do
sudo apt-get install ros-indigo-compressed-image-transport

Set ROS_MASTER_URI to base station (which can be a desktop in the same local network, and you also need to install ROS on this base station) with static local IP address MASTER_ADDRESS (you need to replace the MASTER_ADDRESS with the true one you use in the following command) on terminal:
vim ~/.bashrc

Example launch file:

   <node pkg="usb_cam" type="usb_cam_node" name="HOSTNAME_usb_cam">  
        <param name="image_width" value="640"/>  
        <param name="image_height" value="480"/>  
        <param name="pixel_format" value="yuyv"/>  
        <remap from="/HOSTNAME_usb_cam/image_raw" to="/HOSTNAME/image_raw"/>  

Save it to PATH_TO_THE_LAUNCHFILE/LAUNCHFILENAME.launch on the base station, and then do
vim ~/.bash_aliase
alias 'launchros'='roslaunch PATH_TO_THE_LAUNCHFILE/LAUNCHFILENAME.launch'
Add the current user to video group to enable the permission of using webcam:
sudo adduser odroid video

Video stream test:

We use base station (for example your desktop) as the master and Odroid as the slave.
Set up the master:
sudo apt-get install image_view image_view
vim ~/.bash_aliases

        rosrun image_view image_view image:=/$1/image_raw _image_transport:=compressed

alias 'riv'=riv

save it , log out and in again, then type the following command in master (base station) and slave (Odroid):

master:$ roscore
slave:$ launchros
master:$ riv HOSTNAME

Then you shall see the video stream on the master.