Example #1
0
    def publish_debug_info(self, footprint_point, distance, scan_point):
        array = MarkerArray()

        fp = Marker()
        fp.id = 1
        fp.type = fp.SPHERE
        scale = 0.1
        fp.pose.position.x,fp.pose.position.y, fp.pose.position.z = footprint_point[0], footprint_point[1], 0
        fp.scale.x, fp.scale.y, fp.scale.z = scale, scale, scale
        fp.color.r, fp.color.g, fp.color.b, fp.color.a = (0, 0, 1, 1)
        fp.header.frame_id = "{}/base_link".format(self.robot.robot_name)
        fp.frame_locked = True
        fp.action = fp.ADD
        fp.ns = "door_opening"
        array.markers += [fp]

        sp = Marker()
        sp.id = 2
        sp.type = sp.SPHERE
        scale = 0.1
        sp.pose.position.x,sp.pose.position.y, sp.pose.position.z = scan_point[0], scan_point[1], 0
        sp.scale.x, sp.scale.y, sp.scale.z = scale, scale, scale
        sp.color.r, sp.color.g, sp.color.b, sp.color.a = (1, 0, 0, 1)
        sp.header.frame_id = "{}/base_link".format(self.robot.robot_name)
        sp.frame_locked = False
        sp.action = sp.ADD
        sp.ns = "door_opening"
        array.markers += [sp]

        self.debug_vizualizer.publish(array)
Example #2
0
    def publish_debug_info(self, footprint_point, distance, scan_point):
        array = MarkerArray()

        fp = Marker()
        fp.id = 1
        fp.type = fp.SPHERE
        scale = 0.1
        fp.pose.position.x, fp.pose.position.y, fp.pose.position.z = footprint_point[
            0], footprint_point[1], 0
        fp.scale.x, fp.scale.y, fp.scale.z = scale, scale, scale
        fp.color.r, fp.color.g, fp.color.b, fp.color.a = (0, 0, 1, 1)
        fp.header.frame_id = "{}/base_link".format(self.robot.robot_name)
        fp.frame_locked = True
        fp.action = fp.ADD
        fp.ns = "door_opening"
        array.markers += [fp]

        sp = Marker()
        sp.id = 2
        sp.type = sp.SPHERE
        scale = 0.1
        sp.pose.position.x, sp.pose.position.y, sp.pose.position.z = scan_point[
            0], scan_point[1], 0
        sp.scale.x, sp.scale.y, sp.scale.z = scale, scale, scale
        sp.color.r, sp.color.g, sp.color.b, sp.color.a = (1, 0, 0, 1)
        sp.header.frame_id = "{}/base_link".format(self.robot.robot_name)
        sp.frame_locked = False
        sp.action = sp.ADD
        sp.ns = "door_opening"
        array.markers += [sp]

        self.debug_vizualizer.publish(array)
    def SendFaceMarkers(self, frame_id, ts, cface_id, ns, position):

        # the face
        marker = Marker()
        marker.header.frame_id = frame_id
        marker.header.stamp = ts
        marker.id = cface_id
        marker.ns = ns
        marker.type = Marker.SPHERE
        marker.action = Marker.MODIFY
        marker.pose.position.x = position.x
        marker.pose.position.y = position.y
        marker.pose.position.z = position.z
        marker.pose.orientation.x = 0.0
        marker.pose.orientation.y = 0.0
        marker.pose.orientation.z = 0.0
        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.1
        marker.scale.y = 0.1
        marker.scale.z = 0.1
        marker.color.r = 1.0
        marker.color.g = 0.0
        marker.color.b = 0.0
        marker.color.a = 0.5
        marker.lifetime = rospy.Duration(2, 0)
        marker.frame_locked = False
        self.face_rviz_pub.publish(marker)

        # label under the face
        marker = Marker()
        marker.header.frame_id = frame_id
        marker.header.stamp = ts
        marker.id = cface_id + 1
        marker.ns = ns
        marker.type = Marker.TEXT_VIEW_FACING
        marker.action = Marker.MODIFY
        marker.pose.position.x = position.x
        marker.pose.position.y = position.y
        marker.pose.position.z = position.z - 0.1
        marker.pose.orientation.x = 0.0
        marker.pose.orientation.y = 0.0
        marker.pose.orientation.z = 0.0
        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.05
        marker.scale.y = 0.05
        marker.scale.z = 0.05
        marker.color.r = 0.7
        marker.color.g = 0.7
        marker.color.b = 0.7
        marker.color.a = 0.5
        if self.cfaces[cface_id].gender == 2:
            gender = "female"
        else:
            gender = "male"
        marker.text = self.name + " candidate {} ({} {})".format(
            cface_id, gender, int(self.cfaces[cface_id].age))
        marker.lifetime = rospy.Duration(2, 0)
        marker.frame_locked = False
        self.face_rviz_pub.publish(marker)
Example #4
0
    def publish_artifacts(self, event):
        VISUALIZATION = {
                # TYPE: (label, rgb, shape, size)
                'TYPE_BACKPACK': ("Backpack", (1.0, 0.0, 0.0), Marker.SPHERE, (0.4, 0.4, 0.5)),
                'TYPE_CUBE':  ("Cube", (0.0, 1.0, 1.0), Marker.CUBE, (0.3, 0.3, 0.3)),
                'TYPE_DRILL': ("Drill", (1.0, 0.5, 1.0), Marker.CYLINDER, (0.2, 0.2, 0.3)),
                'TYPE_EXTINGUISHER': ("Extinguisher", (1.0, 0.0, 0.0), Marker.CYLINDER, (0.3, 0.3, 0.5)),
                'TYPE_GAS': ("Gas", (1.0, 1.0, 1.0), Marker.SPHERE, (1.0, 1.0, 1.0)),
                'TYPE_HELMET': ("Helmet", (0.7, 0.7, 0.7), Marker.SPHERE, (0.3, 0.3, 0.3)),
                'TYPE_PHONE': ("Phone", (0.0, 1.0, 0.5), Marker.CUBE, (0.15, 0.15, 0.1)),
                'TYPE_RESCUE_RANDY': ("Survivor", (0.8, 1.0, 0.7), Marker.CYLINDER, (0.8, 0.8, 1.4)),
                'TYPE_ROPE': ("Rope", (0.0, 0.0, 1.0), Marker.CYLINDER, (0.5, 0.5, 0.2)),
                'TYPE_VENT': ("Vent", (1.0, 1.0, 1.0), Marker.CUBE, (0.8, 0.8, 0.8)),
                }

        msg = MarkerArray()
        now = rospy.Time.now()
        with self.lock:
            for artf_idx, (artf_type, artf_xyz) in enumerate(self.artifacts):
                artf_name, rgb, shape, size = VISUALIZATION[artf_type]

                marker = Marker()
                marker.header.frame_id = 'global'
                marker.header.stamp = now
                marker.ns = 'artifact:object'
                marker.id = artf_idx
                marker.action = Marker.MODIFY
                marker.pose.position.x, marker.pose.position.y, marker.pose.position.z = [v / 1000.0 for v in artf_xyz]
                marker.pose.orientation.x, marker.pose.orientation.y, marker.pose.orientation.z, marker.pose.orientation.w = 0, 0, 0, 1
                marker.lifetime = rospy.Duration(0)  # FOREVER
                marker.frame_locked = False
                marker.type = shape
                marker.scale.x, marker.scale.y, marker.scale.z = size
                marker.color.r, marker.color.g, marker.color.b = rgb
                marker.color.a = 0.3

                msg.markers.append(marker)

                label = Marker()
                label.header.frame_id = 'global'
                label.header.stamp = now
                label.ns = 'artifact:name'
                label.id = artf_idx
                label.action = Marker.MODIFY
                label.text = artf_name
                label.pose.position.x, label.pose.position.y, label.pose.position.z = [v / 1000.0 for v in artf_xyz]
                label.pose.position.z += 1.2  # Showing the label above the object.
                label.pose.orientation.x, label.pose.orientation.y, label.pose.orientation.z, label.pose.orientation.w = 0, 0, 0, 1
                label.lifetime = rospy.Duration(0)  # FOREVER
                label.frame_locked = False
                label.type = Marker.TEXT_VIEW_FACING
                label.scale.x, label.scale.y, label.scale.z = 1, 1, 1
                label.color.r, label.color.g, label.color.b = rgb
                label.color.a = 1.0

                msg.markers.append(label)


        self.artf_publisher.publish(msg)
    def update_marker(
            self, room_id, scene_id,
            belief):  #function used to update a specif place's marker
        Markers_up = MarkerArray()
        SMarker = Marker()
        Text_Marker = Marker()

        SMarker.header.frame_id = "map"
        SMarker.type = 1
        SMarker.pose.orientation.w = 1.0
        SMarker.lifetime = rospy.Duration(0)
        SMarker.action = SMarker.ADD
        SMarker.pose.position.z = 0
        SMarker.color.r = float(self.scenes_markers[scene_id]['r'])
        SMarker.color.g = float(self.scenes_markers[scene_id]['g'])
        SMarker.color.b = float(self.scenes_markers[scene_id]['b'])
        SMarker.color.a = 0.65
        SMarker.frame_locked = True
        SMarker.id = 1
        SMarker.header.stamp = rospy.Time.now()
        SMarker.ns = '{}-{}'.format(self.rooms[room_id].xcenter,
                                    self.rooms[room_id].ycenter)
        SMarker.pose.position.x = self.rooms[room_id].xcenter
        SMarker.pose.position.y = self.rooms[room_id].ycenter
        SMarker.scale.x = self.rooms[room_id].xmax - self.rooms[room_id].xmin
        SMarker.scale.y = self.rooms[room_id].ymax - self.rooms[room_id].ymin
        SMarker.scale.z = 0.1
        Markers_up.markers.append(SMarker)

        Text_Marker.header.frame_id = "map"
        Text_Marker.id = 1
        Text_Marker.type = Text_Marker.TEXT_VIEW_FACING
        Text_Marker.action = 0
        Text_Marker.pose.orientation.w = 1.0
        Text_Marker.scale.z = 0.65
        Text_Marker.color.r = 0
        Text_Marker.color.g = 0
        Text_Marker.color.b = 0
        Text_Marker.color.a = 1
        Text_Marker.lifetime = rospy.Duration(0)
        Text_Marker.frame_locked = True
        Text_Marker.pose.position.z = 0.2

        Text_Marker.header.stamp = rospy.Time.now()
        Text_Marker.ns = 'txt{}-{}'.format(self.rooms[room_id].xcenter,
                                           self.rooms[room_id].ycenter)
        Text_Marker.pose.position.x = self.rooms[room_id].xcenter
        Text_Marker.pose.position.y = self.rooms[room_id].ycenter

        Text_Marker.text = '{}:{:.2f}%'.format(
            self.scenes_markers[scene_id]['label'], belief * 100)
        #Text_Marker.text = 'Plc:{} ({})'.format(room_id,self.scenes_markers[scene_id]['label'])

        Text_Marker.header.stamp = rospy.Time.now()
        Markers_up.markers.append(Text_Marker)

        self.marker_pub.publish(Markers_up)
    def SendHandMarkers(self, frame_id, ts, chand_id, ns, position, gestures):

        # the hand
        marker = Marker()
        marker.header.frame_id = frame_id
        marker.header.stamp = ts
        marker.id = chand_id
        marker.ns = ns
        marker.type = Marker.SPHERE
        marker.action = Marker.MODIFY
        marker.pose.position.x = position.x
        marker.pose.position.y = position.y
        marker.pose.position.z = position.z
        marker.pose.orientation.x = 0.0
        marker.pose.orientation.y = 0.0
        marker.pose.orientation.z = 0.0
        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.1
        marker.scale.y = 0.1
        marker.scale.z = 0.1
        marker.color.r = 0.0
        marker.color.g = 1.0
        marker.color.b = 0.0
        marker.color.a = 0.5
        marker.lifetime = rospy.Duration(2, 0)
        marker.frame_locked = False
        self.hand_rviz_pub.publish(marker)

        # label under the hand
        marker = Marker()
        marker.header.frame_id = frame_id
        marker.header.stamp = ts
        marker.id = chand_id + 1
        marker.ns = ns
        marker.type = Marker.TEXT_VIEW_FACING
        marker.action = Marker.MODIFY
        marker.pose.position.x = position.x
        marker.pose.position.y = position.y
        marker.pose.position.z = position.z - 0.1
        marker.pose.orientation.x = 0.0
        marker.pose.orientation.y = 0.0
        marker.pose.orientation.z = 0.0
        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.05
        marker.scale.y = 0.05
        marker.scale.z = 0.05
        marker.color.r = 0.7
        marker.color.g = 0.7
        marker.color.b = 0.7
        marker.color.a = 0.5
        marker.text = self.name + " hand: "
        for gesture in gestures:
            marker.text += " " + gesture
        marker.lifetime = rospy.Duration(2, 0)
        marker.frame_locked = False
        self.hand_rviz_pub.publish(marker)
