terça-feira, 1 de novembro de 2011

OpenCV 2.3.1 + OpenNI no Ubuntu 11.10

A versão mais recente do OpenCV (até o momento em que esse post foi escrito) pode ser encontrada no site do sourceforge e pode ser baixada com o seguinte comando:
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2


Para extrair o pacote com os fontes, execute:
$ tar -jxvf OpenCV-2.3.1a.tar.bz2

Tenho o hábito de deixar todos os fontes de pacotes que instalo manualmente no diretório /usr/local/src, então vamos mover todo o conteúdo do pacote extraído no diretório corrente para nosso local de preferência
$ sudo mv OpenCV-2.3.1 /usr/local/src/

Recomendo criar um novo diretório para abrigar tanto os arquivos de configuração quando os que forem produzidos pela compilação. Assim, crie um novo diretório chamado build e mova-se para lá:
$ mkdir build
$ cd build

Bom, precisamos instalar alguns pacotes que são dependências para a compilação desta versão do OpenCV no Ubuntu 11.10. Para isso, execute:
$ sudo apt-get install ffmpeg libavcodec53 libavdevice53 libavfilter2 libavformat53 libavutil51 libdc1394-22 libgsm1 libpostproc52 libschroedinger-1.0-0 libswscale2 libva1

Há ainda outras dependências que também precisam ser instaladas e que irão gerar uma lista de outras sub-dependências. Listei os três pacotes necessários ao OpenCV e logo abaixo deles, uma lista dos pacotes que estes irão requerer:

→ llibgtk2.0-dev
debhelper gettext html2text intltool-debian libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev libglib2.0-dev libgtk2.0-dev libmail-sendmail-perl libpango1.0-dev libpixman-1-dev libpng12-dev libsys-hostname-long-perl libunistring0 libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-utils libxrandr-dev libxrender-dev po-debconf x11proto-composite-dev x11proto-damage-dev x11proto-fixes-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev zlib1g-dev

→ libgstreamer0.10-dev
gir1.2-gstreamer-0.10 libgstreamer0.10-dev libxml2-dev

→ libgstreamermm-0.10-dev
gir1.2-gst-plugins-base-0.10 libglibmm-2.4-dev libgstreamer-plugins-base0.10-dev libgstreamermm-0.10-2 libgstreamermm-0.10-dev libsigc++-2.0-dev libxml++2.6-2 libxml++2.6-dev

→ libdc1394-22-dev
libdc1394-22-dev libraw1394-dev

→ libjpeg62-dev

→ libtiff4-dev
libtiff4-dev libtiffxx0c2

→ libv4l-dev

→ openni-dev ps-engine
freeglut3 openni-dev ps-engine

Assim, execute o comando a seguir e confirme a instalação dos pacotes adicionais que o apt-get sugerir como necessários.
$ sudo apt-get install libgtk2.0-dev libgstreamer0.10-dev libgstreamermm-0.10-dev libdc1394-22-dev libjpeg62-dev libtiff4-dev libv4l-dev openni-dev ps-engine



Por razão do OpenCV utilizar alguns dos recursos mais recentes do FFmpeg, precisaremos instalar  a versão 0.8.5 do FFmpeg manualmente.


Tal qual qualquer outro, baixe, compile e instale o pacote ffmpeg 0.8.5 realizando a sequencia abaixo:
$ wget http://ffmpeg.org/releases/ffmpeg-0.8.5.tar.bz2
$ tar -xvf ffmpeg-0.8.5.tar.bz2
$ sudo mv ffmpeg-0.8.5 /usr/local/src
$ cd /usr/local/src/ffmpeg-0.8.5
$ ./configure --disable-yasm
$ make
$ sudo make install

Agora podemos concluir a instalação pois todas as dependências foram satisfeitas. Certifique-se que depois disto tudo vc esteja no diretório build que havíamos criado lá no início.

Se desejar dispor dos exemplos e do suporte para o OpenNI (framework para trabalhar com o kinect) é necessário ativar duas opções que estão em OFF por padrão. Proceda da seguinte maneira:
$ ccmake ..
Mude as opções BUILD_EXAMPLES e WITH_OPENNI para “ON”
Pressione [c] para criar o arquivo de configuração do CMake e em seguida [q] para sair.

