FIWARE FIROS 从非 ROS 世界发布 cmd_vel

问题描述 投票:0回答:1

在 firosturtlesim 示例中(https://firos.readthedocs.io/en/latest/install/turtlesim-example.html)我正在尝试从非 ROS-World 槽中发布有关 /turtle1/cmd_vel 主题的消息POST 请求以移动机器人。

但是我不确定如何做到这一点,因为当我启动 firos/core.py 时,创建的实体列表是:

{"id":".turtle1.pose","type":"turtlesim%2FPose","angular_velocity":{"type":"number","value":0,"metadata":{"dataType" :{"type":"dataType","value":"float32"}}},"linear_velocity":{"type":"number","value":0,"metadata":{"dataType":{ "type":"dataType","value":"float32"}}},"theta":{"type":"number","value":0,"metadata":{"dataType":{"type ":"dataType","value":"float32"}}},"x":{"type":"number","value":5.544444561,"metadata":{"dataType":{"type": "dataType","value":"float32"}}},"y":{"type":"number","value":5.544444561,"metadata":{"dataType":{"type":"dataType ","值":"float32"}}}}

订阅列表是:

{“id”:“XXXX”,“过期”:“2021-06-09T22:10:17.000Z”,“状态”:“有效”,“主题”:{“实体”:[{“id”: ".turtle1.cmd_vel","类型":"geometry_msgs%2FTwist"}],"条件":{"attrs":[]}},"通知":{"attrs":["线性","角度" ],"onlyChangedAttrs":false,"attrsFormat":"标准化","http":{"url":"http://XXX.XXX.X.XXX:YYYYY"}}}

没有创建具有 .turtle1.cmd_vel id 的实体,因此我不知道如何更新例如线性属性。我是否必须先手动创建 .turtle1.cmd_vel 实体,然后更新 attr?我试过了:

curl -iX POST \
  'http://localhost:1026/v2/entities' \
  -H 'Content-Type: application/json' \
  -d '
{
    "id": ".turtle1.cmd_vel",
    "type": "geometry_msgs%2FTwist",
    "linear": {
        "type": "float64",
        "value": {
            "x": "1",
            "y": "0",
            "z": "0"
        }
    },
    "angular": {
        "type": "float64",
        "value": {
             "x": "0",
             "y": "0",
             "z": "0"
        }
    }
}'

但是我遇到了错误。

ros fiware
1个回答
0
投票

最后我解决了问题如下:

发布实体:

curl -iX POST \
  'http://localhost:1026/v2/entities' \
  -H 'Content-Type: application/json' \
  -d '
{
    "id":".turtle1.cmd_vel",
    "type":"geometry_msgs%2FTwist",
    
    "angular":{
        "type":"geometry_msgs%2FVector3",
        "value":{
            "y":{
                "type":"number",
                "value":0.0
            },
            "x":{
                "type":"number",
                "value":0.0
            },
            "z":{
                "type":"number",
                "value":0.0
            }
        },
        "metadata":{
            "dataType":{
                "type":"dataType",
                "value":{
                    "y":"float64",
                    "x":"float64",
                    "z":"float64"
                }
            }
        }
    },
    "linear":{
        "type":"geometry_msgs%2FVector3",
        "value":{
            "y":{
                "type":"number",
                "value":0.0
            },
            "x":{
                "type":"number",
                "value":0.0
            },
            "z":{
                "type":"number",
                "value":0.0
            }
        },
        "metadata":{
            "dataType":{
                "type":"dataType",
                "value":{
                    "y":"float64",
                    "x":"float64",
                    "z":"float64"
                }
            }
        }
    }
}'

更新值:

curl -iX PATCH \
  --url 'http://localhost:1026/v2/entities/.turtle1.cmd_vel/attrs' \
  --header 'Content-Type: application/json' \
  --data-raw ' {
    "angular": {
        "type":"geometry_msgs%2FVector3",
        "value":{
            "y":{
                "type":"number",
                "value": 0.0
            },
            "x":{
                "type":"number",
                "value": 0.0
            },
            "z":{
                "type":"number",
                "value": 0.0
            }
        },
        "metadata":{
            "dataType":{
                "type":"dataType",
                "value":{
                    "y":"float64",
                    "x":"float64",
                    "z":"float64"
                }
            }
        }
    },
    "linear": {
        "type":"geometry_msgs%2FVector3",
        "value":{
            "y":{
                "type":"number",
                "value": 8.0
            },
            "x":{
                "type":"number",
                "value": 8.0
            },
            "z":{
                "type":"number",
                "value": 8.0
            }
        },
        "metadata":{
            "dataType":{
                "type":"dataType",
                "value":{
                    "y":"float64",
                    "x":"float64",
                    "z":"float64"
                }
            }
        }
    }
}'

有关更新实体的注意事项:

它无法直接自行更新子属性“x”(来自“线性”属性),它需要重新提供整个 JSON 对象。

其背后的原因如下:NGSI 仅处理属性和关系 - 它是互操作性的抽象层。属性“线性”是一个原子单位,因此您要么更改整个“线性”,要么不更改任何内容。在这种情况下,“线性”的值是一个 JSON 对象。

© www.soinside.com 2019 - 2024. All rights reserved.