2012-01-05

Running Arduino under Linux/Ubuntu

This is a tutorial on how to run arduino development under Ubuntu Linux, including managing the usb permissions.

Look at http://arduino.cc/playground/Linux/All

Download the Arduino IDE by typing
$ sudo apt-get install arduino

Managing USB permissions

*) Configure UDEV. This is for Arduino Uno. Nano has another vendor-id (23xx, i think). Find out by typing while having your device plugged in:
$ lsusb | grep 23[0-9][0-9]

*) Edit the udev rule file:
$ sudo nano /etc/udev/rules.d/81_arduido.rules

*) Add the following line:
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="00[3-a][0-f]", MODE="666", SYMLINK+="arduino arduino_$attr{serial}"

*) Restart udev:
$ sudo udevadm control --reload-rules

*) Find the dialout group name (usualy "dialout") by typing:
$ sudo ls -al /dev/ttyACM*

*) Add your self to that group.
$ sudo usermod -a -G

Remember that you will have to disconnect/connect the arduino and log out/log in before any changes take effect. To be extra super sure, reboot your system...

Running Phidgets under Linux/Ubuntu

You might get strange permission errors if trying to access phidget devices. This might solve it. In order for your software to access the USB port, you need to do the following changes:

Make the phidget devices accessable:

*) Open/create the udev rule file
$ sudo nano /etc/udev/rules.d/80_phidget.rules

*) Add the following content:
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="06c2", ATTRS{idProduct}=="00[3-a][0-f]", MODE="666"

*) set USB_DEVFS_PATH to /dev/bus/usb by adding to ~/.bashrc:
export USB_DEVFS_PATH=/dev/bus/usb

*) restart udev:
$ services udev restart

*) if it doesn't work. Try the good old:
$ sudo reboot

General libraries needed:
$ sudo apt-get install libusb-dev

Installing libs for C development
*) Install lib-usb
$ sudo apt-get install libusb-dev

For the latest c drivers go to http://www.phidgets.com/drivers.php and download the Linux source (currently: http://www.phidgets.com/downloads/libraries/libphidget_2.1.8.20111220.tar.gz)

*) Extract, compile and install

$ tar xvf libphidget_2.1.8.20111220.tar.gz
$ cd libphidget_2.1.8.20111220
$ ./configure
$ make
$ sudo make install

Installing libs for C# development
For the latest c drivers go to http://www.phidgets.com/drivers.php and download the windows libs (currently: http://www.phidgets.com/downloads/libraries/Phidget21-windevel_2.1.8.20111220.zip)
*) Extract and install
$ unzip Phidget21-windevel_2.1.8.20111220.zip
$ cd phidget21-windevel/
$ sudo gacutil -i Phidget21.NET.dll

The file will be located in directory in /usr/lib/mono/gac/Phidget21.NET/

Compiling OpenCV under Linux/Ubuntu

A tutorial on how to install and start developing OpenCV applications under Ubuntu/Linux with example code.
Installation
Installation guide found on:
http://opencv.willowgarage.com/wiki/InstallGuide

*) Install the development packages and other possible required packages
$ sudo apt-get install libcv-dev libcvaux-dev libhighgui-dev libbz2-dev

*) One might need the bz2-libs as well, which can be downloaded from
http://pkgs.org/download/bzip2-libs

*) Install cmake
$ sudo apt-get install cmake

*) Download the source (Currently OpenCV-2.3.1a)
$ svn co https://code.ros.org/svn/opencv/trunk/opencv
$ cd opencv
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..
$ make
$ sudo make install

*) Make sure you have /usr/local in your PATH and /usr/local/lib in your LD_LIBRARY_PATH (or in your ~/.bashrc file
$ export PATH=$PATH:/usr/local/lib:/usr/local
$ export LD_LIBRARY_PATH=/usr/local/libSimple test program
This is a simple program for testing my opencv installation. It should load an image, create a window containing the input from the first available camera unit and display it on the screen. It was the first program i wrote and was never intended to be used in demonstration purposes and should thus only be viewed as an of-context reference to some of the opencv features available.

Use
$ ./run.sh
To compile and run.

https://sites.google.com/site/wessmansourcecode/opencv.example.tar.gz

CMU Sphinx under Ubuntu/Linux

CMU Sphinx is a set of tools for automatic speech recognition. Here's an example of how to install it and a simple C program with comments.

More information can be found here:
http://cmusphinx.sourceforge.net/


Gstreamer

This example requires Gstreamer. Prior to installation, you will have to download and install it.

$ sudo apt-get install gstreamer0.10-plugins-base

Installation

*) Download the latest sources of sphinx base and pocket sphinx (currently, version 0.7):
http://sourceforge.net/projects/cmusphinx/files/sphinxbase/
http://sourceforge.net/projects/cmusphinx/files/pocketsphinx
*) unpack and install
$ tar xvf sphinxbase-0.7.tar.gz
$ cd sphinxbase-0.7
$ ./configure
$ make
$ sudo make install
$ tar xvf pocketsphinx-0.7.tar.gz
$ cd pocketsphinx-0.7/
$ ./configure
$ make
$ sudo make install

*) Make sure you have paths configured correctly in your ~/.bashrc file:
export LD_LIBRARY_PATH=/usr/local/lib
export PATH=$PATH:/usr/local/lib:/usr/local
Test your installation

