是否可以进行ROS服务调用,如下所示(数组中包含不同的数据类型)?
rosservice call /node_name/srv_name 'parameter: [one 2 3.3 four 5 6.6]'
相应的ROS消息会是什么样的?
答案 0 :(得分:1)
我找到了解决办法。 通过
调用服务bson_error_t error;
char **strv;
unsigned i;
if((strv = mongoc_database_get_collection_names (database, &error)))
{
for(i = 0; strv [i]; i++)
printf ("%s\n", strv [i]);
bson_strfreev (strv);
}
else
{
fprintf(stderr, "Command failed: %s\n", error.message);
}
.srv文件可以写成
rosservice call /node_name/srv_name 'parameter: ["one" "2" "3.3" "four" "5" "6.6"]'
并且必须稍后在C ++或Python中解析字符串。很像
背后的想法string[] parameter
答案 1 :(得分:0)
这是不可能的。 ROS消息中的数组始终是固定类型。
答案 2 :(得分:0)
如果你有比复杂的字符串,整数和浮点数更复杂的数据类型,你可以使用诸如
之类的消息int8 type
Type1 field1
Type2 field2
...
其中Type1
,Type2
,...是您要使用的不同数据类型,type
包含要使用这些字段的信息。如果您将此消息命名为VariableTypes
,则您的服务文件可能如下所示:
VariableTypes[] parameters
---
因此,当调用服务时,您必须检查parameters
每个元素使用哪种类型,然后选择相应的字段。
但是,当然,这种方法的缺点是你可以用这种方式产生很多开销。