ダウンロード
最新バージョン : 2.1.0-RELESE
| 2.1.0-RELESE | ダウンロードページ |
OpenRTM@Github
OpenRTM-aist GitHubサイト
ROS
Robot Operating System
Choreonoid
モーションエディタ/シミュレータ
DAQ-Middleware
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
| 2.1.0-RELESE | ダウンロードページ |
OpenRTM-aist GitHubサイト
Robot Operating System
モーションエディタ/シミュレータ
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
産総研が提供するRTC集
東京オープンソースロボティクス協会
데이터포트가 있는 컴포넌트
여기에서는 데이터포트를 2개 가지는 컴포넌트(MRCConvertor)를 VC8에서 작성합니다.
컴포넌트의 개요
입력 디바이스로부터의 데이터를 차바퀴 2개의 속도로 변환해, OutPort로 출력하는 컴포넌트.
Joystick등의 입력 디바이스에서 이동 로봇(전륜 2,후륜 1,전륜만이 구동)을 조작할 때에, 사용할 수가 있다.
작성하는 RTC의 사양은 이하대로입니다.
MRCConvertor의 모형을 생성
RtcTemplate에서 모형을 생성합니다.
작업용 폴더의 작성
적당한 장소에 작업용 폴더를 작성합니다.
이번은 폴더명을 컴포넌트명(MRCConvertor)과 같게 합니다.
CUI판 rtc-template편(gen.bat)
rtc-template의 실행을 간단하게 하기 위해서 아래와 같은 배치파일을 조금 전 작성한 작업용 폴더에 작성합니다.
rtc-template(gen.bat)의 실행
아래와 같이 gen.bat 파일을 실행합니다.
Eclipse판 RtcTemplate편
Eclipse판 RtcTemplate로의 대응은 아래와 같이 됩니다.
copyprops.bat의 실행
RtcTemplate 실행에 의해, copyprops.bat 파일이 작업용 폴더에 생성됩니다.
이 copyprops.bat 파일을 이용해 컴포넌트의 빌드에 필요한 rtm_config.vsprops를 작업 폴더에 복사합니다.
copyprops.bat 파일을 더블 클릭 해 주세요.
MRCConvertor의 구현
Visual Studio의 기동
MRCConvertorComp_vc8.vcproj를 더블 클릭 해, Visual Studio를 기동합니다.
헤더 파일의 편집
Visual Studio의 솔루션 익스플로러에서, MRCConvertorComp -> Header Files 의 순서에 클릭해, MRCConvertor.h 를 더블 클릭 합니다.
std::vector와 math 라이브러리를 사용하기 때문에 2개의 헤더 파일을 인클루드 합니다.
MobileRobot(전륜 2, 후륜 1, 전륜만이 구동)의 이동 벡터를 차바퀴의 속도로 변환하기 위한 메소드 convert(), 변환에 필요한 계수 m_k를 선언합니다.
private: float m_k; /*! * @brief InPort로부터의 데이터(X,Y)를 MobileRobot용의 바퀴 속도 데이터로 변환한다. * m_velFromInput.data[0]와 m_velFromInput.data[1]만을 사용한다. */ std::vector<float> convert(float x, float y) { float th = atan2(y,x); float v = m_k * hypot(x,y); std::vector<float> ret_val; ret_val.push_back(v * cos(th - (M_PI/4.0))); // left vel ret_val.push_back(v * sin(th - (M_PI/4.0))); // right vel return ret_val; }소스 코드 편집
Visual Studio의 솔루션 익스플로러에서, MRCConvertorComp -> Source Files 의 순서로 클릭해, MRCConvertor.cpp 를 더블 클릭합니다.
onExecute()의 주석을 해제하고 이하와 같이 작성합니다.
/*! * @brief InPort로부터의 데이터(X,Y)를 MobileRobot용의 바퀴 속도 데이터로 변환해, * OutPort에서 출력한다. */ RTC::ReturnCode_t MRCConvertor::onExecute(RTC::UniqueId ec_id) { if (m_velFromInputIn.isNew()) { m_velFromInputIn.read(); if (m_velFromInput.data.length() > 2) { std::vector<float> con_val = this->convert(m_velFromInput.data[0],m_velFromInput.data[1]); for (int i = 0; i < 2; i++) m_velToWheel.data[i] = con_val[i]; m_velToWheelOut.write(); } } return RTC::RTC_OK; }여기서 하고 있는 것은,
빌드
Visual Studio의 메뉴로부터"빌드(B)" -> "솔루션의 빌드(B)" 를 클릭해 컴포넌트의 빌드를 실시합니다.
rtc.conf의 작성
에디터에서 이하의 내용을 기술해 rtc.conf라고 하는 파일명으로 Debug 또는 Release 폴더에 보존합니다.
실행
빌드에서 에러가 없다면, Debug 혹은 Release 폴더에 rtc.conf 를 작성해, MRCConvertorComp.exe를 실행합니다.
MRCConvertorComp.exe를 실행하기 전에 NamingService를 기동해 주십시오.네임서버의 기동
<OpenRTM-aist 인스톨 폴더>\bin\rtm-naming.bat를 더블 클릭 해 CORBA 네임서버를 기동합니다.
MRCConvertorComp.exe의 실행
Debug 혹은 Release 폴더로 이동해 MRCConvertorComp.exe를 실행합니다.