OpenRTM-aistをBeagleBoardへ実装する方法

images.jpg
OpenRTM-aist(C++ 版 ) を テキサス・インスツルメンツ (Digi-Key 協力 ) により開発されたシングルボードコンピュータの BeagleBoard へ実装する方法を示すものです。
OpenRTM-aist と 本 web サイトからダウンロードできる OpenCV-rtcs を使用して、 BeagleBoard に接続された web カメラの映像を PC でビュアするシステムを紹介します。

概要

BeagleBoard は、フラッシュメモリは搭載されておらず、 microSD カードを起動媒体となっています。本書は、microSD カードに ubntu( 最小構成 ) をインストールし、その上で OpenRTM-aist を動作させる手順を示します。また、OpenCV をインストールし、OpenCV-rtcs の OpenCVCamera コンポーネントを動作させ、 PC で CameraViewer コンポーネントを動作させます。

RTSE1.jpg
システム概要

アーキテクチャ・環境

アーキテクチャ及び環境は以下の通りです。

system.jpg
system2.jpg
アーキテクチャ 環境

手順

手順は以下の通りです。

  1. Linux(ubuntu)のインストール
  2. OpenRTM-aistのインストール
  3. OpenCVのインストール
  4. OpenCVCameraコンポーネントのコンパイル

準備

以下のものを準備します。

BeagleBoard ターゲットボードです。
microSD/MMC カード BeagleBoard の起動媒体で、これに実装します。
BeagleBoard には microSD/MMC カードが標準添付されますが、それとは別に準備した方がよいでしょう。
Ubuntu microSD/MMC カードに Ubuntu を展開するのに使用します。
今回は Windows7 + VMware Player で準備しました。
USBシリアルケーブル BeagleBoard と PC をターミナルで接続 (COM) するために使用します。
今回は KONDO のシリアル USB アダプターを使用しました。
ターミナルソフト BeagleBoard とシリアル通信するために使用します。
今回は PuTTY を使用しました。
webカメラ BeagleBoard に接続します。
今回は HD Pro Webcam C920(logicool 製 ) を使用しました。

参考

BeagleBoard 上で OpenRTM-aist を動作させるシステムは、産総研オープンラボ2012 にて (有)ウィン電子工業が協力出展したデモで使用したものとほぼ同じです。
相違点を示します。
  • デモでは Wireless LAN を使用しています。
  • デモでは Name Server は PC 側で起動しています。

Linux(ubuntu)のインストール

SD カードの作成

Ubuntu 最小構成のプレインストールイメージの SD カードを作成します。

SD カードを PC の SD スロットに差し以下の手順をで SD カードへ導入します。

 > wget http://ynezz.ibawizard.net/beagleboard/precise/ubuntu-12.04-r5-minimal-armhf-2012-07-29.tar.xz
 > tar xJf ubuntu-12.04-r5-minimal-armhf-2012-07-29.tar.xz
 > cd ubuntu-12.04-r5-minimal-armhf-2012-07-29
 > sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot beagle_xm

動作確認

BeagleBoard と PC を USB シリアルケーブルで接続します。
接続すると PC でデバイスドライバを要求してきますので、当該シリアル USB アダプターのデバイスドライバをインストールします。 ( 今回は KONDO のシリアル USB アダプターを使用しましたので KO_Driver2011_R2.zip を使用しました。 )
デイバスマネージャで COM ポートを確認して ( 下図の場合は COM3 です。 ) ターミナルソフトでその COM ポートを開きます。ボーレートは 115200bps です。

deviceman.jpg
COM ポートの確認

BeagleBoard の電源を投入します。 ターミナルに ubuntu の起動メッセージが表示され、ログイン名の入力で停止します。

ログイン画面

ログインのためのユーザ名は「ubuntu」、パスワードは「temppwd」です。
これでログインできれれば、 SD カード作成は完了です。

OpenRTM-aistのインストール

LAN接続

BeagleBoard に LAN ケーブルを接続します。念のため、 ifconfig により ip アドレスを確認します。以下は例です。
 > ifconfig
 eth0      Link encap:Ethernet  HWaddr ce:b9:bc:ab:a1:db
           inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
           inet6 addr: 2001:c90:86c1:6ef3:ccb9:bcff:feab:a1db/64 Scope:Global
           inet6 addr: fe80::ccb9:bcff:feab:a1db/64 Scope:Link
           inet6 addr: 2001:c90:86c1:6ef3:b5b7:73e9:6d6c:fb94/64 Scope:Global
           UP BROADCAST RUNNING MULTICAST  MTU:1488  Metric:1
           RX packets:15 errors:0 dropped:0 overruns:0 frame:0
           TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:1697 (1.6 KB)  TX bytes:1952 (1.9 KB)
 
 lo        Link encap:Local Loopback
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING  MTU:16436  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