Example #7
0
	def add_rviz_disks(self, disk, rod, act, move):
		marker = Marker()
		if(move == True):
			marker.header.frame_id = "/pl_6"
			marker.frame_locked = True
			marker.pose.position.x = 0.
			marker.pose.position.y = 0.
			marker.pose.position.z = 0.27965
		else:
			marker.header.frame_id = "/pl_base"
			marker.frame_locked = False
			marker.pose.position.x = act.position.x
			marker.pose.position.y = act.position.y
			marker.pose.position.z = act.position.z - 0.143 + 0.012 + len(self.rod_content[rod]) * 0.01
			if(self.carrying_disk):
				marker.pose.position.z = marker.pose.position.z + 0.03 
					
		marker.ns = "basic_shapes"
		marker.id = disk
		marker.type = marker.CYLINDER
		marker.action = marker.ADD
		marker.pose.orientation.w = 1.0
		marker.scale.z = 0.01

		if(disk == 1):
			marker.color.r = 1.0
			marker.color.a = 1.0
			marker.scale.x = 0.027
		elif(disk == 2):
			marker.color.r = 1.0
			marker.color.g = 1.0
			marker.color.a = 1.0
			marker.scale.x = 0.031
		elif(disk == 3):
			marker.color.g = 1.0
			marker.color.a = 1.0
			marker.scale.x = 0.036
		elif(disk == 4):
			marker.color.b = 1.0
			marker.color.a = 1.0
			marker.scale.x = 0.04
		elif(disk == 5):
			marker.color.r = 1.0
			marker.color.g = 1.0			
			marker.color.b = 1.0
			marker.color.a = 1.0
			marker.scale.x = 0.027

		marker.scale.y = marker.scale.x

		self.rviz_pub.publish(marker)
 def __init__(self):
     rospack = rospkg.RosPack()
     pose_csv_path = rospack.get_path('robotx_tools')+'/data/gps-pose.csv'
     markers = MarkerArray()
     pub = rospy.Publisher('gps_pose_marker', MarkerArray, queue_size=1, latch=True)
     with open(pose_csv_path, 'r') as f:
         reader = csv.reader(f)
         i = 0
         for row in reader:
             marker = Marker()
             label_marker = Marker()
             marker.header.frame_id = "world"
             label_marker.header.frame_id = "world"
             marker.ns = "pose"
             label_marker.ns = "description"
             label_marker.id = i
             marker.id = i
             label_marker.type = label_marker.TEXT_VIEW_FACING
             label_marker.scale.x = 10
             label_marker.scale.y = 10
             label_marker.scale.z = 10
             marker.type = marker.ARROW
             marker.action = marker.ADD
             marker.scale.x = 10
             marker.scale.y = 5
             marker.scale.z = 10
             latlon = self.convert_to_latlon(row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8])
             utm_point = utm.from_latlon(latlon[0],latlon[1])
             label_marker.text = row[0]
             label_marker.pose.position.x = utm_point[0]
             label_marker.pose.position.y = utm_point[1]
             label_marker.pose.position.z = 10
             label_marker.color.r = 1
             label_marker.color.g = 1
             label_marker.color.b = 1
             label_marker.color.a = 1
             marker.pose.position.x = utm_point[0]
             marker.pose.position.y = utm_point[1]
             marker.color.b = 1
             marker.color.a = 1
             label_marker.frame_locked = True
             marker.frame_locked = True
             label_marker.pose.orientation = self.euler_to_quaternion(Vector3(0.0, 0.0, float(row[9])/180*math.pi))
             marker.pose.orientation = self.euler_to_quaternion(Vector3(0.0, 0.0, float(row[9])/180*math.pi))
             markers.markers.append(marker)
             markers.markers.append(label_marker)
             i = i + 1
     pub.publish(markers)
Example #9
0
def callback(ultra):
    point = Marker()

    point.header.stamp = rospy.Time.now()
    point.header.frame_id = "imu_1"

    point.ns = "points"
    point.id = random.randint(0, 1000000)
    point.type = Marker.CUBE
    point.action = Marker.ADD

    point.pose.position.x = ultra.seq
    point.pose.position.y = 0
    point.pose.position.z = 0
    point.pose.orientation.w = 1

    point.scale.x = .5
    point.scale.y = .5
    point.scale.z = .5

    point.color.g = 1
    point.color.a = .7

    point.lifetime = rospy.Duration(30)
    point.frame_locked = False

    pub.publish(point)
 def make_node_marker(self):
     self.node_marker = MarkerArray()
     time = rospy.get_rostime()
     for node in self.map_data['NODE']:
         n = Marker()
         n.ns = "node"
         n.header.frame_id = self.map_data['MAP_FRAME']
         n.header.stamp = time
         n.id = node['id']
         n.action = Marker().ADD
         n.type = Marker().CUBE
         n.lifetime = rospy.Duration()
         n.frame_locked = True
         self.set_marker_scale(n, 1.5, 1.5, 1.5)
         self.set_marker_rgb(n, 0.0, 1.0, 0.0)
         self.set_marker_position(n, node['point']['x'], node['point']['y'],
                                  0)
         self.set_marker_orientation(n, 0, 0, 0)
         self.node_marker.markers.append(n)
     for n_id in self.deleted_id_list:
         n = Marker()
         n.ns = "node"
         n.header.frame_id = self.map_data['MAP_FRAME']
         n.header.stamp = time
         n.id = n_id
         n.action = Marker().DELETE
         n.type = Marker().CUBE
         n.lifetime = rospy.Duration()
         self.set_marker_orientation(n, 0, 0, 0)
         self.node_marker.markers.append(n)
Example #11
0
    def get_marker(self, ns, id, fix, r, g, b):
        pt = GeoPoint()
        pt.latitude = fix[0]
        pt.longitude = fix[1]
        pt.altitude = fix[2]
        resp = self.from_ll(pt)

        marker = Marker()
        marker.header.frame_id = "map"
        marker.header.stamp = rospy.Time.now()
        marker.ns = ns
        marker.id = id
        marker.type = marker.SPHERE
        marker.pose.position.x = resp.map_point.x
        marker.pose.position.y = resp.map_point.y
        marker.pose.position.z = resp.map_point.z
        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.5
        marker.scale.y = 0.5
        marker.scale.z = 0.5
        marker.color.r = r
        marker.color.g = g
        marker.color.b = b
        marker.color.a = 1.0
        marker.frame_locked = True

        return marker
