2010년 3월 25일 목요일

아래 원인을 찾느라 어제 고생좀 했다.
버전문제인지 정확한 원인을 알 수가 없다.

어제 일때문에 어부지리로 set_target_properties에 대한 VERSION, SOVERSION property에 대해서 알겠됐다.

보통 라이브러리를 만드려고 하면 아래와 같이 한다.
add_library( lib_name shared sources )
이렇게 만든다.

그런데 target에 대해 속성값을 주어 다르게 만들 수도 있다.
정의를 보자면 set_target_properties( target1 target2 ... PROPERTIES prop1 value1 prop2 value2 ... )
target은 설정하고자 하는 라이브러리 이름이고 PROPERTIES 다음에 나오는 prop1는 속성이름이다.
이 이름중에 VERSION, SOVERSION에 대해서 설명하려고 한다.

간단하게 말해 VERSION, SOVERSION은 각각 빌드 버전과 API버전이다.
예로 target 이름이 orocos-helloworld 이면 생성되는 파일은
liborocos-helloworld-gnulinux.so ->liborocos-helloworld-gnulinux.so.1.10.1
liborocos-helloworld-gnulinux.so.1.10 ->liborocos-helloworld-gnulinux.so.1.10.1
liborocos-helloworld-gnulinux.so.1.10.1

VERSION: 1.10.1
SOVERSION: 1.10

ocl make시 에러?

