【问题标题】:ROS Python msg, send list of intsROS Python msg,发送整数列表
【发布时间】: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 编码来完成这项工作有点迂回

标签:
python
arrays
list
int
ros