3 from nav_msgs.msg
import OccupancyGrid
4 from nav_msgs.msg
import MapMetaData
5 from std_msgs.msg
import Header
6 from geometry_msgs.msg
import Point
7 from geometry_msgs.msg
import Quaternion
8 from geometry_msgs.msg
import PolygonStamped
9 from geometry_msgs.msg
import Polygon
10 from geometry_msgs.msg
import Point32
11 from visualization_msgs.msg
import Marker
12 from rose2.msg
import Edge
13 from rose2.msg
import Room
14 from rose2.msg
import Contour
15 from rose2.msg
import ExtendedLine
16 from scipy.spatial.transform
import Rotation
21 from MyGridMap
import MyGridMap
23 from matplotlib
import pyplot
as plt
31 OccupancyGrid -> np.array
32 Use this if the OccupancyGrid is in the standard form: values are 0,-1 or 100 (mode: trinary of yaml format)
35 gridMap = MyGridMap(occupancyGrid)
36 map = np.zeros((gridMap.mapHeight, int(gridMap.mapWidth)))
37 height, width = map.shape
38 for i
in range(height):
39 for j
in range(width):
40 val = gridMap.getData(j, i)
48 map = (map).astype(np.uint8)
51 OccupancyGrid -> np.array
52 Use this if the OccupancyGrid has pixel values between 0 and 255 (that corresponds to mode: raw of yaml format)
55 gridMap = MyGridMap(occupancyGrid)
56 map = np.zeros((gridMap.mapHeight, int(gridMap.mapWidth)))
57 height, width = map.shape
58 for i
in range(height):
59 for j
in range(width):
60 map[i, j] = gridMap.getData(j, i)
62 map = (map).astype(np.uint8)
67 grid = OccupancyGrid()
68 grid.header = Header()
69 grid.header.frame_id =
"map"
70 grid.info = MapMetaData()
71 grid.info.resolution = res
72 grid.info.height = imgMap.shape[0]
73 grid.info.width = imgMap.shape[1]
74 grid.data = list(imgMap.copy().ravel())
75 grid.info.origin = origin
80 extLineMsg = ExtendedLine()
81 d = array.array(
'b', (pickle.dumps(line)))
88 d = array.array(
'b', (pickle.dumps(e)))
94 d = array.array(
'b',(pickle.dumps(room)))
100 contour.vertices = np.ravel(vertices)
106 marker.header.frame_id =
"map"
107 marker.header.stamp = rospy.Time.now()
108 marker.ns =
"EDGES-%u" % 0
112 marker.pose.position = origin.position
115 marker.color.r = random.uniform(0,1)
116 marker.color.g = random.uniform(0,1)
117 marker.color.b = random.uniform(0,1)
124 marker.points.append(p1)
125 marker.points.append(p2)
130 marker.header.frame_id =
"map"
131 marker.header.stamp = rospy.Time.now()
136 marker.pose.position = origin.position
147 marker.points.append(p1)
148 marker.points.append(p2)
151 origin_x = origin.position.x
152 origin_y = origin.position.y
154 points_x, points_y = room.exterior.coords.xy
155 for i
in range(len(points_x)):
157 p.x = points_x[i]*res + origin_x
158 p.y = points_y[i]*res + origin_y
161 polygon.points = points
162 polygonStamped = PolygonStamped()
163 polygonStamped.polygon = polygon
164 polygonStamped.header.frame_id =
"map"
165 polygonStamped.header.stamp = rospy.Time.now()
166 return polygonStamped
170 for i
in range(0, len(main_directions), 2):
171 directions.append((main_directions[i], main_directions[i + 1]))
176 marker.header.frame_id =
"map"
177 marker.header.stamp = rospy.Time.now()
178 marker.ns =
"DIR-%u" % i
184 rot = Rotation.from_euler(
'xyz', [d[0], 0, d[1]])
185 rot_quat = rot.as_quat()
186 marker.pose.orientation = Quaternion(rot_quat[0], rot_quat[1], rot_quat[2], rot_quat[3])
195 markers.append(marker)