Example #12
0
def callback(msg):
    marker = Marker()

    if not msg.data:
        marker.header.frame_id = 'map'
    else:
        marker.header = msg.data[0].header

    marker.ns = 'roomba_observations'
    marker.id = 0
    marker.type = Marker.SPHERE_LIST
    marker.action = Marker.MODIFY

    marker.scale.x = 0.1
    marker.scale.y = 0.1
    marker.scale.z = 0.1

    marker.color.r = 0.0
    marker.color.g = 0.5
    marker.color.b = 0.8
    marker.color.a = 1.0

    marker.lifetime = rospy.Duration(0.5)

    marker.frame_locked = False

    for odom in msg.data:
        marker.points.append(odom.pose.pose.position)

    pub.publish(marker)
Example #13
0
    def show_marker(self, dist):
        '''
        Records all the mappings of the brick every made when to brick is detected.
        Places a marker at all of the mappings.
        '''
        marker = Marker()
        marker = Marker(type=Marker.POINTS,
                        ns='brick_detection',
                        action=Marker.ADD)
        marker.header.frame_id = "camera_rgb_frame"
        marker.header.stamp = rospy.Time.now()
        points = []
        point = Point()
        point.x = dist
        point.y = 0
        point.z = 0
        points.append(point)

        marker.points = points
        marker.scale.x = 0.1
        marker.scale.y = 0.1
        marker.scale.z = 0.1
        marker.color.a = 2.0
        marker.color.r = 1.0
        marker.action = marker.ADD
        marker.pose.orientation.w = 1
        marker.lifetime = rospy.Duration(0)
        marker.frame_locked = False
        self.pub_marker.publish(marker)
Example #14
0
    def draw_footprint(self, points):
        # print 'PRINT ARIS FOOTPRINT'
        marker = Marker()
        marker.header.stamp = rospy.Time.now()
        marker.header.frame_id = "/girona500"

        marker.ns = "aris_foot_print"
        marker.id = 1
        marker.type = 4  # SPHERE
        marker.action = 0  # Add/Modify an object
        marker.pose.position.x = 0
        marker.pose.position.y = 0
        marker.pose.position.z = 0
        marker.scale.x = 0.1
        marker.scale.y = 0.1
        marker.scale.z = 0.1
        marker.color.r = 0.0
        for i in points:
            p = Point()
            p.x = i[0]
            p.y = i[1]
            p.z = i[2]
            color = ColorRGBA()
            color.r = 0.0
            color.g = 0.5
            color.b = 0.5
            color.a = 0.7
            marker.points.append(p)
            marker.colors.append(color)

        marker.lifetime = rospy.Duration(0.5)
        marker.frame_locked = False
        self.pub_aris_footprint.publish(marker)
  def add_marker(self, mesh_frame, marker_name, mesh_file, use_materials=False, color=None):
    marker_msg = Marker()
    marker_msg.frame_locked = True
    marker_msg.id = 0
    marker_msg.action = Marker.ADD
    marker_msg.mesh_use_embedded_materials = use_materials
    if marker_msg.mesh_use_embedded_materials:
      marker_msg.color.r = 0
      marker_msg.color.g = 0
      marker_msg.color.b = 0
      marker_msg.color.a = 0
    elif color:
      marker_msg.color = color
    else:
      marker_msg.color.r = 0.6
      marker_msg.color.g = 0.6
      marker_msg.color.b = 0.6
      marker_msg.color.a = 1.0
    marker_msg.header.stamp = rospy.get_rostime()
    #marker_msg.lifetime =
    #marker_msg.pose =
    marker_msg.type = Marker.MESH_RESOURCE
    marker_msg.header.frame_id = mesh_frame
    marker_msg.ns = marker_name
    marker_msg.mesh_resource = 'file://%s' % (os.path.abspath(mesh_file))
    scale = 1.0
    marker_msg.scale.x, marker_msg.scale.y, marker_msg.scale.z = scale, scale, scale
    marker_msg.pose.position.x, marker_msg.pose.position.y, marker_msg.pose.position.z = 0, 0, 0
    marker_msg.pose.orientation.x, marker_msg.pose.orientation.y, marker_msg.pose.orientation.z, marker_msg.pose.orientation.w = 0, 0, 0, 1
    self.pub_marker_sync(marker_msg)

    if not self.marker_thread:
      self.marker_thread = thread.start_new_thread(MarkerPublisher.publish_markers, (self,))
Example #16
0
def gpscallback(msg):
    marker = Marker()
    marker.header = msg.header
    marker.header.frame_id = "map"
    marker.ns = 'gps'
    marker.id = 0
    marker.type = Marker.SPHERE_LIST
    marker.action = Marker.MODIFY

    marker.scale.x = 0.3
    marker.scale.y = 0.3
    marker.scale.z = 0.3

    marker.color.r = 0
    marker.color.g = 0
    marker.color.b = 1
    marker.color.a = 1

    marker.lifetime = rospy.Duration(2000)
    marker.frame_locked = False

    point = Point()
    point.x = msg.pose.pose.position.x
    point.y = msg.pose.pose.position.y
    point.z = msg.pose.pose.position.z

    gpspoints.append(point)

    marker.points.extend(gpspoints)

    vis_pub.publish(marker)
Example #17
0
    def draw_chain_links(self, detections):
        marker = Marker()
        marker.header.stamp = rospy.Time.now()
        marker.header.frame_id = "/world"

        marker.ns = "chain_links"
        for i in range(len(self.chain_links)):
            marker.id = 10 + i
            marker.type = 2  # SPHERE
            marker.action = 0  # Add/Modify an object
            marker.pose.position.x = self.chain_links[i][0]
            marker.pose.position.y = self.chain_links[i][1]
            marker.pose.position.z = self.chain_links[i][2]
            marker.scale.x = 0.7
            marker.scale.y = 0.35
            marker.scale.z = 0.1
            marker.color.r = 1.0
            if detections[i]:
                marker.color.g = 0.0
                marker.color.b = 0.0
            else:
                marker.color.g = 0.5
                marker.color.b = 0.5
            marker.color.a = 0.3
            marker.lifetime = rospy.Duration(1)
            marker.frame_locked = False
            self.pub_aris_footprint.publish(marker)
Example #18
0
def trueMarkerCallback(msg):
    markerArray = MarkerArray()

    for detect in msg.tracked_obj_arr:
        marker1 = Marker()
        marker1.header.stamp = rospy.Time.now()
        marker1.header.frame_id = "/world"
        marker1.id = detect.object_id
        marker1.type = marker1.SPHERE
        marker1.action = marker1.ADD
        marker1.pose.position.x = detect.point.x
        marker1.pose.position.y = detect.point.y
        marker1.pose.position.z = detect.point.z
        marker1.pose.orientation.w = 1
        marker1.scale.x = sphere_rad * 2
        marker1.scale.y = sphere_rad * 2
        marker1.scale.z = sphere_rad * 2

        marker1.color.r = 1.0
        marker1.color.g = 0
        marker1.color.b = 0
        marker1.color.a = 0.7
        marker1.lifetime = rospy.Duration.from_sec(0)
        marker1.frame_locked = 0
        markerArray.markers.append(marker1)

    pub.publish(markerArray)
    def publish_target_marker(self, target_pose):
        # Publish Target RViz Marker

        t_marker = Marker()
        t_marker.type = 2  #=>SPHERE
        t_marker.scale.x = 0.3
        t_marker.scale.y = 0.3
        t_marker.scale.z = 0.3
        t_marker.action = 0
        t_marker.frame_locked = 1
        t_marker.pose.position.x = target_pose[0]
        t_marker.pose.position.y = target_pose[1]
        t_marker.pose.position.z = 0.0
        rpy_orientation = PyKDL.Rotation.RPY(0.0, 0.0, target_pose[2])
        q_orientation = rpy_orientation.GetQuaternion()
        t_marker.pose.orientation.x = q_orientation[0]
        t_marker.pose.orientation.y = q_orientation[1]
        t_marker.pose.orientation.z = q_orientation[2]
        t_marker.pose.orientation.w = q_orientation[3]
        t_marker.id = 0
        t_marker.header.stamp = rospy.Time.now()
        t_marker.header.frame_id = self.path_frame
        t_marker.color.a = 1.0
        t_marker.color.r = 0.0  # red
        t_marker.color.g = 1.0
        t_marker.color.b = 0.0
        self.target_pub.publish(t_marker)
Example #20
0
    def add_marker(self, mesh_frame, marker_name, mesh_file):
        marker_msg = Marker()
        marker_msg.frame_locked = True
        marker_msg.id = 0
        marker_msg.action = Marker.ADD
        marker_msg.mesh_use_embedded_materials = False
        marker_msg.color.a = 1.0
        marker_msg.color.r = 0.6
        marker_msg.color.g = 0.6
        marker_msg.color.b = 0.6
        marker_msg.header.stamp = rospy.get_rostime()
        #marker_msg.lifetime =
        #marker_msg.pose =
        marker_msg.type = Marker.MESH_RESOURCE
        marker_msg.header.frame_id = mesh_frame
        marker_msg.ns = marker_name
        marker_msg.mesh_resource = 'file://%s' % (os.path.abspath(mesh_file))
        scale = 1.0
        marker_msg.scale.x, marker_msg.scale.y, marker_msg.scale.z = scale, scale, scale
        marker_msg.pose.position.x, marker_msg.pose.position.y, marker_msg.pose.position.z = 0, 0, 0
        marker_msg.pose.orientation.x, marker_msg.pose.orientation.y, marker_msg.pose.orientation.z, marker_msg.pose.orientation.w = 0, 0, 0, 1
        self.pub_marker_sync(marker_msg)

        if not self.marker_thread:
            self.marker_thread = thread.start_new_thread(
                MarkerPublisher.publish_markers, (self, ))
