def show(self):
    jac = self.robot.jac()
    J = numpy.matrix([[jac[i,j] for j in range(jac.columns())]
                                  for i in range(jac.rows())])
    F = self.robot.pose()
    (p,q,s,k) = get_ellipsoid(F,J)

    c = marker.color_code(k)

    m = marker.create(type=marker.Marker.SPHERE, ns='ellipsoid', id=42)
    m.header.frame_id = self.base_frame_id
    m.header.stamp = rospy.Time.now()
    m.pose.position = Point(x=p[0], y=p[1], z=p[2])
    m.pose.orientation = Quaternion(x=q[1], y=q[2], z=q[3], w=q[0])
    m.color = ColorRGBA(r=c[0], g=c[1], b=c[2], a=k)
    m.scale = Vector3(x=s[0]*self.scale, y=s[1]*self.scale, z=s[2]*self.scale)

    marker.publish(m)
  def _paint(self, event):

    #determine size
    border = 10
    size_r = (self.Parent.Size[0] - 2*border) / self.values.shape[1]
    size_c = (self.Parent.Size[1] - 2*border) / self.values.shape[0]
    size = max(1, min(size_r, size_c))

    value_range = 1.0
    f_col = (lambda x: marker.color_code(x, [-value_range, 0.0, value_range],
                        [[0.0, 0.0, 1.0], [1.0, 1.0, 1.0], [1.0, 0.0, 0.0]]))

    colors = numpy.array([[f_col(c) for c in r] for r in self.values])

    width = colors.shape[1]*size
    height = colors.shape[0]*size

    rgb = numpy.array(255.99*colors, dtype='uint8').repeat(size,0).repeat(size,1)
    bitmap = wx.BitmapFromBuffer(width, height, rgb.flatten())
    dc = wx.PaintDC(self)

    dc.DrawBitmap(bitmap, border, border)