CMakeFiles/helloworld.dir/HelloWorld.o: In function `ORO_main_impl(int, char**)':
HelloWorld.cpp:(.text+0x13de): undefined reference to `RTT::Property, std::allocator > >::Property(RTT::PropertyBase*)'
../ocl/liborocos-ocl-common-gnulinux.so.1.8.99: undefined reference to `RTT::Property::Property(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, int)'
collect2: ld returned 1 exit status
make[2]: *** [helloworld/helloworld] 오류 1
make[1]: *** [helloworld/CMakeFiles/helloworld.dir/all] 오류 2
make: *** [all] 오류 2


2010년 3월 24일 수요일

[CMake] using cmake_dependent_option


CMakeDependentOption: Macro to provide an option dependent on other options
This macro presents an option to the user only if a set of other conditions are true. When the option is not presented a default value is used, but any value set by the user is preserved for when the option is presented again. Example invocation:
OPTION( VAR1"doc" OFF)
MESSAGE(STATUS "${
VAR1}")
CMAKE_DEPENDENT_OPTION( VAR2"doc" OFF " "NOT VAR1" OFF)
MESSAGE(STATUS "${
VAR2}")
VAR1, VAR2는 OFF 상태로 보여지고, 변수값도 OFF, OFF로 저장된다.
OPTION( VAR1"doc" ON)
VAR1만 보여지고, 변수값은 ON, OFF이다.
이 상태에서 CMAKE_DEPENDENT_OPTION( VAR2"doc" OFF "NOT "doc" ON) 경우
VAR1만 보여지고, 변수값은 ON, ON이다.



2010년 3월 22일 월요일

OPROS 배포에 관한 연구

suv으로 관리하고 공개 한다.
cmake으로 컴파일 한다.
종류는: arm, mipse, window, linux

directory tree:
OCE(engine), tutorial( Service Port, Data port, Event port, Multi Port, remote port),
bin(Component Editor, Component Composer), Stack(Components),
TutleSim(Windows version)

1단계로 CMake에 대해서 잘 알아야 한다.
2단계로 부속들을 만들고
3단계로 Component를 만드는 것이다.
그런데 www.cmake.org사이트가 너무 느리다.


OROCOS RTT and ROS integrated


rosmake --rosdep-install orocos_ros_integration
rosrun orocos_ros_integration rosdeployer -s example.xml -l info

orocos peer를 생성하면 자동으로 peer_ros peer가 생성된다.
그리고 connectPeers(&peer, &peer_ros)가 된다.

깨끗하게 종료가 안된다.

2010년 3월 15일 월요일

OpenRTM-aist install

Download OpenRTM-aist-1.0.0-RELEASE.tar.gz
tar xvjz OpenRTM-asit-1.0.0-RELEASE.tar.gz ~/
Download omniORB-4.1.4.tar.gz
tar xvjz omniORB-4.1.4.tar.gz ~/
cd ~/omniORB-4.1.4
mkdir build
cd build
../configure; make; make install
cd ~/OpenRTM-aist-1.0.0
./configure; make ;make install

[참고]
apt-get instal openrtm* 으로 했지만 잘 깔리지 않는다. 그래서 사이트에서 소스를 다운 받아 설치 했다.
./configure --with-tao
...tao_idl Ge
Ge option 없다고 한다. 그래서 default(omniORB) 한다.

둘다 컴파일 하는데 꽤 걸린다.

2010년 3월 11일 목요일

orocos window install


Level : INTERMEDIATE


[기대결과]
ubuntu 환경에서 ./eclient or ktaskbrowser 가 windows환경의 server app의 오브젝트를 호출한다.

[선행작업]
Windows:
svn co http://svn.mech.kuleuven.be/repos/orocos/branches/rtt/rtt-1.10

vc9 실행, release
vc90 추가 포함 디렉토리
"C:\orocos\orocos-rtt-1.10.0\src";"C:\orocos\orocos-rtt-1.10.0\build\src";"C:\orocos\orocos-rtt-1.10.0\build\src\os";"C:\orocos\orocos-rtt-1.10.0\build\src\os\win32";C:\orocos\ACE_wrappers;C:\orocos\ACE_wrappers\TAO;C:\orocos\ACE_wrappers\TAO\orbsvcs;"C:\orocos\orocos-rtt-1.10.0\build\src\corba";C:\orocos\boost_1_36_0
추가 종속성
..\Release\orocos-rtt-win32.lib
C:\orocos\ACE_wrappers\lib\ACE.lib
C:\orocos\ACE_wrappers\lib\TAO.lib
C:\orocos\ACE_wrappers\lib\TAO_PortableServer.lib
C:\orocos\ACE_wrappers\lib\TAO_CosNaming.lib
C:\orocos\ACE_wrappers\lib\TAO_Messaging.lib
C:\orocos\ACE_wrappers\lib\TAO_AnyTypeCode.lib
C:\orocos\ACE_wrappers\lib\TAO_Valuetype.lib

ApplicationServer.hpp에서

struct ApplicationServer
class RTT_CORBA_API ApplicationServer로 변경

Services.cpp에서
// ACE_THROW_SPEC (CORBA::UNKNOWN ()); 주석처리

server application 환경 설정
추가 포함 드렉토리
../../;../../rtt/corba;../../build/src;../../build/src/corba;../../build/src/os;../../build/src/os/win32;C:\orocos\boost_1_37_0;C:\orocos\ACE_wrappers;C:\orocos\ACE_wrappers\TAO

추가 디렉토리 라이브러리
"C:\orocos\orocos-rtt-1.10.0\build\src\$(ConfigurationName)";"C:\orocos\orocos-rtt-1.10.0\build\src\corba\$(ConfigurationName)";C:\orocos\boost_1_37_0\lib;C:\orocos\ACE_wrappers\lib
추가 종속성
C:\orocos\orocos-rtt-1.10.0\build\src\corba\Release\orocos-rtt-corba-win32.lib orocos-rtt-win32.lib C:\orocos\ACE_wrappers\lib\ACE.lib C:\orocos\ACE_wrappers\lib\TAO.lib C:\orocos\ACE_wrappers\lib\TAO_PortableServer.lib C:\orocos\ACE_wrappers\lib\TAO_CosNaming.lib C:\orocos\ACE_wrappers\lib\TAO_Messaging.lib C:\orocos\ACE_wrappers\lib\TAO_AnyTypeCode.lib C:\orocos\ACE_wrappers\lib\TAO_Valuetype.lib

[실행]
ubuntu:
vi ~/.bashrc
export NameServiceIOR=corbaloc:::9000/NameService

or

./eclient -ORBInitRef NameService=corbaloc:iiop:192.168.0.54:9000/NameService


window:
Naming_Service.exe -ORBEndpoint iiop://192.168.0.54:9000
corba_test_server.exe -ORBInitRef NameService=corbaloc:iiop:192.168.0.54:9000/NameService

[추가사항]
windows 방화벽 설정시
./eclient 네임서버의 Component는 찾지만 (네임서버통신성공)
object 명령 실행 안됨(방화벽때문만은 아닌것 같은)

ktaskbrowser는 방화벽 해제시와 같은 실행을 보임

corba_test_server.exe에서
131.672 [ ERROR ][StatementProcessor] CORBA exception raised when creating ExpressionProxy!
131.672 [ ERROR ][StatementProcessor] system exception, ID 'IDL:omg.org/CORBA/TRANSIENT:1.0'
OMG minor code (2), described as '*unknown description*', completed = NO
이런 메시지가 표시됨

[후기]
Naming_Service의 설정을 정확이 알지 못해서 하루를 보냄
Naming_Service 폴더의 README



2010년 3월 9일 화요일

KTaskBrowser build

sudo apt-get install qt3-appls-dev kdelibs4-dev ...

../configure --without-arts


remove -lTAO_IDL_BE from Makefile
make all
sudo make install