Caso contrário, simplesmente configure usando o comando cmake
$ cmake ..

Pronto! Podemos compilar e instalar o pacote, digitando os comandos a seguir:
$ make
$ sudo make install

Após instalados, os arquivos estarão distribuídos nos seguintes diretórios:
Executáveis em /usr/local/bin
Headers em /usr/local/include/opencv e /usr/local/include/opencv2
Libraries em /usr/local/lib
Documentação em /usr/local/share/OpenCV/doc
Exemplos em /usr/local/share/opencv/samples

Enjoy! :D

sábado, 7 de maio de 2011

Stage 3.2.2 no Ubuntu 11.04


É muito provável que você já tenha instalado o Player, já que esse é o primeiro passo antes de instalar o Stage. No Ubuntu 11.04, esse procedimento pode ser bastante simples já que podemos instalar o Player 3.0.2 através do apt. Entretanto se você precisar personalizar a instalação de alguma forma, poderá seguir os passos apresentados aqui.

Concluída essa primeira etapa, podemos passar a instalação do Stage propriamente dito.

Devemos começar instalando alguns pacotes que são necessários a compilação (dependências):
$ sudo apt-get install libfltk1.1-dev freeglut3-dev libglu1-mesa-dev libglut3-dev

Descompacte o pacote e mova-se para o diretório criado:
$ tar -xvf Stage-3.2.2-Source.tar.gz
$ cd Stage-3.2.2-Source


Crie um diretório para conter as informações da compilação e mova-se para ele:
$ mkdir build
$ cd build

Antes de compilar precisamos configurar os elementos do pacote, então digite:
$ cmake ..

Note que em meio as mensagens exibidas aparecerá:
-- checking for one of the modules 'websim'
  * WebSim not detected.

Don't worry. Esta mensagem não é considerada nem como de erro, nem de alerta (warning). Trata-se apenas de uma mensagem informativa. Na prática o FLTK faz todo o papel principal, tornando o WebSim coadjuvante.

Continuando, compile e instale o pacote:
$ make
$ sudo make install

Particularmente tenho o hábito de deixar os arquivos de modelo de mundo (diretório worlds) com a mesma estrutura de diretórios que a do apt, com uma pequena diferença, usar o o diretório /usr/local como base. Para isso, faça:
$ sudo cp -R ../worlds /usr/local/share/stage

Para que não seja necessário setar o valor da variável LD_LIBRARY_PATH todas as vezes que for utilizar o Stage, crie um arquivo de configuração:
$ sudo gedit /etc/ld.so.conf.d/stage.conf

... com o seguinte conteúdo:
# Stage default configuration
/usr/local/lib

Salve as alterações e recarregue o arquivo para que sejam incorporadas ao ldconfig:
$ sudo ldconfig

Pronto! Vamos testar para termos certeza de que está tudo correto:
$ stage /usr/local/share/stage/worlds/simple.world

Agora é só usar =)

Player 3.0.2 no Ubuntu 11.04


No Ubuntu 11.04 a versão do Player disponível no apt é exatamente a 3.0.2 (uhu!). Pode ser que você precise de algum driver ou recurso que não esteja disponível entre os elementos padrões da compilação (tal como, suporte a lasers Hokuyo, imu da XSens etc), então terá que compilar o pacote manualmente.

As ações e procedimentos que apresentamos a seguir tem exatamente esse objetivo. Mas antes de começar, estamos considerando que o FFmpeg, OpenCV 2.2 e o Gearbox 9.11 estão instalados e corretamente configurados.

Se você não tenha feito isto ainda, veja como pode fazê-lo aqui em um de nossos outros posts: FFmpeg + OpenCV e Gearbox

Antes de prosseguir tenha certeza de que algumas coisas estejam instaladas e tualizadas:
$ sudo apt-get update
$ sudo apt-get install build-essential cmake cmake-curses-gui

Descompacte o pacote:
$ tar -xvf player-3.0.2

