robotics-in-concert / rocon_protocols_web

0 stars 1 forks source link

rocon_protocols_web

Installation

Run

ROS 개발 환경 설정

source /opt/ros/<ros version>/setup.bash

Configuration

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"
}

실행

(프로젝트 루트)/rocon_protocols_webserver 에서

REST API specification

rocon_protocols_web 의 REST API 는 별도로 언급되지 않는 한 data format은 application/json, 텍스트 인코딩 type은 UTF-8 로 응답한다.

Administration Methods

api/ping

$ curl http://localhost:10000/api/ping
pong

Message information query methods

/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 할 데이터의 타입)

개발자 환경 설정