Example #21
0
    def SendSaliencyMarker(self, frame_id, ts, csaliency_id, ns, direction):

        # the arrow
        marker = Marker()
        marker.header.frame_id = frame_id
        marker.header.stamp = ts
        marker.id = csaliency_id
        marker.ns = ns
        marker.type = Marker.ARROW
        marker.action = Marker.MODIFY
        marker.pose.position.x = 0
        marker.pose.position.y = 0
        marker.pose.position.z = 0
        marker.pose.orientation.x = 0.0
        marker.pose.orientation.y = 0.0
        marker.pose.orientation.z = 0.0
        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.01
        marker.scale.y = 0.03
        marker.scale.z = 0.08
        marker.color.r = 0.0
        marker.color.g = 0.0
        marker.color.b = 1.0
        marker.color.a = 0.5
        points = []
        points.append(Point(0.0, 0.0, 0.0))
        points.append(Point(direction.x, direction.y, direction.z))
        marker.points = points
        marker.lifetime = rospy.Duration.from_sec(0.1)
        marker.frame_locked = False
        self.saliency_rviz_pub.publish(marker)
Example #22
0
def callback(msg):
    marker = Marker()
    marker.header = msg.header
    marker.header.frame_id = "map"
    marker.ns = 'obstacles'
    marker.id = 0
    marker.type = Marker.SPHERE_LIST
    marker.action = Marker.MODIFY

    marker.scale.x = 0.1
    marker.scale.y = 0.1
    marker.scale.z = 0.1

    marker.color.r = 0
    marker.color.g = 1
    marker.color.b = 0
    marker.color.a = 1

    marker.lifetime = rospy.Duration(2)
    marker.frame_locked = False

    for obstacle in msg.obstacles:
        point = Point()
        point.x = obstacle.odom.pose.pose.position.x
        point.y = obstacle.odom.pose.pose.position.y
        point.z = 0
        marker.points.append(point)

    vis_pub.publish(marker)
 def create_marker(self, type, dims, frame, ns, id, duration = 60., color = [1,0,0], opaque = 0.5, pos = [0.,0.,0.], quat = [0.,0.,0.,1.], frame_locked = False):
     marker = Marker()
     marker.header.frame_id = frame
     marker.header.stamp = rospy.Time.now()
     marker.ns = ns
     marker.type = type
     marker.action = Marker.ADD
     marker.scale.x = dims[0]
     marker.scale.y = dims[1]
     marker.scale.z = dims[2]
     marker.color.a = opaque
     marker.color.r = color[0]
     marker.color.g = color[1]
     marker.color.b = color[2]
     marker.lifetime = rospy.Duration(duration)
     marker.id = id
     marker.pose.position.x = pos[0]
     marker.pose.position.y = pos[1]
     marker.pose.position.z = pos[2]
     marker.pose.orientation.x = quat[0]
     marker.pose.orientation.y = quat[1]
     marker.pose.orientation.z = quat[2]
     marker.pose.orientation.w = quat[3]       
     marker.frame_locked = frame_locked
     return marker
Example #24
0
 def get_all_markers(self, frame_id="map"):
     if len(self.points) > 0:
         wx, wy, wz = getDims(self.points[0], self.points[1])
     else:
         wx, wy, wz = 0, 0, 0
     marker = Marker()
     clr_ = create_color(1.0, 0, 0, 1.0)
     pts = [
         center(mn, mx)
         for mn, mx in zip(self.points[0::2], self.points[1::2])
     ]
     colors = [clr_ for x in pts]
     marker.type = marker.CUBE_LIST
     marker.action = marker.ADD
     marker.scale.x = abs(wx)
     marker.scale.y = abs(wy)
     marker.scale.z = abs(wz)
     marker.color.a = 1.0
     marker.color.g = 1.0
     marker.pose.position.x = 0
     marker.pose.position.y = 0
     marker.pose.position.z = 0
     marker.pose.orientation.w = 1.0
     marker.points = pts
     marker.colors = colors
     marker.frame_locked = True
     marker.header.frame_id = frame_id
     return [marker]
    def make_sphere_marker(self, xy, radius, color, namespace):
        # type: ([int,int], float, ColorRGBA, str) -> Marker
        """ Function to generate a spherical marker

            ARGUMENTS:
                x, y: coordinates of point in grid space
                radius: float
                color: ColorRGBA
                mark_id: unique id
                off_x, off_y: Origin of map coordinates in world frame """
        marker = Marker()

        marker.header.stamp = rospy.Time.now()
        marker.header.frame_id = 'map'
        marker.ns = namespace
        marker.id = self.mark_id
        self.mark_id += 1
        marker.type = 2
        marker.action = 0
        marker.pose = geometry_msgs.msg.Pose()
        marker.pose.orientation.w = 1
        marker.pose.position.x = xy[0]
        marker.pose.position.y = xy[1]
        marker.scale = geometry_msgs.msg.Vector3(radius, radius, radius)
        marker.color = color
        marker.lifetime = rospy.rostime.Duration(0)
        marker.frame_locked = True
        return marker
    def on_feet_msg(self, feet_msg):
        marker = Marker()
        marker.header.frame_id = "base_link"
        marker.header.stamp = rospy.Time()
        marker.type = Marker.SPHERE_LIST
        marker.action = Marker.ADD
        marker.pose.orientation.w = 1.
        marker.scale = Vector3(0.02, 0.02, 0.02)
        marker.lifetime = rospy.Duration(0)
        marker.frame_locked = True

        def vector_to_point(vector):
            return Point(vector.x, vector.y, vector.z)

        def lookup_for_foot(link_name, sensor_triggered):
            position = Point()
            try:
                position = self.tf_buffer.lookup_transform(
                    marker.header.frame_id, link_name,
                    rospy.Time()).transform.translation
            except (tf2_ros.LookupException, tf2_ros.ConnectivityException,
                    tf2_ros.ExtrapolationException):
                pass
            marker.points.append(vector_to_point(position))
            marker.colors.append(
                ColorRGBA(0, 1, 0, 1
                          ) if sensor_triggered else ColorRGBA(1, 0, 0, 1))

        lookup_for_foot("left_front_button", feet_msg.left_front)
        lookup_for_foot("left_middle_button", feet_msg.left_middle)
        lookup_for_foot("left_rear_button", feet_msg.left_rear)
        lookup_for_foot("right_front_button", feet_msg.right_front)
        lookup_for_foot("right_middle_button", feet_msg.right_middle)
        lookup_for_foot("right_rear_button", feet_msg.right_rear)
        self.marker_publisher.publish(marker)
Example #27
0
    def get_centerline_markers(self, scene, nusc_map, stamp):
        pose_lists = nusc_map.discretize_centerlines(1)
        bbox = self.scene_bounding_box(scene, nusc_map)

        contained_pose_lists = []
        for pose_list in pose_lists:
            new_pose_list = []
            for pose in pose_list:
                if self.rectContains(bbox, pose):
                    new_pose_list.append(pose)
            if len(new_pose_list) > 0:
                contained_pose_lists.append(new_pose_list)

        msg = MarkerArray()
        for i, pose_list in enumerate(contained_pose_lists):
            marker = Marker()
            marker.header.frame_id = 'map'
            marker.header.stamp = stamp
            marker.ns = 'centerline'
            marker.id = i
            marker.type = Marker.LINE_STRIP
            marker.action = Marker.ADD
            marker.frame_locked = True
            marker.scale.x = 0.1
            marker.color.r = 51.0 / 255.0
            marker.color.g = 160.0 / 255.0
            marker.color.b = 44.0 / 255.0
            marker.color.a = 1.0
            marker.pose.orientation.w = 1.0
            for pose in pose_list:
                marker.points.append(Point(pose[0], pose[1], 0))
            msg.markers.append(marker)

        return msg
Example #28
0
 def publish_target_marker(self, target_pose):
     t_marker = Marker()
     t_marker.type = 1  # =>CUBE
     t_marker.action = 0
     t_marker.frame_locked = 1
     t_marker.pose.position.x = target_pose[0]
     t_marker.pose.position.y = target_pose[1]
     t_marker.pose.position.z = target_pose[2]
     rpy_orientation = PyKDL.Rotation.RPY(target_pose[3], target_pose[4],
                                          target_pose[5])
     q_orientation = rpy_orientation.GetQuaternion()
     t_marker.pose.orientation.x = q_orientation[0]
     t_marker.pose.orientation.y = q_orientation[1]
     t_marker.pose.orientation.z = q_orientation[2]
     t_marker.pose.orientation.w = q_orientation[3]
     t_marker.scale.x = 0.1
     t_marker.scale.y = 0.1
     t_marker.scale.z = 0.1
     t_marker.id = 0
     t_marker.header.stamp = rospy.Time.now()
     t_marker.header.frame_id = self.reference_frame
     t_marker.color.a = 0.7
     t_marker.color.r = 1.0  # red
     t_marker.color.g = 0.0
     t_marker.color.b = 0.0
     self.target_pub.publish(t_marker)
 def make_id_marker(self):
     self.id_marker = MarkerArray()
     time = rospy.get_rostime()
     for node in self.map_data['NODE']:
         m = Marker()
         m.ns = "id"
         m.header.frame_id = self.map_data['MAP_FRAME']
         m.header.stamp = time
         m.id = node['id']
         m.action = Marker().ADD
         m.type = Marker().TEXT_VIEW_FACING
         m.lifetime = rospy.Duration()
         m.scale.z = 1.0
         m.frame_locked = True
         self.set_marker_position(m, node['point']['x'], node['point']['y'],
                                  1)
         self.set_marker_orientation(m, 0, 0, 0)
         self.set_marker_rgb(m, 1.0, 1.0, 1.0)
         m.text = str(node['id'])
         self.id_marker.markers.append(m)
     for n_id in self.deleted_id_list:
         m = Marker()
         m.ns = "id"
         m.header.frame_id = self.map_data['MAP_FRAME']
         m.header.stamp = time
         m.id = n_id
         m.action = Marker().DELETE
         m.type = Marker().TEXT_VIEW_FACING
         m.lifetime = rospy.Duration()
         self.id_marker.markers.append(m)
