通信プラットフォームプロトタイプ開発(doil)作業メモ¶
本ページは、通信プラットフォームプロトタイプ作成作業の作業メモです。
開発環境の準備¶
開発リポジトリ¶
リポジトリサーバーに以下リポジトリを作成して、開発中のソースをチェックインする。
http://openrtm.org/svn/OpenRTM-aist/branches/work_ForDoil
必要なツールの準備¶
ビルドするために以下のものを実行する。
$sudo apt-get install subversion $wget http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/build/pkg_install_ubuntu.sh $chmod 777 pkg_install_ubuntu.sh $sudo ./pkg_install_ubuntu.sh $sudo apt-get install libcppunit-dev $sudo apt-get install libzeroc-ice34-dev $sudo apt-get install autoconf $sudo apt-get install libtool $sudo apt-get install doxygen
ice のバージョンは 3.4.2. (以前の ice のバージョンはは 3.2.1.)。
cppunit、iceに関しては将来的にはconfigure.acでチェックするようにした方がよいかも。。。
ビルド方法¶
一度、全てをビルドする。
work_ForDoil/OpenRTM-aist で
$./build/autogen $./configure $make
work_ForDoil/OpenRTM-aist/src/lib/rtc で
$make
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/stubs で
$make
omniidl の doil バックエンド¶
/usr/lib/omniidl/omniidl_be/ へ
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/doil をコピーする。
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/Makefile.am を修正して、コピーせずにできるようにしたい。。。。
現在は、./createinit.py `pwd` > init.py でエラーが発生する。
echo "#!/usr/bin/env python" > createinit.py echo "import sys" >> createinit.py echo "import omniidl_be" >> createinit.py echo "path0 = '.'" >> createinit.py echo "path1 = omniidl_be.__path__[0]" >> createinit.py echo "print \"__path__ = ['%s', '%s']\" % (path0, path1)" >> createinit.py chmod 755 createinit.py ./createinit.py `pwd` > __init__.py Traceback (most recent call last): File "./createinit.py", line 3, in <module> import omniidl_be ImportError: No module named omniidl_be make: *** [__init__.py] エラー 1
ディレクトリ¶
+--OpenRTM-aist +--src +--ext +--lib +--coil +--rtm +--rtcyt +--rtm_corba +--doil +--tests +--corba +--ice +--utils +--omniidl_be
開発について¶
doilビルド方法¶
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest で
$../../../../../../../build/autogen $./configure $make
work_ForDoil/OpenRTM-aist/src/lib/rtc で
$make
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests で
$make interface $make proxy $make servant
ここで、再度
$rm PortServiceProxy.cpp SDOServiceProxy.cpp ConfigurationProxy.cpp PortServiceProxy.h SDOServiceProxy.h ConfigurationProxy.h $svn update
この操作は、バックエンドでコードの生成ができるよになれば、不要になる。
doilテスト¶
work_ForDoil/OpenRTM-aist/src/lib/doil/corba/tests/TestRunner.cpp
work_ForDoil/OpenRTM-aist/src/lib/doil/corba/tests/CORBAManager
work_ForDoil/OpenRTM-aist/src/lib/doil/ice/tests/TestRunner.cpp
work_ForDoil/OpenRTM-aist/src/lib/doil/ice/tests/IceManager
work_ForDoil/OpenRTM-aist/src/lib/doil/tests/TestRunner.cpp
work_ForDoil/OpenRTM-aist/src/lib/doil/tests/ORBManager
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/TestRunner.cpp
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/ExecutionContextProxy work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/OrganizationProxy work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/ConfigurationProxy work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/PortServiceProxy work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ComponentActionServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ConfigurationServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/DataFlowComponentActionServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/DataFlowComponentServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ExecutionContextServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ExecutionContextServiceServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/FsmObjectServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/FsmParticipantActionServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/FsmParticipantServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/FsmServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/FsmServiceServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/LightweightRTObjectServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ModeCapableServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ModeServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/MonitoringServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/MultiModeComponentActionServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/MultiModeObjectServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/OrganizationServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/PortServiceServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/RTObjectServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/SDOServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/SDOServiceServant work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/SDOSystemElementServant
work_ForDoil/OpenRTM-aist/src/lib/doil/utils/omniidl_be/tests/unitTest/ConfigurationServant で
$make
開発について¶
CROBA¶
- Proxy
doil::ProxyBase <- doil::CORBA::CORBAPrxyBase <- xxxx::CROBA::XXXXProxy
例) ConfigurationProxy
doil::ProxyBase <- doil::CORBA::CORBAPrxyBase <- SDOPackage::CROBA::ConfigurationProxy
namespace doil { class ProxyBase { ・ ・ ・ }; };
namespace doil { namespace CORBA { class CORBAProxyBase : public doil::ProxyBase, { ・ ・ ・ } } }
namespace doil { class ImplBase { ・ ・ ・ }; typedef ImplBase LocalBase; };
namespace SDOPackage { namespace Local { class IConfiguration : public virtual doil::LocalBase { ・ ・ ・ } } }
namespace SDOPackage { namespace CORBA { class ConfigurationProxy : public virtual ::doil::CORBA::CORBAProxyBase, public virtual ::SDOPackage::Local::IConfiguration { ・ ・ ・ } } }
- Servant
その他¶
Proxyパターンデザインパターン¶
CORBA、Ice、XML-RPC¶
CORBA | Ice | XML-RPC | |
インターフェース言語 | IDL定義 | Slice定義 |
Slice定義¶
http://doc.zeroc.com/display/Ice/The+Slice+Language
http://zeroc.com/doc/Ice-3.3.0/manual/Slice.5.21.html
omniidlのバックエンド(omniidl_be)のdoilでIDLファイルiceファイルを生成する。
typedef | ||
any型 | classを使用する | |
boolean型 | bool型 | |
raises (XXXXXX); | throws XXXXXX; | |
bool foo(in string bar); | bool foo(string bar); | 引数の in inout は削除する。 |
interface SDO : SDOSystemElement | interface SDO extends SDOSystemElement | interface継承 |
<compiler-name> [options] file...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- --output-dir DIR
-- Place the generated files into directory DIR.
-
-
- --ice
-- Permit use of the normally reserved prefix Ice for identifiers. Use this option only when compiling the source code for the Ice run time.
- --underscore
-- Permit use of underscores in Slice identifiers.
Mapping of Slice Built-In Types to C++ Types¶
The Slice built-in types are mapped to C++ types as shown in this table:Slice | C++ |
bool | bool |
byte | Ice::Byte |
short | Ice::Short |
int | Ice::Int |
long | Ice::Long |
float | Ice::Float |
double | Ice::Double |
string | std::string |
/OpenRTM-aist/src/lib/doil/ice/BasicTypeConversion.h