git clone git@github.com:robotics-in-concert/rocon_protocols_web.git
npm install
source /opt/ros/<ros version>/setup.bash
JSON 포멧으로 config 파일을 작성한다.
{
"port": 10000,
"mongo_url": "mongodb://localhost:27017/rocon_protocols_web",
"rocon_apps_url": "https://raw.githubusercontent.com/robotics-in-concert/rocon_protocols_web/master/rocon_protocols_webserver/distro/rocon_apps/rocon_apps.yaml",
"hic_apps_url": "https://raw.githubusercontent.com/robotics-in-concert/rocon_protocols_web/master/rocon_protocols_webserver/distro/hic_apps/hic_apps.yaml"
}
mongo_url
: 연결될 mongodb 의 URL (예, mongodb://localhost:27017/rocon_protocols_web)port
: API 웹 인터페이스 포트rocon_apps_url
: rocon apps 목록을 기술한 YAML의 URLhic_apps_url
: hic apps 목록을 기술한 YAML의 URL(프로젝트 루트)/rocon_protocols_webserver 에서
scheduler 실행 : node scheduler.js [options]
--start-sync-messasge
: scheduler 시작시 message 동기화 시작.web interface 실행 : node web.js [options]
공통 parameters
--config /path/to/config.json
(optional) : config 파일의 경로Content-Type: application/json; charset=utf-8
rocon_protocols_web 의 REST API 는 별도로 언급되지 않는 한 data format은 application/json, 텍스트 인코딩 type은 UTF-8 로 응답한다.
api/ping
$ curl http://localhost:10000/api/ping
pong
/message_details
$ curl "http://localhost:10000/api/message_details?type=std_msgs/String"
[
{
"constantnames": [],
"constanttypes": [],
"constantvalues": [],
"fieldarraylen": [
-1
],
"fieldnames": [
"data"
],
"fieldtypes": [
"string"
],
"text": "string data\n",
"type": "std_msgs/String"
}
]
필드 | 설명 |
---|---|
constantnames | 메세지 타입에 정의된 상수의 이름 목록 |
constanttypes | 메세지 타입에 정의된 상수의 타입 목록 |
constantvalues | 메세지 타입에 정의된 상수의 값 목록 |
fieldarraylen | 타입에 선언된 field의 cardinality (-1: 단일 값, 0: 사이즈 정해지지 않은 배열, N: N개의 배열) |
fieldtypes | 타입 필드의 타입 목록 |
fieldnames | 타입 필드의 이름 목록 |
text | 해당 타입을 선언한 메세지 전문 (참고, http://wiki.ros.org/msg) |
type | 요청한 타입의 이름 |
/api/rocon_app
$ curl http://localhost:10000/api/rocon_app
[
{
"name": "rocon_hue",
"rocon_apps": {
"hue_bridge": {
"compatibility": "rocon:/pc",
"description": "The bridge for getting bulb status and contollering",
"display": "Hue Bridge ",
"interfaces": {
"action_clients": [],
"action_servers": [],
"publishers": [
{
"name": "list_hue",
"type": "rocon_device_msgs/HueArray"
}
],
"services": [],
"subscribers": [
{
"name": "set_hue",
"type": "rocon_device_msgs/Hue"
}
]
},
"key": "hue_bridge",
"launch": "hue_bridge.launch",
"public_interface": "hue_bridge.interface"
}
}
}, …]
필드 | 설명 |
---|---|
name | rapp 이름 |
rocon_apps | rapp 에 정의된 app 의 메타정보 |
rocon_apps.(app).public_interface | app 에서 선언된 interface 목록 |
rocon_apps.(app).public_interface.action_servers | app 의 action server 의 이름(name) 과 타입(type) |
rocon_apps.(app).public_interface.subscribers | app 의 subscriber 의 이름(name) 과 타입(type) |
rocon_apps.(app).public_interface.publishers | app 의 publisher 의 이름(name) 과 타입(type) |
/api/hic_app
$ curl "http://localhost:10000/api/hic_app"
[
{
"_id": "54864e0624da409c4a63979d",
"compatibility": "rocon:/*/*/indigo/jellybean",
"defaults": {
"description": "A Android listener for testing pairing.",
"display_name": "Listener",
"max": -1
},
"interface": {
"description": "Chatting room",
"name": "chatter",
"type": "std_msgs/String"
},
"name": "com.github.rosjava.android_remocons.listener.Listener"
}
]
필드 | 설명 defaults | interaction 파일 저작에 사용되는 기본 정보 (이름, 설명, max 값) interface | 인터페이스 정의 interface.name | 인터페이스 이름, (클라이언트에서 publish 할 토픽의 이름) interface.type | 인터페이스 타입, (클라이언트에서 publish 할 데이터의 타입)
> cd rocon_protocol_web_fetch
> npm link
> cd ../rocon_protocol_webserver
> npm link rocon_protocol_web_fetch