Example #30
0
	def put_disk(self, disk, rod):
		marker = Marker()
		
		marker.header.frame_id = "/pl_base"
		marker.frame_locked = False
		marker.pose.position.x = self.rod_position[rod][0]
		marker.pose.position.y = self.rod_position[rod][1]
		marker.pose.position.z = self.position_z + DIFF_DISTANCE_BASE + 0.012 + len(self.rod_content[rod]) * 0.01
					
		marker.ns = "basic_shapes"
		marker.id = disk
		marker.type = marker.CYLINDER
		marker.action = marker.ADD
		marker.pose.orientation.w = 1.0
		marker.scale.x = DISK_SIZE[disk - 1]
		marker.scale.y = DISK_SIZE[disk - 1]
		marker.scale.z = 0.01
		marker.color.r = DISK_COLOR[disk - 1][0]
		marker.color.g = DISK_COLOR[disk - 1][1]
		marker.color.b = DISK_COLOR[disk - 1][2]
		marker.color.a = 1.0

		self.carrying_disk = -1
	
		self.rviz_pub.publish(marker)
Example #31
0
    def showTextRobot(self, text):
        marker = Marker()

        marker.header.frame_id = "/base_link"
        marker.frame_locked = True
        marker.header.stamp = rospy.Time.now()
        marker.ns = "robot_text"
        marker.id = 0

        marker.type = Marker.TEXT_VIEW_FACING
        marker.action = Marker.ADD
        
        marker.scale.x = marker.scale.y = marker.scale.z = 0.1

        marker.color.a = 1.0
        marker.color.r = marker.color.g = 0.9
        marker.color.b = 0.6

        marker.pose.position.x = 0.0
        marker.pose.position.y = 0.0
        marker.pose.position.z = 0.5

        marker.text = text

        self.pub_rviz.publish(marker)
Example #32
0
    def publishMarker_(self):
        pose = Pose()
        marker_msg = Marker()

        if (self.angle_measure_ < (math.pi / 2.0)):
            angle = (math.pi / 2.0) - self.angle_measure_
        else:
            angle = (2 * math.pi) - self.angle_measure_
            angle = (math.pi / 2.0) + angle

        pose.position.x = abs(self.laser_measure_ * math.sin(angle))
        pose.position.y = self.laser_measure_ * math.cos(angle)
        if (angle > math.pi / 2.0):
            pose.position.y = pose.position.y * (-1)
        pose.position.z = 0.0

        pose.orientation.x = pose.orientation.y = pose.orientation.z = 0.0
        pose.orientation.w = 1.0

        marker_msg.header.frame_id = "base_scan"
        marker_msg.ns = "bump_and_go"
        marker_msg.pose = pose
        marker_msg.scale.x = marker_msg.scale.y = marker_msg.scale.z = 0.1   # 10cm
        marker_msg.color.r = 1.0
        marker_msg.color.g = marker_msg.color.b = 0.0
        marker_msg.color.a = 1.0
        marker_msg.lifetime = rospy.Duration(secs=0.1)
        marker_msg.type = marker_msg.SPHERE
        marker_msg.action = marker_msg.ADD
        marker_msg.frame_locked = False

        self.marker_pub_.publish(marker_msg)
Example #33
0
	def move_disk(self, disk, rod):
		marker = Marker()

		marker.header.frame_id = "/pl_6"
		marker.frame_locked = True
		marker.pose.position.x = 0.0
		marker.pose.position.y = 0.0
		marker.pose.position.z = 0.27965
					
		marker.ns = "basic_shapes"
		marker.id = disk
		marker.type = marker.CYLINDER
		marker.action = marker.ADD
		marker.pose.orientation.w = 1.0
		marker.scale.x = DISK_SIZE[disk - 1]
		marker.scale.y = DISK_SIZE[disk - 1]
		marker.scale.z = 0.01
		marker.color.r = DISK_COLOR[disk - 1][0]
		marker.color.g = DISK_COLOR[disk - 1][1]
		marker.color.b = DISK_COLOR[disk - 1][2]
		marker.color.a = 1.0
			
		self.carrying_disk = disk

		self.rviz_pub.publish(marker)
    def markers(self):
        '''
        This property creates a Marker message with Sphere List for all detected frontiers.
        Since this is mostly just for visualization (?), I went with Sphere List instead of a MarkerArray
        '''
        marker = Marker()
        marker.header.frame_id = self.name
        marker.header.stamp = self.map_meta.map_load_time
        marker.ns = self.name + '_frontiers'
        marker.id = 0
        marker.frame_locked = True
        marker.type = marker.SPHERE_LIST
        marker.action = marker.ADD

        positions = [
            self.cell2pos(f['mean'][0], f['mean'][1]) for f in self.frontiers
        ]
        marker.points = [Point(x=x, y=y) for x, y in positions]

        marker.pose.orientation.w = 1.0
        marker.scale.x = 0.5
        marker.scale.y = 0.5
        marker.scale.z = 0.1
        marker.color.a = 0.5
        marker.color.b = 1.0

        marker.lifetime = rospy.Duration()
        return marker
Example #35
0
    def publish_target_markers(self, target_poses):
        marker_array = MarkerArray()

        for i in range(len(target_poses)):
            m = Marker()
            m.type = 2  # sphere
            m.scale.x = self.room_generator_params['target_size']
            m.scale.y = self.room_generator_params['target_size']
            m.scale.z = self.room_generator_params['target_size']
            m.action = 0
            m.frame_locked = 1
            m.pose.position.x = target_poses[i][0]
            m.pose.position.y = target_poses[i][1]
            m.pose.position.z = 0.0
            rpy_orientation = PyKDL.Rotation.RPY(0, 0, target_poses[i][2])
            q_orientation = rpy_orientation.GetQuaternion()
            m.pose.orientation.x = q_orientation[0]
            m.pose.orientation.y = q_orientation[1]
            m.pose.orientation.z = q_orientation[2]
            m.pose.orientation.w = q_orientation[3]
            m.id = i
            m.header.stamp = rospy.Time.now()
            m.header.frame_id = 'map'
            m.color.a = 1.0
            m.color.r = 0.0
            m.color.g = 1.0
            m.color.b = 1.0

            marker_array.markers.append(m)

        self.target_pub.publish(marker_array)
Example #36
0
 def create_mesh(self, mesh_id, pose):
     response = self.get_mesh(mesh_id)
     mesh = response.mesh
     # build the mesh marker
     marker = Marker()
     marker.color.r = 1.0
     marker.color.g = 0.0
     marker.color.b = 0.0
     marker.color.a = 0.66
     marker.frame_locked = False
     marker.type = Marker.TRIANGLE_LIST
     # add the mesh
     for j in range(len(mesh.triangles)):
         marker.points.append(
             mesh.vertices[mesh.triangles[j].vertex_indices[0]])
         marker.points.append(
             mesh.vertices[mesh.triangles[j].vertex_indices[1]])
         marker.points.append(
             mesh.vertices[mesh.triangles[j].vertex_indices[2]])
     # create the interactive marker
     name = self.create_name(mesh_id)
     self.server.insert(self.create_im(marker, pose, name),
                        self.process_feedback)
     self.server.setCallback(name, self.release,
                             InteractiveMarkerFeedback.MOUSE_UP)
     self.server.applyChanges()
 def _default_marker(self, index=0):
     m = Marker()
     m.ns = self._ns
     m.id = self._ids[index]
     m.header.frame_id = self._frame_id
     m.action = Marker.ADD
     m.frame_locked = True
     return m
def test():
    rospy.init_node('intersect_plane_test')
    marker_pub = rospy.Publisher('table_marker', Marker)
    pose_pub = rospy.Publisher('pose', PoseStamped)
    int_pub = rospy.Publisher('intersected_points', PointCloud2)
    tfl = tf.TransformListener()
    
    # Test table
    table = Table()
    table.pose.header.frame_id = 'base_link'
    table.pose.pose.orientation.x, table.pose.pose.orientation.y, table.pose.pose.orientation.z, table.pose.pose.orientation.w = (0,0,0,1)
    table.x_min = -0.5
    table.x_max =  0.5
    table.y_min = -0.5
    table.y_max =  0.5

    # A marker for that table
    marker = Marker()
    marker.header.frame_id = table.pose.header.frame_id
    marker.id = 1
    marker.type = Marker.LINE_STRIP
    marker.action = 0
    marker.pose = table.pose.pose
    marker.scale.x, marker.scale.y, marker.scale.z = (0.005,0.005,0.005)
    marker.color.r, marker.color.g, marker.color.b, marker.color.a = (0.0,1.0,1.0,1.0) 
    marker.frame_locked = False
    marker.ns = 'table'
    marker.points = [
        Point(table.x_min,table.y_min, table.pose.pose.position.z),
        Point(table.x_min,table.y_max, table.pose.pose.position.z),
        Point(table.x_max,table.y_max, table.pose.pose.position.z),
        Point(table.x_max,table.y_min, table.pose.pose.position.z),
        Point(table.x_min,table.y_min, table.pose.pose.position.z),
    ]
    marker.colors = []
    marker.text = ''
    # marker.mesh_resource = ''
    marker.mesh_use_embedded_materials = False
    marker.header.stamp = rospy.Time.now()

    # A test pose
    pose = PoseStamped()
    pose.header = table.pose.header
    pose.pose.position.x, pose.pose.position.y, pose.pose.position.z = (0,0,0.5)
    pose.pose.orientation.x, pose.pose.orientation.y, pose.pose.orientation.z, pose.pose.orientation.w = quaternion_from_euler(0,-pi/5,pi/5)
    
    intersection = cast_ray(pose, table, tfl)
    cloud = xyz_array_to_pointcloud2(np.array([[intersection.point.x, intersection.point.y, intersection.point.z]]))
    cloud.header = pose.header
    
    while not rospy.is_shutdown():
        marker_pub.publish(marker)
        pose_pub.publish(pose)
        int_pub.publish(cloud)
        rospy.loginfo('published')
        rospy.sleep(0.1)