Download a simple program and type
$ ./run.sh
to compile and run.
It will simply recognize a few words and display them (like "hello world", "who are you".
https://sites.google.com/site/wessmansourcecode/pocket.example.tar.gz

How does it work?Take a look at the web site of the CMPSphinx team.My intentions are to publish more of my knowledge later on...

Installing GStreamer under Linux

This article will describe how to install and run a simple c GStreamer application under linux.

*) Install the gstreamer development files and the alsa and vorbis support
$ sudo apt-get install libvorbis-dev flex libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

You might need to install additional packages. Your ./configure output will inform you about missing packages (ie: configure: error: Could not find).

*) Download the latest GStreamer source from
http://gstreamer.freedesktop.org/src/gstreamer/
http://gstreamer.freedesktop.org/src/gst-plugins-base/
http://gstreamer.freedesktop.org/src/gst-plugins-good/
Example:
$ wget http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.11.1.tar.gz
$ wget http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.11.1.tar.gz

$ wget http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.30.tar.gz


*) Make sure you have paths configured correctly in your ~/.bashrc file:
export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export GST_PLUGIN_PATH=/usr/local/lib
export PATH=$PATH:/usr/local/lib:/usr/local

*) Extract, compile and install the files (do this for every package accordingly)
$ tar xvf gstreamer-0.11.1.tar.gz
$ cd gstreamer-0.11.1
$ ./configure
$ make
$ sudo make install
$ cd ..
$ tar xvf gst-plugins-base-0.11.1.tar.gz
$ cd gst-plugins-base-0.11.1
$ ./configure
$ sudo make
$ sudo make install
$ cd ..
$ tar xvf gst-plugins-good-0.10.30.tar.gz
$ cd gst-plugins-good-0.10.30
$ ./configure
$ sudo make
$ sudo make install

To compile:
$ gcc `pkg-config --cflags --libs gstreamer-0.10 gstreamer-plugins-base-0.10` [filename.c] -o [output file]
In order to compile under Ubuntu 11.x (due to changes to the ordering of pkg-config statements) use:
$ gcc `pkg-config gstreamer-0.10 --cflags` [filename.c] -o [output file] `pkg-config gstreamer-0.10 --libs`

Install IronRuby for MonoDevelop / C# under Linux

A tutorial on how to prepare your .NET4 environment for ruby scripts under Linux / Ubuntu.

Gainet a lot of information from this tutorial: http://zuulcat.com/2011/06/06/installing-ironruby-from-source-on-mono/

Installing ruby runtime
*) If you have Ruby binaries installed you can skip this step (the latest source can be found at http://www.ruby-lang.org/en/downloads/ )
*) Download the latest source (currently, 1.9.3)
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz
$ tar xvf ruby-1.9.3-p0.tar.gz
$ cd ruby-1.9.3-p0/
$ ./configure --prefix=/usr
$ make
$ sudo make install

*) Install xbuild
$ sudo apt-get install mono-xbuild

*) Make sure you are running the latest .NET 4.0 framework (see my previous post)
You need mono 2.10.x. In order to check your version type
$ dmcs --version
$ xbuild /version

*) Download and install the IronRuby runtime libraries.
$ git clone git://github.com/IronLanguages/main.git src

*) Build the solutions needed
$ cd src
$ xbuild /p:Configuration=Debug Solutions/Ruby.sln

*) Add the libraries to the assembly cache. Make sure the files are added to the right directory. You can specify it by using the -root parameter (ie: gacutil -root /usr/lib -i library.dll if your gac path is /usr/lib/mono/gac).
$ cd bin/Debug
$ sudo gacutil -i IronRuby.dll
$ sudo gacutil -i Microsoft.Scripting.dll
$ sudo gacutil -i Microsoft.Dynamic.dll
$ sudo gacutil -i IronRuby.Libraries.dll

*) Gathering and installing binary and source files

$ sudo mkdir -p /usr/local/ironruby/bin
$ sudo cp * /usr/local/ironruby/bin
$ sudo mkdir /usr/local/ironruby/lib
$ sudo cp -R ../../Languages/Ruby/StdLib/* /usr/local/ironruby/lib
$ sudo cp -R !(*.bat) ../../Languages/Ruby/Scripts/bin/ /usr/local/ironruby/bin

I WILL add an example of a ironruby project here. later.

2011-12-30

A brief description

At date, the robot consists of the following hardware parts:

*) Mainframe: An old Asus EEE 901 with an Atom processor @ 1.5 GHz
*) An Arduino controller used as an I/O device
*) A home made board made out of 2 PIC 12f629's used as a servo controller (capable of controlling 6 servos)
*) A home made board for controlling voltage with digital signals through an optocoupler (capable of controlling 4 generic D/C devices)
*) A head consisting of 2 servos, a web camera and a small 5 mW laser
*) An arm made out of Meccano and 3 servos
*) Wires, batteries etc, etc.

The software is based upon a linux 2.6.38 kernel running ubuntu 11.04 (natty) server. The main program is written in c#, some of the peripheral modules in c (for the opencv, gstreamer and cmusphinx libraries) and so is of course the Arduino software, process scripting will be written in ruby, and the PIC controllers is programmed using PIC assembly language.