Instale as dependências do Player:
$ sudo apt-get install autotools-dev freeglut3 libart-2.0-dev libtool liblodo3.0 libltdl-dev libzlcore-dev libgeos-dev libgeos-c1 swig libgnomecanvas2-dev libgtk2.0-dev libgtk2.0-cil-dev libboost-signals1.42.0 libboost-signals1.42-dev libboost-thread1.42.0 libboost-thread1.42-dev libboost1.42-dev libgsl0-dev libpqxx-dev libstatgrab-dev libstatgrab6

Crie um o diretório para versão final:
$ mkdir build
$ cd build/

Configure o pacote:
$ cmake -DLARGE_FILE_SUPPORT=ON -DBUILD_PYTHONCPP_BINDINGS=ON -DBUILD_DOCUMENTATION=ON -DENABLE_DRIVER_HOKUYO_AIST=ON -DENABLE_DRIVER_OCEANSERVER=OFF ..

Aqui as opções ON entre outras coisas são para que o Player suporte arquivos grandes, gere a documentação usando o Doxygen, além do suporte ao laser Hokuyo. Por fim, o driver OceanServer foi desabilidado pois apresenta problemas de compatibilidade de versão com o Gearbox 9.11 e não temos qualquer dispositivo que trabalhe com este tipo de servidor não tentei resolver o problema.

Agora compile e instale:
$ make
$ sudo make install

Para que não seja necessário setar o valor da variável LD_LIBRARY_PATH todas as vezes que for utilizar o Player, crie um arquivo de configuração:
$ sudo gedit /etc/ld.so.conf.d/player.conf

... com o seguinte conteúdo:
# player default configuration
/usr/local/lib

Salve as alterações e recarregue o arquivo para que sejam incorporadas ao ldconfig:
$ sudo ldconfig

Pronto! \o/

Agora vá para a pasta do usuário (ou uma outra qualquer) e faça um teste:
$ cd ~
$ player

That's all folks!

sexta-feira, 6 de maio de 2011

Gearbox

Primeiramente faça o download do fonte do pacote e descompacte:
$ wget http://sourceforge.net/projects/gearbox/files/gearbox/9.11/gearbox-9.11.tar.gz
$ tar -zxvf gearbox-9.11.tar.gz

Instale as dependências do Gearbox:
$ sudo apt-get install libboost-python-dev libzeroc-ice33-dev

Por causa de um problema com os nomes dos arquivos o cmake não irá localizar uma das libs que acabamos de instalar (libboost_python-mt-py27.so), então basta criar um link simbólico para resolver o problema:
$ sudo ln -s /usr/lib/libboost_python-mt-py27.so /usr/lib/libboost_python-mt.so

Mude para o diretório do Gearbox:
$ cd gearbox-9.11

Crie um diretório para a versão final do pacote e mude para ele:
$ mkdir build
$ cd build

Agora vamos configurar, compilar e instalar o pacote:
$ cmake ..
$ make
$ sudo make install

Devemos acrescentar o path das libs do Gearbox ao arquivo ld.so.conf para que seja possível a sua localização automática. Para isso acrescente o texto /usr/local/lib/gearbox em uma nova linha do arquivo.

$ sudo gedit /etc/ld.so.conf

Recarregue o arquivo para que as alterações sejam consideradas:
$ sudo ldconfig

Além disso é necessário corrigir alguns arquivos de configuração. A compilação não chega a criar todos os arquivos necessários e alguns apresentam um erro de sintaxe que compromete a resposta do comando pkg-config.

Acesse o diretório onde estão as informações para o pkg-config
$ cd /usr/local/lib/pkgconfig

Substitua o ponto-e-virgula por um espaço nas entradas “Requires” dos arquivos: GbxGarminAcfr.pc, GbxNovatelAcfr.pc, GbxSickAcfr.pc e GbxSmartBatteryAcfr.pc, separando as dependências que a lib em questão possui.
$ sudo gedit GbxGarminAcfr.pc GbxNovatelAcfr.pc GbxSickAcfr.pc GbxSmartBatteryAcfr.pc