def make_marker(frame_id, id, pose, scale, color, frame_locked):
    msg = Marker()
    msg.header.frame_id = frame_id
    msg.header.stamp = rospy.Time.now()
    msg.ns = "pouring_visualization"
    msg.id = id
    msg.action = Marker.ADD
    msg.pose = pose
    msg.scale = scale
    msg.color = color
    msg.frame_locked = frame_locked
    return msg
def CreateMeshMarker(pose, mesh_path, alpha = 1, scaleFactor=1, id=randint(0,10000)):
    marker = Marker()
    marker.ns = "visual"
    marker.id = id
    marker.scale.x = scaleFactor
    marker.scale.y = scaleFactor
    marker.scale.z = scaleFactor
    marker.pose = pose
    marker.type = Marker.MESH_RESOURCE
    marker.mesh_use_embedded_materials = True
    marker.mesh_resource = mesh_path
    marker.frame_locked = True
    return marker
Example #41
0
	def create_status_marker(self, text):
		marker = Marker()
		marker.header.frame_id = 'base_footprint'
		marker.header.stamp = rospy.Time.now()
		marker.pose.position.z += 1
		marker.pose.orientation.w = 1
		marker.type = Marker.TEXT_VIEW_FACING
		marker.text = text
		marker.frame_locked = True
		marker.ns = 'status'
		marker.scale.z = 0.3
		marker.color.r = 0.8
		marker.color.g = 0.5
		marker.color.b = 0.1
		marker.color.a = 1.0
		return marker
def main():

    rospy.init_node('field_marker_publisher_node', anonymous=True)
    pub = rospy.Publisher('agent_markers', MarkerArray, queue_size=10)

    agent_number = rospy.get_param('~agent_number')   
    print "agent_number = " + str(agent_number)

    height = rospy.get_param('/agent/height')   
    print "height = " + str(height)

    radius = rospy.get_param('/agent/radius')   
    print "radius = " + str(radius)


    ma = MarkerArray()

    #Green rectangle
    m = Marker()
    m.header.stamp = rospy.Time.now()
    m.header.frame_id = "base_footprint_agent" + str(agent_number)
    m.ns = "agent"
    m.id = 0
    m.type = 3
    m.frame_locked = True

    m.pose.orientation.w = 1
    m.pose.position.z = 0
    m.scale.x = radius
    m.scale.y = radius
    m.scale.z = height
    m.color.r = 0.2
    m.color.g = 0.2
    m.color.b = 0.2
    m.color.a = 1
    ma.markers.append(copy.deepcopy(m))

          
    rate = rospy.Rate(1) 
    while not rospy.is_shutdown():

        print "in cycle"
        pub.publish(ma)
        
        ##rospy.loginfo(t)
        rate.sleep()
    def draw_grasps(self, grasps, frame, ns = 'grasps', pause = 0, frame_locked = False):

        marker = Marker()
        marker.header.frame_id = frame
        marker.header.stamp = rospy.Time.now()
        marker.ns = ns
        marker.type = Marker.ARROW
        marker.action = Marker.ADD
        marker.color.a = 1.0
        marker.lifetime = rospy.Duration(0)
        marker.frame_locked = frame_locked

        for (grasp_num, grasp) in enumerate(grasps):
            if grasp_num == 0:
                marker.scale.x = 0.015
                marker.scale.y = 0.025
                length_fact = 1.5

            else:
                marker.scale.x = 0.01
                marker.scale.y = 0.015
                length_fact = 1.0

            orientation = grasp.orientation
            quat = [orientation.x, orientation.y, orientation.z, orientation.w]
            mat = tf.transformations.quaternion_matrix(quat)
            start = [grasp.position.x, grasp.position.y, grasp.position.z]
            x_end = list(mat[:,0][0:3]*.05*length_fact + scipy.array(start))    
            y_end = list(mat[:,1][0:3]*.02*length_fact + scipy.array(start))
            marker.id = grasp_num*3
            marker.points = [Point(*start), Point(*x_end)]
            marker.color.r = 1.0
            marker.color.g = 0.0
            marker.color.b = 0.0
            self.marker_pub.publish(marker)
            marker.id = grasp_num*3+1
            marker.points = [Point(*start), Point(*y_end)]
            marker.color.r = 0.0
            marker.color.g = 1.0
            marker.color.b = 0.0
            self.marker_pub.publish(marker)
            marker.id = grasp_num*3+2
            if pause:
                print "press enter to continue"
                raw_input()
        time.sleep(.5)
Example #44
0
 def _init_markers(self):
     self.marker_idx = 0
     for i in range(self.max_markers):
         marker = Marker()
         marker.header.frame_id = self.global_frame
         marker.id = self.marker_idx
         marker.type = 2
         marker.action = 2
         marker.pose = Pose()
         marker.color.r = 0.0
         marker.color.g = 0.0
         marker.color.b = 0.0
         marker.color.a = 0.0
         marker.scale.x = 0.1
         marker.scale.y = 0.1
         marker.scale.z = 0.1
         marker.frame_locked = False
         marker.ns = "Goal-%u"%i
         self.marker_array_msg.markers.append(marker)            
Example #45
0
def initMarker(baseFrameId="world", stamp=None, markerNamespace=None, markerId=0, markerType=None, markerAction=Marker.ADD, markerDuration=rospy.Duration()):
    marker = Marker()
    # 	cframes.header.frame_id = baseFrameId;
    marker.header.frame_id = baseFrameId
    # 	marker.header.stamp = timestamp; // TODO: check on this...not sure this is right
    if stamp is None:
        stamp = rospy.Time.now()
    marker.header.stamp = stamp
    # 	marker.ns = "/vertices";
    if not markerNamespace is None:
        marker.ns = markerNamespace
    # 	marker.id = 0;
    marker.id = markerId
    # 	marker.type = visualization_msgs::Marker::LINE_LIST;
    if not markerType is None:
        marker.type = markerType
    # 	marker.action = visualization_msgs::Marker::ADD;
    marker.action = markerAction
    # 	marker.lifetime = ros::Duration();
    marker.lifetime = markerDuration
    # 	marker.pose.position.x = marker.pose.position.y = marker.pose.position.z = 0.0;
    marker.pose.position.x = 0.0
    marker.pose.position.y = 0.0
    marker.pose.position.z = 0.0
    # 	marker.pose.orientation.x = marker.pose.orientation.y = marker.pose.orientation.z = 0.0;
    # 	marker.pose.orientation.w = 1.0;
    marker.pose.orientation.x = 0.0
    marker.pose.orientation.y = 0.0
    marker.pose.orientation.z = 0.0
    marker.pose.orientation.w = 1.0
    # 	marker.scale.x = marker.scale.y = marker.scale.z = 0.01;
    marker.scale.x = 1.0;
    marker.scale.y = 1.0;
    marker.scale.z = 1.0;
    # 	marker.color.r = marker.color.g = marker.color.b = marker.color.a = 1.f;
    marker.color.r = 1.0
    marker.color.g = 1.0
    marker.color.b = 1.0
    marker.color.a = 1.0
    # 	marker.frame_locked = false;
    marker.frame_locked = False
    return marker
Example #46
0
 def _append_waypoint_pose(self,pose):
     print pose
     self.waypoints.append(pose)
     marker = Marker()
     marker.header.frame_id = self.global_frame
     marker.id = self.marker_idx
     marker.type = 2
     marker.action = 0
     marker.pose = pose
     marker.color.r = 1.0
     marker.color.g = 0.0
     marker.color.b = 0.0
     marker.color.a = 1.0
     marker.scale.x = 0.1
     marker.scale.y = 0.1
     marker.scale.z = 0.1
     marker.frame_locked = False
     marker.ns = "Goal-%u"%self.marker_idx
     self.marker_array_msg.markers[self.marker_idx] = marker 
     self.marker_idx+=1
Example #47
0
 def addText(self, text, pos):
     oid = 1
     name = "/text"+str(oid)
     marker = Marker()
     marker.id = oid
     marker.ns = "/text"
     marker.header.frame_id = "/map"
     marker.type = marker.TEXT_VIEW_FACING
     marker.action = marker.ADD
     marker.scale.z = 0.2
     marker.color.r = 1.0
     marker.color.g = 1.0
     marker.color.b = 1.0
     marker.color.a = 1.0
     marker.pose.orientation.w = 1.0
     marker.pose.position.x = pos[0]
     marker.pose.position.y = pos[1]
     marker.pose.position.z = pos[2]
     marker.text = text
     marker.frame_locked=1
     self.markerArray.markers.append(marker)
 def create_mesh(self, mesh_id, pose):
     response = self.get_mesh(mesh_id)
     mesh = response.mesh
     # build the mesh marker
     marker = Marker()
     marker.color.r = 1.0
     marker.color.g = 0.0
     marker.color.b = 0.0
     marker.color.a = 0.66
     marker.frame_locked = False
     marker.type = Marker.TRIANGLE_LIST
     # add the mesh
     for j in range(len(mesh.triangles)):
         marker.points.append(mesh.vertices[mesh.triangles[j].vertex_indices[0]])
         marker.points.append(mesh.vertices[mesh.triangles[j].vertex_indices[1]])
         marker.points.append(mesh.vertices[mesh.triangles[j].vertex_indices[2]])
     # create the interactive marker
     name =  self.create_name(mesh_id)
     self.server.insert(self.create_im(marker, pose, name), self.process_feedback)
     self.server.setCallback(name, self.release, InteractiveMarkerFeedback.MOUSE_UP)
     self.server.applyChanges()
