【发布时间】:2021-07-28 20:40:42
【问题描述】:
晚上好,我需要创建一个发布者,在从我以前的 acuisite 包中读取它们之后发送 pointcloud2。这是为了模拟实时执行。
在 rqt_graph 中,一切似乎都已正确连接,但 pub 和 sub 似乎根本没有通信。
这是我的出版商:
#!/usr/bin/env python
import rospy
from sensor_msgs.msg import PointCloud2
import std_msgs.msg
import sensor_msgs.point_cloud2 as pcl2
import rosbag
def talker(msg):
pub = rospy.Publisher('chatter', PointCloud2)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(1) #hz
rospy.loginfo(msg)
pub.publish(msg)
rate.sleep()
if __name__ == '__main__':
bag = rosbag.Bag('bag2.bag')
for msg in bag.read_messages(topics=['/d435/depth/color/points']):
talker(msg)
这是我的订阅者:
#!/usr/bin/env python
import rospy
from sensor_msgs.msg import PointCloud2
import std_msgs.msg
import sensor_msgs.point_cloud2 as pcl2
def callback(data):
#rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
print("ptCloud received")
ptc = Point
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("chatter", PointCloud2, callback)
rospy.spin()
if __name__ == '__main__':
listener()
有人可以帮我吗?尝试使用字符串
from std_msgs.msg import String
通信有效,但点云无效。我是 ROS 新手,求助!
【问题讨论】:
-
为您的包文件中的每条消息调用talker 将不起作用,因为节点的创建应该只执行一次。查看 ROS wiki 上的示例:wiki.ros.org/ROS/Tutorials/…
标签: python ros point-clouds