38 import roslib; roslib.load_manifest(
'rcprg_ros_utils')
46 from rcprg_ros_utils
import marker_publisher
50 u_steps = max(1, int(math.pi*R/step))
51 for u
in np.linspace(-math.pi/2, math.pi/2, u_steps):
55 v_steps = max(1, int(L/step))
57 for v
in np.linspace(-math.pi, math.pi, v_steps):
60 points.append(PyKDL.Vector(x,y,z))
64 edges = [(30, 26), (20, 25), (28, 41), (0, 1), (18, 19), (28, 26), (2, 5), (37, 35),
65 (6, 7), (20, 35), (11, 22), (27, 28), (7, 19), (17, 23), (40, 38), (35, 36),
66 (17, 36), (37, 41), (29, 30), (8, 21), (6, 0), (19, 24), (11, 21), (27, 40),
67 (8, 38), (33, 34), (34, 41), (3, 1), (24, 36), (15, 16), (6, 16), (39, 35),
68 (41, 40), (14, 33), (36, 34), (23, 12), (10, 3), (14, 22), (21, 27), (12, 13),
69 (34, 32), (17, 24), (1, 10), (33, 29), (37, 34), (8, 25), (16, 17), (11, 9),
70 (24, 15), (11, 26), (16, 23), (36, 32), (8, 3), (38, 39), (34, 31), (27, 38),
71 (14, 12), (23, 33), (13, 9), (32, 23), (22, 30), (13, 22), (4, 8), (36, 37),
72 (5, 13), (39, 37), (30, 31), (17, 15), (32, 33), (29, 22), (2, 13), (5, 0),
73 (14, 23), (35, 24), (6, 19), (31, 29), (11, 30), (25, 18), (1, 4), (38, 25),
74 (14, 29), (7, 0), (5, 16), (20, 24), (39, 40), (22, 9), (28, 40), (18, 7),
75 (6, 15), (33, 31), (4, 7), (10, 11), (5, 6), (4, 18), (19, 15), (10, 21),
76 (40, 37), (1, 2), (2, 9), (5, 12), (25, 39), (30, 28), (20, 39), (20, 18),
77 (26, 21), (17, 32), (2, 10), (9, 10), (4, 25), (19, 20), (16, 12), (31, 28),
78 (1, 7), (26, 27), (31, 41), (13, 14), (21, 3), (2, 0), (4, 3), (8, 27)]
80 points = [(0.0, 0.0, -0.5), (0.212661, -0.154506, -0.425327), (-0.081228, -0.249998, -0.425327),
81 (0.361804, -0.262863, -0.22361), (0.425324, 0.0, -0.262868), (-0.262865, 0.0, -0.425326),
82 (-0.081228, 0.249998, -0.425327), (0.212661, 0.154506, -0.425327), (0.475529, -0.154506, 0.0),
83 (-0.138194, -0.425325, -0.22361), (0.131434, -0.404506, -0.262869), (0.0, -0.5, 0.0),
84 (-0.447213, 0.0, -0.223608), (-0.344095, -0.249998, -0.262868), (-0.475529, -0.154506, 0.0),
85 (-0.138194, 0.425325, -0.22361), (-0.344095, 0.249998, -0.262868), (-0.293893, 0.404508, 0.0),
86 (0.361804, 0.262863, -0.22361), (0.131434, 0.404506, -0.262869), (0.293893, 0.404508, 0.0),
87 (0.293893, -0.404508, 0.0), (-0.293893, -0.404508, 0.0), (-0.475529, 0.154506, 0.0),
88 (0.0, 0.5, 0.0), (0.475529, 0.154506, 0.0), (0.138194, -0.425325, 0.22361),
89 (0.344095, -0.249998, 0.262868), (0.081228, -0.249998, 0.425327), (-0.361804, -0.262863, 0.22361),
90 (-0.131434, -0.404506, 0.262869), (-0.212661, -0.154506, 0.425327), (-0.361804, 0.262863, 0.22361),
91 (-0.425324, 0.0, 0.262868), (-0.212661, 0.154506, 0.425327), (0.138194, 0.425325, 0.22361),
92 (-0.131434, 0.404506, 0.262869), (0.081228, 0.249998, 0.425327), (0.447213, 0.0, 0.223608),
93 (0.344095, 0.249998, 0.262868), (0.262865, 0.0, 0.425326), (0.0, 0.0, 0.5)]
99 points_kdl.append(R*PyKDL.Vector(pt0[0], pt0[1], pt0[2]))
100 points_kdl.append(R*PyKDL.Vector(pt1[0], pt1[1], pt1[2]))
103 if __name__ ==
"__main__":
104 rospy.init_node(
'reachability_range', anonymous=
False)
106 visualization_mode = rospy.get_param(
'~visualization_mode',
'icosphere')
107 assert visualization_mode ==
'solid_sphere' or visualization_mode ==
'uvsphere' or visualization_mode ==
'icosphere' 109 inner_size = float(rospy.get_param(
'~inner_size'))
110 outer_size = float(rospy.get_param(
'~outer_size'))
111 marker_namespace = rospy.get_param(
'~marker_namespace')
112 frame_id = rospy.get_param(
'~frame_id')
113 cr = rospy.get_param(
'~color_r')
114 cg = rospy.get_param(
'~color_g')
115 cb = rospy.get_param(
'~color_b')
119 pub = marker_publisher.MarkerPublisher(
'/reachability_range')
121 if visualization_mode ==
'solid_sphere' or visualization_mode ==
'uvsphere':
124 elif visualization_mode ==
'icosphere':
128 while not rospy.is_shutdown():
130 if visualization_mode ==
'solid_sphere':
132 m_id = pub.publishSinglePointMarker(PyKDL.Vector(), m_id, r=cr*0.7, g=cg*0.7, b=cb*0.7, a=0.5, namespace=marker_namespace,
133 frame_id=frame_id, m_type=Marker.SPHERE, scale=Vector3(inner_size, inner_size, inner_size), T=
None)
134 m_id = pub.publishSinglePointMarker(PyKDL.Vector(), m_id, r=cr, g=cg, b=cb, a=0.5, namespace=marker_namespace,
135 frame_id=frame_id, m_type=Marker.SPHERE, scale=Vector3(outer_size, outer_size, outer_size), T=
None)
136 elif visualization_mode ==
'uvsphere':
138 m_id = pub.publishLineStripMarker(inner_pts, m_id, r=cr*0.7, g=cg*0.7, b=cb*0.7, a=1, namespace=marker_namespace, frame_id=frame_id, width=0.01, T=
None)
139 m_id = pub.publishLineStripMarker(outer_pts, m_id, r=cr, g=cg, b=cb, a=1, namespace=marker_namespace, frame_id=frame_id, width=0.01, T=
None)
140 elif visualization_mode ==
'icosphere':
142 m_id = pub.publishLineListMarker(inner_pts, m_id, r=cr*0.7, g=cg*0.7, b=cb*0.7, a=1, namespace=marker_namespace, frame_id=frame_id, width=0.01, T=
None)
143 m_id = pub.publishLineListMarker(outer_pts, m_id, r=cr, g=cg, b=cb, a=1, namespace=marker_namespace, frame_id=frame_id, width=0.01, T=
None)
def spherePoints(R, step)