Example #49
0
 def Reset(self, event):
  #with self.locker:
   dur = rospy.Duration(6)
   rospy.sleep(dur)
   InitData = Path()
   InitData.header.seq = self.seq_num
   InitData.header.stamp = rospy.Time.now()
   InitData.header.frame_id = self.frame_id
   self.path.poses=[]
      
   Initmark = Marker()
   Initmark.header.frame_id = self.frame_id
   Initmark.ns = self.root_topic
   Initmark.type = Marker.POINTS
   Initmark.action = Marker.ADD
   Initmark.lifetime = rospy.Duration(1)
   Initmark.frame_locked = 1
   self.path_mark.points=[]
   self.path_mark.colors=[]
  
   self.path_pub.publish(InitData)
   self.path_marker.publish(Initmark)
Example #50
0
def publishCylinder(pos, ori, scale, color, id):
  m = Marker()

  m.id = id
  m.ns = frame_name
  m.action = m.ADD
  m.type = m.CYLINDER

  m.header.stamp = rospy.Time.now()
  m.header.frame_id = frame_name

  m.lifetime = rospy.Duration(4.0)

  m.color = color

  m.pose.position = Point(*pos)
  m.pose.orientation = Quaternion(*ori)
  m.scale = Vector3(*scale)

  m.frame_locked = True

  pub.publish(m)
def callback(msgs):
    "msgs = ContactStatesStamped"
    global g_config
    if g_config.use_parent_link:
        urdf_robot = URDF.from_parameter_server()
    marker_array = MarkerArray()
    for msg, i in zip(msgs.states, range(len(msgs.states))):
        marker = Marker()
        link_name = msg.header.frame_id
        if g_config.use_parent_link:
            # lookup parent link
            chain = urdf_robot.get_chain(urdf_robot.get_root(), link_name)
            link_name = chain[-3]
        mesh_file, offset = find_mesh(link_name)
        marker.header.frame_id = link_name
        marker.header.stamp = rospy.Time.now()
        marker.type = Marker.MESH_RESOURCE
        if msg.state.state == ContactState.ON:
            marker.color.a = g_config.on_alpha
            marker.color.r = g_config.on_red
            marker.color.g = g_config.on_green
            marker.color.b = g_config.on_blue
        elif msg.state.state == ContactState.OFF:
            marker.color.a = g_config.off_alpha
            marker.color.r = g_config.off_red
            marker.color.g = g_config.off_green
            marker.color.b = g_config.off_blue
        marker.scale.x = g_config.marker_scale
        marker.scale.y = g_config.marker_scale
        marker.scale.z = g_config.marker_scale
        marker.pose = offset
        marker.mesh_resource = mesh_file
        marker.frame_locked = True
        marker.id = i
        if msg.state.state == ContactState.OFF:
            if not g_config.visualize_off:
                marker.action = Marker.DELETE
        marker_array.markers.append(marker)
    pub.publish(marker_array)
def talker():
    pub = rospy.Publisher('marker_chatter', Marker)
    rospy.init_node('marker_talker')
    while not rospy.is_shutdown():
        m = Marker()
        m.header.frame_id =  '/camera_rgb_optical_frame'
        m.type = 10
        m.id = 2
        m.action = 0
        m.scale.x = 1
        m.scale.y = 1
        m.scale.z = 1
        m.color.r = 0.3
        m.color.g = 1
        m.color.b = 0.2
        m.color.a = 0.7
        m.lifetime.secs = 1
        m.frame_locked = False
        m.mesh_resource= 'http://localhost:5984/object_recognition/cd4c27a2dd307cda79b49ee31494ba08/mesh.stl'
        m.mesh_use_embedded_materials= False
        pub.publish(m)
        rospy.sleep(1.0)
def moveit_to_marker_array(msg):
    ma = MarkerArray()

    for pid, prim in enumerate(msg.primitives):
        m = Marker()
        m.ns = msg.id
        m.id = pid
        m.frame_locked = True
        m.lifetime = rospy.Duration(2.0)

        m.color = ColorRGBA(
            21.0/255.0,
            150.0/255.0,
            118.0/255.0,
            1.0)

        if prim.type is SolidPrimitive.BOX:
            m.type = Marker.CUBE
            m.scale.x = prim.dimensions[SolidPrimitive.BOX_X]
            m.scale.y = prim.dimensions[SolidPrimitive.BOX_Y]
            m.scale.z = prim.dimensions[SolidPrimitive.BOX_Z]
        elif prim.type is SolidPrimitive.SPHERE:
            m.type = Marker.SPHERE
            m.scale.x = 2*prim.dimensions[SolidPrimitive.SPHERE_RADIUS]
            m.scale.y = 2*prim.dimensions[SolidPrimitive.SPHERE_RADIUS]
            m.scale.z = 2*prim.dimensions[SolidPrimitive.SPHERE_RADIUS]
        elif prim.type is SolidPrimitive.CYLINDER:
            m.type = Marker.CYLINDER
            m.scale.x = 2*prim.dimensions[SolidPrimitive.CYLINDER_RADIUS]
            m.scale.y = 2*prim.dimensions[SolidPrimitive.CYLINDER_RADIUS]
            m.scale.z = prim.dimensions[SolidPrimitive.CYLINDER_HEIGHT]
        else:
            rospy.logerr("Can't convert moveit collision object type: {}".format(prim.type))
            continue

        ma.markers.append(m)

    return ma
def publishCube(pos, ori, scale, id):
    m = Marker()

    m.id = id
    m.ns = "spatula"
    m.action = m.ADD
    m.type = m.CUBE

    m.header.stamp = rospy.Time.now()
    m.header.frame_id = frame_name

    m.lifetime.secs = 0
    m.lifetime.nsecs = 0

    m.color = ColorRGBA(0.3, 0.3, 0.3, 1)

    m.pose.position = Point(*pos)
    m.pose.orientation = Quaternion(*ori)
    m.scale = Vector3(*scale)

    m.frame_locked = True

    pub.publish(m)
def callback(data):

    global listener    
    try:
        p = listener.transformPose('world', data)
    except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException):
        return


    m = Marker()
    m.header = data.header
    m.header.frame_id = 'world'
#    m.header.stamp = rospy.get_time()
    m.ns = 'ncvrl'
    m.id = 0
    m.type = 0
    m.pose.position.x = p.pose.position.x
    m.pose.position.y = p.pose.position.y
    m.pose.position.z = p.pose.position.z + 0.3
    m.pose.orientation.x = 0
    m.pose.orientation.y = 1.0
    m.pose.orientation.z = 0.0
    m.pose.orientation.w = 1.0


    m.scale.x = 0.2         
    m.scale.y = 0.1         
    m.scale.z = 0.1         
    m.color.a = 0.4
    m.color.r = 0.0
    m.color.g = 1.0
    m.color.b = 0.0

    m.frame_locked = 1

    pub.publish(m);
def callback(msgs):
    "msgs = ContactStatesStamped"
    marker_array = MarkerArray()
    for msg, i in zip(msgs.states, range(len(msgs.states))):
        marker = Marker()
        mesh_file, offset = find_mesh(msg.header.frame_id)
        marker.header.frame_id = msg.header.frame_id
        marker.header.stamp = rospy.Time.now()
        marker.type = Marker.MESH_RESOURCE
        marker.color.a = alpha
        marker.color.r = rgb[0]
        marker.color.g = rgb[1]
        marker.color.b = rgb[2]
        marker.scale.x = scale
        marker.scale.y = scale
        marker.scale.z = scale
        marker.pose = offset
        marker.mesh_resource = mesh_file
        marker.frame_locked = True
        marker.id = i
        if msg.state.state == ContactState.OFF:
            marker.action = Marker.DELETE
        marker_array.markers.append(marker)
    pub.publish(marker_array)