Agora vamos criar os arquivos que estão faltando:
$  sudo gedit GbxIceUtilAcfr.pc GbxLockFileAcfr.pc GbxNovatelUtilAcfr.pc GbxSerialDeviceAcfr.pc GbxUtilAcfr.pc

Os conteúdos serão, respectivamente:
Name: GbxIceUtilAcfr
Description: Part of GearBox.
Version: 1.0.0
Requires:
Libs: -L/usr/local/lib/gearbox  -lGbxIceUtilAcfr 
Cflags: -I/usr/local/include/gearbox

Name: GbxLockFileAcfr
Description: Part of GearBox.
Version: 1.0.0
Requires:
Libs: -L/usr/local/lib/gearbox  -lGbxLockFileAcfr 
Cflags: -I/usr/local/include/gearbox

Name: GbxNovatelUtilAcfr
Description: Part of GearBox.
Version: 1.0.0
Requires:
Libs: -L/usr/local/lib/gearbox  -lGbxNovatelUtilAcfr 
Cflags: -I/usr/local/include/gearbox

Name: GbxSerialDeviceAcfr
Description: Part of GearBox.
Version: 1.0.0
Requires:
Libs: -L/usr/local/lib/gearbox  -lGbxSerialDeviceAcfr 
Cflags: -I/usr/local/include/gearbox

Name: GbxUtilAcfr
Description: Part of GearBox.
Version: 1.0.0
Requires:
Libs: -L/usr/local/lib/gearbox  -lGbxUtilAcfr 
Cflags: -I/usr/local/include/gearbox
Salve todos os arquivos e verifique se está tudo correto, digitando:
$ pkg-config --libs flexiport Gbx* hokuyo_aist

Espera-se que o resultado seja algo parecido com (mesmo que em ordem diferente):
-L/usr/local/lib/gearbox -lGbxGarminAcfr -lGbxNovatelAcfr -lGbxNovatelUtilAcfr -lGbxSickAcfr -lGbxIceUtilAcfr -lGbxSerialDeviceAcfr -lGbxSmartBatteryAcfr -lGbxSerialAcfr -lGbxLockFileAcfr -lGbxUtilAcfr -lhokuyo_aist -lflexiport

Para outras informações visite o site do projeto em http://gearbox.sourceforge.net/

That's it! =)

quinta-feira, 5 de maio de 2011

Instalando o OpenCV 2.2 no Ubuntu 11.04

Primeiramente é necessário instalar o FFmpeg

Se você não for realizar qualquer Instale o FFmpeg e suas dependências:
$ sudo apt-get install ffmpeg libavcodec52 libavdevice52 libavfilter1 libavformat52 libavutil50 libdc1394-22 libgsm1 libpostproc51 libschroedinger-1.0-0 libswscale0 libva1 libvpx0

Baixe o OpenCV 2.2 e descompacte o pacote:
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2
$ tar -xvf OpenCV-2.2.0.tar.bz2

Mova-se para o diretório do OpenCV:
$ cd OpenCV-2.2.0

Instale todas as dependências
$ sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libdc1394-22-dev libraw1394-dev libv4l-dev libgtk2.0-dev libjpeg62-dev libjasper-dev libtiff4-dev libtiffxx0c2 python-numpy libssl-dev python2.7-dev libblas3gf libgfortran3 liblapack3gf libgstreamermm-0.10-dev libglibmm-2.4-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libgstreamermm-0.10-2 libsigc++-2.0-dev libxml++2.6-2 libxml++2.6-dev libxml2-dev

Há um pequeno problema com relação ao include do Video For Linux (v4l) no arquivo cap_v4l.cpp. Aqui há duas opções:

(1) Editar o arquivo para acrescentar o caminho correto:

$ gedit modules/highgui/src/cap_v4l.cpp
Comente a instrução #include <linux/videodev.h> na linha 217 (aproximadamente), e
Acrescente #include <libv4l1-videodev.h>
Salve o arquivo
    (2) Criar um link simbólico redirecionando a procura pelo arquivo inexistente para o local correto:

    $ sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h

      Agora podemos compilar:
      $ mkdir release
      $ cd release
      $ cmake ..
      $ make
      $ sudo make install