Raspberry Pi に開発環境をインストールすれば、Raspberry Pi上でのセルフコンパイルによる開発が可能です。(このサイズの組込み Linux ボードでは、通常クロスコンパイルによる開発が普通です。)
従って、PC上の RTCBuilder で生成した RTコンポーネントのコードを、Raspberry Pi上でコンパイル、実行することができます。 残念ながら Eclipse をインストールして実用的な速度で使用することは難しいようです。
この節では RTコンポーネントを開発するために必要なパッケージをインストールしていきます。
OpenRTM-aist は、apt-get を使用してインストールすることが可能です。 まず sources.list を修正します。
$ sudo vi /etc/apt/sources.list
sourcelist に以下の1行を加えてください。
deb http://openrtm.org/pub/Linux/raspbian/ wheezy main
次に、以下の手順でインストールを行います。
# apt-get update # apt-get -y --force-yes install gcc g++ make uuid-dev # apt-get -y --force-yes install libomniorb4-dev omniidl omniorb-nameserver # apt-get -y --force-yes install openrtm-aist openrtm-aist-dev openrtm-aist-example # apt-get -y --force-yes install openrtm-aist-python openrtm-aist-python-example
OpenRTM-aist のインストール後、サンプルコンポーネントを起動してOpenRTM-aist が正しくインストールされたかどうか確認します。
下図のように、PC側でネームサーバと ConsoleIn コンポーネント、Raspberry Pi側でネームサーバと ConsoleOut コンポーネントを実行します。 コンポーネントはデフォルトで localhost のネームサーバに接続しますので、これを利用して rtc.conf に特定のネームサーバを設定することなく簡単にコンポーネントにアクセスします。 PC上の RTSystemEditor で、PC のネームサーバと Raspberry Pi上のネームサーバに接続し、ConsoleIn コンポーネントと ConsoleOut コンポーネントを接続します。
Raspberry Pi に TeraTerm などで接続後、コンポーネントを起動します。 ネーミングサービスを起動してから ConsoleOut を起動します。
$ rtm-naming $ /usr/share/OpenRTM-x.y/examples/ConsoleOutComp または $ python /usr/share/OpenRTM-x.y/examples/python/SimpleIO/ConsoleOutComp.py
上の omniorb-nameserver のインストール時に、システム起動時に自動的に omniORB のネームサービスが起動するようになっています。 しかし、ネームサービスの起動タイミングとネットワークインターフェースの起動タイミングによっては、外部からネームサーバに正しくアクセスできない場合があります。 その場合は、rtm-naming コマンドによりネームサーバを再起動することで、問題に対処できる場合があります。
まず、ネームサーバを起動します。 Windows の場合、スタートメニューから 「OpenRTM-aist x.y」→「C++」→「tools」の下のStart Naming Service から起動します。 ついでに、RTSystemEditor も起動しておきます。
続いて、ConsoleIn を起動します。 「OpenRTM-aist x.y」→「C++」→「examples」の下の ConsoleOut をクリックして ConsoleOut コンポーネントを起動します。
RTSystemEditor の左側の NameService View のコンセントアイコンをクリックし、ネームサーバに接続します。 まず、自ホストのネームサーバに接続します。接続ダイアログに localhost と入力します。
次に、Raspberry Pi のネームサーバへ接続します。再度 NameService View の接続アイコンをクリックし、Raspberry Pi のホスト名+.localををダイアログに入力します。
ネームサービスビューには2つのネームサーバの状態が表示され、それぞれのネームサーバの下に ConsoleIn0、ConsoleOut0 という2つのコンポーネントが見えているはずです。 RTSystemEditor のメニューバーのonlineエディタアイコン(ONと書かれたアイコン)をクリックし、SystemEditor を開きます。 NameService View から ConsoleIn0 と ConsoleOut0 をそれぞれ SystemEditor 上にドラッグアンドドロップし、InPort と OutPort を接続します。
メニューバーの緑の再生ボタンをクリックすると、2つのコンポーネントがアクティベートされ上図のような状態になります。
PC側の ConsoleIn コンポーネントのウインドウから適当な数字を入力します。
すると、下図のように Raspberry Pi側の ConsoleOut の表示に ConsoleIn で入力した数値が現れます。
ネットワーク環境や PC の設定により、上記の手順でうまくいかないことがあります。以下のトラブルシューティングを参考に問題を解決してください。
このほか、Raspberry Pi の有線LANと無線LAN等2つ以上のネットワークインターフェースがある場合、PCとの接続に使用するどちらかのネットワークのみを使うように設定することで解決するケースもあります。
また、Raspberry Pi の有線LANと無線LAN等2つ以上のネットワークインターフェースがある場合、PCとの接続に使用するどちらかのネットワークのみを使うように設定することで解決するケースもあります。
コマンドプロンプトから ipconfig で PC の IPアドレスを調べる等して、rtc.conf に使用する方の IPアドレスを以下のように設定します。
corba.endpoints: 192.168.11.20
ただし、Vista 以降の Windows では、C:\Program Files 以下のファイルは簡単には編集ができなくなっています。c:\tmp など適当なディレクトリーに ConsoleIn.exe と rtc.conf をコピー(あるいは新たに作成)するなどして、対処してください。
corba.endpoints: 192.168.11.21
cmake は apt-get を利用してインストールする事が可能です。root 権限を持つユーザでインストールを行います。
$ sudo apt-get update $ sudo apt-get install cmake
CMake ベースの RTコンポーネントプロジェクトでは、デフォルトで doxygen を利用してドキュメントを生成するように設定されています。 しかしながら、doxygen をインストールすると、LaTeX等も同時にインストールされてしまい、SDカードの容量を圧迫しますのでこのチュートリアルでは Doxygen をインストールしません。
CMake ベースの RTCプロジェクトにおいて doxygen でのドキュメント生成を抑制するには、トップレベルの CMakeLists.txt で、
option(BUILD_DOCUMENTATION "Build the documentation" ON) ↓ option(BUILD_DOCUMENTATION "Build the documentation" OFF)
のように変更します。
SDカードの容量が十分ある場合 doxygen を apt-get で以下のようにインストールすることができます。
$ sudo apt-get install doxygen
※Doxygen のインストールが完了するまでには、十数分程度かかります。
ソースコードを外部から取得する際にたびたび使用するので subversion/git をインストールすることをお勧めします。
$ sudo apt-get install subversion git
コンポーネントのコンパイルが行えるかテストしてみます。 以下のリポジトリに移動ロボット Kobuki用コンポーネントがありますので、チェックアウトしてコンパイルしてみます。
ソースコードをチェックアウトしてみます。
$ svn co http://svn.openrtm.org/components/trunk/mobile_robots/kobuki : 中略 A kobuki/libkobuki/doc/CMakeLists.txt A kobuki/libkobuki/License.rtf A kobuki/libkobuki/CMakeLists.txt A kobuki/rtc.conf A kobuki/CMakeLists.txt Checked out revision 2. $
kobuki ディレクトリーいかにソースコードがチェックアウトされましたので、build ディレクトリーを作成しその中でビルド、インストールします。
$ cd kobuki $ mkdir build $ cd build $ cmake -DCMAKE_INSTALL_PREFIX=/usr .. $ make $ cd src $ make install
このソースコードはデフォルトで Doxygenに よるドキュメント生成が OFF になっていますので、Doxygen がインストールされていなくてもビルドできるでしょう。
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
Raspberry Pi に開発環境をインストールすれば、Raspberry Pi上でのセルフコンパイルによる開発が可能です。(このサイズの組込み Linux ボードでは、通常クロスコンパイルによる開発が普通です。)
従って、PC上の RTCBuilder で生成した RTコンポーネントのコードを、Raspberry Pi上でコンパイル、実行することができます。 残念ながら Eclipse をインストールして実用的な速度で使用することは難しいようです。
この節では RTコンポーネントを開発するために必要なパッケージをインストールしていきます。
OpenRTM-aist のインストール
OpenRTM-aist は、apt-get を使用してインストールすることが可能です。 まず sources.list を修正します。
sourcelist に以下の1行を加えてください。
次に、以下の手順でインストールを行います。
サンプルコンポーネントの実行
OpenRTM-aist のインストール後、サンプルコンポーネントを起動してOpenRTM-aist が正しくインストールされたかどうか確認します。
下図のように、PC側でネームサーバと ConsoleIn コンポーネント、Raspberry Pi側でネームサーバと ConsoleOut コンポーネントを実行します。 コンポーネントはデフォルトで localhost のネームサーバに接続しますので、これを利用して rtc.conf に特定のネームサーバを設定することなく簡単にコンポーネントにアクセスします。 PC上の RTSystemEditor で、PC のネームサーバと Raspberry Pi上のネームサーバに接続し、ConsoleIn コンポーネントと ConsoleOut コンポーネントを接続します。
Raspberry Pi上で ConsoleOut の実行
Raspberry Pi に TeraTerm などで接続後、コンポーネントを起動します。 ネーミングサービスを起動してから ConsoleOut を起動します。
上の omniorb-nameserver のインストール時に、システム起動時に自動的に omniORB のネームサービスが起動するようになっています。 しかし、ネームサービスの起動タイミングとネットワークインターフェースの起動タイミングによっては、外部からネームサーバに正しくアクセスできない場合があります。 その場合は、rtm-naming コマンドによりネームサーバを再起動することで、問題に対処できる場合があります。
PC側での ConsoleIn の実行
まず、ネームサーバを起動します。 Windows の場合、スタートメニューから 「OpenRTM-aist x.y」→「C++」→「tools」の下のStart Naming Service から起動します。 ついでに、RTSystemEditor も起動しておきます。
続いて、ConsoleIn を起動します。 「OpenRTM-aist x.y」→「C++」→「examples」の下の ConsoleOut をクリックして ConsoleOut コンポーネントを起動します。
RTSystemEditor により接続
RTSystemEditor の左側の NameService View のコンセントアイコンをクリックし、ネームサーバに接続します。 まず、自ホストのネームサーバに接続します。接続ダイアログに localhost と入力します。
次に、Raspberry Pi のネームサーバへ接続します。再度 NameService View の接続アイコンをクリックし、Raspberry Pi のホスト名+.localををダイアログに入力します。
ネームサービスビューには2つのネームサーバの状態が表示され、それぞれのネームサーバの下に ConsoleIn0、ConsoleOut0 という2つのコンポーネントが見えているはずです。 RTSystemEditor のメニューバーのonlineエディタアイコン(ONと書かれたアイコン)をクリックし、SystemEditor を開きます。 NameService View から ConsoleIn0 と ConsoleOut0 をそれぞれ SystemEditor 上にドラッグアンドドロップし、InPort と OutPort を接続します。
メニューバーの緑の再生ボタンをクリックすると、2つのコンポーネントがアクティベートされ上図のような状態になります。
PC側の ConsoleIn コンポーネントのウインドウから適当な数字を入力します。
すると、下図のように Raspberry Pi側の ConsoleOut の表示に ConsoleIn で入力した数値が現れます。
トラブルシューティング
ネットワーク環境や PC の設定により、上記の手順でうまくいかないことがあります。以下のトラブルシューティングを参考に問題を解決してください。
Raspberry Pi側のサービスのしたに ConsoleOut が表示されない
このほか、Raspberry Pi の有線LANと無線LAN等2つ以上のネットワークインターフェースがある場合、PCとの接続に使用するどちらかのネットワークのみを使うように設定することで解決するケースもあります。
また、Raspberry Pi の有線LANと無線LAN等2つ以上のネットワークインターフェースがある場合、PCとの接続に使用するどちらかのネットワークのみを使うように設定することで解決するケースもあります。
RTSystemEditor で接続できない、反応がなくなる等
コマンドプロンプトから ipconfig で PC の IPアドレスを調べる等して、rtc.conf に使用する方の IPアドレスを以下のように設定します。
ただし、Vista 以降の Windows では、C:\Program Files 以下のファイルは簡単には編集ができなくなっています。c:\tmp など適当なディレクトリーに ConsoleIn.exe と rtc.conf をコピー(あるいは新たに作成)するなどして、対処してください。
CMake のインストール
cmake は apt-get を利用してインストールする事が可能です。root 権限を持つユーザでインストールを行います。
Doxygen のインストールについて
CMake ベースの RTコンポーネントプロジェクトでは、デフォルトで doxygen を利用してドキュメントを生成するように設定されています。 しかしながら、doxygen をインストールすると、LaTeX等も同時にインストールされてしまい、SDカードの容量を圧迫しますのでこのチュートリアルでは Doxygen をインストールしません。
ドキュメントを生成しない方法
CMake ベースの RTCプロジェクトにおいて doxygen でのドキュメント生成を抑制するには、トップレベルの CMakeLists.txt で、
のように変更します。
Doxygen のインストール
SDカードの容量が十分ある場合 doxygen を apt-get で以下のようにインストールすることができます。
※Doxygen のインストールが完了するまでには、十数分程度かかります。
Subversion/Git のインストール
ソースコードを外部から取得する際にたびたび使用するので subversion/git をインストールすることをお勧めします。
コンパイルのテスト
コンポーネントのコンパイルが行えるかテストしてみます。 以下のリポジトリに移動ロボット Kobuki用コンポーネントがありますので、チェックアウトしてコンパイルしてみます。
ソースコードのチェックアウト
ソースコードをチェックアウトしてみます。
kobuki ディレクトリーいかにソースコードがチェックアウトされましたので、build ディレクトリーを作成しその中でビルド、インストールします。
このソースコードはデフォルトで Doxygenに よるドキュメント生成が OFF になっていますので、Doxygen がインストールされていなくてもビルドできるでしょう。