Example #57
0
    def __init__(self, input_ref_frame_id, input_frame_id):

        self.input_ref_frame_id = input_ref_frame_id
        self.input_frame_id = input_frame_id

        # Parameters
        self.tip_link = rospy.get_param('~tip_link')
        self.cmd_frame_id = rospy.get_param('~cmd_frame', 'wam/cmd')
        self.scale = rospy.get_param('~scale', 1.0)
        self.use_hand = rospy.get_param('~use_hand', True)

        # TF structures
        self.last_time_check = rospy.Time.now()
        self.listener = tf.TransformListener()
        self.broadcaster = tf.TransformBroadcaster()

        # State
        self.cmd_origin = kdl.Frame()
        self.tip_origin = kdl.Frame()

        # Command state
        self.cmd_frame = None
        self.deadman_engaged = False
        self.engage_augmenter = False
        self.cmd_scaling = 0.0

        # Hand structures
        if self.use_hand:
            # Hand state
            self.hand_cmd = oro_barrett_msgs.msg.BHandCmd()
            self.last_hand_cmd = rospy.Time.now()
            self.hand_position = [0, 0, 0, 0]
            self.hand_velocity = [0, 0, 0, 0]

            self.move_f = [True, True, True]
            self.move_spread = True
            self.move_all = True

            # Hand joint state and direct command
            self.hand_joint_state_sub = rospy.Subscriber(
                'hand/joint_states',
                sensor_msgs.msg.JointState,
                self.hand_state_cb)

            self.hand_pub = rospy.Publisher('hand/cmd', oro_barrett_msgs.msg.BHandCmd, queue_size=1000)

        # ROS generic telemanip command
        self.telemanip_cmd_pub = rospy.Publisher('telemanip_cmd_out', TelemanipCommand, queue_size=1000)
        # goal marker
        self.marker_pub = rospy.Publisher('master_target_markers', MarkerArray, queue_size=1000)

        self.master_target_markers = MarkerArray()

        self.color_blue = ColorRGBA(0.0, 0.66, 1.0, 1.0)
        self.color_gray = ColorRGBA(0.5, 0.5, 0.5, 1.0)
        self.color_orange = ColorRGBA(1.0, 0.5, 0.0, 1.0)
        self.color_green = ColorRGBA(0.0, 1.0, 0.0, 1.0)
        self.color_red = ColorRGBA(1.0, 0.0, 0.0, 1.0)

        m = Marker()
        m.header.frame_id = self.cmd_frame_id
        m.ns = 'finger_marker'
        m.id = 0
        m.type = m.MESH_RESOURCE
        m.action = 0
        p = m.pose.position
        o = m.pose.orientation
        p.x, p.y, p.z = finger_point(0.0)
        o.x, o.y, o.z, o.w = (0, 0, 0, 1.0)
        m.color = self.color_gray
        m.scale.x = m.scale.y = m.scale.z = 0.02
        m.frame_locked = True
        m.mesh_resource = 'package://lcsr_barrett/models/teleop_finger_marker.dae'
        m.mesh_use_embedded_materials = False
        self.master_target_markers.markers.append(m)

        m = Marker()
        m.header.frame_id = self.cmd_frame_id
        m.ns = 'finger_marker'
        m.id = 1
        m.type = m.MESH_RESOURCE
        m.action = 0
        p = m.pose.position
        o = m.pose.orientation
        p.x, p.y, p.z = finger_point(0.0)
        o.x, o.y, o.z, o.w = (0, 0, 0, 1.0)
        m.color = self.color_gray
        m.scale.x = m.scale.y = m.scale.z = 0.02
        m.frame_locked = True
        m.mesh_resource = 'package://lcsr_barrett/models/teleop_finger_marker.dae'
        m.mesh_use_embedded_materials = False
        self.master_target_markers.markers.append(m)

        m = Marker()
        m.header.frame_id = self.cmd_frame_id
        m.ns = 'finger_marker'
        m.id = 2
        m.type = m.MESH_RESOURCE
        m.action = 0
        p = m.pose.position
        o = m.pose.orientation
        p.x, p.y, p.z = (0.0, 0.08, -0.08)
        o.x, o.y, o.z, o.w = (0, 0, 0, 1.0)
        m.color = self.color_gray
        m.scale.x = m.scale.y = m.scale.z = 0.02
        m.frame_locked = True
        m.mesh_resource = 'package://lcsr_barrett/models/teleop_finger_marker.dae'
        m.mesh_use_embedded_materials = False
        self.master_target_markers.markers.append(m)

        m = Marker()
        m.header.frame_id = self.cmd_frame_id
        m.ns = 'master_target_markers'
        m.id = 3
        m.type = m.MESH_RESOURCE
        m.action = 0
        o = m.pose.orientation
        o.x, o.y, o.z, o.w = (-0.7071, 0.0, 0.0, 0.7071)
        m.color = self.color_gray
        m.scale.x = m.scale.y = m.scale.z = 0.02
        m.frame_locked = True
        m.mesh_resource = 'package://lcsr_barrett/models/teleop_target.dae'
        m.mesh_use_embedded_materials = False
        self.master_target_markers.markers.append(m)
Example #58
0
import sys
frame_name = sys.argv[1]

rate = rospy.Rate(2)
counter_id = 0
while not rospy.is_shutdown():

  m = Marker()

  m.id = counter_id
  m.ns = frame_name
  m.action = m.ADD
  m.type = m.MESH_RESOURCE

  m.header.stamp = rospy.Time.now()
  m.header.frame_id = frame_name
  m.color = ColorRGBA(255.0/255.0, 224.0/255.00, 150.0/255.0, 1)
  m.lifetime = rospy.Duration(1)

  m.mesh_resource = "package://pr2_pouring_experiments/models/dinner_plate.dae";
  m.scale = Vector3(0.0254,0.0254,0.0254)
  
  m.mesh_use_embedded_materials = True
  m.pose.position = Point(0, 0, 0)
  m.pose.orientation.w = 1

  m.frame_locked = True

  pub.publish(m)
  rate.sleep()
    # Parse robot_description using minidom directly
    # because urdf_parser_py cannot read PR2 urdf
    doc = parseString(robot_description)
    links = doc.getElementsByTagName('link')
    mesh_file = None
    for link in links:
        if link_name == link.getAttribute('name'):
            visual_mesh = link.getElementsByTagName('visual').item(0).getElementsByTagName('mesh').item(0)
            mesh_file = visual_mesh.getAttribute('filename')
            break
    if not mesh_file:
        raise Exception("Cannot find link: {0}".format(link_name))
    pub = rospy.Publisher('~marker', Marker)
    rate = rospy.Rate(1)
    while not rospy.is_shutdown():
        marker = Marker()
        marker.header.frame_id = link_name
        marker.header.stamp = rospy.Time.now()
        marker.type = Marker.MESH_RESOURCE
        marker.color.a = alpha
        marker.color.r = rgb[0]
        marker.color.g = rgb[1]
        marker.color.b = rgb[2]
        marker.scale.x = scale
        marker.scale.y = scale
        marker.scale.z = scale
        marker.mesh_resource = mesh_file
        marker.frame_locked = True
        pub.publish(marker)
        rate.sleep()
Example #60
0
    def load_data(self, path=""):
        if path == "":
            path = roslib.packages.get_pkg_dir('ollieRosTools')+"/matlab/Data/exported/"
     
        # Load Trajectory
        with open(path+'trajectory/TCAM.csv', 'rb') as f:
            reader = csv.reader(f)
            for row in reader:
                self.TCAM.append(row)    
        self.TCAM = np.array(self.TCAM)
        self.TCAM =xyzWXYZ_xyzXYZW(self.TCAM.astype(np.double))
       
        # Load IMU Trajectory
        with open(path+'/trajectory/TOBJ.csv', 'rb') as f:
            reader = csv.reader(f)
            for row in reader:
                self.TOBJ.append(row)   
        self.TOBJ = np.array(self.TOBJ)
        self.TOBJ = xyzWXYZ_xyzXYZW(self.TOBJ.astype(np.double))
                
        # Load cloud        
        with open(path+'points3d/cloud.csv', 'rb') as f:
            reader = csv.reader(f)
            for row in reader:
                self.CLOUD.append(row)  
        self.CLOUD = np.array(self.CLOUD)
        self.CLOUD = self.CLOUD.astype(np.double)   

        mincol = np.min(self.CLOUD,0)
        maxcol = np.max(self.CLOUD,0)
        col = self.CLOUD-mincol
        col = col/np.abs(mincol - maxcol )


        m = MarkerMSG()
        m.action = m.ADD
        m.frame_locked = True
        m.ns = "WorldPointsGT"
        m.header.frame_id = "/world"
        m.type = m.POINTS
        m.pose.orientation.w = 1.0
        m.pose.orientation.z = 0
        m.pose.orientation.y = 0
        m.pose.orientation.x = 0
        m.id = 0
        m.pose.position.x = 0
        m.pose.position.y = 0
        m.pose.position.z = 0
        #m.color.a = 0.6
        #m.color.r = 1.0
        #m.color.b = 0.0
        #m.color.g = 0.0       
        m.scale.x = 0.05
        m.scale.y = 0.05
        m.scale.z = 0.05
        for wp,co in zip(self.CLOUD, col):   
            p = PointMSG()            
            p.x = wp[1]
            p.y = wp[2]
            p.z = wp[3]   
            c = ColorMSG()
            c.a = 0.75
            c.r = co[1]
            c.g = co[2]
            c.b = co[3]
            m.points.append(p)
            m.colors.append(c)
        self.CLOUD = m
                 
                 
        # Load Camera
        with open(path+'meta/cam2img.csv', 'rb') as f:
            reader = csv.reader(f)
            for row in reader:
                self.CAM2IMG.append(row)    
        self.CAM2IMG = np.array(self.CAM2IMG)
        self.CAM2IMG = self.CAM2IMG.astype(np.double)    
        self.CAM2IMG = np.array(self.CAM2IMG)
        self.camInfo = CameraInfoMSG()
        self.camInfo.width = self.CAM2IMG[0,2]*2
        self.camInfo.height = self.CAM2IMG[1,2]*2
        self.camInfo.distortion_model = "plumb_bob"
        self.camInfo.P = self.CAM2IMG.flatten()
        self.camInfo.K = self.CAM2IMG[0:3,0:3].flatten()
        self.camInfo.R = np.eye(3).flatten()
        self.camInfo.D = [0.,0.,0.,0.,0.]
        self.camInfo.header.frame_id = "/synCamGT"                              
        
        # Load IMU Cam transform
        with open(path+'meta/imu2cam.csv', 'rb') as f:
            reader = csv.reader(f)
            for row in reader:
                self.OBJ2CAM.append(row) 
        self.OBJ2CAM = np.array(self.OBJ2CAM)
        self.OBJ2CAM = xyzWXYZ_xyzXYZW(self.OBJ2CAM.astype(np.double))[0]
        self.OBJ2CAMmsg = toTransformMsg(self.OBJ2CAM)

        
        #Load KPS
        files = sorted(glob.glob(path+'features/f2d*.csv'))
        for file in files:
            f2dmsg = []
            with open(file, 'rb') as fi:
                reader = csv.reader(fi)
                f2d = []
                for row in reader:
                    f2d.append(row)              
                f2d = np.array(f2d)
                f2d = f2d.astype(np.double)  
                for f in f2d:
                    p= PointMSG()
                    p.x = f[1]
                    p.y = f[2]
                    p.z = f[0] #id
                    f2dmsg.append(p)
            self.KPS.append(f2dmsg)             
        

            
        #Load images
        files = sorted(glob.glob(path+'images/img*.png'))
        for file in files:
            self.IMAGES.append(cv2.imread(file))