我刚得到一个生病的tim571激光扫描仪。因为我是ROS的新手,所以我想在一个简单的rospy实现中测试一些东西。在
我认为下面的代码将向我展示激光测量的实时输出,就像在Rviz中一样(Rviz对我来说很好)但是在Python中,并且可以在我自己的代码中使用测量值。不幸的是,输出框架反复显示一个静态度量(从Python代码第一次启动时开始)。在
如果我并行于这个Python代码运行Rviz,就会得到测量区域的动态更新表示。在
我认为每次调用.callback(data)函数时都会使用一组新的激光扫描仪数据。但它似乎并不像我想象的那样有效。因此错误可能位于调用回调函数的.laser_listener()。在
TL;DR
如何在rospy中使用动态更新(实时)激光扫描仪测量?在import rospy
import cv2
import numpy as np
import math
from sensor_msgs.msg import LaserScan
def callback(data):
frame = np.zeros((500, 500,3), np.uint8)
angle = data.angle_min
for r in data.ranges:
#change infinite values to 0
if math.isinf(r) == True:
r = 0
#convert angle and radius to cartesian coordinates
x = math.trunc((r * 30.0)*math.cos(angle + (-90.0*3.1416/180.0)))