TypeError:对象数组可能是自引用的python [英] TypeError: object array may be self-referencing python

查看:107
本文介绍了TypeError:对象数组可能是自引用的python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我遇到了这个错误:

So, I ran into this error:

temp7: 
1.68219771725e-06
temp6: 
[[array([-60800056.33037408], dtype=object)]]
Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/timer.py", line 223, in run
    self._callback(TimerEvent(last_expected, last_real, current_expected, current_real, last_duration))
  File "/home/husky/catkin_ws/src/huskybot_ekf_v2/src/meas_update.py", line 194, in meas_update_step
    thisJ = temp7 * math.exp(temp6)

似乎在最后一行thisJ =temp7* math.exp(temp6)上,我不能接受temp6的指数.有人知道原因吗?

It seems like on the very last line thisJ =temp7* math.exp(temp6), that I can't take the exponent of temp6. Does anyone know the cause?

for i in range(0,len(line_features)-1):
    for k in range(0, len(m)):
        mkx = m[k][0]
        mky = m[k][1]
        posex = predicted_pose.x
        posey = predicted_pose.y
        poseth = predicted_pose.theta

        distx = math.pow((mkx - posex), 2);
        disty = math.pow((mky - posey), 2);

        q = distx + disty
        angle = math.atan2(mky-posey, mkx-posex) - poseth

        expected_meas = numpy.array([[math.sqrt(q)],
                                    [angle],
                                    [0]
                                    ])

        H = numpy.array([[-(mkx-posex)/math.sqrt(q), -(mky-posey)/math.sqrt(q) , 0],
                        [(mky-posey)/q, -(mkx-posex)/q, -1],
                        [0 , 0, 0]])
        Qt = 0.5
        innovation_cov = H*predicted_cov*numpy.transpose(H)+Qt
        innovation = ave_meas_dist - expected_meas

        dd = [[2]]
        #dd = array[0]

        #print 0.5*numpy.array(dd)
        temp5 = -1/2 * numpy.dot(numpy.transpose(innovation), numpy.linalg.inv(innovation_cov))
        temp6 = numpy.dot(temp5, innovation)
        print math.sqrt(numpy.linalg.det(2*math.pi*innovation_cov)) * numpy.array(dd)
        temp7 = math.sqrt(numpy.linalg.det(2*math.pi*innovation_cov))
        thisJ =temp7* math.exp(temp6)

推荐答案

我试图重现该错误.我得到的错误是:

I tried to reproduce the error. The error I got is:

TypeError: must be real number, not list

如果错误相同,则可以通过执行以下操作解决该问题:

If the error is same then it was solved by doing this:

thisJ = temp7 * math.exp(temp6[0][0])

因为temp6类型是list包含list包含array对象.如果我错了,请纠正我.

Because temp6 type is list containing list containing array object. Please do correct me if I am wrong.

这篇关于TypeError:对象数组可能是自引用的python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