環境の準備

OpenRTM-aist 、OpenCV 、コンポーネントをビルドするための環境を入手します。

 >sudo apt-get update
 >apt-get install gcc g++ make uuid-dev
 >sudo apt-get install autoconf
 >sudo apt-get install libtool
 >sudo apt-get install libomniorb4-1 libomniorb4-dev omniidl omniorb-nameserver
 >sudo apt-get install cmake
 >sudo apt-get install subversion
 >sudo apt-get install ffmpeg
 >sudo apt-get install libv4l-0
 >sudo apt-get install libv4l-dev

OpenRTM-aist のビルド

ここからは、OpenRTM-aist (C++版) 1.x系のインストール >> ソースからのビルド (Linux編)を参考にビルドを進めます。

 >wget http://www.openrtm.org/pub/OpenRTM-aist/cxx/1.1.0/OpenRTM-aist-1.1.0-RELEASE.tar.gz
 >tar zxvf OpenRTM-aist-1.1.0-RELEASE.tar.gz
 >cd OpenRTM-aist-1.1.0
 >./build/autogen
 >./configure
 >make
 >sudo make install
 >cd

※ビルドは 70 分ほどかかります。

動作確認

SimleIO の ConsoleInComp と ConsoleOutComp を接続して動作確認をします。

ターミナルソフトで ssh 経由で2つのターミナル(ConsoleInComp 用と ConsoleOutComp 用 )を開きます。( 今回の例では ip アドレスを 192.168.1.4 で行っています。 )
COM ポートのターミナルで omniNames を起動し、ssh のターミナルで ConsoleIn と ConsoleOut 起動し、RTSystemEditor で接続とアクティブ化を行います。

  • COM ポートのターミナル

 >rtm-naming
 Starting omniORB omniNames: omap:2809
 
 Mon Nov  5 02:19:20 2012:
 
 Starting omniNames for the first time.
 Wrote initial log file.
 Read log file successfully.
 Root context is   IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e300000010000000000000070000000010102000c0000003139322e3136382e312e3700f90a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100035454410800000088769750010004f2
 Checkpointing Phase 1: Prepare.
 Checkpointing Phase 2: Commit.
 Checkpointing completed.
 omniNames properly started

  • ConsoleInComp用のターミナル

 >cd OpenRTM-aist-1.1.0/examples/SimpleIO/
 >./ConsoleInComp

  • ConsoleOutComp用のターミナル

 >cd OpenRTM-aist-1.1.0/examples/SimpleIO/
 >./ConsoleOutComp

RTSystemEditor で接続とアクティブ化を行います。 RTSystemEditor の操作はこちらの「RTSystemEditor (RTSE) の起動」を参照します。

OpenCVのインストール

 >wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2
 >tar jxvf OpenCV-2.3.1a.tar.bz2
 >cd OpenCV-2.3.1
 >mkdir build
 >cd build
 >cmake -D CMAKE_BULD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON USE_V4L=ON WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON USE_GStreamer=ON ../
 >make
 >sudo make install
 >cd
 >sudo ldconfig

※ビルドは 120 分ほどかかります。

OpenCVCamera コンポーネントのコンパイル

OpenCVCamera コンポーネントは Webカメラから画像かキャプタして転送するコンポーネントです。

コンポーネントを取得

 >svn co http://openrtm.org/svn/ImageProcessing/trunk/ImageProcessing/opencv/components/OpenCVCamera/
 >cd OpenCVCamera

Makefile の編集

このままでは make でエラーがでますので、 Makefile.OpenCVCamera を以下のように編集します。

 @@ -16,7 +16,7 @@
  # $Id$
  #
  CXXFLAGS = `rtm-config --cflags` `pkg-config --cflags opencv` -I/usr/share/include -I/usr/share/include/rtm/idl
 -LDFLAGS  = `rtm-config --libs` `pkg-config --libs opencv` -L/usr/share/include/rtm/idl -lRTCSkel
 +LDFLAGS  = `rtm-config --libs` `pkg-config --libs opencv` -L/home/ubuntu/OpenRTM-aist-1.1.0/src/lib/rtm/idl/.libs -L/usr/share/include/rtm/idl -lRTCSkel
  SHFLAGS  = -shared
 
  IDLC     = `rtm-config --idlc`

コンパイル

 >make -f Makefile.OpenCVCamera

動作確認

BeagleBoard で Name Server と OpenCVCameraComp を起動します。

 >rtm-naming
 >./OpenCVCameraComp

PC 側で Name Server と OpenCVCameraComp を起動します。
RTSystemEditor を起動し、OpenCVCamera コンポーネントと OpenCVCamera コンポーネントの接続とアクティブ化を行います。

Documentation:

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク