【发布时间】:2023-04-05 10:00:01
【问题描述】:
我有一个整数列表:
perc = [0, 70, 85, 13, 54, 60, 67, 26]
我想把它发送到另一个 ROS 节点。我有以下 .msg 文件:
#File name: emotion_percentage.msg
Header header
uint8 percentage
我的发布者代码:
obj = emotion_percentage()
obj.percentage = str(perc)
self.emo_pub.publish(obj)
我的监听代码:
def callback(self, emo_perc):
print(emo_perc.percentage)
print(type(emo_perc.percentage))
即使我从发布者代码中删除 str(perc) 中的 str(),侦听器代码中的类型也会显示:(type 'str')。但是,如果我删除 str(),则输出是乱码。
从 ROS wiki (http://wiki.ros.org/msg) 我知道“字符串”是正确的格式。
问题
所以现在我在侦听器节点中有一个字符串,但是如何将它转换回带有整数的列表?将我的列表转换为字符串真的正确吗?
代码错误
perc = [int(i) for i in emo_perc.percentage]
给出错误:int() 以 10 为底的无效文字:'['
map() 也不起作用
【问题讨论】:
-
你能分享一下你的emo_perc.percentage的实际内容吗?
-
如果你的监听器总是得到字符串,你可以考虑用json而不是list吗?我的意思是,至少你可以轻松地将字符串化的 json 转换为真正的 json,对吧?
-
@TanveerAlam emo_perc.percentage 是发布者节点中创建的对象,因此它包含“perc”列表作为字符串。 (见 agugliotta 的回答)
-
@JerryMeng 在我看来,使用 javascript 编码来完成这项工作有点迂回
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ROS Python msg,发送整数列表 - Python技术站