diff --git a/jsk_fetch_robot/fetcheus/fetch-interface.l b/jsk_fetch_robot/fetcheus/fetch-interface.l index 9c8a9131b4..ad91e5cf4a 100644 --- a/jsk_fetch_robot/fetcheus/fetch-interface.l +++ b/jsk_fetch_robot/fetcheus/fetch-interface.l @@ -32,7 +32,10 @@ )) (:state (&rest args) ":state calls with :wait-until-update by default, since Fetch publishes /joint_states from body and gripper at almost same frequency" - (send-super* :state (if (member :wait-until-update args) args (append args (list :wait-until-update t))))) + (send-super* :state + (if (or (eq (car args) :worldcoords) + (member :wait-until-update args)) + args (append args (list :wait-until-update t))))) (:check-continuous-joint-move-over-180 ;; can be removed if http//github.com/jsk-ros-pkg/jsk_pr2eus/pull/322 merged (diff-av) (let ((i 0) add-new-trajectory-point) @@ -256,12 +259,13 @@ Example: (send self :gripper :position) => 0.00" (forward-p (>= x 0)) (d0 (if forward-p (atan2 y x) (atan2 (- y) (- x)))) (d1 (distance (float-vector 0 0) (float-vector x y))) - (d2 (shortest-angle (- d d0) 0)) + (d2 (shortest-angle (- (deg2rad d) d0) 0)) org-cds cur-cds diffrot diffpos err) (send self :remprop :go-pos-unsafe-no-wait-goal) ;; yaw-x-yaw approach - (ros::ros-info "go-pos-unsafe: (yaw, x, yaw) = (~A ~A ~A)" d0 d1 d2) + (ros::ros-info "go-pos-unsafe: (yaw, x, yaw) = (~A ~A ~A)" + d0 (* (if forward-p 1.0 -1.0) d1) d2) ;; yaw (send self :spin-once) @@ -329,6 +333,10 @@ Example: (send self :gripper :position) => 0.00" d-vel (* (if (>= d-vel 0) 1.0 -1.0) min-rotation-abs-vel)))) (ros::sleep)) t))) + (:move-to-wait (&rest args) + (send-super* :move-to-wait + (if (member :correction args) args + (append args (list :correction nil))))) ) ;; fetch-interface (simple base actions) (defun fetch-init (&optional (create-viewer)) diff --git a/jsk_fetch_robot/jsk_fetch.rosinstall b/jsk_fetch_robot/jsk_fetch.rosinstall index 11dce96979..746d7d833c 100644 --- a/jsk_fetch_robot/jsk_fetch.rosinstall +++ b/jsk_fetch_robot/jsk_fetch.rosinstall @@ -6,11 +6,12 @@ local-name: PR2/app_manager uri: https://github.com/PR2/app_manager.git version: 1.1.0 -# For fetch to use twitter +# serious bug in 1.12.21 +# need to build from source because of nodelet version - git: - local-name: furushchev/image_pipeline - uri: https://github.com/furushchev/image_pipeline.git - version: develop + local-name: ros-perception/image_pipeline + uri: https://github.com/ros-perception/image_pipeline.git + version: 1.12.23 # To send lifelog data to musca - git: local-name: strands-project/mongodb_store @@ -23,46 +24,66 @@ uri: https://github.com/jsk-ros-pkg/jsk_robot.git version: master # to pass build of jsk_robot -# remove after 2.2.10 is released +# to build with nodelet 1.9.10, we need https://github.com/jsk-ros-pkg/jsk_common/pull/1647 +# remove after 2.2.11 is released - git: local-name: jsk-ros-pkg/jsk_common - uri: https://github.com/jsk-ros-pkg/jsk_common.git - version: 2.2.10 -# to avoid volume 0 problem + uri: https://github.com/knorth55/jsk_common.git + version: 80be0920e2518a4fd49b7da1e96e69802cc49312 +# use latest version to avoid several problems # remove after 0.3.14 (https://github.com/jsk-ros-pkg/jsk_pr2eus/commit/41183fe3401d742bbec0edd13b67cb909a6968bd) is released - git: local-name: jsk-ros-pkg/jsk_pr2eus uri: https://github.com/jsk-ros-pkg/jsk_pr2eus.git - version: 0.3.14 + version: 4102b8d3a542b9e93b4115065b2bea2494092abc # to use fetch's dock position for several demos # remove after https://github.com/jsk-ros-pkg/jsk_demos/commit/810acc7cc24a4792d455a7e9e8c8c50e5e07e21b (0.0.5) is released # Now, we set CATKIN_IGNORE to all packages except jsk_maps because we need only jsk_maps in fetch PC - git: local-name: jsk-ros-pkg/jsk_demos uri: https://github.com/jsk-ros-pkg/jsk_demos.git - version: 810acc7 -# jsk_topic_tools requires nodelet gte 1.9.11 -# remove after 1.9.11 is released by apt + version: 1f81e61c890e0642251ce0ec12952eb0828aadca +# need to build from source because of nodelet version - git: - local-name: ros/nodelet_core - uri: https://github.com/ros/nodelet_core.git - version: 1.9.11 -# 0.3.x is needed to set volume in pr2eus/speak.l -# remove after 0.3.x is released by apt + local-name: jsk-ros-pkg/jsk_recognition + uri: https://github.com/jsk-ros-pkg/jsk_recognition.git + version: ccdb666ed109e565e89bd35ef7dfa14999550da0 +# 0.3.4 is needed to set volume in pr2eus/speak.l +# remove after 0.3.4 is released by apt - git: local-name: ros-drivers/audio_common uri: https://github.com/ros-drivers/audio_common.git - version: 0.3.3 + version: 0.3.4 # to install nodelet_plugins.xml # remove after 1.3.10 is released by apt - git: local-name: ros-perception/slam_gmapping uri: https://github.com/ros-perception/slam_gmapping.git version: 1.3.10 -# indigo is already EOL and 2.1.13 is never released. +# indigo is already EOL and 2.1.15 is never released. # set the same version as https://github.com/jsk-ros-pkg/jsk_robot/blob/master/.travis.rosinstall.indigo#L7-L11 -# change to 2.1.14 when it is released. +# change to 2.1.15 when it is released. - git: local-name: jsk-ros-pkg/jsk_3rdparty uri: https://github.com/jsk-ros-pkg/jsk_3rdparty.git - version: 82e897dcbdcd6aa0cbd126fa122d4dbdc9df67c9 + version: ffbd7b0592d7dd2f830f185636a1dd1695d8cb44 +# indigo is already EOL and fetch_ros is never released. +- git: + local-name: fetchrobotics/fetch_ros + uri: https://github.com/fetchrobotics/fetch_ros.git + version: c152f9349b26c60d3dde1b4973073bfa187920fe +# indigo is already EOL and visualization_msgs is never released +- tar: + local-name: ros/common_msgs/visualization_msgs + uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/visualization_msgs/1.12.7-0.tar.gz + version: common_msgs-release-release-kinetic-visualization_msgs-1.12.7-0 +# catkin_virtualenv is required in jsk_3rdparty +- git: + local-name: locusrobotics/catkin_virtualenv + uri: https://github.com/locusrobotics/catkin_virtualenv.git + version: 0.5.0 +# use latest robot_calibration +- git: + local-name: mikeferguson/robot_calibration + uri: https://github.com/mikeferguson/robot_calibration.git + version: 0.5.5 diff --git a/jsk_fetch_robot/jsk_fetch_accessories/CMakeLists.txt b/jsk_fetch_robot/jsk_fetch_accessories/CMakeLists.txt new file mode 100644 index 0000000000..d42c91edc3 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_accessories/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 2.8.3) +project(jsk_fetch_accessories) +find_package(catkin) +catkin_package() diff --git a/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1.step b/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1.step new file mode 100644 index 0000000000..2cd622a015 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1.step @@ -0,0 +1,2911 @@ +ISO-10303-21; +HEADER; +/* Generated by software containing ST-Developer + * from STEP Tools, Inc. (www.steptools.com) + */ + +FILE_DESCRIPTION( +/* description */ (''), +/* implementation_level */ '2;1'); + +FILE_NAME( +/* name */ 'D:/sktometometo/Desktop/FetchBaseCameraMount Mk.1 v25.step', + +/* time_stamp */ '2020-02-16T21:59:16+09:00', +/* author */ (''), +/* organization */ (''), +/* preprocessor_version */ 'ST-DEVELOPER v18', +/* originating_system */ 'Autodesk Translation Framework v8.12.0.6', +/* authorisation */ ''); + +FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }')); +ENDSEC; + +DATA; +#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#17,#18), +#2701); +#11=ITEM_DEFINED_TRANSFORMATION($,$,#1399,#1533); +#12=( +REPRESENTATION_RELATIONSHIP($,$,#2712,#2711) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#11) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#13=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#12,#2710); +#14=NEXT_ASSEMBLY_USAGE_OCCURRENCE('\X2\30B330F330DD30FC30CD30F330C8\X0\1 +:1','\X2\30B330F330DD30FC30CD30F330C8\X0\1:1', +'\X2\30B330F330DD30FC30CD30F330C8\X0\1:1',#2714,#2715, +'\X2\30B330F330DD30FC30CD30F330C8\X0\1:1'); +#15=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#2712,#16); +#16=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#19,#20),#2700); +#17=STYLED_ITEM('',(#2725),#19); +#18=STYLED_ITEM('',(#2725),#20); +#19=MANIFOLD_SOLID_BREP('main',#1384); +#20=MANIFOLD_SOLID_BREP('collision',#1385); +#21=ELLIPSE('',#1418,11.0374401223384,10.); +#22=ELLIPSE('',#1421,11.0374401223384,10.); +#23=ELLIPSE('',#1431,11.5325621757137,5.); +#24=ELLIPSE('',#1432,11.9999995973626,6.); +#25=ELLIPSE('',#1433,6.92820296153791,6.); +#26=ELLIPSE('',#1434,6.08276222420889,5.); +#27=ELLIPSE('',#1445,11.5325621757137,5.); +#28=ELLIPSE('',#1446,11.5325621757137,5.); +#29=ELLIPSE('',#1447,11.9999995973626,6.); +#30=ELLIPSE('',#1457,14.4335836853053,12.49984999932); +#31=ELLIPSE('',#1458,14.4335836853053,12.49984999932); +#32=ELLIPSE('',#1459,1.15470055129385,1.); +#33=ELLIPSE('',#1465,1.22592382851412,1.); +#34=ELLIPSE('',#1467,15.3238639670186,12.49984999932); +#35=ELLIPSE('',#1470,15.3238639670186,12.49984999932); +#36=ELLIPSE('',#1521,11.0374401223384,10.); +#37=ELLIPSE('',#1522,11.0374401223384,10.); +#38=FACE_BOUND('',#180,.T.); +#39=FACE_BOUND('',#192,.T.); +#40=FACE_BOUND('',#193,.T.); +#41=FACE_BOUND('',#197,.T.); +#42=FACE_BOUND('',#198,.T.); +#43=FACE_BOUND('',#200,.T.); +#44=FACE_BOUND('',#203,.T.); +#45=FACE_BOUND('',#204,.T.); +#46=FACE_BOUND('',#228,.T.); +#47=FACE_BOUND('',#229,.T.); +#48=FACE_BOUND('',#239,.T.); +#49=FACE_BOUND('',#240,.T.); +#50=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2022,#2023,#2024,#2025,#2026), + .UNSPECIFIED.,.F.,.F.,(4,1,4),(-0.264688092666439,-0.113437753999902,0.), + .UNSPECIFIED.); +#51=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2028,#2029,#2030,#2031,#2032), + .UNSPECIFIED.,.F.,.F.,(4,1,4),(0.,0.113437753999902,0.132423931376255), + .UNSPECIFIED.); +#52=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2033,#2034,#2035,#2036), + .UNSPECIFIED.,.F.,.F.,(4,4),(0.132423931376255,0.264688092666439), + .UNSPECIFIED.); +#53=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2193,#2194,#2195,#2196,#2197,#2198, +#2199,#2200,#2201,#2202,#2203,#2204,#2205,#2206),.UNSPECIFIED.,.F.,.F., +(4,2,2,2,2,2,4),(-0.183134248083313,-0.182578878379645,-0.141233989713748, +-0.100718696466866,-0.0591943731065641,-0.028026122891621,0.), + .UNSPECIFIED.); +#54=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2208,#2209,#2210,#2211), + .UNSPECIFIED.,.F.,.F.,(4,4),(-0.00228103324451052,0.),.UNSPECIFIED.); +#55=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2215,#2216,#2217,#2218), + .UNSPECIFIED.,.F.,.F.,(4,4),(-0.160362830069378,-0.158082376352823), + .UNSPECIFIED.); +#56=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2219,#2220,#2221,#2222,#2223,#2224, +#2225,#2226,#2227,#2228,#2229,#2230,#2231,#2232),.UNSPECIFIED.,.F.,.F., +(4,2,2,2,2,2,4),(-0.183134354079448,-0.182579200692327,-0.140954418852723, +-0.0999281607110577,-0.0588313945245589,-0.0278777701070779,0.), + .UNSPECIFIED.); +#57=B_SPLINE_CURVE_WITH_KNOTS('',3,(#2459,#2460,#2461,#2462,#2463,#2464, +#2465),.UNSPECIFIED.,.F.,.F.,(4,1,1,1,4),(-0.940693456991315,-0.785714285714286, +-0.571428571428571,-0.285714285714286,0.),.UNSPECIFIED.); +#58=B_SPLINE_SURFACE_WITH_KNOTS('',3,3,((#1994,#1995,#1996,#1997,#1998), +(#1999,#2000,#2001,#2002,#2003),(#2004,#2005,#2006,#2007,#2008),(#2009, +#2010,#2011,#2012,#2013),(#2014,#2015,#2016,#2017,#2018)),.UNSPECIFIED., + .F.,.F.,.F.,(4,1,4),(4,1,4),(0.,0.5,1.),(0.,0.113437753999902,0.264688092666439), + .UNSPECIFIED.); +#59=B_SPLINE_SURFACE_WITH_KNOTS('',3,3,((#2091,#2092,#2093,#2094,#2095, +#2096,#2097,#2098,#2099,#2100,#2101,#2102,#2103,#2104),(#2105,#2106,#2107, +#2108,#2109,#2110,#2111,#2112,#2113,#2114,#2115,#2116,#2117,#2118),(#2119, +#2120,#2121,#2122,#2123,#2124,#2125,#2126,#2127,#2128,#2129,#2130,#2131, +#2132),(#2133,#2134,#2135,#2136,#2137,#2138,#2139,#2140,#2141,#2142,#2143, +#2144,#2145,#2146),(#2147,#2148,#2149,#2150,#2151,#2152,#2153,#2154,#2155, +#2156,#2157,#2158,#2159,#2160),(#2161,#2162,#2163,#2164,#2165,#2166,#2167, +#2168,#2169,#2170,#2171,#2172,#2173,#2174),(#2175,#2176,#2177,#2178,#2179, +#2180,#2181,#2182,#2183,#2184,#2185,#2186,#2187,#2188)),.UNSPECIFIED.,.F., + .F.,.F.,(4,1,1,1,4),(4,1,1,1,1,1,1,1,1,1,1,4),(0.,0.285714285714286,0.571428571428571, +0.785714285714286,1.),(-1.62246713501682,-1.15890509644059,-0.695343057864356, +-0.231781019288124,-7.7715611723761E-15,0.231781019288108,0.289726274110138, +0.347671528932167,0.463562038576225,0.695343057864341,1.15890509644057, +1.62246713501681),.UNSPECIFIED.); +#60=B_SPLINE_SURFACE_WITH_KNOTS('',3,3,((#2233,#2234,#2235,#2236,#2237, +#2238,#2239,#2240,#2241,#2242),(#2243,#2244,#2245,#2246,#2247,#2248,#2249, +#2250,#2251,#2252),(#2253,#2254,#2255,#2256,#2257,#2258,#2259,#2260,#2261, +#2262),(#2263,#2264,#2265,#2266,#2267,#2268,#2269,#2270,#2271,#2272),(#2273, +#2274,#2275,#2276,#2277,#2278,#2279,#2280,#2281,#2282),(#2283,#2284,#2285, +#2286,#2287,#2288,#2289,#2290,#2291,#2292)),.UNSPECIFIED.,.F.,.F.,.F.,(4, +1,1,4),(4,1,1,1,1,1,1,4),(0.,0.285714285714286,0.571428571428571,1.),(-1.62246713501685, +-1.15890509644061,-0.695343057864377,-0.231781019288141,0.231781019288096, +0.695343057864332,1.15890509644057,1.6224671350168),.UNSPECIFIED.); +#61=B_SPLINE_SURFACE_WITH_KNOTS('',3,3,((#2325,#2326,#2327,#2328,#2329, +#2330,#2331,#2332,#2333,#2334,#2335,#2336,#2337,#2338,#2339,#2340,#2341, +#2342,#2343),(#2344,#2345,#2346,#2347,#2348,#2349,#2350,#2351,#2352,#2353, +#2354,#2355,#2356,#2357,#2358,#2359,#2360,#2361,#2362),(#2363,#2364,#2365, +#2366,#2367,#2368,#2369,#2370,#2371,#2372,#2373,#2374,#2375,#2376,#2377, +#2378,#2379,#2380,#2381),(#2382,#2383,#2384,#2385,#2386,#2387,#2388,#2389, +#2390,#2391,#2392,#2393,#2394,#2395,#2396,#2397,#2398,#2399,#2400),(#2401, +#2402,#2403,#2404,#2405,#2406,#2407,#2408,#2409,#2410,#2411,#2412,#2413, +#2414,#2415,#2416,#2417,#2418,#2419),(#2420,#2421,#2422,#2423,#2424,#2425, +#2426,#2427,#2428,#2429,#2430,#2431,#2432,#2433,#2434,#2435,#2436,#2437, +#2438),(#2439,#2440,#2441,#2442,#2443,#2444,#2445,#2446,#2447,#2448,#2449, +#2450,#2451,#2452,#2453,#2454,#2455,#2456,#2457)),.UNSPECIFIED.,.F.,.T., + .F.,(4,1,1,1,4),(4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4),(0.,0.285714285714286, +0.571428571428571,0.785714285714286,1.),(-3.14159265358979,-2.91719317833338, +-2.69279370307697,-2.24399475256414,-1.79519580205131,-1.34639685153848, +-1.0471975511966,-0.448798950512828,-0.149599650170943,0.448798950512828, +0.897597901025655,1.34639685153848,1.79519580205131,2.24399475256414,2.69279370307697, +2.91719317833338,3.14159265358979),.UNSPECIFIED.); +#62=PLANE('',#1403); +#63=PLANE('',#1405); +#64=PLANE('',#1412); +#65=PLANE('',#1415); +#66=PLANE('',#1422); +#67=PLANE('',#1427); +#68=PLANE('',#1435); +#69=PLANE('',#1448); +#70=PLANE('',#1451); +#71=PLANE('',#1452); +#72=PLANE('',#1453); +#73=PLANE('',#1456); +#74=PLANE('',#1460); +#75=PLANE('',#1463); +#76=PLANE('',#1468); +#77=PLANE('',#1480); +#78=PLANE('',#1482); +#79=PLANE('',#1489); +#80=PLANE('',#1490); +#81=PLANE('',#1495); +#82=PLANE('',#1496); +#83=PLANE('',#1500); +#84=PLANE('',#1502); +#85=PLANE('',#1503); +#86=PLANE('',#1504); +#87=PLANE('',#1507); +#88=PLANE('',#1508); +#89=PLANE('',#1509); +#90=PLANE('',#1510); +#91=PLANE('',#1511); +#92=PLANE('',#1512); +#93=PLANE('',#1514); +#94=PLANE('',#1519); +#95=PLANE('',#1523); +#96=PLANE('',#1526); +#97=PLANE('',#1527); +#98=PLANE('',#1530); +#99=PLANE('',#1531); +#100=PLANE('',#1532); +#101=FACE_OUTER_BOUND('',#173,.T.); +#102=FACE_OUTER_BOUND('',#174,.T.); +#103=FACE_OUTER_BOUND('',#175,.T.); +#104=FACE_OUTER_BOUND('',#176,.T.); +#105=FACE_OUTER_BOUND('',#177,.T.); +#106=FACE_OUTER_BOUND('',#178,.T.); +#107=FACE_OUTER_BOUND('',#179,.T.); +#108=FACE_OUTER_BOUND('',#181,.T.); +#109=FACE_OUTER_BOUND('',#182,.T.); +#110=FACE_OUTER_BOUND('',#183,.T.); +#111=FACE_OUTER_BOUND('',#184,.T.); +#112=FACE_OUTER_BOUND('',#185,.T.); +#113=FACE_OUTER_BOUND('',#186,.T.); +#114=FACE_OUTER_BOUND('',#187,.T.); +#115=FACE_OUTER_BOUND('',#188,.T.); +#116=FACE_OUTER_BOUND('',#189,.T.); +#117=FACE_OUTER_BOUND('',#190,.T.); +#118=FACE_OUTER_BOUND('',#191,.T.); +#119=FACE_OUTER_BOUND('',#194,.T.); +#120=FACE_OUTER_BOUND('',#195,.T.); +#121=FACE_OUTER_BOUND('',#196,.T.); +#122=FACE_OUTER_BOUND('',#199,.T.); +#123=FACE_OUTER_BOUND('',#201,.T.); +#124=FACE_OUTER_BOUND('',#202,.T.); +#125=FACE_OUTER_BOUND('',#205,.T.); +#126=FACE_OUTER_BOUND('',#206,.T.); +#127=FACE_OUTER_BOUND('',#207,.T.); +#128=FACE_OUTER_BOUND('',#208,.T.); +#129=FACE_OUTER_BOUND('',#209,.T.); +#130=FACE_OUTER_BOUND('',#210,.T.); +#131=FACE_OUTER_BOUND('',#211,.T.); +#132=FACE_OUTER_BOUND('',#212,.T.); +#133=FACE_OUTER_BOUND('',#213,.T.); +#134=FACE_OUTER_BOUND('',#214,.T.); +#135=FACE_OUTER_BOUND('',#215,.T.); +#136=FACE_OUTER_BOUND('',#216,.T.); +#137=FACE_OUTER_BOUND('',#217,.T.); +#138=FACE_OUTER_BOUND('',#218,.T.); +#139=FACE_OUTER_BOUND('',#219,.T.); +#140=FACE_OUTER_BOUND('',#220,.T.); +#141=FACE_OUTER_BOUND('',#221,.T.); +#142=FACE_OUTER_BOUND('',#222,.T.); +#143=FACE_OUTER_BOUND('',#223,.T.); +#144=FACE_OUTER_BOUND('',#224,.T.); +#145=FACE_OUTER_BOUND('',#225,.T.); +#146=FACE_OUTER_BOUND('',#226,.T.); +#147=FACE_OUTER_BOUND('',#227,.T.); +#148=FACE_OUTER_BOUND('',#230,.T.); +#149=FACE_OUTER_BOUND('',#231,.T.); +#150=FACE_OUTER_BOUND('',#232,.T.); +#151=FACE_OUTER_BOUND('',#233,.T.); +#152=FACE_OUTER_BOUND('',#234,.T.); +#153=FACE_OUTER_BOUND('',#235,.T.); +#154=FACE_OUTER_BOUND('',#236,.T.); +#155=FACE_OUTER_BOUND('',#237,.T.); +#156=FACE_OUTER_BOUND('',#238,.T.); +#157=FACE_OUTER_BOUND('',#241,.T.); +#158=FACE_OUTER_BOUND('',#242,.T.); +#159=FACE_OUTER_BOUND('',#243,.T.); +#160=FACE_OUTER_BOUND('',#244,.T.); +#161=FACE_OUTER_BOUND('',#245,.T.); +#162=FACE_OUTER_BOUND('',#246,.T.); +#163=FACE_OUTER_BOUND('',#247,.T.); +#164=FACE_OUTER_BOUND('',#248,.T.); +#165=FACE_OUTER_BOUND('',#249,.T.); +#166=FACE_OUTER_BOUND('',#250,.T.); +#167=FACE_OUTER_BOUND('',#251,.T.); +#168=FACE_OUTER_BOUND('',#252,.T.); +#169=FACE_OUTER_BOUND('',#253,.T.); +#170=FACE_OUTER_BOUND('',#254,.T.); +#171=FACE_OUTER_BOUND('',#255,.T.); +#172=FACE_OUTER_BOUND('',#256,.T.); +#173=EDGE_LOOP('',(#885,#886,#887,#888)); +#174=EDGE_LOOP('',(#889,#890,#891,#892,#893,#894,#895,#896,#897,#898,#899, +#900,#901,#902,#903,#904)); +#175=EDGE_LOOP('',(#905,#906,#907,#908,#909,#910,#911,#912)); +#176=EDGE_LOOP('',(#913,#914,#915,#916)); +#177=EDGE_LOOP('',(#917,#918,#919,#920,#921)); +#178=EDGE_LOOP('',(#922,#923,#924,#925)); +#179=EDGE_LOOP('',(#926,#927,#928,#929,#930,#931,#932,#933,#934,#935)); +#180=EDGE_LOOP('',(#936)); +#181=EDGE_LOOP('',(#937,#938,#939,#940,#941,#942)); +#182=EDGE_LOOP('',(#943,#944,#945,#946)); +#183=EDGE_LOOP('',(#947,#948,#949,#950)); +#184=EDGE_LOOP('',(#951,#952,#953,#954,#955)); +#185=EDGE_LOOP('',(#956,#957,#958,#959)); +#186=EDGE_LOOP('',(#960,#961,#962,#963)); +#187=EDGE_LOOP('',(#964,#965,#966,#967,#968)); +#188=EDGE_LOOP('',(#969,#970,#971,#972)); +#189=EDGE_LOOP('',(#973,#974,#975,#976,#977,#978)); +#190=EDGE_LOOP('',(#979,#980,#981,#982)); +#191=EDGE_LOOP('',(#983,#984,#985,#986,#987,#988,#989,#990,#991,#992,#993, +#994)); +#192=EDGE_LOOP('',(#995)); +#193=EDGE_LOOP('',(#996)); +#194=EDGE_LOOP('',(#997,#998,#999,#1000,#1001,#1002)); +#195=EDGE_LOOP('',(#1003,#1004,#1005,#1006,#1007,#1008,#1009,#1010)); +#196=EDGE_LOOP('',(#1011,#1012,#1013,#1014,#1015,#1016)); +#197=EDGE_LOOP('',(#1017)); +#198=EDGE_LOOP('',(#1018)); +#199=EDGE_LOOP('',(#1019)); +#200=EDGE_LOOP('',(#1020)); +#201=EDGE_LOOP('',(#1021,#1022,#1023,#1024,#1025,#1026)); +#202=EDGE_LOOP('',(#1027,#1028,#1029,#1030)); +#203=EDGE_LOOP('',(#1031)); +#204=EDGE_LOOP('',(#1032)); +#205=EDGE_LOOP('',(#1033,#1034,#1035,#1036,#1037,#1038,#1039,#1040,#1041)); +#206=EDGE_LOOP('',(#1042,#1043,#1044,#1045)); +#207=EDGE_LOOP('',(#1046,#1047,#1048,#1049)); +#208=EDGE_LOOP('',(#1050,#1051,#1052,#1053)); +#209=EDGE_LOOP('',(#1054,#1055,#1056,#1057,#1058,#1059,#1060,#1061)); +#210=EDGE_LOOP('',(#1062,#1063,#1064,#1065)); +#211=EDGE_LOOP('',(#1066,#1067,#1068,#1069)); +#212=EDGE_LOOP('',(#1070,#1071,#1072,#1073)); +#213=EDGE_LOOP('',(#1074,#1075,#1076,#1077,#1078)); +#214=EDGE_LOOP('',(#1079,#1080,#1081,#1082)); +#215=EDGE_LOOP('',(#1083,#1084,#1085,#1086)); +#216=EDGE_LOOP('',(#1087,#1088,#1089,#1090)); +#217=EDGE_LOOP('',(#1091,#1092,#1093,#1094)); +#218=EDGE_LOOP('',(#1095,#1096,#1097,#1098)); +#219=EDGE_LOOP('',(#1099,#1100,#1101,#1102,#1103)); +#220=EDGE_LOOP('',(#1104,#1105,#1106,#1107)); +#221=EDGE_LOOP('',(#1108,#1109,#1110,#1111)); +#222=EDGE_LOOP('',(#1112,#1113,#1114,#1115)); +#223=EDGE_LOOP('',(#1116,#1117,#1118,#1119)); +#224=EDGE_LOOP('',(#1120,#1121,#1122,#1123,#1124,#1125,#1126,#1127,#1128, +#1129,#1130)); +#225=EDGE_LOOP('',(#1131,#1132,#1133,#1134)); +#226=EDGE_LOOP('',(#1135,#1136,#1137,#1138)); +#227=EDGE_LOOP('',(#1139,#1140,#1141,#1142,#1143,#1144,#1145,#1146,#1147, +#1148,#1149,#1150)); +#228=EDGE_LOOP('',(#1151)); +#229=EDGE_LOOP('',(#1152)); +#230=EDGE_LOOP('',(#1153,#1154,#1155,#1156)); +#231=EDGE_LOOP('',(#1157,#1158,#1159,#1160)); +#232=EDGE_LOOP('',(#1161,#1162,#1163,#1164)); +#233=EDGE_LOOP('',(#1165,#1166,#1167,#1168)); +#234=EDGE_LOOP('',(#1169,#1170,#1171,#1172,#1173,#1174,#1175,#1176,#1177, +#1178,#1179)); +#235=EDGE_LOOP('',(#1180,#1181,#1182,#1183)); +#236=EDGE_LOOP('',(#1184,#1185,#1186,#1187)); +#237=EDGE_LOOP('',(#1188,#1189,#1190,#1191)); +#238=EDGE_LOOP('',(#1192,#1193,#1194,#1195,#1196,#1197)); +#239=EDGE_LOOP('',(#1198)); +#240=EDGE_LOOP('',(#1199)); +#241=EDGE_LOOP('',(#1200,#1201,#1202,#1203,#1204,#1205,#1206,#1207,#1208)); +#242=EDGE_LOOP('',(#1209,#1210,#1211,#1212)); +#243=EDGE_LOOP('',(#1213,#1214,#1215,#1216)); +#244=EDGE_LOOP('',(#1217,#1218,#1219,#1220)); +#245=EDGE_LOOP('',(#1221,#1222,#1223,#1224,#1225,#1226,#1227,#1228,#1229)); +#246=EDGE_LOOP('',(#1230,#1231,#1232,#1233)); +#247=EDGE_LOOP('',(#1234,#1235,#1236,#1237)); +#248=EDGE_LOOP('',(#1238,#1239,#1240,#1241)); +#249=EDGE_LOOP('',(#1242,#1243,#1244,#1245,#1246)); +#250=EDGE_LOOP('',(#1247,#1248,#1249,#1250)); +#251=EDGE_LOOP('',(#1251,#1252,#1253,#1254,#1255)); +#252=EDGE_LOOP('',(#1256,#1257,#1258,#1259)); +#253=EDGE_LOOP('',(#1260,#1261,#1262,#1263)); +#254=EDGE_LOOP('',(#1264,#1265,#1266,#1267)); +#255=EDGE_LOOP('',(#1268,#1269,#1270,#1271,#1272,#1273)); +#256=EDGE_LOOP('',(#1274,#1275,#1276,#1277,#1278,#1279,#1280,#1281,#1282)); +#257=LINE('',#1939,#383); +#258=LINE('',#1942,#384); +#259=LINE('',#1945,#385); +#260=LINE('',#1947,#386); +#261=LINE('',#1949,#387); +#262=LINE('',#1951,#388); +#263=LINE('',#1953,#389); +#264=LINE('',#1955,#390); +#265=LINE('',#1957,#391); +#266=LINE('',#1959,#392); +#267=LINE('',#1961,#393); +#268=LINE('',#1963,#394); +#269=LINE('',#1965,#395); +#270=LINE('',#1967,#396); +#271=LINE('',#1969,#397); +#272=LINE('',#1972,#398); +#273=LINE('',#1975,#399); +#274=LINE('',#1977,#400); +#275=LINE('',#1979,#401); +#276=LINE('',#1981,#402); +#277=LINE('',#1983,#403); +#278=LINE('',#1984,#404); +#279=LINE('',#1990,#405); +#280=LINE('',#1993,#406); +#281=LINE('',#2041,#407); +#282=LINE('',#2042,#408); +#283=LINE('',#2045,#409); +#284=LINE('',#2047,#410); +#285=LINE('',#2049,#411); +#286=LINE('',#2053,#412); +#287=LINE('',#2055,#413); +#288=LINE('',#2056,#414); +#289=LINE('',#2061,#415); +#290=LINE('',#2062,#416); +#291=LINE('',#2071,#417); +#292=LINE('',#2072,#418); +#293=LINE('',#2075,#419); +#294=LINE('',#2079,#420); +#295=LINE('',#2083,#421); +#296=LINE('',#2084,#422); +#297=LINE('',#2089,#423); +#298=LINE('',#2297,#424); +#299=LINE('',#2301,#425); +#300=LINE('',#2306,#426); +#301=LINE('',#2308,#427); +#302=LINE('',#2313,#428); +#303=LINE('',#2322,#429); +#304=LINE('',#2468,#430); +#305=LINE('',#2469,#431); +#306=LINE('',#2476,#432); +#307=LINE('',#2485,#433); +#308=LINE('',#2487,#434); +#309=LINE('',#2491,#435); +#310=LINE('',#2496,#436); +#311=LINE('',#2497,#437); +#312=LINE('',#2499,#438); +#313=LINE('',#2501,#439); +#314=LINE('',#2503,#440); +#315=LINE('',#2505,#441); +#316=LINE('',#2510,#442); +#317=LINE('',#2511,#443); +#318=LINE('',#2514,#444); +#319=LINE('',#2517,#445); +#320=LINE('',#2521,#446); +#321=LINE('',#2523,#447); +#322=LINE('',#2525,#448); +#323=LINE('',#2529,#449); +#324=LINE('',#2533,#450); +#325=LINE('',#2539,#451); +#326=LINE('',#2542,#452); +#327=LINE('',#2544,#453); +#328=LINE('',#2546,#454); +#329=LINE('',#2549,#455); +#330=LINE('',#2555,#456); +#331=LINE('',#2558,#457); +#332=LINE('',#2563,#458); +#333=LINE('',#2566,#459); +#334=LINE('',#2567,#460); +#335=LINE('',#2570,#461); +#336=LINE('',#2574,#462); +#337=LINE('',#2578,#463); +#338=LINE('',#2580,#464); +#339=LINE('',#2581,#465); +#340=LINE('',#2584,#466); +#341=LINE('',#2588,#467); +#342=LINE('',#2589,#468); +#343=LINE('',#2592,#469); +#344=LINE('',#2596,#470); +#345=LINE('',#2599,#471); +#346=LINE('',#2600,#472); +#347=LINE('',#2602,#473); +#348=LINE('',#2605,#474); +#349=LINE('',#2607,#475); +#350=LINE('',#2608,#476); +#351=LINE('',#2613,#477); +#352=LINE('',#2615,#478); +#353=LINE('',#2617,#479); +#354=LINE('',#2622,#480); +#355=LINE('',#2624,#481); +#356=LINE('',#2626,#482); +#357=LINE('',#2627,#483); +#358=LINE('',#2630,#484); +#359=LINE('',#2632,#485); +#360=LINE('',#2633,#486); +#361=LINE('',#2637,#487); +#362=LINE('',#2639,#488); +#363=LINE('',#2642,#489); +#364=LINE('',#2645,#490); +#365=LINE('',#2649,#491); +#366=LINE('',#2653,#492); +#367=LINE('',#2655,#493); +#368=LINE('',#2656,#494); +#369=LINE('',#2661,#495); +#370=LINE('',#2662,#496); +#371=LINE('',#2665,#497); +#372=LINE('',#2666,#498); +#373=LINE('',#2672,#499); +#374=LINE('',#2673,#500); +#375=LINE('',#2676,#501); +#376=LINE('',#2680,#502); +#377=LINE('',#2681,#503); +#378=LINE('',#2684,#504); +#379=LINE('',#2685,#505); +#380=LINE('',#2689,#506); +#381=LINE('',#2691,#507); +#382=LINE('',#2693,#508); +#383=VECTOR('',#1542,10.); +#384=VECTOR('',#1545,10.); +#385=VECTOR('',#1548,10.); +#386=VECTOR('',#1549,10.); +#387=VECTOR('',#1550,10.); +#388=VECTOR('',#1551,10.); +#389=VECTOR('',#1552,10.); +#390=VECTOR('',#1553,10.); +#391=VECTOR('',#1554,10.); +#392=VECTOR('',#1555,10.); +#393=VECTOR('',#1556,10.); +#394=VECTOR('',#1557,10.); +#395=VECTOR('',#1558,10.); +#396=VECTOR('',#1559,10.); +#397=VECTOR('',#1560,10.); +#398=VECTOR('',#1563,10.); +#399=VECTOR('',#1566,10.); +#400=VECTOR('',#1567,10.); +#401=VECTOR('',#1568,10.); +#402=VECTOR('',#1569,10.); +#403=VECTOR('',#1570,10.); +#404=VECTOR('',#1571,10.); +#405=VECTOR('',#1576,10.); +#406=VECTOR('',#1579,10.); +#407=VECTOR('',#1586,10.); +#408=VECTOR('',#1587,10.); +#409=VECTOR('',#1590,10.); +#410=VECTOR('',#1591,10.); +#411=VECTOR('',#1592,10.); +#412=VECTOR('',#1595,10.); +#413=VECTOR('',#1596,10.); +#414=VECTOR('',#1597,10.); +#415=VECTOR('',#1602,10.); +#416=VECTOR('',#1603,10.); +#417=VECTOR('',#1618,10.); +#418=VECTOR('',#1619,10.); +#419=VECTOR('',#1622,10.); +#420=VECTOR('',#1627,2.75); +#421=VECTOR('',#1632,10.); +#422=VECTOR('',#1633,10.); +#423=VECTOR('',#1638,2.74999999999999); +#424=VECTOR('',#1651,10.); +#425=VECTOR('',#1654,10.); +#426=VECTOR('',#1659,10.); +#427=VECTOR('',#1660,10.); +#428=VECTOR('',#1665,10.); +#429=VECTOR('',#1674,5.); +#430=VECTOR('',#1683,10.); +#431=VECTOR('',#1684,10.); +#432=VECTOR('',#1693,10.); +#433=VECTOR('',#1702,10.); +#434=VECTOR('',#1703,10.); +#435=VECTOR('',#1706,10.); +#436=VECTOR('',#1711,10.); +#437=VECTOR('',#1712,10.); +#438=VECTOR('',#1715,10.); +#439=VECTOR('',#1718,10.); +#440=VECTOR('',#1721,10.); +#441=VECTOR('',#1724,10.); +#442=VECTOR('',#1729,10.); +#443=VECTOR('',#1730,10.); +#444=VECTOR('',#1733,10.); +#445=VECTOR('',#1738,10.); +#446=VECTOR('',#1743,10.); +#447=VECTOR('',#1746,1.6); +#448=VECTOR('',#1749,1.6); +#449=VECTOR('',#1754,1.6); +#450=VECTOR('',#1759,1.6); +#451=VECTOR('',#1764,10.); +#452=VECTOR('',#1767,10.); +#453=VECTOR('',#1770,10.); +#454=VECTOR('',#1771,10.); +#455=VECTOR('',#1776,10.); +#456=VECTOR('',#1781,10.); +#457=VECTOR('',#1784,10.); +#458=VECTOR('',#1789,10.); +#459=VECTOR('',#1794,10.); +#460=VECTOR('',#1795,10.); +#461=VECTOR('',#1798,10.); +#462=VECTOR('',#1801,10.); +#463=VECTOR('',#1804,10.); +#464=VECTOR('',#1805,10.); +#465=VECTOR('',#1806,10.); +#466=VECTOR('',#1809,10.); +#467=VECTOR('',#1814,10.); +#468=VECTOR('',#1815,10.); +#469=VECTOR('',#1818,10.); +#470=VECTOR('',#1821,10.); +#471=VECTOR('',#1826,10.); +#472=VECTOR('',#1827,10.); +#473=VECTOR('',#1830,10.); +#474=VECTOR('',#1835,10.); +#475=VECTOR('',#1838,10.); +#476=VECTOR('',#1839,10.); +#477=VECTOR('',#1846,10.); +#478=VECTOR('',#1849,10.); +#479=VECTOR('',#1852,10.); +#480=VECTOR('',#1857,10.); +#481=VECTOR('',#1858,10.); +#482=VECTOR('',#1859,10.); +#483=VECTOR('',#1860,10.); +#484=VECTOR('',#1863,10.); +#485=VECTOR('',#1864,10.); +#486=VECTOR('',#1865,10.); +#487=VECTOR('',#1868,10.); +#488=VECTOR('',#1869,10.); +#489=VECTOR('',#1872,10.); +#490=VECTOR('',#1875,10.); +#491=VECTOR('',#1878,10.); +#492=VECTOR('',#1881,10.); +#493=VECTOR('',#1882,10.); +#494=VECTOR('',#1883,10.); +#495=VECTOR('',#1888,10.); +#496=VECTOR('',#1889,10.); +#497=VECTOR('',#1892,10.); +#498=VECTOR('',#1893,10.); +#499=VECTOR('',#1902,10.); +#500=VECTOR('',#1903,10.); +#501=VECTOR('',#1906,10.); +#502=VECTOR('',#1911,10.); +#503=VECTOR('',#1912,10.); +#504=VECTOR('',#1915,10.); +#505=VECTOR('',#1916,10.); +#506=VECTOR('',#1921,10.); +#507=VECTOR('',#1924,10.); +#508=VECTOR('',#1927,10.); +#509=CIRCLE('',#1401,3.); +#510=CIRCLE('',#1402,3.); +#511=CIRCLE('',#1404,2.00000000000003); +#512=CIRCLE('',#1407,1.); +#513=CIRCLE('',#1408,1.00000000000002); +#514=CIRCLE('',#1409,1.00000000000003); +#515=CIRCLE('',#1411,1.); +#516=CIRCLE('',#1413,15.); +#517=CIRCLE('',#1414,2.75); +#518=CIRCLE('',#1416,10.); +#519=CIRCLE('',#1419,10.); +#520=CIRCLE('',#1424,15.); +#521=CIRCLE('',#1426,2.75); +#522=CIRCLE('',#1429,2.74999999999999); +#523=CIRCLE('',#1430,2.74999999999999); +#524=CIRCLE('',#1436,12.49984999932); +#525=CIRCLE('',#1437,12.49984999932); +#526=CIRCLE('',#1438,1.); +#527=CIRCLE('',#1439,1.); +#528=CIRCLE('',#1440,12.49984999932); +#529=CIRCLE('',#1441,1.6); +#530=CIRCLE('',#1442,1.6); +#531=CIRCLE('',#1444,5.); +#532=CIRCLE('',#1449,1.6); +#533=CIRCLE('',#1450,1.6); +#534=CIRCLE('',#1454,1.6); +#535=CIRCLE('',#1455,1.6); +#536=CIRCLE('',#1474,1.6); +#537=CIRCLE('',#1476,1.6); +#538=CIRCLE('',#1478,1.); +#539=CIRCLE('',#1479,1.); +#540=CIRCLE('',#1481,5.49995495298887); +#541=CIRCLE('',#1484,1.); +#542=CIRCLE('',#1485,1.); +#543=CIRCLE('',#1487,5.49995495031771); +#544=CIRCLE('',#1488,5.49995495031771); +#545=CIRCLE('',#1491,5.49995495031771); +#546=CIRCLE('',#1492,5.49995495298887); +#547=CIRCLE('',#1494,5.49995495298887); +#548=CIRCLE('',#1497,5.49995495298887); +#549=CIRCLE('',#1498,5.49995495031771); +#550=CIRCLE('',#1506,2.00000000000003); +#551=CIRCLE('',#1513,15.); +#552=CIRCLE('',#1515,2.00000000000003); +#553=CIRCLE('',#1516,3.); +#554=CIRCLE('',#1518,3.); +#555=CIRCLE('',#1525,15.); +#556=CIRCLE('',#1529,2.00000000000003); +#557=VERTEX_POINT('',#1935); +#558=VERTEX_POINT('',#1936); +#559=VERTEX_POINT('',#1938); +#560=VERTEX_POINT('',#1940); +#561=VERTEX_POINT('',#1944); +#562=VERTEX_POINT('',#1946); +#563=VERTEX_POINT('',#1948); +#564=VERTEX_POINT('',#1950); +#565=VERTEX_POINT('',#1952); +#566=VERTEX_POINT('',#1954); +#567=VERTEX_POINT('',#1956); +#568=VERTEX_POINT('',#1958); +#569=VERTEX_POINT('',#1960); +#570=VERTEX_POINT('',#1962); +#571=VERTEX_POINT('',#1964); +#572=VERTEX_POINT('',#1966); +#573=VERTEX_POINT('',#1968); +#574=VERTEX_POINT('',#1970); +#575=VERTEX_POINT('',#1974); +#576=VERTEX_POINT('',#1976); +#577=VERTEX_POINT('',#1978); +#578=VERTEX_POINT('',#1980); +#579=VERTEX_POINT('',#1982); +#580=VERTEX_POINT('',#1986); +#581=VERTEX_POINT('',#1987); +#582=VERTEX_POINT('',#1989); +#583=VERTEX_POINT('',#1991); +#584=VERTEX_POINT('',#2019); +#585=VERTEX_POINT('',#2020); +#586=VERTEX_POINT('',#2027); +#587=VERTEX_POINT('',#2038); +#588=VERTEX_POINT('',#2039); +#589=VERTEX_POINT('',#2044); +#590=VERTEX_POINT('',#2046); +#591=VERTEX_POINT('',#2048); +#592=VERTEX_POINT('',#2050); +#593=VERTEX_POINT('',#2052); +#594=VERTEX_POINT('',#2054); +#595=VERTEX_POINT('',#2057); +#596=VERTEX_POINT('',#2060); +#597=VERTEX_POINT('',#2070); +#598=VERTEX_POINT('',#2074); +#599=VERTEX_POINT('',#2078); +#600=VERTEX_POINT('',#2082); +#601=VERTEX_POINT('',#2086); +#602=VERTEX_POINT('',#2088); +#603=VERTEX_POINT('',#2189); +#604=VERTEX_POINT('',#2190); +#605=VERTEX_POINT('',#2192); +#606=VERTEX_POINT('',#2207); +#607=VERTEX_POINT('',#2212); +#608=VERTEX_POINT('',#2214); +#609=VERTEX_POINT('',#2296); +#610=VERTEX_POINT('',#2298); +#611=VERTEX_POINT('',#2300); +#612=VERTEX_POINT('',#2302); +#613=VERTEX_POINT('',#2304); +#614=VERTEX_POINT('',#2307); +#615=VERTEX_POINT('',#2309); +#616=VERTEX_POINT('',#2311); +#617=VERTEX_POINT('',#2314); +#618=VERTEX_POINT('',#2316); +#619=VERTEX_POINT('',#2319); +#620=VERTEX_POINT('',#2321); +#621=VERTEX_POINT('',#2467); +#622=VERTEX_POINT('',#2470); +#623=VERTEX_POINT('',#2472); +#624=VERTEX_POINT('',#2478); +#625=VERTEX_POINT('',#2480); +#626=VERTEX_POINT('',#2483); +#627=VERTEX_POINT('',#2484); +#628=VERTEX_POINT('',#2486); +#629=VERTEX_POINT('',#2488); +#630=VERTEX_POINT('',#2490); +#631=VERTEX_POINT('',#2492); +#632=VERTEX_POINT('',#2494); +#633=VERTEX_POINT('',#2507); +#634=VERTEX_POINT('',#2508); +#635=VERTEX_POINT('',#2513); +#636=VERTEX_POINT('',#2519); +#637=VERTEX_POINT('',#2527); +#638=VERTEX_POINT('',#2531); +#639=VERTEX_POINT('',#2535); +#640=VERTEX_POINT('',#2536); +#641=VERTEX_POINT('',#2538); +#642=VERTEX_POINT('',#2540); +#643=VERTEX_POINT('',#2545); +#644=VERTEX_POINT('',#2551); +#645=VERTEX_POINT('',#2552); +#646=VERTEX_POINT('',#2554); +#647=VERTEX_POINT('',#2556); +#648=VERTEX_POINT('',#2560); +#649=VERTEX_POINT('',#2562); +#650=VERTEX_POINT('',#2569); +#651=VERTEX_POINT('',#2571); +#652=VERTEX_POINT('',#2573); +#653=VERTEX_POINT('',#2575); +#654=VERTEX_POINT('',#2577); +#655=VERTEX_POINT('',#2579); +#656=VERTEX_POINT('',#2583); +#657=VERTEX_POINT('',#2587); +#658=VERTEX_POINT('',#2591); +#659=VERTEX_POINT('',#2593); +#660=VERTEX_POINT('',#2595); +#661=VERTEX_POINT('',#2611); +#662=VERTEX_POINT('',#2620); +#663=VERTEX_POINT('',#2621); +#664=VERTEX_POINT('',#2623); +#665=VERTEX_POINT('',#2625); +#666=VERTEX_POINT('',#2629); +#667=VERTEX_POINT('',#2631); +#668=VERTEX_POINT('',#2635); +#669=VERTEX_POINT('',#2636); +#670=VERTEX_POINT('',#2638); +#671=VERTEX_POINT('',#2640); +#672=VERTEX_POINT('',#2644); +#673=VERTEX_POINT('',#2646); +#674=VERTEX_POINT('',#2648); +#675=VERTEX_POINT('',#2650); +#676=VERTEX_POINT('',#2652); +#677=VERTEX_POINT('',#2654); +#678=VERTEX_POINT('',#2658); +#679=VERTEX_POINT('',#2659); +#680=VERTEX_POINT('',#2664); +#681=VERTEX_POINT('',#2671); +#682=VERTEX_POINT('',#2675); +#683=VERTEX_POINT('',#2679); +#684=VERTEX_POINT('',#2683); +#685=VERTEX_POINT('',#2687); +#686=EDGE_CURVE('',#557,#558,#509,.T.); +#687=EDGE_CURVE('',#558,#559,#257,.T.); +#688=EDGE_CURVE('',#559,#560,#510,.T.); +#689=EDGE_CURVE('',#560,#557,#258,.T.); +#690=EDGE_CURVE('',#559,#561,#259,.T.); +#691=EDGE_CURVE('',#561,#562,#260,.T.); +#692=EDGE_CURVE('',#562,#563,#261,.T.); +#693=EDGE_CURVE('',#563,#564,#262,.T.); +#694=EDGE_CURVE('',#564,#565,#263,.T.); +#695=EDGE_CURVE('',#565,#566,#264,.T.); +#696=EDGE_CURVE('',#566,#567,#265,.T.); +#697=EDGE_CURVE('',#567,#568,#266,.T.); +#698=EDGE_CURVE('',#568,#569,#267,.T.); +#699=EDGE_CURVE('',#569,#570,#268,.T.); +#700=EDGE_CURVE('',#570,#571,#269,.T.); +#701=EDGE_CURVE('',#571,#572,#270,.T.); +#702=EDGE_CURVE('',#572,#573,#271,.T.); +#703=EDGE_CURVE('',#573,#574,#511,.T.); +#704=EDGE_CURVE('',#574,#560,#272,.T.); +#705=EDGE_CURVE('',#575,#558,#273,.T.); +#706=EDGE_CURVE('',#576,#575,#274,.T.); +#707=EDGE_CURVE('',#576,#577,#275,.T.); +#708=EDGE_CURVE('',#577,#578,#276,.T.); +#709=EDGE_CURVE('',#578,#579,#277,.T.); +#710=EDGE_CURVE('',#561,#579,#278,.T.); +#711=EDGE_CURVE('',#580,#581,#512,.T.); +#712=EDGE_CURVE('',#580,#582,#279,.T.); +#713=EDGE_CURVE('',#582,#583,#513,.T.); +#714=EDGE_CURVE('',#583,#581,#280,.T.); +#715=EDGE_CURVE('',#584,#585,#514,.T.); +#716=EDGE_CURVE('',#585,#583,#50,.T.); +#717=EDGE_CURVE('',#582,#586,#51,.T.); +#718=EDGE_CURVE('',#586,#584,#52,.T.); +#719=EDGE_CURVE('',#587,#588,#515,.T.); +#720=EDGE_CURVE('',#587,#585,#281,.T.); +#721=EDGE_CURVE('',#584,#588,#282,.T.); +#722=EDGE_CURVE('',#587,#589,#283,.T.); +#723=EDGE_CURVE('',#590,#589,#284,.T.); +#724=EDGE_CURVE('',#591,#590,#285,.T.); +#725=EDGE_CURVE('',#592,#591,#516,.T.); +#726=EDGE_CURVE('',#593,#592,#286,.T.); +#727=EDGE_CURVE('',#594,#593,#287,.T.); +#728=EDGE_CURVE('',#594,#581,#288,.T.); +#729=EDGE_CURVE('',#595,#595,#517,.T.); +#730=EDGE_CURVE('',#596,#588,#289,.T.); +#731=EDGE_CURVE('',#577,#596,#290,.T.); +#732=EDGE_CURVE('',#589,#576,#518,.T.); +#733=EDGE_CURVE('',#561,#593,#21,.F.); +#734=EDGE_CURVE('',#594,#579,#519,.F.); +#735=EDGE_CURVE('',#575,#590,#22,.T.); +#736=EDGE_CURVE('',#597,#592,#291,.T.); +#737=EDGE_CURVE('',#597,#562,#292,.T.); +#738=EDGE_CURVE('',#598,#591,#293,.T.); +#739=EDGE_CURVE('',#597,#598,#520,.T.); +#740=EDGE_CURVE('',#595,#599,#294,.T.); +#741=EDGE_CURVE('',#599,#599,#521,.T.); +#742=EDGE_CURVE('',#600,#575,#295,.T.); +#743=EDGE_CURVE('',#598,#600,#296,.T.); +#744=EDGE_CURVE('',#601,#601,#522,.T.); +#745=EDGE_CURVE('',#601,#602,#297,.T.); +#746=EDGE_CURVE('',#602,#602,#523,.T.); +#747=EDGE_CURVE('',#603,#604,#23,.T.); +#748=EDGE_CURVE('',#603,#605,#53,.T.); +#749=EDGE_CURVE('',#605,#606,#54,.T.); +#750=EDGE_CURVE('',#606,#607,#24,.T.); +#751=EDGE_CURVE('',#607,#608,#55,.T.); +#752=EDGE_CURVE('',#604,#608,#56,.T.); +#753=EDGE_CURVE('',#608,#605,#25,.T.); +#754=EDGE_CURVE('',#603,#604,#26,.T.); +#755=EDGE_CURVE('',#606,#609,#298,.T.); +#756=EDGE_CURVE('',#609,#610,#524,.T.); +#757=EDGE_CURVE('',#611,#610,#299,.T.); +#758=EDGE_CURVE('',#611,#612,#525,.T.); +#759=EDGE_CURVE('',#613,#612,#526,.F.); +#760=EDGE_CURVE('',#566,#613,#300,.T.); +#761=EDGE_CURVE('',#614,#565,#301,.T.); +#762=EDGE_CURVE('',#615,#614,#527,.F.); +#763=EDGE_CURVE('',#615,#616,#528,.T.); +#764=EDGE_CURVE('',#616,#607,#302,.T.); +#765=EDGE_CURVE('',#617,#617,#529,.T.); +#766=EDGE_CURVE('',#618,#618,#530,.T.); +#767=EDGE_CURVE('',#619,#619,#531,.T.); +#768=EDGE_CURVE('',#619,#620,#303,.T.); +#769=EDGE_CURVE('',#604,#620,#27,.T.); +#770=EDGE_CURVE('',#620,#603,#28,.T.); +#771=EDGE_CURVE('',#582,#584,#29,.T.); +#772=EDGE_CURVE('',#586,#620,#57,.T.); +#773=EDGE_CURVE('',#580,#621,#304,.T.); +#774=EDGE_CURVE('',#621,#596,#305,.T.); +#775=EDGE_CURVE('',#622,#622,#532,.T.); +#776=EDGE_CURVE('',#623,#623,#533,.T.); +#777=EDGE_CURVE('',#621,#578,#306,.T.); +#778=EDGE_CURVE('',#624,#624,#534,.T.); +#779=EDGE_CURVE('',#625,#625,#535,.T.); +#780=EDGE_CURVE('',#626,#627,#307,.T.); +#781=EDGE_CURVE('',#628,#626,#308,.T.); +#782=EDGE_CURVE('',#629,#628,#30,.T.); +#783=EDGE_CURVE('',#630,#629,#309,.T.); +#784=EDGE_CURVE('',#631,#630,#31,.T.); +#785=EDGE_CURVE('',#632,#631,#32,.T.); +#786=EDGE_CURVE('',#564,#632,#310,.T.); +#787=EDGE_CURVE('',#627,#563,#311,.T.); +#788=EDGE_CURVE('',#614,#632,#312,.T.); +#789=EDGE_CURVE('',#631,#615,#313,.T.); +#790=EDGE_CURVE('',#616,#630,#314,.T.); +#791=EDGE_CURVE('',#609,#629,#315,.T.); +#792=EDGE_CURVE('',#633,#634,#33,.T.); +#793=EDGE_CURVE('',#634,#613,#316,.T.); +#794=EDGE_CURVE('',#612,#633,#317,.T.); +#795=EDGE_CURVE('',#611,#635,#318,.T.); +#796=EDGE_CURVE('',#635,#633,#34,.T.); +#797=EDGE_CURVE('',#567,#634,#319,.T.); +#798=EDGE_CURVE('',#628,#636,#35,.T.); +#799=EDGE_CURVE('',#610,#636,#320,.T.); +#800=EDGE_CURVE('',#617,#623,#321,.T.); +#801=EDGE_CURVE('',#618,#622,#322,.T.); +#802=EDGE_CURVE('',#637,#637,#536,.T.); +#803=EDGE_CURVE('',#637,#624,#323,.T.); +#804=EDGE_CURVE('',#638,#638,#537,.T.); +#805=EDGE_CURVE('',#638,#625,#324,.T.); +#806=EDGE_CURVE('',#639,#640,#538,.T.); +#807=EDGE_CURVE('',#640,#641,#325,.T.); +#808=EDGE_CURVE('',#641,#642,#539,.F.); +#809=EDGE_CURVE('',#642,#639,#326,.T.); +#810=EDGE_CURVE('',#639,#569,#327,.T.); +#811=EDGE_CURVE('',#568,#643,#328,.T.); +#812=EDGE_CURVE('',#640,#643,#540,.T.); +#813=EDGE_CURVE('',#642,#570,#329,.T.); +#814=EDGE_CURVE('',#644,#645,#541,.T.); +#815=EDGE_CURVE('',#645,#646,#330,.T.); +#816=EDGE_CURVE('',#646,#647,#542,.F.); +#817=EDGE_CURVE('',#647,#644,#331,.T.); +#818=EDGE_CURVE('',#648,#647,#543,.T.); +#819=EDGE_CURVE('',#649,#648,#332,.T.); +#820=EDGE_CURVE('',#649,#644,#544,.T.); +#821=EDGE_CURVE('',#572,#645,#333,.T.); +#822=EDGE_CURVE('',#571,#646,#334,.T.); +#823=EDGE_CURVE('',#649,#650,#335,.T.); +#824=EDGE_CURVE('',#651,#650,#545,.T.); +#825=EDGE_CURVE('',#652,#651,#336,.T.); +#826=EDGE_CURVE('',#653,#652,#546,.T.); +#827=EDGE_CURVE('',#653,#654,#337,.T.); +#828=EDGE_CURVE('',#655,#654,#338,.T.); +#829=EDGE_CURVE('',#573,#655,#339,.T.); +#830=EDGE_CURVE('',#643,#656,#340,.T.); +#831=EDGE_CURVE('',#641,#656,#547,.T.); +#832=EDGE_CURVE('',#648,#657,#341,.T.); +#833=EDGE_CURVE('',#650,#657,#342,.T.); +#834=EDGE_CURVE('',#656,#658,#343,.T.); +#835=EDGE_CURVE('',#658,#659,#548,.T.); +#836=EDGE_CURVE('',#659,#660,#344,.T.); +#837=EDGE_CURVE('',#660,#657,#549,.T.); +#838=EDGE_CURVE('',#659,#652,#345,.T.); +#839=EDGE_CURVE('',#653,#658,#346,.T.); +#840=EDGE_CURVE('',#660,#651,#347,.T.); +#841=EDGE_CURVE('',#635,#636,#348,.T.); +#842=EDGE_CURVE('',#654,#626,#349,.T.); +#843=EDGE_CURVE('',#643,#653,#350,.T.); +#844=EDGE_CURVE('',#661,#655,#550,.T.); +#845=EDGE_CURVE('',#574,#661,#351,.T.); +#846=EDGE_CURVE('',#557,#661,#352,.T.); +#847=EDGE_CURVE('',#627,#600,#353,.T.); +#848=EDGE_CURVE('',#662,#663,#354,.T.); +#849=EDGE_CURVE('',#662,#664,#355,.T.); +#850=EDGE_CURVE('',#665,#664,#356,.T.); +#851=EDGE_CURVE('',#663,#665,#357,.T.); +#852=EDGE_CURVE('',#666,#662,#358,.T.); +#853=EDGE_CURVE('',#667,#666,#359,.T.); +#854=EDGE_CURVE('',#664,#667,#360,.T.); +#855=EDGE_CURVE('',#668,#669,#361,.T.); +#856=EDGE_CURVE('',#670,#668,#362,.T.); +#857=EDGE_CURVE('',#671,#670,#551,.T.); +#858=EDGE_CURVE('',#669,#671,#363,.T.); +#859=EDGE_CURVE('',#663,#672,#364,.T.); +#860=EDGE_CURVE('',#672,#673,#552,.T.); +#861=EDGE_CURVE('',#673,#674,#365,.T.); +#862=EDGE_CURVE('',#675,#674,#553,.T.); +#863=EDGE_CURVE('',#675,#676,#366,.T.); +#864=EDGE_CURVE('',#676,#677,#367,.T.); +#865=EDGE_CURVE('',#677,#666,#368,.T.); +#866=EDGE_CURVE('',#678,#679,#554,.T.); +#867=EDGE_CURVE('',#679,#675,#369,.T.); +#868=EDGE_CURVE('',#674,#678,#370,.T.); +#869=EDGE_CURVE('',#680,#679,#371,.T.); +#870=EDGE_CURVE('',#676,#680,#372,.T.); +#871=EDGE_CURVE('',#676,#669,#36,.F.); +#872=EDGE_CURVE('',#680,#668,#37,.T.); +#873=EDGE_CURVE('',#681,#671,#373,.T.); +#874=EDGE_CURVE('',#681,#677,#374,.T.); +#875=EDGE_CURVE('',#682,#670,#375,.T.); +#876=EDGE_CURVE('',#681,#682,#555,.T.); +#877=EDGE_CURVE('',#683,#680,#376,.T.); +#878=EDGE_CURVE('',#682,#683,#377,.T.); +#879=EDGE_CURVE('',#684,#665,#378,.T.); +#880=EDGE_CURVE('',#672,#684,#379,.T.); +#881=EDGE_CURVE('',#685,#684,#556,.T.); +#882=EDGE_CURVE('',#673,#685,#380,.T.); +#883=EDGE_CURVE('',#678,#685,#381,.T.); +#884=EDGE_CURVE('',#667,#683,#382,.T.); +#885=ORIENTED_EDGE('',*,*,#686,.T.); +#886=ORIENTED_EDGE('',*,*,#687,.T.); +#887=ORIENTED_EDGE('',*,*,#688,.T.); +#888=ORIENTED_EDGE('',*,*,#689,.T.); +#889=ORIENTED_EDGE('',*,*,#688,.F.); +#890=ORIENTED_EDGE('',*,*,#690,.T.); +#891=ORIENTED_EDGE('',*,*,#691,.T.); +#892=ORIENTED_EDGE('',*,*,#692,.T.); +#893=ORIENTED_EDGE('',*,*,#693,.T.); +#894=ORIENTED_EDGE('',*,*,#694,.T.); +#895=ORIENTED_EDGE('',*,*,#695,.T.); +#896=ORIENTED_EDGE('',*,*,#696,.T.); +#897=ORIENTED_EDGE('',*,*,#697,.T.); +#898=ORIENTED_EDGE('',*,*,#698,.T.); +#899=ORIENTED_EDGE('',*,*,#699,.T.); +#900=ORIENTED_EDGE('',*,*,#700,.T.); +#901=ORIENTED_EDGE('',*,*,#701,.T.); +#902=ORIENTED_EDGE('',*,*,#702,.T.); +#903=ORIENTED_EDGE('',*,*,#703,.T.); +#904=ORIENTED_EDGE('',*,*,#704,.T.); +#905=ORIENTED_EDGE('',*,*,#687,.F.); +#906=ORIENTED_EDGE('',*,*,#705,.F.); +#907=ORIENTED_EDGE('',*,*,#706,.F.); +#908=ORIENTED_EDGE('',*,*,#707,.T.); +#909=ORIENTED_EDGE('',*,*,#708,.T.); +#910=ORIENTED_EDGE('',*,*,#709,.T.); +#911=ORIENTED_EDGE('',*,*,#710,.F.); +#912=ORIENTED_EDGE('',*,*,#690,.F.); +#913=ORIENTED_EDGE('',*,*,#711,.F.); +#914=ORIENTED_EDGE('',*,*,#712,.T.); +#915=ORIENTED_EDGE('',*,*,#713,.T.); +#916=ORIENTED_EDGE('',*,*,#714,.T.); +#917=ORIENTED_EDGE('',*,*,#715,.T.); +#918=ORIENTED_EDGE('',*,*,#716,.T.); +#919=ORIENTED_EDGE('',*,*,#713,.F.); +#920=ORIENTED_EDGE('',*,*,#717,.T.); +#921=ORIENTED_EDGE('',*,*,#718,.T.); +#922=ORIENTED_EDGE('',*,*,#719,.F.); +#923=ORIENTED_EDGE('',*,*,#720,.T.); +#924=ORIENTED_EDGE('',*,*,#715,.F.); +#925=ORIENTED_EDGE('',*,*,#721,.T.); +#926=ORIENTED_EDGE('',*,*,#714,.F.); +#927=ORIENTED_EDGE('',*,*,#716,.F.); +#928=ORIENTED_EDGE('',*,*,#720,.F.); +#929=ORIENTED_EDGE('',*,*,#722,.T.); +#930=ORIENTED_EDGE('',*,*,#723,.F.); +#931=ORIENTED_EDGE('',*,*,#724,.F.); +#932=ORIENTED_EDGE('',*,*,#725,.F.); +#933=ORIENTED_EDGE('',*,*,#726,.F.); +#934=ORIENTED_EDGE('',*,*,#727,.F.); +#935=ORIENTED_EDGE('',*,*,#728,.T.); +#936=ORIENTED_EDGE('',*,*,#729,.F.); +#937=ORIENTED_EDGE('',*,*,#719,.T.); +#938=ORIENTED_EDGE('',*,*,#730,.F.); +#939=ORIENTED_EDGE('',*,*,#731,.F.); +#940=ORIENTED_EDGE('',*,*,#707,.F.); +#941=ORIENTED_EDGE('',*,*,#732,.F.); +#942=ORIENTED_EDGE('',*,*,#722,.F.); +#943=ORIENTED_EDGE('',*,*,#733,.F.); +#944=ORIENTED_EDGE('',*,*,#710,.T.); +#945=ORIENTED_EDGE('',*,*,#734,.F.); +#946=ORIENTED_EDGE('',*,*,#727,.T.); +#947=ORIENTED_EDGE('',*,*,#735,.T.); +#948=ORIENTED_EDGE('',*,*,#723,.T.); +#949=ORIENTED_EDGE('',*,*,#732,.T.); +#950=ORIENTED_EDGE('',*,*,#706,.T.); +#951=ORIENTED_EDGE('',*,*,#726,.T.); +#952=ORIENTED_EDGE('',*,*,#736,.F.); +#953=ORIENTED_EDGE('',*,*,#737,.T.); +#954=ORIENTED_EDGE('',*,*,#691,.F.); +#955=ORIENTED_EDGE('',*,*,#733,.T.); +#956=ORIENTED_EDGE('',*,*,#725,.T.); +#957=ORIENTED_EDGE('',*,*,#738,.F.); +#958=ORIENTED_EDGE('',*,*,#739,.F.); +#959=ORIENTED_EDGE('',*,*,#736,.T.); +#960=ORIENTED_EDGE('',*,*,#729,.T.); +#961=ORIENTED_EDGE('',*,*,#740,.T.); +#962=ORIENTED_EDGE('',*,*,#741,.F.); +#963=ORIENTED_EDGE('',*,*,#740,.F.); +#964=ORIENTED_EDGE('',*,*,#724,.T.); +#965=ORIENTED_EDGE('',*,*,#735,.F.); +#966=ORIENTED_EDGE('',*,*,#742,.F.); +#967=ORIENTED_EDGE('',*,*,#743,.F.); +#968=ORIENTED_EDGE('',*,*,#738,.T.); +#969=ORIENTED_EDGE('',*,*,#744,.F.); +#970=ORIENTED_EDGE('',*,*,#745,.T.); +#971=ORIENTED_EDGE('',*,*,#746,.F.); +#972=ORIENTED_EDGE('',*,*,#745,.F.); +#973=ORIENTED_EDGE('',*,*,#747,.F.); +#974=ORIENTED_EDGE('',*,*,#748,.T.); +#975=ORIENTED_EDGE('',*,*,#749,.T.); +#976=ORIENTED_EDGE('',*,*,#750,.T.); +#977=ORIENTED_EDGE('',*,*,#751,.T.); +#978=ORIENTED_EDGE('',*,*,#752,.F.); +#979=ORIENTED_EDGE('',*,*,#753,.T.); +#980=ORIENTED_EDGE('',*,*,#748,.F.); +#981=ORIENTED_EDGE('',*,*,#754,.T.); +#982=ORIENTED_EDGE('',*,*,#752,.T.); +#983=ORIENTED_EDGE('',*,*,#750,.F.); +#984=ORIENTED_EDGE('',*,*,#755,.T.); +#985=ORIENTED_EDGE('',*,*,#756,.T.); +#986=ORIENTED_EDGE('',*,*,#757,.F.); +#987=ORIENTED_EDGE('',*,*,#758,.T.); +#988=ORIENTED_EDGE('',*,*,#759,.F.); +#989=ORIENTED_EDGE('',*,*,#760,.F.); +#990=ORIENTED_EDGE('',*,*,#695,.F.); +#991=ORIENTED_EDGE('',*,*,#761,.F.); +#992=ORIENTED_EDGE('',*,*,#762,.F.); +#993=ORIENTED_EDGE('',*,*,#763,.T.); +#994=ORIENTED_EDGE('',*,*,#764,.T.); +#995=ORIENTED_EDGE('',*,*,#765,.T.); +#996=ORIENTED_EDGE('',*,*,#766,.T.); +#997=ORIENTED_EDGE('',*,*,#767,.T.); +#998=ORIENTED_EDGE('',*,*,#768,.T.); +#999=ORIENTED_EDGE('',*,*,#769,.F.); +#1000=ORIENTED_EDGE('',*,*,#754,.F.); +#1001=ORIENTED_EDGE('',*,*,#770,.F.); +#1002=ORIENTED_EDGE('',*,*,#768,.F.); +#1003=ORIENTED_EDGE('',*,*,#717,.F.); +#1004=ORIENTED_EDGE('',*,*,#771,.T.); +#1005=ORIENTED_EDGE('',*,*,#718,.F.); +#1006=ORIENTED_EDGE('',*,*,#772,.T.); +#1007=ORIENTED_EDGE('',*,*,#770,.T.); +#1008=ORIENTED_EDGE('',*,*,#747,.T.); +#1009=ORIENTED_EDGE('',*,*,#769,.T.); +#1010=ORIENTED_EDGE('',*,*,#772,.F.); +#1011=ORIENTED_EDGE('',*,*,#712,.F.); +#1012=ORIENTED_EDGE('',*,*,#773,.T.); +#1013=ORIENTED_EDGE('',*,*,#774,.T.); +#1014=ORIENTED_EDGE('',*,*,#730,.T.); +#1015=ORIENTED_EDGE('',*,*,#721,.F.); +#1016=ORIENTED_EDGE('',*,*,#771,.F.); +#1017=ORIENTED_EDGE('',*,*,#775,.F.); +#1018=ORIENTED_EDGE('',*,*,#776,.F.); +#1019=ORIENTED_EDGE('',*,*,#767,.F.); +#1020=ORIENTED_EDGE('',*,*,#744,.T.); +#1021=ORIENTED_EDGE('',*,*,#711,.T.); +#1022=ORIENTED_EDGE('',*,*,#728,.F.); +#1023=ORIENTED_EDGE('',*,*,#734,.T.); +#1024=ORIENTED_EDGE('',*,*,#709,.F.); +#1025=ORIENTED_EDGE('',*,*,#777,.F.); +#1026=ORIENTED_EDGE('',*,*,#773,.F.); +#1027=ORIENTED_EDGE('',*,*,#774,.F.); +#1028=ORIENTED_EDGE('',*,*,#777,.T.); +#1029=ORIENTED_EDGE('',*,*,#708,.F.); +#1030=ORIENTED_EDGE('',*,*,#731,.T.); +#1031=ORIENTED_EDGE('',*,*,#778,.F.); +#1032=ORIENTED_EDGE('',*,*,#779,.F.); +#1033=ORIENTED_EDGE('',*,*,#780,.F.); +#1034=ORIENTED_EDGE('',*,*,#781,.F.); +#1035=ORIENTED_EDGE('',*,*,#782,.F.); +#1036=ORIENTED_EDGE('',*,*,#783,.F.); +#1037=ORIENTED_EDGE('',*,*,#784,.F.); +#1038=ORIENTED_EDGE('',*,*,#785,.F.); +#1039=ORIENTED_EDGE('',*,*,#786,.F.); +#1040=ORIENTED_EDGE('',*,*,#693,.F.); +#1041=ORIENTED_EDGE('',*,*,#787,.F.); +#1042=ORIENTED_EDGE('',*,*,#786,.T.); +#1043=ORIENTED_EDGE('',*,*,#788,.F.); +#1044=ORIENTED_EDGE('',*,*,#761,.T.); +#1045=ORIENTED_EDGE('',*,*,#694,.F.); +#1046=ORIENTED_EDGE('',*,*,#785,.T.); +#1047=ORIENTED_EDGE('',*,*,#789,.T.); +#1048=ORIENTED_EDGE('',*,*,#762,.T.); +#1049=ORIENTED_EDGE('',*,*,#788,.T.); +#1050=ORIENTED_EDGE('',*,*,#784,.T.); +#1051=ORIENTED_EDGE('',*,*,#790,.F.); +#1052=ORIENTED_EDGE('',*,*,#763,.F.); +#1053=ORIENTED_EDGE('',*,*,#789,.F.); +#1054=ORIENTED_EDGE('',*,*,#753,.F.); +#1055=ORIENTED_EDGE('',*,*,#751,.F.); +#1056=ORIENTED_EDGE('',*,*,#764,.F.); +#1057=ORIENTED_EDGE('',*,*,#790,.T.); +#1058=ORIENTED_EDGE('',*,*,#783,.T.); +#1059=ORIENTED_EDGE('',*,*,#791,.F.); +#1060=ORIENTED_EDGE('',*,*,#755,.F.); +#1061=ORIENTED_EDGE('',*,*,#749,.F.); +#1062=ORIENTED_EDGE('',*,*,#792,.T.); +#1063=ORIENTED_EDGE('',*,*,#793,.T.); +#1064=ORIENTED_EDGE('',*,*,#759,.T.); +#1065=ORIENTED_EDGE('',*,*,#794,.T.); +#1066=ORIENTED_EDGE('',*,*,#794,.F.); +#1067=ORIENTED_EDGE('',*,*,#758,.F.); +#1068=ORIENTED_EDGE('',*,*,#795,.T.); +#1069=ORIENTED_EDGE('',*,*,#796,.T.); +#1070=ORIENTED_EDGE('',*,*,#793,.F.); +#1071=ORIENTED_EDGE('',*,*,#797,.F.); +#1072=ORIENTED_EDGE('',*,*,#696,.F.); +#1073=ORIENTED_EDGE('',*,*,#760,.T.); +#1074=ORIENTED_EDGE('',*,*,#782,.T.); +#1075=ORIENTED_EDGE('',*,*,#798,.T.); +#1076=ORIENTED_EDGE('',*,*,#799,.F.); +#1077=ORIENTED_EDGE('',*,*,#756,.F.); +#1078=ORIENTED_EDGE('',*,*,#791,.T.); +#1079=ORIENTED_EDGE('',*,*,#765,.F.); +#1080=ORIENTED_EDGE('',*,*,#800,.T.); +#1081=ORIENTED_EDGE('',*,*,#776,.T.); +#1082=ORIENTED_EDGE('',*,*,#800,.F.); +#1083=ORIENTED_EDGE('',*,*,#766,.F.); +#1084=ORIENTED_EDGE('',*,*,#801,.T.); +#1085=ORIENTED_EDGE('',*,*,#775,.T.); +#1086=ORIENTED_EDGE('',*,*,#801,.F.); +#1087=ORIENTED_EDGE('',*,*,#802,.F.); +#1088=ORIENTED_EDGE('',*,*,#803,.T.); +#1089=ORIENTED_EDGE('',*,*,#778,.T.); +#1090=ORIENTED_EDGE('',*,*,#803,.F.); +#1091=ORIENTED_EDGE('',*,*,#804,.F.); +#1092=ORIENTED_EDGE('',*,*,#805,.T.); +#1093=ORIENTED_EDGE('',*,*,#779,.T.); +#1094=ORIENTED_EDGE('',*,*,#805,.F.); +#1095=ORIENTED_EDGE('',*,*,#806,.T.); +#1096=ORIENTED_EDGE('',*,*,#807,.T.); +#1097=ORIENTED_EDGE('',*,*,#808,.T.); +#1098=ORIENTED_EDGE('',*,*,#809,.T.); +#1099=ORIENTED_EDGE('',*,*,#806,.F.); +#1100=ORIENTED_EDGE('',*,*,#810,.T.); +#1101=ORIENTED_EDGE('',*,*,#698,.F.); +#1102=ORIENTED_EDGE('',*,*,#811,.T.); +#1103=ORIENTED_EDGE('',*,*,#812,.F.); +#1104=ORIENTED_EDGE('',*,*,#809,.F.); +#1105=ORIENTED_EDGE('',*,*,#813,.T.); +#1106=ORIENTED_EDGE('',*,*,#699,.F.); +#1107=ORIENTED_EDGE('',*,*,#810,.F.); +#1108=ORIENTED_EDGE('',*,*,#814,.T.); +#1109=ORIENTED_EDGE('',*,*,#815,.T.); +#1110=ORIENTED_EDGE('',*,*,#816,.T.); +#1111=ORIENTED_EDGE('',*,*,#817,.T.); +#1112=ORIENTED_EDGE('',*,*,#817,.F.); +#1113=ORIENTED_EDGE('',*,*,#818,.F.); +#1114=ORIENTED_EDGE('',*,*,#819,.F.); +#1115=ORIENTED_EDGE('',*,*,#820,.T.); +#1116=ORIENTED_EDGE('',*,*,#815,.F.); +#1117=ORIENTED_EDGE('',*,*,#821,.F.); +#1118=ORIENTED_EDGE('',*,*,#701,.F.); +#1119=ORIENTED_EDGE('',*,*,#822,.T.); +#1120=ORIENTED_EDGE('',*,*,#814,.F.); +#1121=ORIENTED_EDGE('',*,*,#820,.F.); +#1122=ORIENTED_EDGE('',*,*,#823,.T.); +#1123=ORIENTED_EDGE('',*,*,#824,.F.); +#1124=ORIENTED_EDGE('',*,*,#825,.F.); +#1125=ORIENTED_EDGE('',*,*,#826,.F.); +#1126=ORIENTED_EDGE('',*,*,#827,.T.); +#1127=ORIENTED_EDGE('',*,*,#828,.F.); +#1128=ORIENTED_EDGE('',*,*,#829,.F.); +#1129=ORIENTED_EDGE('',*,*,#702,.F.); +#1130=ORIENTED_EDGE('',*,*,#821,.T.); +#1131=ORIENTED_EDGE('',*,*,#807,.F.); +#1132=ORIENTED_EDGE('',*,*,#812,.T.); +#1133=ORIENTED_EDGE('',*,*,#830,.T.); +#1134=ORIENTED_EDGE('',*,*,#831,.F.); +#1135=ORIENTED_EDGE('',*,*,#819,.T.); +#1136=ORIENTED_EDGE('',*,*,#832,.T.); +#1137=ORIENTED_EDGE('',*,*,#833,.F.); +#1138=ORIENTED_EDGE('',*,*,#823,.F.); +#1139=ORIENTED_EDGE('',*,*,#818,.T.); +#1140=ORIENTED_EDGE('',*,*,#816,.F.); +#1141=ORIENTED_EDGE('',*,*,#822,.F.); +#1142=ORIENTED_EDGE('',*,*,#700,.F.); +#1143=ORIENTED_EDGE('',*,*,#813,.F.); +#1144=ORIENTED_EDGE('',*,*,#808,.F.); +#1145=ORIENTED_EDGE('',*,*,#831,.T.); +#1146=ORIENTED_EDGE('',*,*,#834,.T.); +#1147=ORIENTED_EDGE('',*,*,#835,.T.); +#1148=ORIENTED_EDGE('',*,*,#836,.T.); +#1149=ORIENTED_EDGE('',*,*,#837,.T.); +#1150=ORIENTED_EDGE('',*,*,#832,.F.); +#1151=ORIENTED_EDGE('',*,*,#802,.T.); +#1152=ORIENTED_EDGE('',*,*,#804,.T.); +#1153=ORIENTED_EDGE('',*,*,#826,.T.); +#1154=ORIENTED_EDGE('',*,*,#838,.F.); +#1155=ORIENTED_EDGE('',*,*,#835,.F.); +#1156=ORIENTED_EDGE('',*,*,#839,.F.); +#1157=ORIENTED_EDGE('',*,*,#825,.T.); +#1158=ORIENTED_EDGE('',*,*,#840,.F.); +#1159=ORIENTED_EDGE('',*,*,#836,.F.); +#1160=ORIENTED_EDGE('',*,*,#838,.T.); +#1161=ORIENTED_EDGE('',*,*,#824,.T.); +#1162=ORIENTED_EDGE('',*,*,#833,.T.); +#1163=ORIENTED_EDGE('',*,*,#837,.F.); +#1164=ORIENTED_EDGE('',*,*,#840,.T.); +#1165=ORIENTED_EDGE('',*,*,#795,.F.); +#1166=ORIENTED_EDGE('',*,*,#757,.T.); +#1167=ORIENTED_EDGE('',*,*,#799,.T.); +#1168=ORIENTED_EDGE('',*,*,#841,.F.); +#1169=ORIENTED_EDGE('',*,*,#781,.T.); +#1170=ORIENTED_EDGE('',*,*,#842,.F.); +#1171=ORIENTED_EDGE('',*,*,#827,.F.); +#1172=ORIENTED_EDGE('',*,*,#843,.F.); +#1173=ORIENTED_EDGE('',*,*,#811,.F.); +#1174=ORIENTED_EDGE('',*,*,#697,.F.); +#1175=ORIENTED_EDGE('',*,*,#797,.T.); +#1176=ORIENTED_EDGE('',*,*,#792,.F.); +#1177=ORIENTED_EDGE('',*,*,#796,.F.); +#1178=ORIENTED_EDGE('',*,*,#841,.T.); +#1179=ORIENTED_EDGE('',*,*,#798,.F.); +#1180=ORIENTED_EDGE('',*,*,#830,.F.); +#1181=ORIENTED_EDGE('',*,*,#843,.T.); +#1182=ORIENTED_EDGE('',*,*,#839,.T.); +#1183=ORIENTED_EDGE('',*,*,#834,.F.); +#1184=ORIENTED_EDGE('',*,*,#829,.T.); +#1185=ORIENTED_EDGE('',*,*,#844,.F.); +#1186=ORIENTED_EDGE('',*,*,#845,.F.); +#1187=ORIENTED_EDGE('',*,*,#703,.F.); +#1188=ORIENTED_EDGE('',*,*,#689,.F.); +#1189=ORIENTED_EDGE('',*,*,#704,.F.); +#1190=ORIENTED_EDGE('',*,*,#845,.T.); +#1191=ORIENTED_EDGE('',*,*,#846,.F.); +#1192=ORIENTED_EDGE('',*,*,#787,.T.); +#1193=ORIENTED_EDGE('',*,*,#692,.F.); +#1194=ORIENTED_EDGE('',*,*,#737,.F.); +#1195=ORIENTED_EDGE('',*,*,#739,.T.); +#1196=ORIENTED_EDGE('',*,*,#743,.T.); +#1197=ORIENTED_EDGE('',*,*,#847,.F.); +#1198=ORIENTED_EDGE('',*,*,#741,.T.); +#1199=ORIENTED_EDGE('',*,*,#746,.T.); +#1200=ORIENTED_EDGE('',*,*,#686,.F.); +#1201=ORIENTED_EDGE('',*,*,#846,.T.); +#1202=ORIENTED_EDGE('',*,*,#844,.T.); +#1203=ORIENTED_EDGE('',*,*,#828,.T.); +#1204=ORIENTED_EDGE('',*,*,#842,.T.); +#1205=ORIENTED_EDGE('',*,*,#780,.T.); +#1206=ORIENTED_EDGE('',*,*,#847,.T.); +#1207=ORIENTED_EDGE('',*,*,#742,.T.); +#1208=ORIENTED_EDGE('',*,*,#705,.T.); +#1209=ORIENTED_EDGE('',*,*,#848,.F.); +#1210=ORIENTED_EDGE('',*,*,#849,.T.); +#1211=ORIENTED_EDGE('',*,*,#850,.F.); +#1212=ORIENTED_EDGE('',*,*,#851,.F.); +#1213=ORIENTED_EDGE('',*,*,#849,.F.); +#1214=ORIENTED_EDGE('',*,*,#852,.F.); +#1215=ORIENTED_EDGE('',*,*,#853,.F.); +#1216=ORIENTED_EDGE('',*,*,#854,.F.); +#1217=ORIENTED_EDGE('',*,*,#855,.F.); +#1218=ORIENTED_EDGE('',*,*,#856,.F.); +#1219=ORIENTED_EDGE('',*,*,#857,.F.); +#1220=ORIENTED_EDGE('',*,*,#858,.F.); +#1221=ORIENTED_EDGE('',*,*,#848,.T.); +#1222=ORIENTED_EDGE('',*,*,#859,.T.); +#1223=ORIENTED_EDGE('',*,*,#860,.T.); +#1224=ORIENTED_EDGE('',*,*,#861,.T.); +#1225=ORIENTED_EDGE('',*,*,#862,.F.); +#1226=ORIENTED_EDGE('',*,*,#863,.T.); +#1227=ORIENTED_EDGE('',*,*,#864,.T.); +#1228=ORIENTED_EDGE('',*,*,#865,.T.); +#1229=ORIENTED_EDGE('',*,*,#852,.T.); +#1230=ORIENTED_EDGE('',*,*,#866,.T.); +#1231=ORIENTED_EDGE('',*,*,#867,.T.); +#1232=ORIENTED_EDGE('',*,*,#862,.T.); +#1233=ORIENTED_EDGE('',*,*,#868,.T.); +#1234=ORIENTED_EDGE('',*,*,#867,.F.); +#1235=ORIENTED_EDGE('',*,*,#869,.F.); +#1236=ORIENTED_EDGE('',*,*,#870,.F.); +#1237=ORIENTED_EDGE('',*,*,#863,.F.); +#1238=ORIENTED_EDGE('',*,*,#871,.F.); +#1239=ORIENTED_EDGE('',*,*,#870,.T.); +#1240=ORIENTED_EDGE('',*,*,#872,.T.); +#1241=ORIENTED_EDGE('',*,*,#855,.T.); +#1242=ORIENTED_EDGE('',*,*,#858,.T.); +#1243=ORIENTED_EDGE('',*,*,#873,.F.); +#1244=ORIENTED_EDGE('',*,*,#874,.T.); +#1245=ORIENTED_EDGE('',*,*,#864,.F.); +#1246=ORIENTED_EDGE('',*,*,#871,.T.); +#1247=ORIENTED_EDGE('',*,*,#857,.T.); +#1248=ORIENTED_EDGE('',*,*,#875,.F.); +#1249=ORIENTED_EDGE('',*,*,#876,.F.); +#1250=ORIENTED_EDGE('',*,*,#873,.T.); +#1251=ORIENTED_EDGE('',*,*,#856,.T.); +#1252=ORIENTED_EDGE('',*,*,#872,.F.); +#1253=ORIENTED_EDGE('',*,*,#877,.F.); +#1254=ORIENTED_EDGE('',*,*,#878,.F.); +#1255=ORIENTED_EDGE('',*,*,#875,.T.); +#1256=ORIENTED_EDGE('',*,*,#859,.F.); +#1257=ORIENTED_EDGE('',*,*,#851,.T.); +#1258=ORIENTED_EDGE('',*,*,#879,.F.); +#1259=ORIENTED_EDGE('',*,*,#880,.F.); +#1260=ORIENTED_EDGE('',*,*,#880,.T.); +#1261=ORIENTED_EDGE('',*,*,#881,.F.); +#1262=ORIENTED_EDGE('',*,*,#882,.F.); +#1263=ORIENTED_EDGE('',*,*,#860,.F.); +#1264=ORIENTED_EDGE('',*,*,#868,.F.); +#1265=ORIENTED_EDGE('',*,*,#861,.F.); +#1266=ORIENTED_EDGE('',*,*,#882,.T.); +#1267=ORIENTED_EDGE('',*,*,#883,.F.); +#1268=ORIENTED_EDGE('',*,*,#853,.T.); +#1269=ORIENTED_EDGE('',*,*,#865,.F.); +#1270=ORIENTED_EDGE('',*,*,#874,.F.); +#1271=ORIENTED_EDGE('',*,*,#876,.T.); +#1272=ORIENTED_EDGE('',*,*,#878,.T.); +#1273=ORIENTED_EDGE('',*,*,#884,.F.); +#1274=ORIENTED_EDGE('',*,*,#866,.F.); +#1275=ORIENTED_EDGE('',*,*,#883,.T.); +#1276=ORIENTED_EDGE('',*,*,#881,.T.); +#1277=ORIENTED_EDGE('',*,*,#879,.T.); +#1278=ORIENTED_EDGE('',*,*,#850,.T.); +#1279=ORIENTED_EDGE('',*,*,#854,.T.); +#1280=ORIENTED_EDGE('',*,*,#884,.T.); +#1281=ORIENTED_EDGE('',*,*,#877,.T.); +#1282=ORIENTED_EDGE('',*,*,#869,.T.); +#1283=CYLINDRICAL_SURFACE('',#1400,3.); +#1284=CYLINDRICAL_SURFACE('',#1406,1.); +#1285=CYLINDRICAL_SURFACE('',#1410,1.); +#1286=CYLINDRICAL_SURFACE('',#1417,10.); +#1287=CYLINDRICAL_SURFACE('',#1420,10.); +#1288=CYLINDRICAL_SURFACE('',#1423,15.); +#1289=CYLINDRICAL_SURFACE('',#1425,2.75); +#1290=CYLINDRICAL_SURFACE('',#1428,2.74999999999999); +#1291=CYLINDRICAL_SURFACE('',#1443,5.); +#1292=CYLINDRICAL_SURFACE('',#1461,1.); +#1293=CYLINDRICAL_SURFACE('',#1462,12.49984999932); +#1294=CYLINDRICAL_SURFACE('',#1464,1.); +#1295=CYLINDRICAL_SURFACE('',#1466,12.49984999932); +#1296=CYLINDRICAL_SURFACE('',#1469,12.49984999932); +#1297=CYLINDRICAL_SURFACE('',#1471,1.6); +#1298=CYLINDRICAL_SURFACE('',#1472,1.6); +#1299=CYLINDRICAL_SURFACE('',#1473,1.6); +#1300=CYLINDRICAL_SURFACE('',#1475,1.6); +#1301=CYLINDRICAL_SURFACE('',#1477,1.); +#1302=CYLINDRICAL_SURFACE('',#1483,1.); +#1303=CYLINDRICAL_SURFACE('',#1486,5.49995495031771); +#1304=CYLINDRICAL_SURFACE('',#1493,5.49995495298887); +#1305=CYLINDRICAL_SURFACE('',#1499,5.49995495298887); +#1306=CYLINDRICAL_SURFACE('',#1501,5.49995495031771); +#1307=CYLINDRICAL_SURFACE('',#1505,2.00000000000003); +#1308=CYLINDRICAL_SURFACE('',#1517,3.); +#1309=CYLINDRICAL_SURFACE('',#1520,10.); +#1310=CYLINDRICAL_SURFACE('',#1524,15.); +#1311=CYLINDRICAL_SURFACE('',#1528,2.00000000000003); +#1312=ADVANCED_FACE('',(#101),#1283,.T.); +#1313=ADVANCED_FACE('',(#102),#62,.F.); +#1314=ADVANCED_FACE('',(#103),#63,.T.); +#1315=ADVANCED_FACE('',(#104),#1284,.F.); +#1316=ADVANCED_FACE('',(#105),#58,.T.); +#1317=ADVANCED_FACE('',(#106),#1285,.F.); +#1318=ADVANCED_FACE('',(#107,#38),#64,.T.); +#1319=ADVANCED_FACE('',(#108),#65,.F.); +#1320=ADVANCED_FACE('',(#109),#1286,.F.); +#1321=ADVANCED_FACE('',(#110),#1287,.F.); +#1322=ADVANCED_FACE('',(#111),#66,.T.); +#1323=ADVANCED_FACE('',(#112),#1288,.T.); +#1324=ADVANCED_FACE('',(#113),#1289,.F.); +#1325=ADVANCED_FACE('',(#114),#67,.T.); +#1326=ADVANCED_FACE('',(#115),#1290,.F.); +#1327=ADVANCED_FACE('',(#116),#59,.F.); +#1328=ADVANCED_FACE('',(#117),#60,.F.); +#1329=ADVANCED_FACE('',(#118,#39,#40),#68,.T.); +#1330=ADVANCED_FACE('',(#119),#1291,.F.); +#1331=ADVANCED_FACE('',(#120),#61,.F.); +#1332=ADVANCED_FACE('',(#121,#41,#42),#69,.F.); +#1333=ADVANCED_FACE('',(#122,#43),#70,.F.); +#1334=ADVANCED_FACE('',(#123),#71,.F.); +#1335=ADVANCED_FACE('',(#124,#44,#45),#72,.F.); +#1336=ADVANCED_FACE('',(#125),#73,.F.); +#1337=ADVANCED_FACE('',(#126),#74,.F.); +#1338=ADVANCED_FACE('',(#127),#1292,.T.); +#1339=ADVANCED_FACE('',(#128),#1293,.F.); +#1340=ADVANCED_FACE('',(#129),#75,.T.); +#1341=ADVANCED_FACE('',(#130),#1294,.T.); +#1342=ADVANCED_FACE('',(#131),#1295,.F.); +#1343=ADVANCED_FACE('',(#132),#76,.F.); +#1344=ADVANCED_FACE('',(#133),#1296,.F.); +#1345=ADVANCED_FACE('',(#134),#1297,.F.); +#1346=ADVANCED_FACE('',(#135),#1298,.F.); +#1347=ADVANCED_FACE('',(#136),#1299,.F.); +#1348=ADVANCED_FACE('',(#137),#1300,.F.); +#1349=ADVANCED_FACE('',(#138),#1301,.T.); +#1350=ADVANCED_FACE('',(#139),#77,.T.); +#1351=ADVANCED_FACE('',(#140),#78,.F.); +#1352=ADVANCED_FACE('',(#141),#1302,.T.); +#1353=ADVANCED_FACE('',(#142),#1303,.F.); +#1354=ADVANCED_FACE('',(#143),#79,.F.); +#1355=ADVANCED_FACE('',(#144),#80,.T.); +#1356=ADVANCED_FACE('',(#145),#1304,.F.); +#1357=ADVANCED_FACE('',(#146),#81,.T.); +#1358=ADVANCED_FACE('',(#147,#46,#47),#82,.T.); +#1359=ADVANCED_FACE('',(#148),#1305,.F.); +#1360=ADVANCED_FACE('',(#149),#83,.T.); +#1361=ADVANCED_FACE('',(#150),#1306,.F.); +#1362=ADVANCED_FACE('',(#151),#84,.T.); +#1363=ADVANCED_FACE('',(#152),#85,.T.); +#1364=ADVANCED_FACE('',(#153),#86,.T.); +#1365=ADVANCED_FACE('',(#154),#1307,.T.); +#1366=ADVANCED_FACE('',(#155),#87,.T.); +#1367=ADVANCED_FACE('',(#156,#48,#49),#88,.T.); +#1368=ADVANCED_FACE('',(#157),#89,.T.); +#1369=ADVANCED_FACE('',(#158),#90,.T.); +#1370=ADVANCED_FACE('',(#159),#91,.F.); +#1371=ADVANCED_FACE('',(#160),#92,.T.); +#1372=ADVANCED_FACE('',(#161),#93,.F.); +#1373=ADVANCED_FACE('',(#162),#1308,.T.); +#1374=ADVANCED_FACE('',(#163),#94,.T.); +#1375=ADVANCED_FACE('',(#164),#1309,.F.); +#1376=ADVANCED_FACE('',(#165),#95,.T.); +#1377=ADVANCED_FACE('',(#166),#1310,.T.); +#1378=ADVANCED_FACE('',(#167),#96,.T.); +#1379=ADVANCED_FACE('',(#168),#97,.T.); +#1380=ADVANCED_FACE('',(#169),#1311,.T.); +#1381=ADVANCED_FACE('',(#170),#98,.T.); +#1382=ADVANCED_FACE('',(#171),#99,.T.); +#1383=ADVANCED_FACE('',(#172),#100,.T.); +#1384=CLOSED_SHELL('',(#1312,#1313,#1314,#1315,#1316,#1317,#1318,#1319, +#1320,#1321,#1322,#1323,#1324,#1325,#1326,#1327,#1328,#1329,#1330,#1331, +#1332,#1333,#1334,#1335,#1336,#1337,#1338,#1339,#1340,#1341,#1342,#1343, +#1344,#1345,#1346,#1347,#1348,#1349,#1350,#1351,#1352,#1353,#1354,#1355, +#1356,#1357,#1358,#1359,#1360,#1361,#1362,#1363,#1364,#1365,#1366,#1367, +#1368)); +#1385=CLOSED_SHELL('',(#1369,#1370,#1371,#1372,#1373,#1374,#1375,#1376, +#1377,#1378,#1379,#1380,#1381,#1382,#1383)); +#1386=DERIVED_UNIT_ELEMENT(#1388,1.); +#1387=DERIVED_UNIT_ELEMENT(#2703,3.); +#1388=( +MASS_UNIT() +NAMED_UNIT(*) +SI_UNIT(.KILO.,.GRAM.) +); +#1389=DERIVED_UNIT((#1386,#1387)); +#1390=MEASURE_REPRESENTATION_ITEM('density measure', +POSITIVE_RATIO_MEASURE(7850.),#1389); +#1391=PROPERTY_DEFINITION_REPRESENTATION(#1396,#1393); +#1392=PROPERTY_DEFINITION_REPRESENTATION(#1397,#1394); +#1393=REPRESENTATION('material name',(#1395),#2700); +#1394=REPRESENTATION('density',(#1390),#2700); +#1395=DESCRIPTIVE_REPRESENTATION_ITEM('\X2\92FC\X0\','\X2\92FC\X0\'); +#1396=PROPERTY_DEFINITION('material property','material name',#2715); +#1397=PROPERTY_DEFINITION('material property','density of part',#2715); +#1398=AXIS2_PLACEMENT_3D('placement',#1932,#1534,#1535); +#1399=AXIS2_PLACEMENT_3D('placement',#1933,#1536,#1537); +#1400=AXIS2_PLACEMENT_3D('',#1934,#1538,#1539); +#1401=AXIS2_PLACEMENT_3D('',#1937,#1540,#1541); +#1402=AXIS2_PLACEMENT_3D('',#1941,#1543,#1544); +#1403=AXIS2_PLACEMENT_3D('',#1943,#1546,#1547); +#1404=AXIS2_PLACEMENT_3D('',#1971,#1561,#1562); +#1405=AXIS2_PLACEMENT_3D('',#1973,#1564,#1565); +#1406=AXIS2_PLACEMENT_3D('',#1985,#1572,#1573); +#1407=AXIS2_PLACEMENT_3D('',#1988,#1574,#1575); +#1408=AXIS2_PLACEMENT_3D('',#1992,#1577,#1578); +#1409=AXIS2_PLACEMENT_3D('',#2021,#1580,#1581); +#1410=AXIS2_PLACEMENT_3D('',#2037,#1582,#1583); +#1411=AXIS2_PLACEMENT_3D('',#2040,#1584,#1585); +#1412=AXIS2_PLACEMENT_3D('',#2043,#1588,#1589); +#1413=AXIS2_PLACEMENT_3D('',#2051,#1593,#1594); +#1414=AXIS2_PLACEMENT_3D('',#2058,#1598,#1599); +#1415=AXIS2_PLACEMENT_3D('',#2059,#1600,#1601); +#1416=AXIS2_PLACEMENT_3D('',#2063,#1604,#1605); +#1417=AXIS2_PLACEMENT_3D('',#2064,#1606,#1607); +#1418=AXIS2_PLACEMENT_3D('',#2065,#1608,#1609); +#1419=AXIS2_PLACEMENT_3D('',#2066,#1610,#1611); +#1420=AXIS2_PLACEMENT_3D('',#2067,#1612,#1613); +#1421=AXIS2_PLACEMENT_3D('',#2068,#1614,#1615); +#1422=AXIS2_PLACEMENT_3D('',#2069,#1616,#1617); +#1423=AXIS2_PLACEMENT_3D('',#2073,#1620,#1621); +#1424=AXIS2_PLACEMENT_3D('',#2076,#1623,#1624); +#1425=AXIS2_PLACEMENT_3D('',#2077,#1625,#1626); +#1426=AXIS2_PLACEMENT_3D('',#2080,#1628,#1629); +#1427=AXIS2_PLACEMENT_3D('',#2081,#1630,#1631); +#1428=AXIS2_PLACEMENT_3D('',#2085,#1634,#1635); +#1429=AXIS2_PLACEMENT_3D('',#2087,#1636,#1637); +#1430=AXIS2_PLACEMENT_3D('',#2090,#1639,#1640); +#1431=AXIS2_PLACEMENT_3D('',#2191,#1641,#1642); +#1432=AXIS2_PLACEMENT_3D('',#2213,#1643,#1644); +#1433=AXIS2_PLACEMENT_3D('',#2293,#1645,#1646); +#1434=AXIS2_PLACEMENT_3D('',#2294,#1647,#1648); +#1435=AXIS2_PLACEMENT_3D('',#2295,#1649,#1650); +#1436=AXIS2_PLACEMENT_3D('',#2299,#1652,#1653); +#1437=AXIS2_PLACEMENT_3D('',#2303,#1655,#1656); +#1438=AXIS2_PLACEMENT_3D('',#2305,#1657,#1658); +#1439=AXIS2_PLACEMENT_3D('',#2310,#1661,#1662); +#1440=AXIS2_PLACEMENT_3D('',#2312,#1663,#1664); +#1441=AXIS2_PLACEMENT_3D('',#2315,#1666,#1667); +#1442=AXIS2_PLACEMENT_3D('',#2317,#1668,#1669); +#1443=AXIS2_PLACEMENT_3D('',#2318,#1670,#1671); +#1444=AXIS2_PLACEMENT_3D('',#2320,#1672,#1673); +#1445=AXIS2_PLACEMENT_3D('',#2323,#1675,#1676); +#1446=AXIS2_PLACEMENT_3D('',#2324,#1677,#1678); +#1447=AXIS2_PLACEMENT_3D('',#2458,#1679,#1680); +#1448=AXIS2_PLACEMENT_3D('',#2466,#1681,#1682); +#1449=AXIS2_PLACEMENT_3D('',#2471,#1685,#1686); +#1450=AXIS2_PLACEMENT_3D('',#2473,#1687,#1688); +#1451=AXIS2_PLACEMENT_3D('',#2474,#1689,#1690); +#1452=AXIS2_PLACEMENT_3D('',#2475,#1691,#1692); +#1453=AXIS2_PLACEMENT_3D('',#2477,#1694,#1695); +#1454=AXIS2_PLACEMENT_3D('',#2479,#1696,#1697); +#1455=AXIS2_PLACEMENT_3D('',#2481,#1698,#1699); +#1456=AXIS2_PLACEMENT_3D('',#2482,#1700,#1701); +#1457=AXIS2_PLACEMENT_3D('',#2489,#1704,#1705); +#1458=AXIS2_PLACEMENT_3D('',#2493,#1707,#1708); +#1459=AXIS2_PLACEMENT_3D('',#2495,#1709,#1710); +#1460=AXIS2_PLACEMENT_3D('',#2498,#1713,#1714); +#1461=AXIS2_PLACEMENT_3D('',#2500,#1716,#1717); +#1462=AXIS2_PLACEMENT_3D('',#2502,#1719,#1720); +#1463=AXIS2_PLACEMENT_3D('',#2504,#1722,#1723); +#1464=AXIS2_PLACEMENT_3D('',#2506,#1725,#1726); +#1465=AXIS2_PLACEMENT_3D('',#2509,#1727,#1728); +#1466=AXIS2_PLACEMENT_3D('',#2512,#1731,#1732); +#1467=AXIS2_PLACEMENT_3D('',#2515,#1734,#1735); +#1468=AXIS2_PLACEMENT_3D('',#2516,#1736,#1737); +#1469=AXIS2_PLACEMENT_3D('',#2518,#1739,#1740); +#1470=AXIS2_PLACEMENT_3D('',#2520,#1741,#1742); +#1471=AXIS2_PLACEMENT_3D('',#2522,#1744,#1745); +#1472=AXIS2_PLACEMENT_3D('',#2524,#1747,#1748); +#1473=AXIS2_PLACEMENT_3D('',#2526,#1750,#1751); +#1474=AXIS2_PLACEMENT_3D('',#2528,#1752,#1753); +#1475=AXIS2_PLACEMENT_3D('',#2530,#1755,#1756); +#1476=AXIS2_PLACEMENT_3D('',#2532,#1757,#1758); +#1477=AXIS2_PLACEMENT_3D('',#2534,#1760,#1761); +#1478=AXIS2_PLACEMENT_3D('',#2537,#1762,#1763); +#1479=AXIS2_PLACEMENT_3D('',#2541,#1765,#1766); +#1480=AXIS2_PLACEMENT_3D('',#2543,#1768,#1769); +#1481=AXIS2_PLACEMENT_3D('',#2547,#1772,#1773); +#1482=AXIS2_PLACEMENT_3D('',#2548,#1774,#1775); +#1483=AXIS2_PLACEMENT_3D('',#2550,#1777,#1778); +#1484=AXIS2_PLACEMENT_3D('',#2553,#1779,#1780); +#1485=AXIS2_PLACEMENT_3D('',#2557,#1782,#1783); +#1486=AXIS2_PLACEMENT_3D('',#2559,#1785,#1786); +#1487=AXIS2_PLACEMENT_3D('',#2561,#1787,#1788); +#1488=AXIS2_PLACEMENT_3D('',#2564,#1790,#1791); +#1489=AXIS2_PLACEMENT_3D('',#2565,#1792,#1793); +#1490=AXIS2_PLACEMENT_3D('',#2568,#1796,#1797); +#1491=AXIS2_PLACEMENT_3D('',#2572,#1799,#1800); +#1492=AXIS2_PLACEMENT_3D('',#2576,#1802,#1803); +#1493=AXIS2_PLACEMENT_3D('',#2582,#1807,#1808); +#1494=AXIS2_PLACEMENT_3D('',#2585,#1810,#1811); +#1495=AXIS2_PLACEMENT_3D('',#2586,#1812,#1813); +#1496=AXIS2_PLACEMENT_3D('',#2590,#1816,#1817); +#1497=AXIS2_PLACEMENT_3D('',#2594,#1819,#1820); +#1498=AXIS2_PLACEMENT_3D('',#2597,#1822,#1823); +#1499=AXIS2_PLACEMENT_3D('',#2598,#1824,#1825); +#1500=AXIS2_PLACEMENT_3D('',#2601,#1828,#1829); +#1501=AXIS2_PLACEMENT_3D('',#2603,#1831,#1832); +#1502=AXIS2_PLACEMENT_3D('',#2604,#1833,#1834); +#1503=AXIS2_PLACEMENT_3D('',#2606,#1836,#1837); +#1504=AXIS2_PLACEMENT_3D('',#2609,#1840,#1841); +#1505=AXIS2_PLACEMENT_3D('',#2610,#1842,#1843); +#1506=AXIS2_PLACEMENT_3D('',#2612,#1844,#1845); +#1507=AXIS2_PLACEMENT_3D('',#2614,#1847,#1848); +#1508=AXIS2_PLACEMENT_3D('',#2616,#1850,#1851); +#1509=AXIS2_PLACEMENT_3D('',#2618,#1853,#1854); +#1510=AXIS2_PLACEMENT_3D('',#2619,#1855,#1856); +#1511=AXIS2_PLACEMENT_3D('',#2628,#1861,#1862); +#1512=AXIS2_PLACEMENT_3D('',#2634,#1866,#1867); +#1513=AXIS2_PLACEMENT_3D('',#2641,#1870,#1871); +#1514=AXIS2_PLACEMENT_3D('',#2643,#1873,#1874); +#1515=AXIS2_PLACEMENT_3D('',#2647,#1876,#1877); +#1516=AXIS2_PLACEMENT_3D('',#2651,#1879,#1880); +#1517=AXIS2_PLACEMENT_3D('',#2657,#1884,#1885); +#1518=AXIS2_PLACEMENT_3D('',#2660,#1886,#1887); +#1519=AXIS2_PLACEMENT_3D('',#2663,#1890,#1891); +#1520=AXIS2_PLACEMENT_3D('',#2667,#1894,#1895); +#1521=AXIS2_PLACEMENT_3D('',#2668,#1896,#1897); +#1522=AXIS2_PLACEMENT_3D('',#2669,#1898,#1899); +#1523=AXIS2_PLACEMENT_3D('',#2670,#1900,#1901); +#1524=AXIS2_PLACEMENT_3D('',#2674,#1904,#1905); +#1525=AXIS2_PLACEMENT_3D('',#2677,#1907,#1908); +#1526=AXIS2_PLACEMENT_3D('',#2678,#1909,#1910); +#1527=AXIS2_PLACEMENT_3D('',#2682,#1913,#1914); +#1528=AXIS2_PLACEMENT_3D('',#2686,#1917,#1918); +#1529=AXIS2_PLACEMENT_3D('',#2688,#1919,#1920); +#1530=AXIS2_PLACEMENT_3D('',#2690,#1922,#1923); +#1531=AXIS2_PLACEMENT_3D('',#2692,#1925,#1926); +#1532=AXIS2_PLACEMENT_3D('',#2694,#1928,#1929); +#1533=AXIS2_PLACEMENT_3D('',#2695,#1930,#1931); +#1534=DIRECTION('axis',(0.,0.,1.)); +#1535=DIRECTION('refdir',(1.,0.,0.)); +#1536=DIRECTION('axis',(0.,0.,1.)); +#1537=DIRECTION('refdir',(1.,0.,0.)); +#1538=DIRECTION('center_axis',(0.,1.,0.)); +#1539=DIRECTION('ref_axis',(-0.707106781186548,0.,0.707106781186548)); +#1540=DIRECTION('center_axis',(0.,-1.,0.)); +#1541=DIRECTION('ref_axis',(-0.707106781186548,0.,0.707106781186548)); +#1542=DIRECTION('',(0.,-1.,0.)); +#1543=DIRECTION('center_axis',(0.,1.,0.)); +#1544=DIRECTION('ref_axis',(-0.707106781186548,0.,0.707106781186548)); +#1545=DIRECTION('',(0.,1.,0.)); +#1546=DIRECTION('center_axis',(0.,1.,0.)); +#1547=DIRECTION('ref_axis',(1.,0.,0.)); +#1548=DIRECTION('',(-1.54575763114686E-15,0.,-1.)); +#1549=DIRECTION('',(-1.54575763114686E-15,0.,-1.)); +#1550=DIRECTION('',(1.,0.,0.)); +#1551=DIRECTION('',(0.,0.,1.)); +#1552=DIRECTION('',(-0.866025394098487,0.,0.500000016776559)); +#1553=DIRECTION('',(0.500000016776559,0.,0.866025394098488)); +#1554=DIRECTION('',(0.866025394098487,0.,-0.500000016776559)); +#1555=DIRECTION('',(-0.0931046021435058,0.,0.99565633280751)); +#1556=DIRECTION('',(-0.500000000000289,0.,0.866025403784272)); +#1557=DIRECTION('',(-0.866025403784271,0.,-0.500000000000291)); +#1558=DIRECTION('',(-0.500000000000027,0.,0.866025403784423)); +#1559=DIRECTION('',(0.866025403784271,0.,0.500000000000291)); +#1560=DIRECTION('',(-0.500000000000289,0.,0.866025403784272)); +#1561=DIRECTION('center_axis',(0.,-1.,0.)); +#1562=DIRECTION('ref_axis',(0.,0.,1.)); +#1563=DIRECTION('',(-1.,0.,-5.67710822175113E-15)); +#1564=DIRECTION('center_axis',(-1.,0.,1.54575763114686E-15)); +#1565=DIRECTION('ref_axis',(1.54575763114686E-15,0.,1.)); +#1566=DIRECTION('',(1.54575763114686E-15,0.,1.)); +#1567=DIRECTION('',(0.,1.,0.)); +#1568=DIRECTION('',(1.54575763114686E-15,0.,1.)); +#1569=DIRECTION('',(0.,-1.,0.)); +#1570=DIRECTION('',(-1.54575763114686E-15,0.,-1.)); +#1571=DIRECTION('',(0.,1.,0.)); +#1572=DIRECTION('center_axis',(0.,1.,0.)); +#1573=DIRECTION('ref_axis',(0.499999991611743,0.,-0.866025408627401)); +#1574=DIRECTION('center_axis',(0.,1.,0.)); +#1575=DIRECTION('ref_axis',(0.499999991611743,0.,-0.866025408627401)); +#1576=DIRECTION('',(0.,1.,0.)); +#1577=DIRECTION('center_axis',(0.,1.,0.)); +#1578=DIRECTION('ref_axis',(0.866025394098513,0.,-0.500000016776516)); +#1579=DIRECTION('',(0.,-1.,0.)); +#1580=DIRECTION('center_axis',(-4.48691298507845E-15,1.,0.)); +#1581=DIRECTION('ref_axis',(0.866025394098433,3.88578058618794E-15,-0.500000016776653)); +#1582=DIRECTION('center_axis',(0.,1.,0.)); +#1583=DIRECTION('ref_axis',(0.499999991611743,0.,-0.866025408627401)); +#1584=DIRECTION('center_axis',(0.,-1.,0.)); +#1585=DIRECTION('ref_axis',(0.499999991611743,0.,-0.866025408627401)); +#1586=DIRECTION('',(0.,-1.,0.)); +#1587=DIRECTION('',(0.,1.,0.)); +#1588=DIRECTION('center_axis',(0.,0.,1.)); +#1589=DIRECTION('ref_axis',(1.,0.,0.)); +#1590=DIRECTION('',(-1.,0.,0.)); +#1591=DIRECTION('',(0.,-1.,0.)); +#1592=DIRECTION('',(0.906007180030929,0.423262317874394,0.)); +#1593=DIRECTION('center_axis',(0.,0.,-1.)); +#1594=DIRECTION('ref_axis',(1.,0.,0.)); +#1595=DIRECTION('',(-0.906007180030929,0.423262317874394,0.)); +#1596=DIRECTION('',(0.,-1.,0.)); +#1597=DIRECTION('',(1.,0.,0.)); +#1598=DIRECTION('center_axis',(0.,0.,1.)); +#1599=DIRECTION('ref_axis',(1.,0.,0.)); +#1600=DIRECTION('center_axis',(0.,1.,0.)); +#1601=DIRECTION('ref_axis',(0.,0.,1.)); +#1602=DIRECTION('',(-0.500000016776559,0.,-0.866025394098487)); +#1603=DIRECTION('',(0.500000000000025,0.,-0.866025403784424)); +#1604=DIRECTION('center_axis',(0.,-1.,0.)); +#1605=DIRECTION('ref_axis',(0.707106781186547,0.,-0.707106781186547)); +#1606=DIRECTION('center_axis',(0.,-1.,0.)); +#1607=DIRECTION('ref_axis',(0.707106781186547,0.,-0.707106781186547)); +#1608=DIRECTION('center_axis',(-0.423262317874394,-0.906007180030929,0.)); +#1609=DIRECTION('ref_axis',(0.906007180030929,-0.423262317874394,0.)); +#1610=DIRECTION('center_axis',(0.,1.,0.)); +#1611=DIRECTION('ref_axis',(0.707106781186547,0.,-0.707106781186547)); +#1612=DIRECTION('center_axis',(0.,-1.,0.)); +#1613=DIRECTION('ref_axis',(0.707106781186547,0.,-0.707106781186547)); +#1614=DIRECTION('center_axis',(-0.423262317874394,0.906007180030929,0.)); +#1615=DIRECTION('ref_axis',(0.906007180030929,0.423262317874394,0.)); +#1616=DIRECTION('center_axis',(-0.423262317874394,-0.906007180030929,0.)); +#1617=DIRECTION('ref_axis',(0.906007180030929,-0.423262317874394,0.)); +#1618=DIRECTION('',(0.,0.,1.)); +#1619=DIRECTION('',(0.906007180030929,-0.423262317874394,0.)); +#1620=DIRECTION('center_axis',(0.,0.,1.)); +#1621=DIRECTION('ref_axis',(-1.,1.01064309961486E-15,0.)); +#1622=DIRECTION('',(0.,0.,1.)); +#1623=DIRECTION('center_axis',(0.,0.,-1.)); +#1624=DIRECTION('ref_axis',(1.,0.,0.)); +#1625=DIRECTION('center_axis',(0.,0.,1.)); +#1626=DIRECTION('ref_axis',(1.,0.,0.)); +#1627=DIRECTION('',(0.,0.,-1.)); +#1628=DIRECTION('center_axis',(0.,0.,1.)); +#1629=DIRECTION('ref_axis',(1.,0.,0.)); +#1630=DIRECTION('center_axis',(-0.423262317874394,0.906007180030929,0.)); +#1631=DIRECTION('ref_axis',(-0.906007180030929,-0.423262317874394,0.)); +#1632=DIRECTION('',(1.54575763114686E-15,0.,1.)); +#1633=DIRECTION('',(0.906007180030929,0.423262317874394,0.)); +#1634=DIRECTION('center_axis',(0.,0.,-1.)); +#1635=DIRECTION('ref_axis',(-1.,0.,0.)); +#1636=DIRECTION('center_axis',(0.,0.,-1.)); +#1637=DIRECTION('ref_axis',(-1.,0.,0.)); +#1638=DIRECTION('',(0.,0.,-1.)); +#1639=DIRECTION('center_axis',(0.,0.,1.)); +#1640=DIRECTION('ref_axis',(-1.,0.,0.)); +#1641=DIRECTION('center_axis',(0.901127106201315,0.,-0.433555000512328)); +#1642=DIRECTION('ref_axis',(0.433555000512328,0.,0.901127106201315)); +#1643=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1644=DIRECTION('ref_axis',(0.500000016776559,0.,0.866025394098488)); +#1645=DIRECTION('center_axis',(0.499999941816597,0.,0.866025437376639)); +#1646=DIRECTION('ref_axis',(0.866025437376639,0.,-0.499999941816597)); +#1647=DIRECTION('center_axis',(-0.569494737748534,0.,-0.821994977890211)); +#1648=DIRECTION('ref_axis',(0.821994977890211,0.,-0.569494737748534)); +#1649=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1650=DIRECTION('ref_axis',(-0.500000016776559,0.,-0.866025394098488)); +#1651=DIRECTION('',(0.,1.,0.)); +#1652=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1653=DIRECTION('ref_axis',(-0.50000001675636,8.98853440072772E-6,-0.866025394063503)); +#1654=DIRECTION('',(0.,1.,0.)); +#1655=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1656=DIRECTION('ref_axis',(-0.50000001675636,-8.98853440072772E-6,-0.866025394063503)); +#1657=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1658=DIRECTION('ref_axis',(-0.476290876230106,0.304282871310222,-0.824959959905428)); +#1659=DIRECTION('',(0.,1.,0.)); +#1660=DIRECTION('',(2.88440758469984E-15,-1.,-1.665313569981E-15)); +#1661=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1662=DIRECTION('ref_axis',(0.476290876230105,0.304282871310231,0.824959959905425)); +#1663=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1664=DIRECTION('ref_axis',(-0.50000001675636,-8.98853440072772E-6,-0.866025394063503)); +#1665=DIRECTION('',(0.,1.,0.)); +#1666=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1667=DIRECTION('ref_axis',(0.,1.,0.)); +#1668=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1669=DIRECTION('ref_axis',(0.,1.,0.)); +#1670=DIRECTION('center_axis',(0.,0.,1.)); +#1671=DIRECTION('ref_axis',(1.,0.,0.)); +#1672=DIRECTION('center_axis',(0.,0.,-1.)); +#1673=DIRECTION('ref_axis',(1.,0.,0.)); +#1674=DIRECTION('',(0.,0.,1.)); +#1675=DIRECTION('center_axis',(0.901127106201315,0.,-0.433555000512328)); +#1676=DIRECTION('ref_axis',(0.433555000512328,0.,0.901127106201315)); +#1677=DIRECTION('center_axis',(0.901127106201315,0.,-0.433555000512328)); +#1678=DIRECTION('ref_axis',(0.433555000512328,0.,0.901127106201315)); +#1679=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1680=DIRECTION('ref_axis',(0.500000016776559,0.,0.866025394098488)); +#1681=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1682=DIRECTION('ref_axis',(-0.500000016776559,0.,-0.866025394098487)); +#1683=DIRECTION('',(0.500000016776559,0.,0.866025394098487)); +#1684=DIRECTION('',(0.,1.,0.)); +#1685=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1686=DIRECTION('ref_axis',(0.,1.,0.)); +#1687=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1688=DIRECTION('ref_axis',(0.,1.,0.)); +#1689=DIRECTION('center_axis',(0.,0.,-1.)); +#1690=DIRECTION('ref_axis',(1.,0.,0.)); +#1691=DIRECTION('center_axis',(0.,-1.,0.)); +#1692=DIRECTION('ref_axis',(0.,0.,-1.)); +#1693=DIRECTION('',(-0.500000000000025,0.,0.866025403784424)); +#1694=DIRECTION('center_axis',(0.866025403784424,0.,0.500000000000025)); +#1695=DIRECTION('ref_axis',(0.500000000000025,0.,-0.866025403784424)); +#1696=DIRECTION('center_axis',(-0.866025403784424,0.,-0.500000000000025)); +#1697=DIRECTION('ref_axis',(0.,1.,0.)); +#1698=DIRECTION('center_axis',(-0.866025403784424,0.,-0.500000000000025)); +#1699=DIRECTION('ref_axis',(0.,1.,0.)); +#1700=DIRECTION('center_axis',(-1.,0.,0.)); +#1701=DIRECTION('ref_axis',(0.,2.4671622769448E-16,1.)); +#1702=DIRECTION('',(0.,0.,-1.)); +#1703=DIRECTION('',(0.,1.,0.)); +#1704=DIRECTION('center_axis',(1.,0.,0.)); +#1705=DIRECTION('ref_axis',(0.,-5.86848675784281E-21,-1.)); +#1706=DIRECTION('',(0.,1.,0.)); +#1707=DIRECTION('center_axis',(1.,0.,0.)); +#1708=DIRECTION('ref_axis',(0.,5.86848675784281E-21,-1.)); +#1709=DIRECTION('center_axis',(-1.,0.,0.)); +#1710=DIRECTION('ref_axis',(4.57128594602323E-18,-3.00462916386943E-17, +1.)); +#1711=DIRECTION('',(0.,1.,-2.27724530538218E-30)); +#1712=DIRECTION('',(0.,-1.,0.)); +#1713=DIRECTION('center_axis',(-0.500000016776559,-1.97215226305253E-30, +-0.866025394098487)); +#1714=DIRECTION('ref_axis',(-2.88440758469984E-15,1.,1.665313569981E-15)); +#1715=DIRECTION('',(0.866025394098487,-1.97057596545677E-45,-0.500000016776559)); +#1716=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1717=DIRECTION('ref_axis',(0.476290876230105,0.304282871310231,0.824959959905425)); +#1718=DIRECTION('',(-0.866025394098488,0.,0.500000016776559)); +#1719=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1720=DIRECTION('ref_axis',(-0.50000001675636,-8.98853440072772E-6,-0.866025394063503)); +#1721=DIRECTION('',(0.866025394098488,0.,-0.500000016776559)); +#1722=DIRECTION('center_axis',(0.499999941816597,0.,0.866025437376639)); +#1723=DIRECTION('ref_axis',(0.866025437376639,0.,-0.499999941816597)); +#1724=DIRECTION('',(0.866025394098488,0.,-0.500000016776559)); +#1725=DIRECTION('center_axis',(-0.866025394098488,0.,0.500000016776559)); +#1726=DIRECTION('ref_axis',(-0.476290876230106,0.304282871310222,-0.824959959905428)); +#1727=DIRECTION('center_axis',(-0.99565633280751,0.,-0.0931046021435058)); +#1728=DIRECTION('ref_axis',(0.0931046021435057,-1.13202692410629E-16,-0.99565633280751)); +#1729=DIRECTION('',(-0.866025394098487,0.,0.500000016776559)); +#1730=DIRECTION('',(0.866025394098488,0.,-0.500000016776559)); +#1731=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1732=DIRECTION('ref_axis',(-0.50000001675636,-8.98853440072772E-6,-0.866025394063503)); +#1733=DIRECTION('',(0.866025394098488,0.,-0.500000016776559)); +#1734=DIRECTION('center_axis',(0.99565633280751,0.,0.0931046021435058)); +#1735=DIRECTION('ref_axis',(0.0931046021435058,3.31652492769719E-21,-0.99565633280751)); +#1736=DIRECTION('center_axis',(0.500000016776559,0.,0.866025394098487)); +#1737=DIRECTION('ref_axis',(0.,-1.,0.)); +#1738=DIRECTION('',(0.,1.,0.)); +#1739=DIRECTION('center_axis',(0.866025394098488,0.,-0.500000016776559)); +#1740=DIRECTION('ref_axis',(-0.50000001675636,8.98853440072772E-6,-0.866025394063503)); +#1741=DIRECTION('center_axis',(0.99565633280751,0.,0.0931046021435058)); +#1742=DIRECTION('ref_axis',(0.0931046021435058,-3.31652492769719E-21,-0.99565633280751)); +#1743=DIRECTION('',(0.866025394098488,0.,-0.500000016776559)); +#1744=DIRECTION('center_axis',(-0.866025394098487,0.,0.50000001677656)); +#1745=DIRECTION('ref_axis',(0.,1.,0.)); +#1746=DIRECTION('',(-0.866025394098487,0.,0.50000001677656)); +#1747=DIRECTION('center_axis',(-0.866025394098487,0.,0.50000001677656)); +#1748=DIRECTION('ref_axis',(0.,1.,0.)); +#1749=DIRECTION('',(-0.866025394098487,0.,0.50000001677656)); +#1750=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000027)); +#1751=DIRECTION('ref_axis',(0.,1.,0.)); +#1752=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000027)); +#1753=DIRECTION('ref_axis',(0.,1.,0.)); +#1754=DIRECTION('',(-0.866025403784423,0.,-0.500000000000027)); +#1755=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000027)); +#1756=DIRECTION('ref_axis',(0.,1.,0.)); +#1757=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000027)); +#1758=DIRECTION('ref_axis',(0.,1.,0.)); +#1759=DIRECTION('',(-0.866025403784423,0.,-0.500000000000027)); +#1760=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000026)); +#1761=DIRECTION('ref_axis',(-0.450427746924264,0.434119084126805,0.780163742811492)); +#1762=DIRECTION('center_axis',(-0.866025403784272,0.,-0.500000000000289)); +#1763=DIRECTION('ref_axis',(-0.450427746924264,0.434119084126805,0.780163742811492)); +#1764=DIRECTION('',(-0.866025403784423,0.,-0.500000000000026)); +#1765=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000027)); +#1766=DIRECTION('ref_axis',(-0.450427746924264,0.434119084126805,0.780163742811492)); +#1767=DIRECTION('',(0.866025403784271,0.,0.500000000000291)); +#1768=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1769=DIRECTION('ref_axis',(0.500000000000289,0.,-0.866025403784272)); +#1770=DIRECTION('',(0.,-1.,0.)); +#1771=DIRECTION('',(0.,1.,0.)); +#1772=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1773=DIRECTION('ref_axis',(0.500000000000026,0.,-0.866025403784423)); +#1774=DIRECTION('center_axis',(0.500000000000291,0.,-0.866025403784271)); +#1775=DIRECTION('ref_axis',(0.,-1.,0.)); +#1776=DIRECTION('',(0.,-1.,0.)); +#1777=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000026)); +#1778=DIRECTION('ref_axis',(0.450427746856788,0.434119084406735,-0.780163742694683)); +#1779=DIRECTION('center_axis',(-0.866025403784272,0.,-0.500000000000289)); +#1780=DIRECTION('ref_axis',(0.450427746856788,0.434119084406735,-0.780163742694683)); +#1781=DIRECTION('',(-0.866025403784271,5.53447207542788E-42,-0.500000000000291)); +#1782=DIRECTION('center_axis',(-0.866025403784423,0.,-0.500000000000027)); +#1783=DIRECTION('ref_axis',(0.450427746856788,0.434119084406735,-0.780163742694683)); +#1784=DIRECTION('',(0.866025403784423,0.,0.500000000000026)); +#1785=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000026)); +#1786=DIRECTION('ref_axis',(3.22976616253508E-15,-1.,-5.59411909007712E-15)); +#1787=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000027)); +#1788=DIRECTION('ref_axis',(3.22976616253508E-15,-1.,-5.59411909007712E-15)); +#1789=DIRECTION('',(-0.866025403784423,0.,-0.500000000000026)); +#1790=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1791=DIRECTION('ref_axis',(3.22976616253508E-15,-1.,-5.59411909007712E-15)); +#1792=DIRECTION('center_axis',(-0.500000000000291,-1.81438008200833E-29, +0.866025403784271)); +#1793=DIRECTION('ref_axis',(-9.15259284339516E-15,1.,-5.28425194192131E-15)); +#1794=DIRECTION('',(-9.07190041004688E-30,1.,1.5712992431394E-29)); +#1795=DIRECTION('',(-9.07190041004212E-30,1.,1.57129924313968E-29)); +#1796=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1797=DIRECTION('ref_axis',(0.500000000000289,0.,-0.866025403784272)); +#1798=DIRECTION('',(0.,1.,0.)); +#1799=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1800=DIRECTION('ref_axis',(3.22976616253508E-15,1.,-5.59411909007712E-15)); +#1801=DIRECTION('',(-0.500000000000289,-6.38977280359804E-16,0.866025403784272)); +#1802=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1803=DIRECTION('ref_axis',(0.500000000000026,0.,-0.866025403784423)); +#1804=DIRECTION('',(0.,1.,0.)); +#1805=DIRECTION('',(0.500000000000289,0.,-0.866025403784272)); +#1806=DIRECTION('',(0.,1.,0.)); +#1807=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000026)); +#1808=DIRECTION('ref_axis',(0.500000000000026,0.,-0.866025403784423)); +#1809=DIRECTION('',(-0.866025403784423,0.,-0.500000000000026)); +#1810=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000027)); +#1811=DIRECTION('ref_axis',(0.500000000000026,0.,-0.866025403784423)); +#1812=DIRECTION('center_axis',(0.500000000000037,0.,-0.866025403784417)); +#1813=DIRECTION('ref_axis',(-0.866025403784417,0.,-0.500000000000037)); +#1814=DIRECTION('',(0.,1.,0.)); +#1815=DIRECTION('',(-0.866025403784423,0.,-0.500000000000026)); +#1816=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000027)); +#1817=DIRECTION('ref_axis',(0.500000000000027,0.,-0.866025403784423)); +#1818=DIRECTION('',(0.,1.,0.)); +#1819=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000027)); +#1820=DIRECTION('ref_axis',(0.500000000000026,0.,-0.866025403784423)); +#1821=DIRECTION('',(-0.500000000000027,-6.38977280359804E-16,0.866025403784423)); +#1822=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000027)); +#1823=DIRECTION('ref_axis',(3.22976616253508E-15,1.,-5.59411909007712E-15)); +#1824=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000026)); +#1825=DIRECTION('ref_axis',(0.500000000000026,0.,-0.866025403784423)); +#1826=DIRECTION('',(0.866025403784423,0.,0.500000000000026)); +#1827=DIRECTION('',(-0.866025403784423,0.,-0.500000000000026)); +#1828=DIRECTION('center_axis',(3.19488640179919E-16,-1.,-5.53370557232672E-16)); +#1829=DIRECTION('ref_axis',(0.500000000000027,6.38977280359804E-16,-0.866025403784423)); +#1830=DIRECTION('',(0.866025403784423,0.,0.500000000000026)); +#1831=DIRECTION('center_axis',(0.866025403784423,0.,0.500000000000026)); +#1832=DIRECTION('ref_axis',(3.22976616253508E-15,1.,-5.59411909007712E-15)); +#1833=DIRECTION('center_axis',(-0.499999941816589,0.,-0.866025437376644)); +#1834=DIRECTION('ref_axis',(-0.866025437376644,0.,0.499999941816589)); +#1835=DIRECTION('',(0.,1.,0.)); +#1836=DIRECTION('center_axis',(0.99565633280751,0.,0.0931046021435058)); +#1837=DIRECTION('ref_axis',(0.0931046021435058,0.,-0.99565633280751)); +#1838=DIRECTION('',(0.0931046021435058,0.,-0.99565633280751)); +#1839=DIRECTION('',(0.,1.,0.)); +#1840=DIRECTION('center_axis',(-0.500000000000017,0.,0.866025403784429)); +#1841=DIRECTION('ref_axis',(0.866025403784429,0.,0.500000000000017)); +#1842=DIRECTION('center_axis',(0.,1.,0.)); +#1843=DIRECTION('ref_axis',(0.,0.,1.)); +#1844=DIRECTION('center_axis',(0.,1.,0.)); +#1845=DIRECTION('ref_axis',(0.,0.,1.)); +#1846=DIRECTION('',(0.,1.,0.)); +#1847=DIRECTION('center_axis',(-5.67710822175113E-15,0.,1.)); +#1848=DIRECTION('ref_axis',(1.,0.,5.67710822175113E-15)); +#1849=DIRECTION('',(1.,0.,5.67710822175113E-15)); +#1850=DIRECTION('center_axis',(0.,0.,-1.)); +#1851=DIRECTION('ref_axis',(-1.,0.,0.)); +#1852=DIRECTION('',(-1.,0.,0.)); +#1853=DIRECTION('center_axis',(0.,1.,0.)); +#1854=DIRECTION('ref_axis',(1.,0.,0.)); +#1855=DIRECTION('center_axis',(0.99565633280751,0.,0.0931046021435058)); +#1856=DIRECTION('ref_axis',(0.0931046021435058,0.,-0.99565633280751)); +#1857=DIRECTION('',(-0.0931046021435058,0.,0.99565633280751)); +#1858=DIRECTION('',(0.,1.,0.)); +#1859=DIRECTION('',(0.0931046021435058,0.,-0.99565633280751)); +#1860=DIRECTION('',(0.,1.,0.)); +#1861=DIRECTION('center_axis',(-1.,0.,0.)); +#1862=DIRECTION('ref_axis',(0.,2.4671622769448E-16,1.)); +#1863=DIRECTION('',(0.,0.,1.)); +#1864=DIRECTION('',(0.,-1.,0.)); +#1865=DIRECTION('',(0.,0.,-1.)); +#1866=DIRECTION('center_axis',(0.,0.,1.)); +#1867=DIRECTION('ref_axis',(1.,0.,0.)); +#1868=DIRECTION('',(0.,-1.,0.)); +#1869=DIRECTION('',(0.906007180030929,0.423262317874394,0.)); +#1870=DIRECTION('center_axis',(0.,0.,-1.)); +#1871=DIRECTION('ref_axis',(1.,0.,0.)); +#1872=DIRECTION('',(-0.906007180030929,0.423262317874394,0.)); +#1873=DIRECTION('center_axis',(0.,1.,0.)); +#1874=DIRECTION('ref_axis',(1.,0.,0.)); +#1875=DIRECTION('',(-0.500000000000289,0.,0.866025403784272)); +#1876=DIRECTION('center_axis',(0.,-1.,0.)); +#1877=DIRECTION('ref_axis',(0.,0.,1.)); +#1878=DIRECTION('',(-1.,0.,-5.67710822175113E-15)); +#1879=DIRECTION('center_axis',(0.,1.,0.)); +#1880=DIRECTION('ref_axis',(-0.707106781186548,0.,0.707106781186548)); +#1881=DIRECTION('',(-1.54575763114686E-15,0.,-1.)); +#1882=DIRECTION('',(-1.54575763114686E-15,0.,-1.)); +#1883=DIRECTION('',(1.,0.,0.)); +#1884=DIRECTION('center_axis',(0.,1.,0.)); +#1885=DIRECTION('ref_axis',(-0.707106781186548,0.,0.707106781186548)); +#1886=DIRECTION('center_axis',(0.,-1.,0.)); +#1887=DIRECTION('ref_axis',(-0.707106781186548,0.,0.707106781186548)); +#1888=DIRECTION('',(0.,-1.,0.)); +#1889=DIRECTION('',(0.,1.,0.)); +#1890=DIRECTION('center_axis',(-1.,0.,1.54575763114686E-15)); +#1891=DIRECTION('ref_axis',(1.54575763114686E-15,0.,1.)); +#1892=DIRECTION('',(1.54575763114686E-15,0.,1.)); +#1893=DIRECTION('',(0.,1.,0.)); +#1894=DIRECTION('center_axis',(0.,-1.,0.)); +#1895=DIRECTION('ref_axis',(0.707106781186547,0.,-0.707106781186547)); +#1896=DIRECTION('center_axis',(-0.423262317874394,-0.906007180030929,0.)); +#1897=DIRECTION('ref_axis',(0.906007180030929,-0.423262317874394,0.)); +#1898=DIRECTION('center_axis',(-0.423262317874394,0.906007180030929,0.)); +#1899=DIRECTION('ref_axis',(0.906007180030929,0.423262317874394,0.)); +#1900=DIRECTION('center_axis',(-0.423262317874394,-0.906007180030929,0.)); +#1901=DIRECTION('ref_axis',(0.906007180030929,-0.423262317874394,0.)); +#1902=DIRECTION('',(0.,0.,1.)); +#1903=DIRECTION('',(0.906007180030929,-0.423262317874394,0.)); +#1904=DIRECTION('center_axis',(0.,0.,1.)); +#1905=DIRECTION('ref_axis',(-1.,1.01064309961486E-15,0.)); +#1906=DIRECTION('',(0.,0.,1.)); +#1907=DIRECTION('center_axis',(0.,0.,-1.)); +#1908=DIRECTION('ref_axis',(1.,0.,0.)); +#1909=DIRECTION('center_axis',(-0.423262317874394,0.906007180030929,0.)); +#1910=DIRECTION('ref_axis',(-0.906007180030929,-0.423262317874394,0.)); +#1911=DIRECTION('',(1.54575763114686E-15,0.,1.)); +#1912=DIRECTION('',(0.906007180030929,0.423262317874394,0.)); +#1913=DIRECTION('center_axis',(0.866025403784272,0.,0.500000000000289)); +#1914=DIRECTION('ref_axis',(0.500000000000289,0.,-0.866025403784272)); +#1915=DIRECTION('',(0.500000000000289,0.,-0.866025403784272)); +#1916=DIRECTION('',(0.,1.,0.)); +#1917=DIRECTION('center_axis',(0.,1.,0.)); +#1918=DIRECTION('ref_axis',(0.,0.,1.)); +#1919=DIRECTION('center_axis',(0.,1.,0.)); +#1920=DIRECTION('ref_axis',(0.,0.,1.)); +#1921=DIRECTION('',(0.,1.,0.)); +#1922=DIRECTION('center_axis',(-5.67710822175113E-15,0.,1.)); +#1923=DIRECTION('ref_axis',(1.,0.,5.67710822175113E-15)); +#1924=DIRECTION('',(1.,0.,5.67710822175113E-15)); +#1925=DIRECTION('center_axis',(0.,0.,-1.)); +#1926=DIRECTION('ref_axis',(-1.,0.,0.)); +#1927=DIRECTION('',(-1.,0.,0.)); +#1928=DIRECTION('center_axis',(0.,1.,0.)); +#1929=DIRECTION('ref_axis',(1.,0.,0.)); +#1930=DIRECTION('',(0.,0.,1.)); +#1931=DIRECTION('',(1.,-4.33680868994202E-19,0.)); +#1932=CARTESIAN_POINT('',(0.,0.,0.)); +#1933=CARTESIAN_POINT('',(0.,0.,0.)); +#1934=CARTESIAN_POINT('Origin',(251.992995453794,0.,424.806977262947)); +#1935=CARTESIAN_POINT('',(251.992995453794,60.,427.806977262947)); +#1936=CARTESIAN_POINT('',(248.992995453794,60.,424.806977262947)); +#1937=CARTESIAN_POINT('Origin',(251.992995453794,60.,424.806977262947)); +#1938=CARTESIAN_POINT('',(248.992995453794,-60.,424.806977262947)); +#1939=CARTESIAN_POINT('',(248.992995453794,0.,424.806977262947)); +#1940=CARTESIAN_POINT('',(251.992995453794,-60.,427.806977262947)); +#1941=CARTESIAN_POINT('Origin',(251.992995453794,-60.,424.806977262947)); +#1942=CARTESIAN_POINT('',(251.992995453794,0.,427.806977262947)); +#1943=CARTESIAN_POINT('Origin',(264.540138744207,-60.,393.331517392522)); +#1944=CARTESIAN_POINT('',(248.992995453794,-60.,376.734039063363)); +#1945=CARTESIAN_POINT('',(248.992995453794,-60.,427.806977262947)); +#1946=CARTESIAN_POINT('',(248.992995453794,-60.,358.856057522096)); +#1947=CARTESIAN_POINT('',(248.992995453794,-60.,427.806977262947)); +#1948=CARTESIAN_POINT('',(278.82925527646,-60.,358.856057522096)); +#1949=CARTESIAN_POINT('',(248.992995453794,-60.,358.856057522096)); +#1950=CARTESIAN_POINT('',(278.82925527646,-60.,367.015675314107)); +#1951=CARTESIAN_POINT('',(278.82925527646,-60.,376.093787457309)); +#1952=CARTESIAN_POINT('',(258.30606377482,-60.,378.864745982306)); +#1953=CARTESIAN_POINT('',(257.511693877988,-60.,379.323375676597)); +#1954=CARTESIAN_POINT('',(268.306064110352,-60.,396.185253864276)); +#1955=CARTESIAN_POINT('',(264.717471240229,-60.,389.969628963616)); +#1956=CARTESIAN_POINT('',(277.519168492375,-60.,390.866065331275)); +#1957=CARTESIAN_POINT('',(267.511694213519,-60.,396.643883558566)); +#1958=CARTESIAN_POINT('',(276.268278746685,-60.,404.24302273474)); +#1959=CARTESIAN_POINT('',(277.708460232557,-60.,388.841788168585)); +#1960=CARTESIAN_POINT('',(275.043301271401,-60.,406.364745960074)); +#1961=CARTESIAN_POINT('',(266.930812532946,-60.,420.415988630898)); +#1962=CARTESIAN_POINT('',(264.217972930159,-60.,400.114739728187)); +#1963=CARTESIAN_POINT('',(268.282838565497,-60.,402.46159099697)); +#1964=CARTESIAN_POINT('',(254.217972930159,-60.,417.435247803875)); +#1965=CARTESIAN_POINT('',(263.226854372466,-60.,401.831407426436)); +#1966=CARTESIAN_POINT('',(265.043301271395,-60.,423.685254035759)); +#1967=CARTESIAN_POINT('',(258.282838565491,-60.,419.782099072656)); +#1968=CARTESIAN_POINT('',(263.240973525841,-60.,426.806977262947)); +#1969=CARTESIAN_POINT('',(266.930812532946,-60.,420.415988630898)); +#1970=CARTESIAN_POINT('',(261.508922718272,-60.,427.806977262947)); +#1971=CARTESIAN_POINT('Origin',(261.508922718272,-60.,425.806977262947)); +#1972=CARTESIAN_POINT('',(261.508922718272,-60.,427.806977262947)); +#1973=CARTESIAN_POINT('Origin',(248.992995453794,0.,358.856057522096)); +#1974=CARTESIAN_POINT('',(248.992995453794,60.,376.734039063363)); +#1975=CARTESIAN_POINT('',(248.992995453794,60.,427.806977262947)); +#1976=CARTESIAN_POINT('',(248.992995453794,40.,376.734039063363)); +#1977=CARTESIAN_POINT('',(248.992995453794,0.,376.734039063363)); +#1978=CARTESIAN_POINT('',(248.992995453794,40.,422.485174261342)); +#1979=CARTESIAN_POINT('',(248.992995453794,40.,376.732832092224)); +#1980=CARTESIAN_POINT('',(248.992995453794,-40.,422.485174261342)); +#1981=CARTESIAN_POINT('',(248.992995453794,0.,422.485174261342)); +#1982=CARTESIAN_POINT('',(248.992995453794,-40.,376.734039063363)); +#1983=CARTESIAN_POINT('',(248.992995453794,-40.,376.732832092224)); +#1984=CARTESIAN_POINT('',(248.992995453794,0.,376.734039063363)); +#1985=CARTESIAN_POINT('Origin',(248.415645197519,0.,367.734039063363)); +#1986=CARTESIAN_POINT('',(249.281670591617,-40.,367.234039046586)); +#1987=CARTESIAN_POINT('',(248.415645197519,-40.,366.734039063363)); +#1988=CARTESIAN_POINT('Origin',(248.415645197519,-40.,367.734039063363)); +#1989=CARTESIAN_POINT('',(249.281670591617,-1.32307888063906,367.234039046586)); +#1990=CARTESIAN_POINT('',(249.281670591617,0.,367.234039046586)); +#1991=CARTESIAN_POINT('',(248.415645197519,-1.32307888063906,366.734039063363)); +#1992=CARTESIAN_POINT('Origin',(248.415645197519,-1.32307888063906,367.734039063363)); +#1993=CARTESIAN_POINT('',(248.415645197519,0.,366.734039063363)); +#1994=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,-1.3230788806387,366.734039063363)); +#1995=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,-0.944953033972368,366.734039063363)); +#1996=CARTESIAN_POINT('Ctrl Pts',(248.47088513077,-0.0630490969783347,366.734039063363)); +#1997=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,0.818911085083607,366.734039063363)); +#1998=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,1.32307888063872,366.734039063363)); +#1999=CARTESIAN_POINT('Ctrl Pts',(248.59017811949,-1.32307888063871,366.734039063363)); +#2000=CARTESIAN_POINT('Ctrl Pts',(248.578331444868,-0.951422456826182,366.734149091449)); +#2001=CARTESIAN_POINT('Ctrl Pts',(248.607472331582,-0.0654648845822568, +366.73429273911)); +#2002=CARTESIAN_POINT('Ctrl Pts',(248.574382553327,0.827536982220709,366.734185767478)); +#2003=CARTESIAN_POINT('Ctrl Pts',(248.59017811949,1.32307888063873,366.734039063363)); +#2004=CARTESIAN_POINT('Ctrl Pts',(248.938864360723,-1.32307888063872,366.827796868928)); +#2005=CARTESIAN_POINT('Ctrl Pts',(248.903512656486,-0.964341143518998,366.814758871865)); +#2006=CARTESIAN_POINT('Ctrl Pts',(248.880655639275,-0.0702905871728157, +366.790553191584)); +#2007=CARTESIAN_POINT('Ctrl Pts',(248.891728755074,0.844761897808499,366.810412872844)); +#2008=CARTESIAN_POINT('Ctrl Pts',(248.938864360723,1.32307888063874,366.827796868928)); +#2009=CARTESIAN_POINT('Ctrl Pts',(249.194404127704,-1.32307888063874,367.082889104053)); +#2010=CARTESIAN_POINT('Ctrl Pts',(249.153999323748,-0.973823164398343,367.03790804447)); +#2011=CARTESIAN_POINT('Ctrl Pts',(249.108986635402,-0.074002843869098,366.950655368836)); +#2012=CARTESIAN_POINT('Ctrl Pts',(249.140531055762,0.857404592312362,367.022914357942)); +#2013=CARTESIAN_POINT('Ctrl Pts',(249.194404127704,1.32307888063875,367.082889104053)); +#2014=CARTESIAN_POINT('Ctrl Pts',(249.281670591617,-1.32307888063874,367.234039046586)); +#2015=CARTESIAN_POINT('Ctrl Pts',(249.246182875288,-0.977045040631429,367.17257252161)); +#2016=CARTESIAN_POINT('Ctrl Pts',(249.20300806546,-0.075360681053928,367.049952377366)); +#2017=CARTESIAN_POINT('Ctrl Pts',(249.234353636512,0.861700427289154,367.152083679951)); +#2018=CARTESIAN_POINT('Ctrl Pts',(249.281670591617,1.32307888063876,367.234039046586)); +#2019=CARTESIAN_POINT('',(249.281670591617,1.32307888063872,367.234039046586)); +#2020=CARTESIAN_POINT('',(248.415645197519,1.32307888063872,366.734039063363)); +#2021=CARTESIAN_POINT('Origin',(248.415645197519,1.32307888063872,367.734039063363)); +#2022=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,1.32307888063872,366.734039063363)); +#2023=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,0.818911085083607,366.734039063363)); +#2024=CARTESIAN_POINT('Ctrl Pts',(248.47088513077,-0.0630490969783347,366.734039063363)); +#2025=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,-0.944953033972368,366.734039063363)); +#2026=CARTESIAN_POINT('Ctrl Pts',(248.415645197519,-1.3230788806387,366.734039063363)); +#2027=CARTESIAN_POINT('',(249.221712821445,-2.2186712959341E-30,367.106130576642)); +#2028=CARTESIAN_POINT('Ctrl Pts',(249.281670591617,-1.32307888063874,367.234039046586)); +#2029=CARTESIAN_POINT('Ctrl Pts',(249.246182875288,-0.977045040631429,367.17257252161)); +#2030=CARTESIAN_POINT('Ctrl Pts',(249.224582439861,-0.525930725087935,367.11122544172)); +#2031=CARTESIAN_POINT('Ctrl Pts',(249.221634597306,-0.0659615421369417, +367.106134075844)); +#2032=CARTESIAN_POINT('Ctrl Pts',(249.221605410865,-1.18707761863346E-6, +367.106462015915)); +#2033=CARTESIAN_POINT('Ctrl Pts',(249.221605410865,-1.18707761863346E-6, +367.106462015915)); +#2034=CARTESIAN_POINT('Ctrl Pts',(249.2214020882,0.45950105328331,367.108746557849)); +#2035=CARTESIAN_POINT('Ctrl Pts',(249.240293247031,0.919616417627765,367.162371386687)); +#2036=CARTESIAN_POINT('Ctrl Pts',(249.281670591617,1.32307888063876,367.234039046586)); +#2037=CARTESIAN_POINT('Origin',(248.415645197519,0.,367.734039063363)); +#2038=CARTESIAN_POINT('',(248.415645197519,40.,366.734039063363)); +#2039=CARTESIAN_POINT('',(249.281670591617,40.,367.234039046586)); +#2040=CARTESIAN_POINT('Origin',(248.415645197519,40.,367.734039063363)); +#2041=CARTESIAN_POINT('',(248.415645197519,0.,366.734039063363)); +#2042=CARTESIAN_POINT('',(249.281670591617,0.,367.234039046586)); +#2043=CARTESIAN_POINT('Origin',(194.996497726897,0.,366.734039063363)); +#2044=CARTESIAN_POINT('',(238.992995453794,40.,366.734039063363)); +#2045=CARTESIAN_POINT('',(226.018238294619,40.,366.734039063363)); +#2046=CARTESIAN_POINT('',(238.992995453794,55.3282675104192,366.734039063363)); +#2047=CARTESIAN_POINT('',(238.992995453794,0.,366.734039063363)); +#2048=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,366.734039063363)); +#2049=CARTESIAN_POINT('',(215.327148624352,44.2722169577647,366.734039063363)); +#2050=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,366.734039063363)); +#2051=CARTESIAN_POINT('Origin',(156.,0.,366.734039063363)); +#2052=CARTESIAN_POINT('',(238.992995453794,-55.3282675104192,366.734039063363)); +#2053=CARTESIAN_POINT('',(165.656183513397,-21.0672708079966,366.734039063363)); +#2054=CARTESIAN_POINT('',(238.992995453794,-40.,366.734039063363)); +#2055=CARTESIAN_POINT('',(238.992995453794,0.,366.734039063363)); +#2056=CARTESIAN_POINT('',(226.018238294619,-40.,366.734039063363)); +#2057=CARTESIAN_POINT('',(153.25,-3.36777869765523E-16,366.734039063363)); +#2058=CARTESIAN_POINT('Origin',(156.,0.,366.734039063363)); +#2059=CARTESIAN_POINT('Origin',(257.03997886234,40.,394.609606662353)); +#2060=CARTESIAN_POINT('',(265.086962270887,40.,394.609606038812)); +#2061=CARTESIAN_POINT('',(265.086962270887,40.,394.609606038812)); +#2062=CARTESIAN_POINT('',(248.992995453794,40.,422.485174261342)); +#2063=CARTESIAN_POINT('Origin',(238.992995453794,40.,376.734039063363)); +#2064=CARTESIAN_POINT('Origin',(238.992995453794,0.,376.734039063363)); +#2065=CARTESIAN_POINT('Origin',(238.992995453794,-55.3282675104192,376.734039063363)); +#2066=CARTESIAN_POINT('Origin',(238.992995453794,-40.,376.734039063363)); +#2067=CARTESIAN_POINT('Origin',(238.992995453794,0.,376.734039063363)); +#2068=CARTESIAN_POINT('Origin',(238.992995453794,55.3282675104192,376.734039063363)); +#2069=CARTESIAN_POINT('Origin',(149.651065231884,-13.5901077004639,358.856057522096)); +#2070=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,358.856057522096)); +#2071=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,358.856057522096)); +#2072=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,358.856057522096)); +#2073=CARTESIAN_POINT('Origin',(156.,0.,358.856057522096)); +#2074=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,358.856057522096)); +#2075=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,358.856057522096)); +#2076=CARTESIAN_POINT('Origin',(156.,0.,358.856057522096)); +#2077=CARTESIAN_POINT('Origin',(156.,0.,358.856057522096)); +#2078=CARTESIAN_POINT('',(153.25,3.36777869765523E-16,358.856057522096)); +#2079=CARTESIAN_POINT('',(153.25,-3.36777869765523E-16,358.856057522096)); +#2080=CARTESIAN_POINT('Origin',(156.,0.,358.856057522096)); +#2081=CARTESIAN_POINT('Origin',(248.992995453794,60.,358.856057522096)); +#2082=CARTESIAN_POINT('',(248.992995453794,60.,358.856057522096)); +#2083=CARTESIAN_POINT('',(248.992995453794,60.,427.806977262947)); +#2084=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,358.856057522096)); +#2085=CARTESIAN_POINT('Origin',(256.,0.,361.856057522096)); +#2086=CARTESIAN_POINT('',(258.75,3.3677786976552E-16,361.856057522096)); +#2087=CARTESIAN_POINT('Origin',(256.,0.,361.856057522096)); +#2088=CARTESIAN_POINT('',(258.75,3.3677786976552E-16,358.856057522096)); +#2089=CARTESIAN_POINT('',(258.75,-3.3677786976552E-16,361.856057522096)); +#2090=CARTESIAN_POINT('Origin',(256.,0.,358.856057522096)); +#2091=CARTESIAN_POINT('Ctrl Pts',(255.7417609056,-4.99332680385765,376.333786616018)); +#2092=CARTESIAN_POINT('Ctrl Pts',(256.513333156424,-5.03323008420443,377.937469352439)); +#2093=CARTESIAN_POINT('Ctrl Pts',(258.074375619869,-4.74878873302321,381.182035038636)); +#2094=CARTESIAN_POINT('Ctrl Pts',(259.980387189333,-3.32077446662241,385.143605515157)); +#2095=CARTESIAN_POINT('Ctrl Pts',(260.865672776814,-1.54543761876313,386.983636972909)); +#2096=CARTESIAN_POINT('Ctrl Pts',(261.044650364799,-4.14112626929024E-5, +387.355634887234)); +#2097=CARTESIAN_POINT('Ctrl Pts',(260.943799658425,0.869023883406476,387.146020639709)); +#2098=CARTESIAN_POINT('Ctrl Pts',(260.794254876113,1.4291148808014,386.835197660449)); +#2099=CARTESIAN_POINT('Ctrl Pts',(260.673204138637,1.79613746238104,386.583598438582)); +#2100=CARTESIAN_POINT('Ctrl Pts',(260.405893013435,2.41823034220066,386.028002723104)); +#2101=CARTESIAN_POINT('Ctrl Pts',(259.661346435234,3.55785774966025,384.480491789881)); +#2102=CARTESIAN_POINT('Ctrl Pts',(258.075499518502,4.74959103516771,381.184371017973)); +#2103=CARTESIAN_POINT('Ctrl Pts',(256.513333156424,5.03323008420442,377.937469352439)); +#2104=CARTESIAN_POINT('Ctrl Pts',(255.7417609056,4.99332680385765,376.333786616018)); +#2105=CARTESIAN_POINT('Ctrl Pts',(255.867417650202,-4.99982537389044,376.261044618376)); +#2106=CARTESIAN_POINT('Ctrl Pts',(256.651221952206,-5.02085940514063,377.858800221315)); +#2107=CARTESIAN_POINT('Ctrl Pts',(258.225147088512,-4.68739218156033,381.08629310275)); +#2108=CARTESIAN_POINT('Ctrl Pts',(260.097071703111,-3.18147754796868,385.007472980735)); +#2109=CARTESIAN_POINT('Ctrl Pts',(260.891592479506,-1.41323969696599,386.763199767887)); +#2110=CARTESIAN_POINT('Ctrl Pts',(261.034448446201,-0.000139461585664461, +387.096325669613)); +#2111=CARTESIAN_POINT('Ctrl Pts',(260.953694278585,0.79473806225767,386.908273460122)); +#2112=CARTESIAN_POINT('Ctrl Pts',(260.82424918746,1.32509279134386,386.617573536871)); +#2113=CARTESIAN_POINT('Ctrl Pts',(260.71782685947,1.67662145259577,386.380404870616)); +#2114=CARTESIAN_POINT('Ctrl Pts',(260.47743333856,2.28354040697289,385.850755144204)); +#2115=CARTESIAN_POINT('Ctrl Pts',(259.781960838314,3.43156647792371,384.348686528194)); +#2116=CARTESIAN_POINT('Ctrl Pts',(258.227716350475,4.68825462953961,381.090109918361)); +#2117=CARTESIAN_POINT('Ctrl Pts',(256.651221952207,5.02085940514062,377.858800221316)); +#2118=CARTESIAN_POINT('Ctrl Pts',(255.867417650202,4.99982537389044,376.261044618376)); +#2119=CARTESIAN_POINT('Ctrl Pts',(256.115352354941,-5.07715185480076,376.115590572616)); +#2120=CARTESIAN_POINT('Ctrl Pts',(256.933071336912,-5.07251087579148,377.701452293154)); +#2121=CARTESIAN_POINT('Ctrl Pts',(258.562233107105,-4.66454999620876,380.895201718292)); +#2122=CARTESIAN_POINT('Ctrl Pts',(260.444598471989,-3.00920417375347,384.73543956542)); +#2123=CARTESIAN_POINT('Ctrl Pts',(261.127561102943,-1.20963373193169,386.322021233177)); +#2124=CARTESIAN_POINT('Ctrl Pts',(261.216350489292,-0.000126954063229879, +386.576909444593)); +#2125=CARTESIAN_POINT('Ctrl Pts',(261.165576736461,0.680205882169762,386.432243435508)); +#2126=CARTESIAN_POINT('Ctrl Pts',(261.063422519385,1.17031375829582,386.182033393225)); +#2127=CARTESIAN_POINT('Ctrl Pts',(260.976278353916,1.50264620251935,385.97389669567)); +#2128=CARTESIAN_POINT('Ctrl Pts',(260.769332156969,2.09687475161645,385.4964233027)); +#2129=CARTESIAN_POINT('Ctrl Pts',(260.124135870203,3.28389459190028,384.085626313149)); +#2130=CARTESIAN_POINT('Ctrl Pts',(258.567126928046,4.66591447680729,380.902171657959)); +#2131=CARTESIAN_POINT('Ctrl Pts',(256.933071336912,5.07251087579146,377.701452293154)); +#2132=CARTESIAN_POINT('Ctrl Pts',(256.115352354941,5.07715185480075,376.115590572616)); +#2133=CARTESIAN_POINT('Ctrl Pts',(256.383249303804,-5.34034540546535,375.953061563909)); +#2134=CARTESIAN_POINT('Ctrl Pts',(257.253460304932,-5.3364639641778,377.532139193631)); +#2135=CARTESIAN_POINT('Ctrl Pts',(258.99330675183,-4.90806728889744,380.707764440849)); +#2136=CARTESIAN_POINT('Ctrl Pts',(261.029127236175,-3.15374536419987,384.507946230697)); +#2137=CARTESIAN_POINT('Ctrl Pts',(261.782333120282,-1.24512682725279,386.025805698517)); +#2138=CARTESIAN_POINT('Ctrl Pts',(261.880037769087,-1.45239935737445E-5, +386.251140977778)); +#2139=CARTESIAN_POINT('Ctrl Pts',(261.824144847753,0.699944191986256,386.122884767956)); +#2140=CARTESIAN_POINT('Ctrl Pts',(261.71158995534,1.21174332791278,385.88849833286)); +#2141=CARTESIAN_POINT('Ctrl Pts',(261.615667285941,1.56003603774186,385.691818988859)); +#2142=CARTESIAN_POINT('Ctrl Pts',(261.388290206314,2.18609162220861,385.235317559347)); +#2143=CARTESIAN_POINT('Ctrl Pts',(260.682430291605,3.4444195058301,383.86308716833)); +#2144=CARTESIAN_POINT('Ctrl Pts',(258.998581234609,4.90980979107183,380.715815704229)); +#2145=CARTESIAN_POINT('Ctrl Pts',(257.253460304932,5.33646396417778,377.532139193631)); +#2146=CARTESIAN_POINT('Ctrl Pts',(256.383249303804,5.34034540546534,375.953061563909)); +#2147=CARTESIAN_POINT('Ctrl Pts',(256.529178535907,-5.66516421175494,375.859110600333)); +#2148=CARTESIAN_POINT('Ctrl Pts',(257.437265918255,-5.68377078085385,377.444709250481)); +#2149=CARTESIAN_POINT('Ctrl Pts',(259.265178059482,-5.28949990301537,380.639957724634)); +#2150=CARTESIAN_POINT('Ctrl Pts',(261.458128516423,-3.53518846064911,384.489527418429)); +#2151=CARTESIAN_POINT('Ctrl Pts',(262.375691650135,-1.51144378777916,386.12058935153)); +#2152=CARTESIAN_POINT('Ctrl Pts',(262.530281950693,-1.11760689222114E-5, +386.399542190093)); +#2153=CARTESIAN_POINT('Ctrl Pts',(262.442692493676,0.8496958675714,386.241560165922)); +#2154=CARTESIAN_POINT('Ctrl Pts',(262.296024516526,1.4339096305336,385.979743983854)); +#2155=CARTESIAN_POINT('Ctrl Pts',(262.174623063273,1.82447729787948,385.763464598305)); +#2156=CARTESIAN_POINT('Ctrl Pts',(261.897935899457,2.50785826872109,385.271966423349)); +#2157=CARTESIAN_POINT('Ctrl Pts',(261.087695658876,3.82597677432017,383.839669008563)); +#2158=CARTESIAN_POINT('Ctrl Pts',(259.268713968622,5.29098807157145,380.645856145226)); +#2159=CARTESIAN_POINT('Ctrl Pts',(257.437265918255,5.68377078085383,377.444709250481)); +#2160=CARTESIAN_POINT('Ctrl Pts',(256.529178535907,5.66516421175494,375.859110600333)); +#2161=CARTESIAN_POINT('Ctrl Pts',(256.557547342935,-5.88302479830772,375.8362268199)); +#2162=CARTESIAN_POINT('Ctrl Pts',(257.479355339684,-5.92112478662484,377.432806306784)); +#2163=CARTESIAN_POINT('Ctrl Pts',(259.341715209265,-5.56207667472333,380.658542664417)); +#2164=CARTESIAN_POINT('Ctrl Pts',(261.604937337858,-3.83468830372033,384.578400994367)); +#2165=CARTESIAN_POINT('Ctrl Pts',(262.624909691535,-1.73973856660145,386.345002298027)); +#2166=CARTESIAN_POINT('Ctrl Pts',(262.821155878583,-6.69628928351211E-6, +386.684876196906)); +#2167=CARTESIAN_POINT('Ctrl Pts',(262.710416988065,0.978278232088543,386.493091769901)); +#2168=CARTESIAN_POINT('Ctrl Pts',(262.540806857951,1.6210111001872,386.199341344749)); +#2169=CARTESIAN_POINT('Ctrl Pts',(262.402658296277,2.04478047978143,385.960078712395)); +#2170=CARTESIAN_POINT('Ctrl Pts',(262.094853089763,2.77022376867054,385.426979614573)); +#2171=CARTESIAN_POINT('Ctrl Pts',(261.225016867402,4.12135766612489,383.920452921482)); +#2172=CARTESIAN_POINT('Ctrl Pts',(259.343762731749,5.56324225077042,380.662119441621)); +#2173=CARTESIAN_POINT('Ctrl Pts',(257.479355339685,5.92112478662483,377.432806306785)); +#2174=CARTESIAN_POINT('Ctrl Pts',(256.557547342935,5.88302479830773,375.8362268199)); +#2175=CARTESIAN_POINT('Ctrl Pts',(256.556138480818,-5.99199216462918,375.833786599241)); +#2176=CARTESIAN_POINT('Ctrl Pts',(257.482025181807,-6.03987610104531,377.437469335663)); +#2177=CARTESIAN_POINT('Ctrl Pts',(259.355276137941,-5.69854647962786,380.682035021859)); +#2178=CARTESIAN_POINT('Ctrl Pts',(261.642490021299,-3.9849293599469,384.643605498381)); +#2179=CARTESIAN_POINT('Ctrl Pts',(262.704832726275,-1.85452514251577,386.483636956132)); +#2180=CARTESIAN_POINT('Ctrl Pts',(262.919605831857,-4.96935152275366E-5, +386.855634870457)); +#2181=CARTESIAN_POINT('Ctrl Pts',(262.798584984209,1.04282866008778,386.646020622933)); +#2182=CARTESIAN_POINT('Ctrl Pts',(262.619131245434,1.71493785696169,386.335197643673)); +#2183=CARTESIAN_POINT('Ctrl Pts',(262.473870360463,2.15536495485726,386.083598421806)); +#2184=CARTESIAN_POINT('Ctrl Pts',(262.15309701022,2.90187641064079,385.528002706327)); +#2185=CARTESIAN_POINT('Ctrl Pts',(261.259641116379,4.26942929959231,383.980491773105)); +#2186=CARTESIAN_POINT('Ctrl Pts',(259.3566248163,5.69950924220126,380.684371001197)); +#2187=CARTESIAN_POINT('Ctrl Pts',(257.482025181808,6.03987610104531,377.437469335663)); +#2188=CARTESIAN_POINT('Ctrl Pts',(256.556138480818,5.99199216462918,375.833786599242)); +#2189=CARTESIAN_POINT('',(255.7417609056,4.99332680385765,376.333786616018)); +#2190=CARTESIAN_POINT('',(255.7417609056,-4.99332680385765,376.333786616018)); +#2191=CARTESIAN_POINT('Origin',(256.,0.,376.870526470408)); +#2192=CARTESIAN_POINT('',(257.05591354666,5.97419116399447,376.699941968749)); +#2193=CARTESIAN_POINT('Ctrl Pts',(255.7417609056,4.99332680385765,376.333786616018)); +#2194=CARTESIAN_POINT('Ctrl Pts',(255.743549596256,4.9934193092901,376.334310508674)); +#2195=CARTESIAN_POINT('Ctrl Pts',(255.745338168499,4.99351418260244,376.334834398631)); +#2196=CARTESIAN_POINT('Ctrl Pts',(255.880268462537,5.00085057763516,376.374359103577)); +#2197=CARTESIAN_POINT('Ctrl Pts',(256.013974527423,5.02128012875499,376.413693698889)); +#2198=CARTESIAN_POINT('Ctrl Pts',(256.269763714597,5.08887687915408,376.488400776497)); +#2199=CARTESIAN_POINT('Ctrl Pts',(256.394563849756,5.13617919289937,376.5245699482)); +#2200=CARTESIAN_POINT('Ctrl Pts',(256.629257868685,5.26325547575535,376.591271881782)); +#2201=CARTESIAN_POINT('Ctrl Pts',(256.740975262992,5.3450755757852,376.622258545957)); +#2202=CARTESIAN_POINT('Ctrl Pts',(256.902041367778,5.52189503511114,376.665127563178)); +#2203=CARTESIAN_POINT('Ctrl Pts',(256.95949800065,5.60806432056523,376.679718455789)); +#2204=CARTESIAN_POINT('Ctrl Pts',(257.034432207875,5.78993537786268,376.697291578068)); +#2205=CARTESIAN_POINT('Ctrl Pts',(257.054069699463,5.88079501895925,376.701006514259)); +#2206=CARTESIAN_POINT('Ctrl Pts',(257.05591354666,5.97419116399447,376.699941968749)); +#2207=CARTESIAN_POINT('',(257.056138540873,5.99698732626838,376.6998120683)); +#2208=CARTESIAN_POINT('Ctrl Pts',(257.055944253756,5.97397426682588,376.699997604202)); +#2209=CARTESIAN_POINT('Ctrl Pts',(257.05609496808,5.98156704835923,376.699910059433)); +#2210=CARTESIAN_POINT('Ctrl Pts',(257.056170267214,5.98916569546194,376.699866047458)); +#2211=CARTESIAN_POINT('Ctrl Pts',(257.056169605282,5.99676877590108,376.699865873433)); +#2212=CARTESIAN_POINT('',(257.056138540873,-5.99698732626838,376.6998120683)); +#2213=CARTESIAN_POINT('Origin',(256.866025394098,0.,376.370526453631)); +#2214=CARTESIAN_POINT('',(257.05591354666,-5.97419116399446,376.699941968749)); +#2215=CARTESIAN_POINT('Ctrl Pts',(257.056113550371,-5.99672867640722,376.699768783483)); +#2216=CARTESIAN_POINT('Ctrl Pts',(257.056112282732,-5.98912687027788,376.699765523529)); +#2217=CARTESIAN_POINT('Ctrl Pts',(257.056035083073,-5.98152765226902,376.699806096146)); +#2218=CARTESIAN_POINT('Ctrl Pts',(257.055882385167,-5.97393245271352,376.69989025694)); +#2219=CARTESIAN_POINT('Ctrl Pts',(255.7417609056,-4.99332680385765,376.333786616018)); +#2220=CARTESIAN_POINT('Ctrl Pts',(255.743548834357,-4.9934192698871,376.33431028552)); +#2221=CARTESIAN_POINT('Ctrl Pts',(255.745336644801,-4.99351410177956,376.334833952325)); +#2222=CARTESIAN_POINT('Ctrl Pts',(255.881162629616,-5.00089904345216,376.374621027143)); +#2223=CARTESIAN_POINT('Ctrl Pts',(256.015781859315,-5.02155589670744,376.414225338546)); +#2224=CARTESIAN_POINT('Ctrl Pts',(256.273938123111,-5.09018308076501,376.489616171871)); +#2225=CARTESIAN_POINT('Ctrl Pts',(256.400236083131,-5.13846508958859,376.526208477064)); +#2226=CARTESIAN_POINT('Ctrl Pts',(256.634509570686,-5.26693270016856,376.59273639847)); +#2227=CARTESIAN_POINT('Ctrl Pts',(256.744652307926,-5.3484170831262,376.623257561771)); +#2228=CARTESIAN_POINT('Ctrl Pts',(256.903694464656,-5.52424962267778,376.665551753232)); +#2229=CARTESIAN_POINT('Ctrl Pts',(256.960493832369,-5.60998964023513,376.679962050924)); +#2230=CARTESIAN_POINT('Ctrl Pts',(257.034638999448,-5.7908866898167,376.697330878825)); +#2231=CARTESIAN_POINT('Ctrl Pts',(257.054079459638,-5.88128939979941,376.70100087922)); +#2232=CARTESIAN_POINT('Ctrl Pts',(257.05591354666,-5.97419116399446,376.699941968749)); +#2233=CARTESIAN_POINT('Ctrl Pts',(255.741760905599,4.99332680385764,376.333786616018)); +#2234=CARTESIAN_POINT('Ctrl Pts',(256.513333156424,5.03323008420444,375.799225762903)); +#2235=CARTESIAN_POINT('Ctrl Pts',(258.074683604551,4.74865518141755,374.71749060891)); +#2236=CARTESIAN_POINT('Ctrl Pts',(259.979616078413,3.32052008121597,373.397714881794)); +#2237=CARTESIAN_POINT('Ctrl Pts',(261.045035451251,1.19067354750014,372.659570802272)); +#2238=CARTESIAN_POINT('Ctrl Pts',(261.0436026774,-1.19018570923003,372.66056345696)); +#2239=CARTESIAN_POINT('Ctrl Pts',(259.980255451012,-3.32061023087489,373.397271911532)); +#2240=CARTESIAN_POINT('Ctrl Pts',(258.074593106907,-4.7487010241237,374.717553307507)); +#2241=CARTESIAN_POINT('Ctrl Pts',(256.513333156424,-5.03323008420442,375.799225762903)); +#2242=CARTESIAN_POINT('Ctrl Pts',(255.7417609056,-4.99332680385765,376.333786616018)); +#2243=CARTESIAN_POINT('Ctrl Pts',(255.815159105649,4.99712272698787,376.46125607183)); +#2244=CARTESIAN_POINT('Ctrl Pts',(256.591409538678,5.02586816486848,375.932816753404)); +#2245=CARTESIAN_POINT('Ctrl Pts',(258.152738426857,4.71427596559273,374.865756953733)); +#2246=CARTESIAN_POINT('Ctrl Pts',(260.022870742481,3.26192389128438,373.573816321594)); +#2247=CARTESIAN_POINT('Ctrl Pts',(261.042991895441,1.15891863241661,372.860055198753)); +#2248=CARTESIAN_POINT('Ctrl Pts',(261.041933414343,-1.15893974561131,372.860907114422)); +#2249=CARTESIAN_POINT('Ctrl Pts',(260.023614422509,-3.26188376733861,373.573320163831)); +#2250=CARTESIAN_POINT('Ctrl Pts',(258.152827692006,-4.71434425840911,374.86574524446)); +#2251=CARTESIAN_POINT('Ctrl Pts',(256.591409538678,-5.02586816486846,375.932816753404)); +#2252=CARTESIAN_POINT('Ctrl Pts',(255.81515910565,-4.99712272698788,376.46125607183)); +#2253=CARTESIAN_POINT('Ctrl Pts',(255.958326082522,5.07074081735605,376.715823017898)); +#2254=CARTESIAN_POINT('Ctrl Pts',(256.75380173892,5.08449214977965,376.199565401065)); +#2255=CARTESIAN_POINT('Ctrl Pts',(258.341555388867,4.73046598531865,375.161650184101)); +#2256=CARTESIAN_POINT('Ctrl Pts',(260.194405234316,3.22040956368272,373.925023450733)); +#2257=CARTESIAN_POINT('Ctrl Pts',(261.164342510768,1.12667117493705,373.259687448366)); +#2258=CARTESIAN_POINT('Ctrl Pts',(261.163809117832,-1.12751871425808,373.260247906337)); +#2259=CARTESIAN_POINT('Ctrl Pts',(260.195375930782,-3.22017015190622,373.924421274657)); +#2260=CARTESIAN_POINT('Ctrl Pts',(258.341954147889,-4.73055838749524,375.161491195588)); +#2261=CARTESIAN_POINT('Ctrl Pts',(256.753801738921,-5.08449214977961,376.199565401065)); +#2262=CARTESIAN_POINT('Ctrl Pts',(255.958326082522,-5.07074081735605,376.715823017898)); +#2263=CARTESIAN_POINT('Ctrl Pts',(256.149466984418,5.40533879364672,377.076860842082)); +#2264=CARTESIAN_POINT('Ctrl Pts',(257.001857692693,5.42062875249889,376.569544652849)); +#2265=CARTESIAN_POINT('Ctrl Pts',(258.705449033014,5.04378122481634,375.552578556019)); +#2266=CARTESIAN_POINT('Ctrl Pts',(260.697006858047,3.430821931133,374.352813958313)); +#2267=CARTESIAN_POINT('Ctrl Pts',(261.738347772958,1.1982732046032,373.717667553432)); +#2268=CARTESIAN_POINT('Ctrl Pts',(261.737813461832,-1.19930293871195,373.718094665474)); +#2269=CARTESIAN_POINT('Ctrl Pts',(260.698119369658,-3.43052967419645,374.352165735313)); +#2270=CARTESIAN_POINT('Ctrl Pts',(258.70591916456,-5.0438933504461,375.552342265991)); +#2271=CARTESIAN_POINT('Ctrl Pts',(257.001857692693,-5.42062875249885,376.569544652849)); +#2272=CARTESIAN_POINT('Ctrl Pts',(256.149466984419,-5.40533879364672,377.076860842082)); +#2273=CARTESIAN_POINT('Ctrl Pts',(256.198665271394,5.77150326572169,377.194874414444)); +#2274=CARTESIAN_POINT('Ctrl Pts',(257.0994887628,5.80698639422889,376.675026609206)); +#2275=CARTESIAN_POINT('Ctrl Pts',(258.914682087171,5.45174618650785,375.62719634195)); +#2276=CARTESIAN_POINT('Ctrl Pts',(261.09773732509,3.77524875406236,374.36783820256)); +#2277=CARTESIAN_POINT('Ctrl Pts',(262.291741985496,1.3413586583559,373.679217676899)); +#2278=CARTESIAN_POINT('Ctrl Pts',(262.290445355724,-1.3414204221787,373.679859470345)); +#2279=CARTESIAN_POINT('Ctrl Pts',(261.098644441418,-3.77518554137506,374.367312599294)); +#2280=CARTESIAN_POINT('Ctrl Pts',(258.914793904532,-5.45184009679682,375.627135075746)); +#2281=CARTESIAN_POINT('Ctrl Pts',(257.0994887628,-5.80698639422886,376.675026609206)); +#2282=CARTESIAN_POINT('Ctrl Pts',(256.198665271394,-5.7715032657217,377.194874414444)); +#2283=CARTESIAN_POINT('Ctrl Pts',(256.190113028536,5.99199216462917,377.199812053395)); +#2284=CARTESIAN_POINT('Ctrl Pts',(257.115999729525,6.03987610104534,376.66525120028)); +#2285=CARTESIAN_POINT('Ctrl Pts',(258.989620267278,5.69838621770107,375.583516046287)); +#2286=CARTESIAN_POINT('Ctrl Pts',(261.275539235913,3.98462409745917,374.26374031917)); +#2287=CARTESIAN_POINT('Ctrl Pts',(262.554042483318,1.42880825700016,373.525596239649)); +#2288=CARTESIAN_POINT('Ctrl Pts',(262.552323154696,-1.42822285107604,373.526588894337)); +#2289=CARTESIAN_POINT('Ctrl Pts',(261.276306483031,-3.98473227704986,374.263297348909)); +#2290=CARTESIAN_POINT('Ctrl Pts',(258.989511670105,-5.69844122894846,375.583578744884)); +#2291=CARTESIAN_POINT('Ctrl Pts',(257.115999729526,-6.03987610104531,376.665251200279)); +#2292=CARTESIAN_POINT('Ctrl Pts',(256.190113028536,-5.99199216462919,377.199812053395)); +#2293=CARTESIAN_POINT('Origin',(256.499999941817,0.,377.020898788353)); +#2294=CARTESIAN_POINT('Origin',(256.,0.,376.154873350977)); +#2295=CARTESIAN_POINT('Origin',(269.555988956852,0.,398.350187107204)); +#2296=CARTESIAN_POINT('',(257.056138733474,32.5001123553317,376.699812401895)); +#2297=CARTESIAN_POINT('',(257.056138540873,0.,376.6998120683)); +#2298=CARTESIAN_POINT('',(269.555989151698,32.5001123552543,398.350187444687)); +#2299=CARTESIAN_POINT('Origin',(263.306063942586,32.5,387.524999923291)); +#2300=CARTESIAN_POINT('',(269.555989151698,-32.5001123552543,398.350187444687)); +#2301=CARTESIAN_POINT('',(269.555988956852,0.,398.350187107204)); +#2302=CARTESIAN_POINT('',(268.398652179231,-39.7462705700859,396.345621096575)); +#2303=CARTESIAN_POINT('Origin',(263.306063942586,-32.5,387.524999923291)); +#2304=CARTESIAN_POINT('',(268.306064110352,-40.3259791722275,396.185253864276)); +#2305=CARTESIAN_POINT('Origin',(268.806064127128,-40.3259791722275,397.051279258374)); +#2306=CARTESIAN_POINT('',(268.306064110352,-60.,396.185253864276)); +#2307=CARTESIAN_POINT('',(258.30606377482,-40.3259791722277,378.864745982306)); +#2308=CARTESIAN_POINT('',(258.30606377482,-39.9997499962006,378.864745982306)); +#2309=CARTESIAN_POINT('',(258.213475705941,-39.746270570086,378.704378750007)); +#2310=CARTESIAN_POINT('Origin',(257.806063758044,-40.3259791722277,377.998720588208)); +#2311=CARTESIAN_POINT('',(257.056138733474,-32.5001123553317,376.699812401895)); +#2312=CARTESIAN_POINT('Origin',(263.306063942586,-32.5,387.524999923291)); +#2313=CARTESIAN_POINT('',(257.056138540873,0.,376.6998120683)); +#2314=CARTESIAN_POINT('',(263.306063898956,20.9,387.524999847721)); +#2315=CARTESIAN_POINT('Origin',(263.306063898956,22.5,387.524999847721)); +#2316=CARTESIAN_POINT('',(263.306063898956,-24.1,387.524999847721)); +#2317=CARTESIAN_POINT('Origin',(263.306063898956,-22.5,387.524999847721)); +#2318=CARTESIAN_POINT('Origin',(256.,0.,361.856057522096)); +#2319=CARTESIAN_POINT('',(251.,6.12323399573677E-16,361.856057522096)); +#2320=CARTESIAN_POINT('Origin',(256.,0.,361.856057522096)); +#2321=CARTESIAN_POINT('',(251.,6.12323399573677E-16,366.47822208992)); +#2322=CARTESIAN_POINT('',(251.,-6.12323399573677E-16,361.856057522096)); +#2323=CARTESIAN_POINT('Origin',(256.,0.,376.870526470408)); +#2324=CARTESIAN_POINT('Origin',(256.,0.,376.870526470408)); +#2325=CARTESIAN_POINT('Ctrl Pts',(251.,-6.12323399573677E-16,366.47822208992)); +#2326=CARTESIAN_POINT('Ctrl Pts',(251.,0.373999125427355,366.47822208992)); +#2327=CARTESIAN_POINT('Ctrl Pts',(251.084446019882,1.12175751240245,366.653739838388)); +#2328=CARTESIAN_POINT('Ctrl Pts',(251.580873802657,2.5432932114891,367.685545562692)); +#2329=CARTESIAN_POINT('Ctrl Pts',(252.775277887877,4.04212873411824,370.168067724073)); +#2330=CARTESIAN_POINT('Ctrl Pts',(254.849798865951,5.04118610751503,374.479878413644)); +#2331=CARTESIAN_POINT('Ctrl Pts',(256.893613615255,5.04022446108501,378.727867408064)); +#2332=CARTESIAN_POINT('Ctrl Pts',(259.008851286773,4.21200476506105,383.124306151961)); +#2333=CARTESIAN_POINT('Ctrl Pts',(260.425506890444,2.68703932705513,386.068769399096)); +#2334=CARTESIAN_POINT('Ctrl Pts',(261.170035771545,0.273754384320168,387.616243549588)); +#2335=CARTESIAN_POINT('Ctrl Pts',(260.821995239968,-2.0433073673717,386.89285492141)); +#2336=CARTESIAN_POINT('Ctrl Pts',(259.22273508573,-4.04243549853027,383.568855260125)); +#2337=CARTESIAN_POINT('Ctrl Pts',(257.151551947592,-5.0408644797469,379.263982140273)); +#2338=CARTESIAN_POINT('Ctrl Pts',(254.849331625765,-5.04089190949145,374.478907273197)); +#2339=CARTESIAN_POINT('Ctrl Pts',(252.775893651947,-4.04316196466543,370.169347565603)); +#2340=CARTESIAN_POINT('Ctrl Pts',(251.58081780432,-2.54327063814639,367.685429172341)); +#2341=CARTESIAN_POINT('Ctrl Pts',(251.084515141347,-1.1218809189715,366.653883504648)); +#2342=CARTESIAN_POINT('Ctrl Pts',(251.,-0.373999125427356,366.47822208992)); +#2343=CARTESIAN_POINT('Ctrl Pts',(251.,-6.12323399573677E-16,366.47822208992)); +#2344=CARTESIAN_POINT('Ctrl Pts',(251.,-6.65210625047366E-16,366.72755483836)); +#2345=CARTESIAN_POINT('Ctrl Pts',(251.,0.341697740145251,366.72755483836)); +#2346=CARTESIAN_POINT('Ctrl Pts',(251.068595540861,1.02624953300072,366.885969060859)); +#2347=CARTESIAN_POINT('Ctrl Pts',(251.502576401522,2.39657002020043,367.856452248789)); +#2348=CARTESIAN_POINT('Ctrl Pts',(252.636147722616,3.93459693481944,370.283791168948)); +#2349=CARTESIAN_POINT('Ctrl Pts',(254.701141923679,5.01169287874549,374.563429264649)); +#2350=CARTESIAN_POINT('Ctrl Pts',(256.776053443493,5.06485324720376,378.795435199156)); +#2351=CARTESIAN_POINT('Ctrl Pts',(258.943078588912,4.26602484555188,383.180948701116)); +#2352=CARTESIAN_POINT('Ctrl Pts',(260.405570921289,2.73161311971564,386.120531602059)); +#2353=CARTESIAN_POINT('Ctrl Pts',(261.175873627338,0.279334590914844,387.665685190598)); +#2354=CARTESIAN_POINT('Ctrl Pts',(260.815243600418,-2.0803077650404,386.94327124239)); +#2355=CARTESIAN_POINT('Ctrl Pts',(259.163903998897,-4.09655493799213,383.624793622655)); +#2356=CARTESIAN_POINT('Ctrl Pts',(257.037983355033,-5.07234521213802,379.329552614152)); +#2357=CARTESIAN_POINT('Ctrl Pts',(254.700476340966,-5.01142459442435,374.562449537718)); +#2358=CARTESIAN_POINT('Ctrl Pts',(252.636907479195,-3.93568386641632,370.285179139234)); +#2359=CARTESIAN_POINT('Ctrl Pts',(251.502495805547,-2.39655171067489,367.856337173346)); +#2360=CARTESIAN_POINT('Ctrl Pts',(251.068679570688,-1.02637994156218,366.886126006477)); +#2361=CARTESIAN_POINT('Ctrl Pts',(251.,-0.341697740145253,366.72755483836)); +#2362=CARTESIAN_POINT('Ctrl Pts',(251.,-5.59436174099987E-16,366.72755483836)); +#2363=CARTESIAN_POINT('Ctrl Pts',(250.804031631833,-5.06776413675727E-16, +367.22519530642)); +#2364=CARTESIAN_POINT('Ctrl Pts',(250.804031631833,0.291767917725933,367.22519530642)); +#2365=CARTESIAN_POINT('Ctrl Pts',(250.848992122857,0.879128942859783,367.349470319464)); +#2366=CARTESIAN_POINT('Ctrl Pts',(251.19993308243,2.19219289658476,368.196788726939)); +#2367=CARTESIAN_POINT('Ctrl Pts',(252.281817993492,3.82834925349845,370.514127363501)); +#2368=CARTESIAN_POINT('Ctrl Pts',(254.391054326776,5.04004698986743,374.729739881956)); +#2369=CARTESIAN_POINT('Ctrl Pts',(256.554660409824,5.16834093548176,378.9299650794)); +#2370=CARTESIAN_POINT('Ctrl Pts',(258.832326878974,4.3956834105314,383.293748161381)); +#2371=CARTESIAN_POINT('Ctrl Pts',(260.378451133586,2.82622971665718,386.223677850014)); +#2372=CARTESIAN_POINT('Ctrl Pts',(261.19386920972,0.290219826380054,387.764269462248)); +#2373=CARTESIAN_POINT('Ctrl Pts',(260.811727591169,-2.15599180268736,387.043751488308)); +#2374=CARTESIAN_POINT('Ctrl Pts',(259.065841627407,-4.22357707833326,383.736250992154)); +#2375=CARTESIAN_POINT('Ctrl Pts',(256.827896908852,-5.18531414142387,379.460027705831)); +#2376=CARTESIAN_POINT('Ctrl Pts',(254.390340628395,-5.0398537288809,374.728515647248)); +#2377=CARTESIAN_POINT('Ctrl Pts',(252.282778495006,-3.82944881147982,370.51582956082)); +#2378=CARTESIAN_POINT('Ctrl Pts',(251.199850016916,-2.19218469859363,368.196646857936)); +#2379=CARTESIAN_POINT('Ctrl Pts',(250.849100304517,-0.879261982389226,367.349662616786)); +#2380=CARTESIAN_POINT('Ctrl Pts',(250.804031631833,-0.291767917725934,367.22519530642)); +#2381=CARTESIAN_POINT('Ctrl Pts',(250.804031631833,-4.77878350661213E-16, +367.22519530642)); +#2382=CARTESIAN_POINT('Ctrl Pts',(250.142433096875,3.1698181134805E-16, +367.543365844928)); +#2383=CARTESIAN_POINT('Ctrl Pts',(250.142433096875,0.300104940184482,367.543365844928)); +#2384=CARTESIAN_POINT('Ctrl Pts',(250.191896772851,0.904881952831211,367.654599546376)); +#2385=CARTESIAN_POINT('Ctrl Pts',(250.578875694551,2.28491941323631,368.45326134578)); +#2386=CARTESIAN_POINT('Ctrl Pts',(251.760365155268,4.02339069349919,370.72194410492)); +#2387=CARTESIAN_POINT('Ctrl Pts',(254.027358950045,5.30344442775796,374.904595944193)); +#2388=CARTESIAN_POINT('Ctrl Pts',(256.330854471347,5.43544944912578,379.086568309431)); +#2389=CARTESIAN_POINT('Ctrl Pts',(258.744125540339,4.61870174186178,383.436858822096)); +#2390=CARTESIAN_POINT('Ctrl Pts',(260.375266054846,2.96759161301349,386.360256034388)); +#2391=CARTESIAN_POINT('Ctrl Pts',(261.23440029313,0.304547602038355,387.897689360917)); +#2392=CARTESIAN_POINT('Ctrl Pts',(260.832101808048,-2.26327589727735,387.178535430023)); +#2393=CARTESIAN_POINT('Ctrl Pts',(258.990514415614,-4.4373269802842,383.878403749291)); +#2394=CARTESIAN_POINT('Ctrl Pts',(256.621666783736,-5.45290640948259,379.614349103247)); +#2395=CARTESIAN_POINT('Ctrl Pts',(254.026608918267,-5.30327567920895,374.903358112152)); +#2396=CARTESIAN_POINT('Ctrl Pts',(251.761413745436,-4.02447897336261,370.723725522564)); +#2397=CARTESIAN_POINT('Ctrl Pts',(250.578789361613,-2.28491418605836,368.453119421227)); +#2398=CARTESIAN_POINT('Ctrl Pts',(250.1920153241,-0.905013943812955,367.654801465009)); +#2399=CARTESIAN_POINT('Ctrl Pts',(250.142433096875,-0.300104940184482,367.543365844928)); +#2400=CARTESIAN_POINT('Ctrl Pts',(250.142433096875,-4.91412047529338E-16, +367.543365844928)); +#2401=CARTESIAN_POINT('Ctrl Pts',(249.507333398065,1.20092597860246E-15, +367.409504177829)); +#2402=CARTESIAN_POINT('Ctrl Pts',(249.507333398065,0.365016263497021,367.409504177829)); +#2403=CARTESIAN_POINT('Ctrl Pts',(249.582140324236,1.09768400554921,367.544172130056)); +#2404=CARTESIAN_POINT('Ctrl Pts',(250.076689707639,2.62926826383907,368.426059303399)); +#2405=CARTESIAN_POINT('Ctrl Pts',(251.403079837756,4.41214572062291,370.76611536594)); +#2406=CARTESIAN_POINT('Ctrl Pts',(253.812811049318,5.66906592288047,374.987021224854)); +#2407=CARTESIAN_POINT('Ctrl Pts',(256.21764927442,5.74415717531484,379.186473476864)); +#2408=CARTESIAN_POINT('Ctrl Pts',(258.718617226418,4.84348259987616,383.547857259715)); +#2409=CARTESIAN_POINT('Ctrl Pts',(260.399430608239,3.10163615445645,386.475728978919)); +#2410=CARTESIAN_POINT('Ctrl Pts',(261.283471089632,0.317228522584161,388.015225977249)); +#2411=CARTESIAN_POINT('Ctrl Pts',(260.869946911396,-2.36228628806114,387.295248134004)); +#2412=CARTESIAN_POINT('Ctrl Pts',(258.972451019236,-4.65101605151053,383.99001025034)); +#2413=CARTESIAN_POINT('Ctrl Pts',(256.521180269787,-5.75448154691069,379.7164767533)); +#2414=CARTESIAN_POINT('Ctrl Pts',(253.812158481043,-5.66882022234868,374.9858985677)); +#2415=CARTESIAN_POINT('Ctrl Pts',(251.403998336077,-4.41328897609342,370.767699968845)); +#2416=CARTESIAN_POINT('Ctrl Pts',(250.076613880715,-2.62925370770204,368.425928867035)); +#2417=CARTESIAN_POINT('Ctrl Pts',(249.582244180188,-1.09782168531388,367.544351346234)); +#2418=CARTESIAN_POINT('Ctrl Pts',(249.507333398065,-0.365016263497021,367.409504177829)); +#2419=CARTESIAN_POINT('Ctrl Pts',(249.507333398065,-5.97583401495759E-16, +367.409504177829)); +#2420=CARTESIAN_POINT('Ctrl Pts',(249.227474389704,1.635057414089E-15,367.140168475494)); +#2421=CARTESIAN_POINT('Ctrl Pts',(249.227474389704,0.420771018195498,367.140168475494)); +#2422=CARTESIAN_POINT('Ctrl Pts',(249.320669722692,1.26302665394436,367.301611149973)); +#2423=CARTESIAN_POINT('Ctrl Pts',(249.886204115778,2.9106804187378,368.281099767702)); +#2424=CARTESIAN_POINT('Ctrl Pts',(251.289974058911,4.7042119757559,370.712504265958)); +#2425=CARTESIAN_POINT('Ctrl Pts',(253.759665973966,5.92257039557537,374.990081674231)); +#2426=CARTESIAN_POINT('Ctrl Pts',(256.201286887083,5.94688981055686,379.219059440092)); +#2427=CARTESIAN_POINT('Ctrl Pts',(258.731424122094,4.98411374757757,383.601361518891)); +#2428=CARTESIAN_POINT('Ctrl Pts',(260.427417131763,3.18351776895942,386.538927466989)); +#2429=CARTESIAN_POINT('Ctrl Pts',(261.318913735386,0.32474733290809,388.083064680735)); +#2430=CARTESIAN_POINT('Ctrl Pts',(260.902104300633,-2.42208141002767,387.361114948249)); +#2431=CARTESIAN_POINT('Ctrl Pts',(258.98749809192,-4.78429655152866,384.044915356812)); +#2432=CARTESIAN_POINT('Ctrl Pts',(256.509438344938,-5.95085392771719,379.752768728201)); +#2433=CARTESIAN_POINT('Ctrl Pts',(253.75908473832,-5.92226199873076,374.989021549627)); +#2434=CARTESIAN_POINT('Ctrl Pts',(251.29077322535,-4.70542079833749,370.713901728964)); +#2435=CARTESIAN_POINT('Ctrl Pts',(249.886135440344,-2.9106587603126,368.280973706019)); +#2436=CARTESIAN_POINT('Ctrl Pts',(249.320759834435,-1.26317154547454,367.3017680868)); +#2437=CARTESIAN_POINT('Ctrl Pts',(249.227474389704,-0.420771018195497,367.140168475494)); +#2438=CARTESIAN_POINT('Ctrl Pts',(249.227474389704,-6.88986398180265E-16, +367.140168475494)); +#2439=CARTESIAN_POINT('Ctrl Pts',(249.133974605901,1.79536330635148E-15, +366.978222106697)); +#2440=CARTESIAN_POINT('Ctrl Pts',(249.133974605901,0.448798950512834,366.978222106697)); +#2441=CARTESIAN_POINT('Ctrl Pts',(249.23530982976,1.34610901488294,367.153739855165)); +#2442=CARTESIAN_POINT('Ctrl Pts',(249.831023169089,3.05195185378693,368.185545579469)); +#2443=CARTESIAN_POINT('Ctrl Pts',(251.264308071353,4.85055448094188,370.668067740849)); +#2444=CARTESIAN_POINT('Ctrl Pts',(253.753733245043,6.04942332901805,374.979878430421)); +#2445=CARTESIAN_POINT('Ctrl Pts',(256.206310944207,6.04826935330201,379.22786742484)); +#2446=CARTESIAN_POINT('Ctrl Pts',(258.744596150029,5.05440571807326,383.624306168737)); +#2447=CARTESIAN_POINT('Ctrl Pts',(260.444582874434,3.22444719246615,386.568769415872)); +#2448=CARTESIAN_POINT('Ctrl Pts',(261.338017531755,0.328505261184203,388.116243566365)); +#2449=CARTESIAN_POINT('Ctrl Pts',(260.920368893863,-2.45196884084604,387.392854938186)); +#2450=CARTESIAN_POINT('Ctrl Pts',(259.001256708777,-4.85092259823632,384.068855276901)); +#2451=CARTESIAN_POINT('Ctrl Pts',(256.515836943012,-6.04903737569628,379.763982157049)); +#2452=CARTESIAN_POINT('Ctrl Pts',(253.753172556819,-6.04907029138975,374.978907289974)); +#2453=CARTESIAN_POINT('Ctrl Pts',(251.265046988238,-4.8517943575985,370.669347582379)); +#2454=CARTESIAN_POINT('Ctrl Pts',(249.830955971086,-3.05192476577568,368.185429189117)); +#2455=CARTESIAN_POINT('Ctrl Pts',(249.235392775518,-1.3462571027658,367.153883521425)); +#2456=CARTESIAN_POINT('Ctrl Pts',(249.133974605901,-0.448798950512833,366.978222106697)); +#2457=CARTESIAN_POINT('Ctrl Pts',(249.133974605901,-7.34788079488418E-16, +366.978222106697)); +#2458=CARTESIAN_POINT('Origin',(255.133974605901,0.,377.370526487185)); +#2459=CARTESIAN_POINT('Ctrl Pts',(249.221828057704,1.6499128125064E-15, +367.105992870474)); +#2460=CARTESIAN_POINT('Ctrl Pts',(249.306867202134,1.51306265994771E-15, +367.211091241199)); +#2461=CARTESIAN_POINT('Ctrl Pts',(249.560065192708,1.12753283672089E-15, +367.420618599633)); +#2462=CARTESIAN_POINT('Ctrl Pts',(250.142433096875,3.1698181134805E-16, +367.543365844928)); +#2463=CARTESIAN_POINT('Ctrl Pts',(250.804031631833,-5.06776413675727E-16, +367.22519530642)); +#2464=CARTESIAN_POINT('Ctrl Pts',(251.,-6.65210625047366E-16,366.72755483836)); +#2465=CARTESIAN_POINT('Ctrl Pts',(251.,-6.12323399573677E-16,366.47822208992)); +#2466=CARTESIAN_POINT('Origin',(265.086962270887,0.,394.609606038812)); +#2467=CARTESIAN_POINT('',(265.086962270887,-40.,394.609606038812)); +#2468=CARTESIAN_POINT('',(265.086962270887,-40.,394.609606038812)); +#2469=CARTESIAN_POINT('',(265.086962270887,0.,394.609606038812)); +#2470=CARTESIAN_POINT('',(261.574013110759,-24.1,388.524999881274)); +#2471=CARTESIAN_POINT('Origin',(261.574013110759,-22.5,388.524999881274)); +#2472=CARTESIAN_POINT('',(261.574013110759,20.9,388.524999881274)); +#2473=CARTESIAN_POINT('Origin',(261.574013110759,22.5,388.524999881274)); +#2474=CARTESIAN_POINT('Origin',(256.,0.,361.856057522096)); +#2475=CARTESIAN_POINT('Origin',(257.03997886234,-40.,394.609606662353)); +#2476=CARTESIAN_POINT('',(248.992995453794,-40.,422.485174261342)); +#2477=CARTESIAN_POINT('Origin',(248.992995453794,0.,422.485174261342)); +#2478=CARTESIAN_POINT('',(257.485922121384,23.750000000002,407.77499376812)); +#2479=CARTESIAN_POINT('Origin',(257.485922121384,25.350000000002,407.77499376812)); +#2480=CARTESIAN_POINT('',(257.485922121384,-26.2499999999977,407.77499376812)); +#2481=CARTESIAN_POINT('Origin',(257.485922121384,-24.6499999999977,407.77499376812)); +#2482=CARTESIAN_POINT('Origin',(278.82925527646,-60.,358.856057522096)); +#2483=CARTESIAN_POINT('',(278.82925527646,60.,376.856057522096)); +#2484=CARTESIAN_POINT('',(278.82925527646,60.,358.856057522096)); +#2485=CARTESIAN_POINT('',(278.82925527646,60.,376.093787457309)); +#2486=CARTESIAN_POINT('',(278.82925527646,44.9121645060649,376.856057522096)); +#2487=CARTESIAN_POINT('',(278.82925527646,-30.,376.856057522096)); +#2488=CARTESIAN_POINT('',(278.82925527646,32.5001123553317,364.129097142323)); +#2489=CARTESIAN_POINT('Origin',(278.82925527646,32.5,378.562680827045)); +#2490=CARTESIAN_POINT('',(278.82925527646,-32.5001123553317,364.129097142323)); +#2491=CARTESIAN_POINT('',(278.82925527646,-30.,364.12909921033)); +#2492=CARTESIAN_POINT('',(278.82925527646,-39.746270570086,366.801852332925)); +#2493=CARTESIAN_POINT('Origin',(278.82925527646,-32.5,378.562680827045)); +#2494=CARTESIAN_POINT('',(278.82925527646,-40.3259791722277,367.015675314107)); +#2495=CARTESIAN_POINT('Origin',(278.82925527646,-40.3259791722277,365.860974762813)); +#2496=CARTESIAN_POINT('',(278.82925527646,-60.,367.015675314107)); +#2497=CARTESIAN_POINT('',(278.82925527646,-30.,358.856057522096)); +#2498=CARTESIAN_POINT('Origin',(258.30606377482,-60.,378.864745982306)); +#2499=CARTESIAN_POINT('',(258.30606377482,-40.3259791722277,378.864745982306)); +#2500=CARTESIAN_POINT('Origin',(257.806063758044,-40.3259791722277,377.998720588208)); +#2501=CARTESIAN_POINT('',(258.213475705941,-39.746270570086,378.704378750007)); +#2502=CARTESIAN_POINT('Origin',(263.306063942586,-32.5,387.524999923291)); +#2503=CARTESIAN_POINT('',(257.056138733474,-32.5001123553317,376.699812401895)); +#2504=CARTESIAN_POINT('Origin',(257.056138540873,0.,376.6998120683)); +#2505=CARTESIAN_POINT('',(257.056138733474,32.5001123553317,376.699812401895)); +#2506=CARTESIAN_POINT('Origin',(268.806064127128,-40.3259791722275,397.051279258374)); +#2507=CARTESIAN_POINT('',(277.498032646063,-39.7462705700859,391.092091099561)); +#2508=CARTESIAN_POINT('',(277.519168492375,-40.3259791722275,390.866065331275)); +#2509=CARTESIAN_POINT('Origin',(277.405029342063,-40.3259791722275,392.086664154675)); +#2510=CARTESIAN_POINT('',(268.306064110352,-40.3259791722275,396.185253864276)); +#2511=CARTESIAN_POINT('',(268.398652179231,-39.7462705700859,396.345621096575)); +#2512=CARTESIAN_POINT('Origin',(263.306063942586,-32.5,387.524999923291)); +#2513=CARTESIAN_POINT('',(277.233837737603,-32.5001123552543,393.917379298504)); +#2514=CARTESIAN_POINT('',(269.555989151698,-32.5001123552543,398.350187444687)); +#2515=CARTESIAN_POINT('Origin',(278.660559995496,-32.5,378.660077097278)); +#2516=CARTESIAN_POINT('Origin',(268.306064110352,-39.9997499962006,396.185253864276)); +#2517=CARTESIAN_POINT('',(277.519168492375,-19.9998749981003,390.866065331275)); +#2518=CARTESIAN_POINT('Origin',(263.306063942586,32.5,387.524999923291)); +#2519=CARTESIAN_POINT('',(277.233837737603,32.5001123552543,393.917379298504)); +#2520=CARTESIAN_POINT('Origin',(278.660559995496,32.5,378.660077097278)); +#2521=CARTESIAN_POINT('',(269.555989151698,32.5001123552543,398.350187444687)); +#2522=CARTESIAN_POINT('Origin',(263.306063898956,22.5,387.524999847721)); +#2523=CARTESIAN_POINT('',(263.306063898956,20.9,387.524999847721)); +#2524=CARTESIAN_POINT('Origin',(263.306063898956,-22.5,387.524999847721)); +#2525=CARTESIAN_POINT('',(263.306063898956,-24.1,387.524999847721)); +#2526=CARTESIAN_POINT('Origin',(259.217972928953,25.350000000002,408.77499376812)); +#2527=CARTESIAN_POINT('',(259.217972928953,23.750000000002,408.77499376812)); +#2528=CARTESIAN_POINT('Origin',(259.217972928953,25.350000000002,408.77499376812)); +#2529=CARTESIAN_POINT('',(259.217972928953,23.750000000002,408.77499376812)); +#2530=CARTESIAN_POINT('Origin',(259.217972928953,-24.6499999999977,408.77499376812)); +#2531=CARTESIAN_POINT('',(259.217972928953,-26.2499999999977,408.77499376812)); +#2532=CARTESIAN_POINT('Origin',(259.217972928953,-24.6499999999977,408.77499376812)); +#2533=CARTESIAN_POINT('',(259.217972928953,-26.2499999999977,408.77499376812)); +#2534=CARTESIAN_POINT('Origin',(264.71797293016,-53.7839860711222,399.248714324402)); +#2535=CARTESIAN_POINT('',(275.043301271401,-53.7839860711222,406.364745960074)); +#2536=CARTESIAN_POINT('',(275.231760650604,-53.001828947282,406.038324740127)); +#2537=CARTESIAN_POINT('Origin',(275.543301271397,-53.7839860711222,405.498720556282)); +#2538=CARTESIAN_POINT('',(264.406432309363,-53.001828947282,399.788318508244)); +#2539=CARTESIAN_POINT('',(264.406432309363,-53.001828947282,399.788318508244)); +#2540=CARTESIAN_POINT('',(264.217972930159,-53.7839860711222,400.114739728187)); +#2541=CARTESIAN_POINT('Origin',(264.717972930159,-53.7839860711222,399.248714324402)); +#2542=CARTESIAN_POINT('',(264.217972930159,-53.7839860711222,400.114739728187)); +#2543=CARTESIAN_POINT('Origin',(263.240973525841,0.,426.806977262947)); +#2544=CARTESIAN_POINT('',(275.043301271401,-26.6383948779789,406.364745960074)); +#2545=CARTESIAN_POINT('',(276.268278746692,-48.7000000000019,404.243022734744)); +#2546=CARTESIAN_POINT('',(276.268278746685,0.,404.24302273474)); +#2547=CARTESIAN_POINT('Origin',(273.518301270194,-48.7000000000019,409.0061234437)); +#2548=CARTESIAN_POINT('Origin',(275.043301271401,-53.2767897559577,406.364745960074)); +#2549=CARTESIAN_POINT('',(264.217972930159,-54.9575923169682,400.114739728187)); +#2550=CARTESIAN_POINT('Origin',(253.717972930159,-53.7839860715503,418.30127320766)); +#2551=CARTESIAN_POINT('',(264.854841891953,-53.0018289473229,424.01167525612)); +#2552=CARTESIAN_POINT('',(265.043301271395,-53.7839860715503,423.685254035759)); +#2553=CARTESIAN_POINT('Origin',(264.543301271396,-53.7839860715503,424.55127943954)); +#2554=CARTESIAN_POINT('',(254.217972930159,-53.7839860715503,417.435247803875)); +#2555=CARTESIAN_POINT('',(254.217972930159,-53.7839860715503,417.435247803876)); +#2556=CARTESIAN_POINT('',(254.029513550713,-53.0018289473229,417.761669024239)); +#2557=CARTESIAN_POINT('Origin',(253.717972930159,-53.7839860715503,418.30127320766)); +#2558=CARTESIAN_POINT('',(254.029513550713,-53.0018289473229,417.761669024239)); +#2559=CARTESIAN_POINT('Origin',(255.742972928953,-48.7000000000018,414.793870324422)); +#2560=CARTESIAN_POINT('',(252.992995453794,-48.7000000000018,419.556971031067)); +#2561=CARTESIAN_POINT('Origin',(255.742972928953,-48.7000000000018,414.793870324422)); +#2562=CARTESIAN_POINT('',(263.818323795031,-48.7000000000018,425.806977262947)); +#2563=CARTESIAN_POINT('',(252.992995453794,-48.7000000000018,419.556971031067)); +#2564=CARTESIAN_POINT('Origin',(266.568301270194,-48.7000000000018,421.043876556304)); +#2565=CARTESIAN_POINT('Origin',(265.043301271395,-60.,423.685254035759)); +#2566=CARTESIAN_POINT('',(265.043301271395,-30.,423.685254035759)); +#2567=CARTESIAN_POINT('',(254.217972930159,-58.3191974389893,417.435247803875)); +#2568=CARTESIAN_POINT('Origin',(263.240973525841,0.,426.806977262947)); +#2569=CARTESIAN_POINT('',(263.818323795031,48.7000000000018,425.806977262947)); +#2570=CARTESIAN_POINT('',(263.818323795031,0.,425.806977262947)); +#2571=CARTESIAN_POINT('',(266.568301270192,54.1999549503196,421.043876556303)); +#2572=CARTESIAN_POINT('Origin',(266.568301270194,48.7000000000018,421.043876556304)); +#2573=CARTESIAN_POINT('',(273.518301270196,54.1999549503196,409.006123443701)); +#2574=CARTESIAN_POINT('',(268.305801270526,54.1999549503196,418.034438277576)); +#2575=CARTESIAN_POINT('',(276.268278746692,48.7000000000019,404.243022734744)); +#2576=CARTESIAN_POINT('Origin',(273.518301270194,48.7000000000019,409.0061234437)); +#2577=CARTESIAN_POINT('',(276.268278746685,60.,404.24302273474)); +#2578=CARTESIAN_POINT('',(276.268278746685,0.,404.24302273474)); +#2579=CARTESIAN_POINT('',(263.240973525841,60.,426.806977262947)); +#2580=CARTESIAN_POINT('',(263.818323795031,60.,425.806977262947)); +#2581=CARTESIAN_POINT('',(263.240973525841,0.,426.806977262947)); +#2582=CARTESIAN_POINT('Origin',(262.692972928953,-48.7000000000019,402.756117211818)); +#2583=CARTESIAN_POINT('',(265.442950405448,-48.7000000000019,397.99301650286)); +#2584=CARTESIAN_POINT('',(265.442950405448,-48.7000000000019,397.99301650286)); +#2585=CARTESIAN_POINT('Origin',(262.692972928953,-48.7000000000019,402.756117211818)); +#2586=CARTESIAN_POINT('Origin',(263.818323795031,0.,425.806977262947)); +#2587=CARTESIAN_POINT('',(252.992995453794,48.7000000000018,419.556971031067)); +#2588=CARTESIAN_POINT('',(252.992995453794,0.,419.556971031067)); +#2589=CARTESIAN_POINT('',(252.992995453794,48.7000000000018,419.556971031067)); +#2590=CARTESIAN_POINT('Origin',(252.992995453794,0.,419.556971031067)); +#2591=CARTESIAN_POINT('',(265.442950405448,48.7000000000019,397.99301650286)); +#2592=CARTESIAN_POINT('',(265.442950405448,0.,397.99301650286)); +#2593=CARTESIAN_POINT('',(262.692972928953,54.1999549503196,402.756117211818)); +#2594=CARTESIAN_POINT('Origin',(262.692972928953,48.7000000000019,402.756117211818)); +#2595=CARTESIAN_POINT('',(255.742972928953,54.1999549503196,414.793870324422)); +#2596=CARTESIAN_POINT('',(254.367984191373,54.1999549503196,417.175420677744)); +#2597=CARTESIAN_POINT('Origin',(255.742972928953,48.7000000000018,414.793870324422)); +#2598=CARTESIAN_POINT('Origin',(262.692972928953,48.7000000000019,402.756117211818)); +#2599=CARTESIAN_POINT('',(262.692972928953,54.1999549503196,402.756117211818)); +#2600=CARTESIAN_POINT('',(265.442950405448,48.7000000000019,397.99301650286)); +#2601=CARTESIAN_POINT('Origin',(255.742972928953,54.1999549503196,414.793870324422)); +#2602=CARTESIAN_POINT('',(255.742972928953,54.1999549503196,414.793870324422)); +#2603=CARTESIAN_POINT('Origin',(255.742972928953,48.7000000000018,414.793870324422)); +#2604=CARTESIAN_POINT('Origin',(277.233837694495,0.,393.917379759504)); +#2605=CARTESIAN_POINT('',(277.233837694495,0.,393.917379759504)); +#2606=CARTESIAN_POINT('Origin',(276.268278746685,0.,404.24302273474)); +#2607=CARTESIAN_POINT('',(277.233837694495,60.,393.917379759504)); +#2608=CARTESIAN_POINT('',(276.268278746685,0.,404.24302273474)); +#2609=CARTESIAN_POINT('Origin',(265.442950405448,0.,397.99301650286)); +#2610=CARTESIAN_POINT('Origin',(261.508922718272,0.,425.806977262947)); +#2611=CARTESIAN_POINT('',(261.508922718272,60.,427.806977262947)); +#2612=CARTESIAN_POINT('Origin',(261.508922718272,60.,425.806977262947)); +#2613=CARTESIAN_POINT('',(261.508922718272,0.,427.806977262947)); +#2614=CARTESIAN_POINT('Origin',(248.992995453794,0.,427.806977262947)); +#2615=CARTESIAN_POINT('',(261.508922718272,60.,427.806977262947)); +#2616=CARTESIAN_POINT('Origin',(280.08728203462,0.,358.856057522096)); +#2617=CARTESIAN_POINT('',(248.992995453794,60.,358.856057522096)); +#2618=CARTESIAN_POINT('Origin',(264.540138744207,60.,393.331517392522)); +#2619=CARTESIAN_POINT('Origin',(276.268278746685,0.,404.24302273474)); +#2620=CARTESIAN_POINT('',(278.82925527646,-60.,376.856057522096)); +#2621=CARTESIAN_POINT('',(276.268278746685,-60.,404.24302273474)); +#2622=CARTESIAN_POINT('',(277.708460232557,-60.,388.841788168585)); +#2623=CARTESIAN_POINT('',(278.82925527646,60.,376.856057522096)); +#2624=CARTESIAN_POINT('',(278.82925527646,-30.,376.856057522096)); +#2625=CARTESIAN_POINT('',(276.268278746685,60.,404.24302273474)); +#2626=CARTESIAN_POINT('',(277.233837694495,60.,393.917379759504)); +#2627=CARTESIAN_POINT('',(276.268278746685,0.,404.24302273474)); +#2628=CARTESIAN_POINT('Origin',(278.82925527646,-60.,358.856057522096)); +#2629=CARTESIAN_POINT('',(278.82925527646,-60.,358.856057522096)); +#2630=CARTESIAN_POINT('',(278.82925527646,-60.,376.093787457309)); +#2631=CARTESIAN_POINT('',(278.82925527646,60.,358.856057522096)); +#2632=CARTESIAN_POINT('',(278.82925527646,-30.,358.856057522096)); +#2633=CARTESIAN_POINT('',(278.82925527646,60.,376.093787457309)); +#2634=CARTESIAN_POINT('Origin',(194.996497726897,0.,366.734039063363)); +#2635=CARTESIAN_POINT('',(238.992995453794,55.3282675104192,366.734039063363)); +#2636=CARTESIAN_POINT('',(238.992995453794,-55.3282675104192,366.734039063363)); +#2637=CARTESIAN_POINT('',(238.992995453794,0.,366.734039063363)); +#2638=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,366.734039063363)); +#2639=CARTESIAN_POINT('',(215.327148624352,44.2722169577647,366.734039063363)); +#2640=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,366.734039063363)); +#2641=CARTESIAN_POINT('Origin',(156.,0.,366.734039063363)); +#2642=CARTESIAN_POINT('',(165.656183513397,-21.0672708079966,366.734039063363)); +#2643=CARTESIAN_POINT('Origin',(264.540138744207,-60.,393.331517392522)); +#2644=CARTESIAN_POINT('',(263.240973525841,-60.,426.806977262947)); +#2645=CARTESIAN_POINT('',(266.930812532946,-60.,420.415988630898)); +#2646=CARTESIAN_POINT('',(261.508922718272,-60.,427.806977262947)); +#2647=CARTESIAN_POINT('Origin',(261.508922718272,-60.,425.806977262947)); +#2648=CARTESIAN_POINT('',(251.992995453794,-60.,427.806977262947)); +#2649=CARTESIAN_POINT('',(261.508922718272,-60.,427.806977262947)); +#2650=CARTESIAN_POINT('',(248.992995453794,-60.,424.806977262947)); +#2651=CARTESIAN_POINT('Origin',(251.992995453794,-60.,424.806977262947)); +#2652=CARTESIAN_POINT('',(248.992995453794,-60.,376.734039063363)); +#2653=CARTESIAN_POINT('',(248.992995453794,-60.,427.806977262947)); +#2654=CARTESIAN_POINT('',(248.992995453794,-60.,358.856057522096)); +#2655=CARTESIAN_POINT('',(248.992995453794,-60.,427.806977262947)); +#2656=CARTESIAN_POINT('',(248.992995453794,-60.,358.856057522096)); +#2657=CARTESIAN_POINT('Origin',(251.992995453794,0.,424.806977262947)); +#2658=CARTESIAN_POINT('',(251.992995453794,60.,427.806977262947)); +#2659=CARTESIAN_POINT('',(248.992995453794,60.,424.806977262947)); +#2660=CARTESIAN_POINT('Origin',(251.992995453794,60.,424.806977262947)); +#2661=CARTESIAN_POINT('',(248.992995453794,0.,424.806977262947)); +#2662=CARTESIAN_POINT('',(251.992995453794,0.,427.806977262947)); +#2663=CARTESIAN_POINT('Origin',(248.992995453794,0.,358.856057522096)); +#2664=CARTESIAN_POINT('',(248.992995453794,60.,376.734039063363)); +#2665=CARTESIAN_POINT('',(248.992995453794,60.,427.806977262947)); +#2666=CARTESIAN_POINT('',(248.992995453794,0.,376.734039063363)); +#2667=CARTESIAN_POINT('Origin',(238.992995453794,0.,376.734039063363)); +#2668=CARTESIAN_POINT('Origin',(238.992995453794,-55.3282675104192,376.734039063363)); +#2669=CARTESIAN_POINT('Origin',(238.992995453794,55.3282675104192,376.734039063363)); +#2670=CARTESIAN_POINT('Origin',(149.651065231884,-13.5901077004639,358.856057522096)); +#2671=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,358.856057522096)); +#2672=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,358.856057522096)); +#2673=CARTESIAN_POINT('',(149.651065231884,-13.5901077004639,358.856057522096)); +#2674=CARTESIAN_POINT('Origin',(156.,0.,358.856057522096)); +#2675=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,358.856057522096)); +#2676=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,358.856057522096)); +#2677=CARTESIAN_POINT('Origin',(156.,0.,358.856057522096)); +#2678=CARTESIAN_POINT('Origin',(248.992995453794,60.,358.856057522096)); +#2679=CARTESIAN_POINT('',(248.992995453794,60.,358.856057522096)); +#2680=CARTESIAN_POINT('',(248.992995453794,60.,427.806977262947)); +#2681=CARTESIAN_POINT('',(149.651065231884,13.5901077004639,358.856057522096)); +#2682=CARTESIAN_POINT('Origin',(263.240973525841,0.,426.806977262947)); +#2683=CARTESIAN_POINT('',(263.240973525841,60.,426.806977262947)); +#2684=CARTESIAN_POINT('',(263.818323795031,60.,425.806977262947)); +#2685=CARTESIAN_POINT('',(263.240973525841,0.,426.806977262947)); +#2686=CARTESIAN_POINT('Origin',(261.508922718272,0.,425.806977262947)); +#2687=CARTESIAN_POINT('',(261.508922718272,60.,427.806977262947)); +#2688=CARTESIAN_POINT('Origin',(261.508922718272,60.,425.806977262947)); +#2689=CARTESIAN_POINT('',(261.508922718272,0.,427.806977262947)); +#2690=CARTESIAN_POINT('Origin',(248.992995453794,0.,427.806977262947)); +#2691=CARTESIAN_POINT('',(261.508922718272,60.,427.806977262947)); +#2692=CARTESIAN_POINT('Origin',(280.08728203462,0.,358.856057522096)); +#2693=CARTESIAN_POINT('',(248.992995453794,60.,358.856057522096)); +#2694=CARTESIAN_POINT('Origin',(264.540138744207,60.,393.331517392522)); +#2695=CARTESIAN_POINT('',(0.,0.,0.200000000000031)); +#2696=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2702, +'DISTANCE_ACCURACY_VALUE', +'Maximum model space distance between geometric entities at asserted c +onnectivities'); +#2697=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2702, +'DISTANCE_ACCURACY_VALUE', +'Maximum model space distance between geometric entities at asserted c +onnectivities'); +#2698=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2702, +'DISTANCE_ACCURACY_VALUE', +'Maximum model space distance between geometric entities at asserted c +onnectivities'); +#2699=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2696)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2702,#2704,#2705)) +REPRESENTATION_CONTEXT('','3D') +); +#2700=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2697)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2702,#2704,#2705)) +REPRESENTATION_CONTEXT('','3D') +); +#2701=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2698)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2702,#2704,#2705)) +REPRESENTATION_CONTEXT('','3D') +); +#2702=( +LENGTH_UNIT() +NAMED_UNIT(*) +SI_UNIT(.MILLI.,.METRE.) +); +#2703=( +LENGTH_UNIT() +NAMED_UNIT(*) +SI_UNIT($,.METRE.) +); +#2704=( +NAMED_UNIT(*) +PLANE_ANGLE_UNIT() +SI_UNIT($,.RADIAN.) +); +#2705=( +NAMED_UNIT(*) +SI_UNIT($,.STERADIAN.) +SOLID_ANGLE_UNIT() +); +#2706=SHAPE_DEFINITION_REPRESENTATION(#2708,#2711); +#2707=SHAPE_DEFINITION_REPRESENTATION(#2709,#2712); +#2708=PRODUCT_DEFINITION_SHAPE('',$,#2714); +#2709=PRODUCT_DEFINITION_SHAPE('',$,#2715); +#2710=PRODUCT_DEFINITION_SHAPE($,$,#14); +#2711=SHAPE_REPRESENTATION('',(#1398,#1533),#2699); +#2712=SHAPE_REPRESENTATION('',(#1399),#2700); +#2713=PRODUCT_DEFINITION_CONTEXT('part definition',#2721,'design'); +#2714=PRODUCT_DEFINITION('FetchBaseCameraMount Mk.1', +'FetchBaseCameraMount Mk.1 v25',#2716,#2713); +#2715=PRODUCT_DEFINITION('\X2\30B330F330DD30FC30CD30F330C8\X0\1', +'\X2\30B330F330DD30FC30CD30F330C8\X0\1',#2717,#2713); +#2716=PRODUCT_DEFINITION_FORMATION('',$,#2723); +#2717=PRODUCT_DEFINITION_FORMATION('',$,#2724); +#2718=PRODUCT_RELATED_PRODUCT_CATEGORY('FetchBaseCameraMount Mk.1 v25', +'FetchBaseCameraMount Mk.1 v25',(#2723)); +#2719=PRODUCT_RELATED_PRODUCT_CATEGORY('\X2\30B330F330DD30FC30CD30F330C8\X0\1', +'\X2\30B330F330DD30FC30CD30F330C8\X0\1',(#2724)); +#2720=APPLICATION_PROTOCOL_DEFINITION('international standard', +'automotive_design',2009,#2721); +#2721=APPLICATION_CONTEXT( +'Core Data for Automotive Mechanical Design Process'); +#2722=PRODUCT_CONTEXT('part definition',#2721,'mechanical'); +#2723=PRODUCT('FetchBaseCameraMount Mk.1', +'FetchBaseCameraMount Mk.1 v25',$,(#2722)); +#2724=PRODUCT('\X2\30B330F330DD30FC30CD30F330C8\X0\1', +'\X2\30B330F330DD30FC30CD30F330C8\X0\1',$,(#2722)); +#2725=PRESENTATION_STYLE_ASSIGNMENT((#2726)); +#2726=SURFACE_STYLE_USAGE(.BOTH.,#2727); +#2727=SURFACE_SIDE_STYLE('',(#2728)); +#2728=SURFACE_STYLE_FILL_AREA(#2729); +#2729=FILL_AREA_STYLE('\X2\92FC\X0\ - \X2\30B530C630F3\X0\',(#2730)); +#2730=FILL_AREA_STYLE_COLOUR('\X2\92FC\X0\ - \X2\30B530C630F3\X0\',#2731); +#2731=COLOUR_RGB('\X2\92FC\X0\ - \X2\30B530C630F3\X0\',0.627450980392157, +0.627450980392157,0.627450980392157); +ENDSEC; +END-ISO-10303-21; diff --git a/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_collision.stl b/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_collision.stl new file mode 100644 index 0000000000..b6669f3e56 Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_collision.stl differ diff --git a/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_main.stl b/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_main.stl new file mode 100644 index 0000000000..6e232e3e9e Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_main.stl differ diff --git a/jsk_fetch_robot/jsk_fetch_accessories/package.xml b/jsk_fetch_robot/jsk_fetch_accessories/package.xml new file mode 100644 index 0000000000..19b42d5c25 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_accessories/package.xml @@ -0,0 +1,13 @@ +<package> + <name>jsk_fetch_accessories</name> + <version>1.1.0</version> + <description> + jsk_fetch_accessories + </description> + <maintainer email="k-okada@jsk.t.u-tokyo.ac.jp">Kei Okada</maintainer> + <license>BSD</license> + <url></url> + <buildtool_depend>catkin</buildtool_depend> + <export> + </export> +</package> diff --git a/jsk_fetch_robot/jsk_fetch_startup/README.md b/jsk_fetch_robot/jsk_fetch_startup/README.md index 5a673d6d87..21a7c40e2d 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/README.md +++ b/jsk_fetch_robot/jsk_fetch_startup/README.md @@ -24,9 +24,9 @@ sudo mv rockmongo-1.1.7 /var/www/html/rockmongo ### Teleoperation -Below is a flow of commands from Joystick sent to base controller: +For the JSK safe teleop system, please see [data flow diagram of safe_teleop.launch](https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_robot_common/jsk_robot_startup#launchsafe_teleoplaunch) - +The numbers assigned to the joystick are as follows.   diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app index 2b0a626bde..8d765a06ac 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app @@ -3,3 +3,87 @@ platform: fetch launch: jsk_fetch_startup/go_to_kitchen.xml interface: jsk_fetch_startup/go_to_kitchen.interface icon: jsk_fetch_startup/go_to_kitchen.png +plugins: + - name: head_camera_video_recorder_plugin + type: app_recorder/video_recorder_plugin + launch_args: + video_path: /tmp + video_title: go_to_kitchen_head_camera.avi + video_topic_name: /head_camera/rgb/throttled/image_rect_color + video_fps: 5.0 + - name: object_detection_video_recorder_plugin + type: app_recorder/video_recorder_plugin + launch_args: + video_path: /tmp + video_title: go_to_kitchen_object_detection.avi + video_topic_name: /edgetpu_object_detector/output/image + video_fps: 15.0 + - name: rosbag_recorder_plugin + type: app_recorder/rosbag_recorder_plugin + launch_args: + rosbag_path: /tmp + rosbag_title: go_to_kitchen_rosbag.bag + compress: true + rosbag_topic_names: + - /rosout + - /tf + - /tf_static + - /joint_states + - /map + - /odom + - /odom_combined + - /cmd_vel + - /move_base/NavFnROS/plan + - /move_base/TrajectoryPlannerROS/global_plan + - /move_base/TrajectoryPlannerROS/local_plan + - /move_base/global_costmap/footprint + - /spots_marker_array + - /spots_pictogram + - /safe_teleop_base/local_costmap/costmap + - /move_base/local_costmap/costmap + - /move_base/global_costmap/costmap + - /particlecloud + - /base_scan/throttled + - /head_camera/rgb/throttled/camera_info + - /head_camera/depth_registered/throttled/camera_info + - /head_camera/rgb/throttled/image_rect_color/compressed + - /head_camera/depth_registered/throttled/image_rect/compressedDepth + - /audio + - name: gdrive_uploader_plugin + type: app_uploader/gdrive_uploader_plugin + plugin_args: + upload_file_paths: + - /tmp/go_to_kitchen_head_camera.avi + - /tmp/go_to_kitchen_object_detection.avi + - /tmp/go_to_kitchen_rosbag.bag + upload_file_titles: + - go_to_kitchen_head_camera.avi + - go_to_kitchen_object_detection.avi + - go_to_kitchen_rosbag.bag + upload_parents_path: fetch_morning_go_to_kitchen + upload_server_name: /gdrive_server + - name: speech_notifier_plugin + type: app_notifier/speech_notifier_plugin + plugin_args: + client_name: /sound_play + - name: mail_notifier_plugin + type: app_notifier/mail_notifier_plugin + plugin_args: + mail_title: Fetch kitchen patrol demo + use_timestamp_title: true + plugin_arg_yaml: /var/lib/robot/fetch_mail_notifier_plugin.yaml +plugin_order: + start_plugin_order: + - head_camera_video_recorder_plugin + - object_detection_video_recorder_plugin + - rosbag_recorder_plugin + - gdrive_uploader_plugin + - speech_notifier_plugin + - mail_notifier_plugin + stop_plugin_order: + - head_camera_video_recorder_plugin + - object_detection_video_recorder_plugin + - rosbag_recorder_plugin + - gdrive_uploader_plugin + - speech_notifier_plugin + - mail_notifier_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml index e29c5a737e..bb418e8855 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml @@ -1,4 +1,4 @@ <launch> - <node name="go_to_kitchen" pkg="roseus" type="roseus" - args="$(find jsk_fetch_startup)/euslisp/go-to-kitchen.l"/> + <node name="go_to_kitchen" pkg="roseus" type="roseus" required="true" output="screen" + args="$(find jsk_fetch_startup)/euslisp/go-to-kitchen.l" /> </launch> diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/install_upstart.sh b/jsk_fetch_robot/jsk_fetch_startup/config/install_upstart.sh index 0a9b311787..9bafe6c56b 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/config/install_upstart.sh +++ b/jsk_fetch_robot/jsk_fetch_startup/config/install_upstart.sh @@ -5,8 +5,8 @@ jsk_fetch_startup=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`"/.. > /dev/null && IFS=':' read -r -a prefix_paths <<< "$CMAKE_PREFIX_PATH" current_prefix_path="${prefix_paths[0]}" -sudo bash -c "cat <<EOF > /etc/init/jsk-fetch-startup.conf -description \"spawn jsk bringup nodes for fetch\" +# jsk-fetch-startup +sudo bash -c "echo \"description \\\"spawn jsk bringup nodes for fetch\\\" # use default log dir: yamaguchi & s-kitagawa (2019/04/18) # env ROS_LOG_DIR=/var/log/ros @@ -16,23 +16,38 @@ stop on roscore_is_down respawn # add ROSCONSOLE_FORMAT: s-kitagawa (2019/10/03) -env AUDIO_DEVICE=alsa_output.usb-1130_USB_AUDIO-00-AUDIO.analog-stereo -env ROSCONSOLE_FORMAT='[${severity}] [${time}] [${node}:${logger}]: ${message}' +env AUDIO_DEVICE=\\\"alsa_output.usb-1130_USB_AUDIO-00-AUDIO.analog-stereo\\\" +env ROSCONSOLE_FORMAT=\\\"[\\\${severity}] [\\\${time}] [\\\${node}:\\\${logger}]: \\\${message}\\\" # enable usb speaker if available pre-start script # launch by fetch user: yamaguchi & s-kitagawa (2019/04/18) - # exec su ros -c 'pactl set-default-sink $AUDIO_DEVICE || true' - exec su fetch -c 'pactl set-default-sink $AUDIO_DEVICE || true' + # exec su ros -c \\\"pactl set-default-sink \\\$AUDIO_DEVICE || true\\\" + exec su fetch -c \\\"pactl set-default-sink \\\$AUDIO_DEVICE || true\\\" end script script # launch by fetch user: yamaguchi & s-kitagawa (2019/04/18) - # exec su ros -c \". ${current_prefix_path}/setup.bash && roslaunch ${jsk_fetch_startup}/launch/fetch_bringup.launch boot_sound:=true\" - exec su fetch -c \". ${current_prefix_path}/setup.bash && roslaunch ${jsk_fetch_startup}/launch/fetch_bringup.launch boot_sound:=true\" -end script - -EOF" + # exec su ros -c \\\". ${current_prefix_path}/setup.bash && roslaunch ${jsk_fetch_startup}/launch/fetch_bringup.launch boot_sound:=true\\\" + exec su fetch -c \\\". ${current_prefix_path}/setup.bash && roslaunch ${jsk_fetch_startup}/launch/fetch_bringup.launch boot_sound:=true\\\" +end script\" > /etc/init/jsk-fetch-startup.conf" echo "== cat /etc/init/jsk-fetch-startup.conf ==" cat /etc/init/jsk-fetch-startup.conf echo "== usage: sudo service jsk-fetch-startup restart ==" + +# vertical-touchscreen +sudo bash -c "echo \"# See https://askubuntu.com/questions/507496/how-to-start-gui-application-with-upstart +description \\\"Use vertical touchscreen\\\" + +start on runlevel [2345] +stop on runlevel [016] + +script + sleep 30 # Wait for X programs to start + export DISPLAY=:0 + exec su fetch -c \\\". ${current_prefix_path}/setup.bash && ${jsk_fetch_startup}/scripts/vertical-touchscreen.sh\\\" +end script\" > /etc/init/vertical-touchscreen.conf" +echo +echo "== cat /etc/init/vertical-touchscreen.conf ==" +cat /etc/init/vertical-touchscreen.conf +echo "== usage: sudo service vertical-touchscreen restart ==" diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz b/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz index ac9a4ebf87..66625cc9fa 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz +++ b/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz @@ -1,11 +1,11 @@ Panels: - Class: rviz/Displays - Help Height: 75 + Help Height: 78 Name: Displays Property Tree Widget: Expanded: ~ - Splitter Ratio: 0.625293 - Tree Height: 725 + Splitter Ratio: 0.4187380373477936 + Tree Height: 755 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties @@ -14,7 +14,7 @@ Panels: - /2D Nav Goal1 - /Publish Point1 Name: Tool Properties - Splitter Ratio: 0.588679 + Splitter Ratio: 0.5886790156364441 - Class: rviz/Views Expanded: - /Current View1 @@ -24,7 +24,11 @@ Panels: Experimental: false Name: Time SyncMode: 0 - SyncSource: KinectPointCloud + SyncSource: BaseScan +Preferences: + PromptSaveOnExit: true +Toolbars: + toolButtonStyle: 2 Visualization Manager: Class: "" Displays: @@ -34,7 +38,7 @@ Visualization Manager: Color: 160; 160; 164 Enabled: true Line Style: - Line Width: 0.03 + Line Width: 0.029999999329447746 Value: Lines Name: Grid Normal Cell Count: 0 @@ -201,7 +205,7 @@ Visualization Manager: {} Update Interval: 0 Value: false - - Alpha: 0.7 + - Alpha: 0.699999988079071 Class: rviz/Map Color Scheme: map Draw Behind: false @@ -209,17 +213,18 @@ Visualization Manager: Name: Map Topic: /map Unreliable: false + Use Timestamp: false Value: true - Alpha: 1 Buffer Length: 1 Class: rviz/Path Color: 255; 0; 127 Enabled: true - Head Diameter: 0.3 - Head Length: 0.2 - Length: 0.3 + Head Diameter: 0.30000001192092896 + Head Length: 0.20000000298023224 + Length: 0.30000001192092896 Line Style: Billboards - Line Width: 0.05 + Line Width: 0.05000000074505806 Name: NavigationPath Offset: X: 0 @@ -227,9 +232,9 @@ Visualization Manager: Z: 0 Pose Color: 255; 85; 255 Pose Style: None - Radius: 0.03 - Shaft Diameter: 0.1 - Shaft Length: 0.1 + Radius: 0.029999999329447746 + Shaft Diameter: 0.10000000149011612 + Shaft Length: 0.10000000149011612 Topic: /move_base/NavfnROS/plan Unreliable: false Value: true @@ -238,11 +243,11 @@ Visualization Manager: Class: rviz/Path Color: 255; 0; 0 Enabled: true - Head Diameter: 0.3 - Head Length: 0.2 - Length: 0.3 + Head Diameter: 0.30000001192092896 + Head Length: 0.20000000298023224 + Length: 0.30000001192092896 Line Style: Billboards - Line Width: 0.03 + Line Width: 0.029999999329447746 Name: GlobalPath Offset: X: 0 @@ -250,9 +255,9 @@ Visualization Manager: Z: 0 Pose Color: 255; 85; 255 Pose Style: None - Radius: 0.03 - Shaft Diameter: 0.1 - Shaft Length: 0.1 + Radius: 0.029999999329447746 + Shaft Diameter: 0.10000000149011612 + Shaft Length: 0.10000000149011612 Topic: /move_base/TrajectoryPlannerROS/global_plan Unreliable: false Value: true @@ -261,11 +266,11 @@ Visualization Manager: Class: rviz/Path Color: 25; 255; 0 Enabled: true - Head Diameter: 0.3 - Head Length: 0.2 - Length: 0.3 + Head Diameter: 0.30000001192092896 + Head Length: 0.20000000298023224 + Length: 0.30000001192092896 Line Style: Lines - Line Width: 0.03 + Line Width: 0.029999999329447746 Name: LocalPath Offset: X: 0 @@ -273,9 +278,9 @@ Visualization Manager: Z: 0 Pose Color: 255; 85; 255 Pose Style: None - Radius: 0.03 - Shaft Diameter: 0.1 - Shaft Length: 0.1 + Radius: 0.029999999329447746 + Shaft Diameter: 0.10000000149011612 + Shaft Length: 0.10000000149011612 Topic: /move_base/TrajectoryPlannerROS/local_plan Unreliable: false Value: true @@ -292,7 +297,9 @@ Visualization Manager: Marker Topic: /spots_marker_array Name: SpotLabel Namespaces: - text: true + pin_body: true + pin_head: true + pin_label: true Queue Size: 100 Value: true - Class: jsk_rviz_plugin/PictogramArray @@ -301,7 +308,7 @@ Visualization Manager: Topic: /spots_pictogram Unreliable: false Value: true - - Alpha: 0.3 + - Alpha: 0.30000001192092896 Class: rviz/Map Color Scheme: costmap Draw Behind: false @@ -309,8 +316,9 @@ Visualization Manager: Name: SafeCostMap Topic: /safe_teleop_base/local_costmap/costmap Unreliable: false + Use Timestamp: false Value: false - - Alpha: 0.35 + - Alpha: 0.3499999940395355 Class: rviz/Map Color Scheme: costmap Draw Behind: false @@ -318,8 +326,9 @@ Visualization Manager: Name: LocalCostMap Topic: /move_base/local_costmap/costmap Unreliable: false + Use Timestamp: false Value: true - - Alpha: 0.35 + - Alpha: 0.3499999940395355 Class: rviz/Map Color Scheme: costmap Draw Behind: false @@ -327,12 +336,21 @@ Visualization Manager: Name: GlobalCostMap Topic: /move_base/global_costmap/costmap Unreliable: false + Use Timestamp: false Value: true - - Arrow Length: 0.2 + - Alpha: 1 + Arrow Length: 0.20000000298023224 + Axes Length: 0.30000001192092896 + Axes Radius: 0.009999999776482582 Class: rviz/PoseArray Color: 255; 25; 0 Enabled: false + Head Length: 0.07000000029802322 + Head Radius: 0.029999999329447746 Name: AMCLParticle + Shaft Length: 0.23000000417232513 + Shaft Radius: 0.009999999776482582 + Shape: Arrow (Flat) Topic: /particlecloud Unreliable: false Value: false @@ -359,7 +377,7 @@ Visualization Manager: Queue Size: 10 Selectable: true Size (Pixels): 3 - Size (m): 0.07 + Size (m): 0.07000000029802322 Style: Spheres Topic: /base_scan/throttled Unreliable: false @@ -384,12 +402,12 @@ Visualization Manager: Max Intensity: 4096 Min Color: 0; 0; 0 Min Intensity: 0 - Name: KinectPointCloud + Name: XtionPointCloud Position Transformer: XYZ Queue Size: 10 Selectable: true Size (Pixels): 4 - Size (m): 0.008 + Size (m): 0.00800000037997961 Style: Points Topic: /head_camera/depth_registered/quater/throttled/points Unreliable: false @@ -398,18 +416,21 @@ Visualization Manager: Value: true - Class: jsk_rviz_plugin/OverlayImage Enabled: true - Name: KinectRGB + Name: XtionRGB Topic: /head_camera/rgb/quater/image_rect_color Value: true - alpha: 0.8 + alpha: 0.800000011920929 height: 128 keep aspect ratio: true left: 10 + overwrite alpha value: false top: 10 + transport hint: raw width: 320 Enabled: true Global Options: Background Color: 48; 48; 48 + Default Light: true Fixed Frame: map Frame Rate: 30 Name: root @@ -421,7 +442,10 @@ Visualization Manager: - Class: rviz/FocusCamera - Class: rviz/Measure - Class: rviz/SetInitialPose + Theta std deviation: 0.2617993950843811 Topic: /initialpose + X std deviation: 0.5 + Y std deviation: 0.5 - Class: rviz/SetGoal Topic: /move_base_simple/goal - Class: rviz/PublishPoint @@ -435,7 +459,7 @@ Visualization Manager: Class: rviz/Orbit Distance: 10 Enable Stereo Rendering: - Stereo Eye Separation: 0.06 + Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false @@ -443,20 +467,23 @@ Visualization Manager: X: 0 Y: 0 Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false Name: Current View - Near Clip Distance: 0.01 - Pitch: 1.0104 + Near Clip Distance: 0.009999999776482582 + Pitch: 0.7897970676422119 Target Frame: base_link Value: Orbit (rviz) - Yaw: 0.200398 + Yaw: 5.593582630157471 Saved: ~ Window Geometry: Displays: collapsed: false - Height: 1003 + Height: 1052 Hide Left Dock: false - Hide Right Dock: false - QMainWindow State: 000000ff00000000fd00000004000000000000016a00000360fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005e00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000360000000d000fffffffb00000018004b0069006e00650063007400430061006d0065007200610000000373000000160000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018004e006100720072006f007700430061006d0065007200610000000244000001460000000000000000000000010000010f00000360fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000360000000aa00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000780000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000065c0000003efc0100000002fb0000000800540069006d006501000000000000065c0000026a00fffffffb0000000800540069006d00650100000000000004500000000000000000000003d70000036000000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Hide Right Dock: true + QMainWindow State: 000000ff00000000fd0000000400000000000001f80000037efc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000037e000000c900fffffffb00000018004b0069006e00650063007400430061006d0065007200610000000373000000160000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018004e006100720072006f007700430061006d0065007200610000000244000001460000000000000000000000010000010f00000463fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000463000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000780000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073d0000003efc0100000002fb0000000800540069006d006501000000000000073d000002eb00fffffffb0000000800540069006d006501000000000000045000000000000000000000053f0000037e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -464,7 +491,7 @@ Window Geometry: Tool Properties: collapsed: false Views: - collapsed: false - Width: 1628 - X: 208 - Y: 17 + collapsed: true + Width: 1853 + X: 67 + Y: 0 diff --git a/jsk_fetch_robot/jsk_fetch_startup/euslisp/auto-dock.l b/jsk_fetch_robot/jsk_fetch_startup/euslisp/auto-dock.l index df7b44ee69..10ca08b546 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/euslisp/auto-dock.l +++ b/jsk_fetch_robot/jsk_fetch_startup/euslisp/auto-dock.l @@ -1,8 +1,10 @@ -;; go-dock.l -;; Author: Yuki Furuta <furushchev@jsk.imi.i.u-tokyo.ac.jp> +#!/usr/bin/env roseus -(ros::roseus "fetch_go_dock") +(require :fetch-interface "package://fetcheus/fetch-interface.l") (load "package://jsk_fetch_startup/euslisp/navigation-utils.l") +(ros::roseus "fetch_go_dock") +(fetch-init) +(send *ri* :clear-costmap) (auto-dock) (exit) diff --git a/jsk_fetch_robot/jsk_fetch_startup/euslisp/go-to-kitchen.l b/jsk_fetch_robot/jsk_fetch_startup/euslisp/go-to-kitchen.l index c55912599f..171da03639 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/euslisp/go-to-kitchen.l +++ b/jsk_fetch_robot/jsk_fetch_startup/euslisp/go-to-kitchen.l @@ -1,19 +1,12 @@ -(ros::roseus "go_to_kitchen") -(load "package://jsk_fetch_startup/euslisp/navigation-utils.l") +#!/usr/bin/env roseus -(defun go-to-kitchen () - ;; go to kitchen - (send *ri* :speak "go to kitchen.") - (if (go-to-spot "/eng2/7f/room73B2-sink-front1" (make-coords :pos #f(100 -1000 0))) - (progn ;; succeeded to go to kitchen - (unix:sleep 1) - (send *ri* :speak "arrived at kitchen." :wait t) - (unix:sleep 1) - (send *ri* :speak "return to dock." :wait t) - (auto-dock)) - (progn ;; failed to go to kitchen - (send *ri* :speak "I could not go to kitchen, so return to dock." :wait t) - (auto-dock)))) +(require :fetch-interface "package://fetcheus/fetch-interface.l") +(load "package://jsk_fetch_startup/euslisp/navigation-utils.l") +(defun main () + (fetch-init) + (send *ri* :clear-costmap) + (go-to-kitchen :tweet t :n-dock-trial 3 :n-kitchen-trial 3)) -(go-to-kitchen) +(ros::roseus "go_to_kitchen") +(if (main) (unix::exit 0) (unix::exit 1)) diff --git a/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l b/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l index 8104a814d6..2ebe8c80d0 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l +++ b/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l @@ -1,5 +1,4 @@ -;; go-dock.l -;; Author: Yuki Furuta <furushchev@jsk.imi.i.u-tokyo.ac.jp> +(load "package://jsk_robot_startup/lifelog/tweet_client.l") (ros::load-ros-manifest "fetch_auto_dock_msgs") (ros::load-ros-manifest "power_msgs") @@ -9,8 +8,23 @@ (defparameter *spots* nil) (defparameter *dock-spot* "/eng2/7f/room73B2-fetch-dock-front") (defparameter *is-charging* nil) +(defparameter *tfl* (instance ros::transform-listener :init)) -(defun simple-dock () + +(defun get-spot-coords (name) + (unless *spots* + (setq *spots* (one-shot-subscribe "/spots_marker_array" visualization_msgs::MarkerArray))) + (let ((spot-coords nil) (frame-id nil)) + (dolist (x (send *spots* :markers)) + (if (equal (send x :text) name) + (progn + (setq spot-coords (send x :pose)) + (setq frame-id (send (send x :header) :frame_id))))) + (send (send spot-coords :position) :z 0) + (setq spot-coords (ros::tf-pose->coords spot-coords)) + (cons spot-coords frame-id))) + +(defun simple-dock (&key (use-pose t)) (unless *dock-action* (setq *dock-action* (instance ros::simple-action-client :init @@ -18,13 +32,26 @@ (unless (send *dock-action* :wait-for-server 5) (ros::ros-error "/dock action server is not started") (return-from dock nil)) - - (send *dock-action* :send-goal - (instance fetch_auto_dock_msgs::DockActionGoal :init)) - (unless (send *dock-action* :wait-for-result :timeout 60) - (ros::ros-error "No result returned from /dock action server") - (return-from dock nil)) - (send (send *dock-action* :get-result) :docked)) + (let ((dock-action-goal (instance fetch_auto_dock_msgs::DockActionGoal :init))) + (when use-pose + (let* ((timestamp (ros::time-now)) + (cret (get-spot-coords *dock-spot*)) + (frame-to-dock (car cret)) + (frame-id (cdr cret)) + (lret (send *tfl* :wait-for-transform "base_link" frame-id timestamp 5)) + (base-to-frame (send *tfl* :lookup-transform "base_link" frame-id timestamp)) + (goal-pose (ros::coords->tf-pose (send frame-to-dock :transform base-to-frame :world))) + (pose-msg (instance geometry_msgs::PoseStamped :init))) + (send pose-msg :header :stamp timestamp) + (send pose-msg :header :frame_id "base_link") + (send pose-msg :pose goal-pose) + (send dock-action-goal :goal :dock_pose pose-msg))) + (send *dock-action* :send-goal dock-action-goal) + (unless (send *dock-action* :wait-for-result :timeout 60) + (send *dock-action* :cancel-all-goals) + (ros::ros-error "No result returned from /dock action server") + (return-from simple-dock nil)) + (send (send *dock-action* :get-result) :docked))) (defun dock () ;; look down @@ -32,7 +59,7 @@ (require :fetch-interface "package://fetcheus/fetch-interface.l") (fetch-init)) (send *fetch* :angle-vector (send *ri* :state :potentio-vector)) - (send *fetch* :head :look-at (float-vector 1500 0 500)) + (send *fetch* :head :look-at (float-vector 800 0 500)) (send *ri* :angle-vector (send *fetch* :angle-vector) 1000) (send *ri* :wait-interpolation) (simple-dock)) @@ -53,7 +80,7 @@ (return-from undock nil)) (send (send *undock-action* :get-result) :undocked)) -(defun go-to-spot (name &optional (relative-coords (make-coords))) +(defun go-to-spot (name &optional (relative-coords (make-coords)) &key (undock-rotate nil)) ;; undock if fetch is docking (unless (boundp '*ri*) (require :fetch-interface "package://fetcheus/fetch-interface.l") @@ -67,23 +94,84 @@ (ros::ros-warn "Skip undocking, so please make sure that Fetch is already undocked.") (return)) (setq *is-charging* (send msg :is_charging)) - (if *is-charging* - (progn (undock))) + (when *is-charging* + (undock) + ;; rotate after undock + (when undock-rotate (send *ri* :go-pos-unsafe 0 0 180))) (unless *is-charging* (return)) (if (eq i 2) (progn (send *ri* :speak "Fail to undock") (ros::ros-error "Fail to undock"))))) ;; go to spot - (unless *spots* - (setq *spots* (one-shot-subscribe "/spots_marker_array" visualization_msgs::MarkerArray))) - (let ((goal-pose nil) (frame-id nil)) - (dolist (x (send *spots* :markers)) - (if (equal (send x :text) name) - (progn - (setq goal-pose (send x :pose)) - (setq frame-id (send (send x :header) :frame_id))))) - (send (send goal-pose :position) :z 0) - (setq goal-pose (send (ros::tf-pose->coords goal-pose) :transform relative-coords :world)) + (let* ((ret (get-spot-coords name)) + (goal-pose (car ret)) + (frame-id (cdr ret))) + (when relative-coords + (setq goal-pose (send goal-pose :transform relative-coords :world))) + (send *ri* :clear-costmap) (send *ri* :move-to goal-pose :frame-id frame-id))) -(defun auto-dock () - (go-to-spot "/eng2/7f/room73B2-fetch-dock-front" (make-coords :pos #f(0 -1500 0))) - (dock)) +(defun auto-dock (&key (n-trial 1)) + (let ((success nil)) + (dotimes (i n-trial) + (when (go-to-spot *dock-spot* (make-coords :pos #f(0 -800 0))) + (ros::ros-info "arrived at the dock.") + (setq success (dock)) + (when success (return-from auto-dock success)))) + success)) + +(defun go-to-kitchen (&key (tweet t) (n-dock-trial 1) (n-kitchen-trial 1)) + ;; go to kitchen + (unless (boundp '*ri*) + (require :fetch-interface "package://fetcheus/fetch-interface.l") + (fetch-init)) + (ros::ros-info "start going to the kitchen.") + (send *ri* :speak-jp "キッチンに向かいます。") + ;; stove + (let ((succcess-go-to-kitchen)) + (dotimes (i n-kitchen-trial) + (setq success-go-to-kitchen + (go-to-spot "/eng2/7f/room73B2-sink-front0" + (make-coords :pos #f(100 -500 0)) :undock-rotate t)) + (when success-go-to-kitchen (return))) + (if success-go-to-kitchen + (progn ;; succeeded to go to kitchen + (unix:sleep 1) + (ros::ros-info "arrived at the kitchen stove.") + (send *ri* :speak-jp "キッチンのコンロの前につきました。" :wait t) + (unix:sleep 1) + ;; stove + (when tweet + (tweet-string "I took a photo at 73B2 Kitchen stove." :warning-time 3 + :with-image "/edgetpu_object_detector/output/image" :speak t)) + (send *ri* :go-pos-unsafe 0 0 -45) + ;; sink + (when tweet + (tweet-string "I took a photo at 73B2 Kitchen sink." :warning-time 3 + :with-image "/edgetpu_object_detector/output/image" :speak t)) + (send *ri* :go-pos-unsafe 0 0 -90) + (send *ri* :go-pos-unsafe 0 0 -90)) + (progn ;; failed to go to kitchen + (ros::ros-error "failed going to the kitchen.") + (send *ri* :speak-jp "失敗しました。ドックに戻ります。" :wait t) + (ros::ros-info "start going back to the dock.") + (auto-dock :n-trial n-dock-trial) + (return-from go-to-kitchen nil)))) + ;; sink + ;; (send *ri* :speak-jp "シンクに向かいます。") + ;; (if (go-to-spot "/eng2/7f/room73B2-sink-front1" (make-coords :pos #f(100 -200 0))) + ;; (progn ;; succeeded to go to kitchen + ;; (unix:sleep 1) + ;; (ros::ros-info "arrived at the kitchen.") + ;; (send *ri* :speak-jp "キッチンのシンクの前につきました。" :wait t) + ;; (unix:sleep 1) + ;; (when tweet + ;; (tweet-string "I took a photo at 73B2 Kitchen sink." :warning-time 3 + ;; :with-image "/edgetpu_object_detector/output/image" :speak t))) + ;; (progn ;; failed to go to kitchen + ;; (ros::ros-error "failed going to the kitchen.") + ;; (send *ri* :speak-jp "失敗しました。ドックに戻ります。" :wait t) + ;; (ros::ros-info "start going back to the dock.") + ;; (auto-dock :n-trial n-dock-trial) + ;; (return-from go-to-kitchen nil))) + (ros::ros-info "start going back to the dock.") + (send *ri* :speak-jp "ドックに戻ります。" :wait t) + (auto-dock :n-trial n-dock-trial)) diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch index 30e29fd74f..9431f3c4ed 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch @@ -7,6 +7,8 @@ <arg name="map_frame" default="eng2" /> <arg name="map_file" default="$(find jsk_maps)/raw_maps/eng2-7f-0.05.yaml"/> <arg name="keepout_map_file" default="$(find jsk_maps)/raw_maps/eng2-7f-0.05_keepout.yaml" /> + <arg name="use_keepout" default="true" /> + <arg name="use_build_map" default="false" /> <param name="robot/type" value="fetch" /> <param name="robot/name" command='bash -c "hostname | xargs echo -n"' /> @@ -14,8 +16,6 @@ <include file="$(find jsk_fetch_startup)/jsk_fetch.machine" /> <!-- add jsk startups --> - <node pkg="jsk_fetch_startup" name="warning" type="warning.py" respawn="true" /> - <node pkg="jsk_fetch_startup" name="battery_warning" type="battery_warning.py" respawn="true" output="screen"> <rosparam> @@ -76,9 +76,16 @@ <!-- app manager --> <include file="$(find jsk_robot_startup)/lifelog/app_manager.launch"> - <arg name="use_applist" value="true" /> - <arg name="applist" value="$(find jsk_fetch_startup)/apps"/> + <arg name="use_applist" value="false" /> <!-- use plugin --> <arg name="respawn" value="false" /> + <arg name="basic" value="true" /> + <arg name="basic_yaml" value="/var/lib/robot/roswww_basic_keys.yaml" /> + </include> + + <!-- rwt_image_view --> + <include file="$(find jsk_robot_startup)/lifelog/rwt_image_view.launch"> + <arg name="launch_roswww" value="false" /> + <arg name="launch_websocket" value="false" /> </include> <!-- downsample / throttle sensor data --> @@ -89,10 +96,16 @@ <!-- include fetch moveit --> <include file="$(find fetch_moveit_config)/launch/move_group.launch" if="$(arg launch_moveit)" /> + <!-- overwrite fetch.srdf --> + <!-- The semantic description that corresponds to the URDF --> + <param name="robot_description_semantic" + command="rosrun xacro xacro --inorder $(find jsk_fetch_startup)/launch/moveit/fetch.srdf.xacro" /> <!-- teleop --> <include file="$(find jsk_fetch_startup)/launch/fetch_teleop.xml" - if="$(arg launch_teleop)" /> + if="$(arg launch_teleop)" > + <arg name="odom_topic" value="/odom_combined" /> + </include> <!-- speech recognition --> <node name="respeaker_transformer" pkg="tf" type="static_transform_publisher" @@ -125,19 +138,29 @@ <group if="$(arg launch_move_base)"> <!-- jsk_maps --> <include file="$(find jsk_maps)/launch/start_map_$(arg map_frame).launch"> - <arg name="launch_map_server" value="false" /> + <arg name="launch_map_server" value="true" /> + <arg name="keepout" value="$(arg use_keepout)" /> </include> <!-- dock localization --> <node pkg="jsk_fetch_startup" type="correct_position.py" name="correct_position" respawn="true" /> <!-- include fetch_navigation --> - <include file="$(find fetch_navigation)/launch/fetch_nav.launch" > + <include file="$(find fetch_navigation)/launch/fetch_nav.launch" unless="$(arg use_build_map)" > <arg name="map_file" value="$(arg map_file)" /> <arg name="map_keepout_file" value="$(arg keepout_map_file)" /> - <arg name="use_keepout" value="true" /> + <arg name="use_keepout" value="$(arg use_keepout)" /> + <arg name="use_map_topic" value="true" /> + <arg name="launch_map_server" value="false" /> + <arg name="odom_topic" value="/odom_combined" /> </include> + <!-- slam for build a map --> + <node pkg="slam_karto" type="slam_karto" name="slam_karto" + output="screen" if="$(arg use_build_map)" > + <remap from="scam" to="base_scan"/> + </node> + <!-- robot localization ukf --> <node pkg="robot_localization" type="ukf_localization_node" name="ukf_se" clear_params="true"> <remap from="odometry/filtered" to="/odom_combined" /> @@ -160,19 +183,19 @@ odom0_differential: true imu0: /imu_corrected imu0_config: [false, false, false, - false, false, false, + false, false, true, false, false, false, false, false, true, - true, true, false] + true, false, false] imu0_nodelay: true imu0_differential: true - imu0_remove_gravitational_acceleration: true + imu0_remove_gravitational_acceleration: false </rosparam> </node> <rosparam ns="amcl"> - update_min_a: 0.01 <!-- update filter every 0.01[m] translation --> - update_min_d: 0.01 <!-- update filter every 0.01[rad] rotation --> + update_min_a: 0.05 <!-- update filter every 0.05 [m] translation --> + update_min_d: 0.1 <!-- update filter every 0.1 [rad] rotation --> odom_alpha1: 0.2 # rotation noise per rotation odom_alpha2: 0.2 # rotation noise per translation odom_alpha3: 0.2 # translation noise per translation @@ -193,7 +216,7 @@ </rosparam> <rosparam ns="move_base/local_costmap"> inflater: - inflation_radius: 0.7 # 0.7 + inflation_radius: 0.5 # 0.7 cost_scaling_factor: 5.0 # 25.0 default 10, increasing factor decrease the cost value obstacles: min_obstacle_height: 0.05 @@ -204,33 +227,59 @@ <rosparam ns="move_base"> base_local_planner: base_local_planner/TrajectoryPlannerROS TrajectoryPlannerROS: - min_in_place_vel_theta: 1.0 - escape_vel: -0.1 # -0.1 + yaw_goal_tolerance: 0.2 + xy_goal_tolerance: 0.17 + max_vel_x: 0.5 + min_vel_x: 0.1 + min_in_place_vel_theta: 0.3 + escape_vel: 0.0 + sim_time: 1.5 + sim_granularity: 0.025 + angular_sim_granularity: 0.025 vx_samples: 10 + vth_samples: 40 meter_scoring: true - pdist_scale: 5.0 - gdist_scale: 3.2 - occdist_scale: 0.1 + pdist_scale: 32.0 + gdist_scale: 20.0 + occdist_scale: 0.02 dwa: true recovery_behavior_enabled: true recovery_behaviors: - name: "conservative_reset" type: "clear_costmap_recovery/ClearCostmapRecovery" - - name: "rotate_recovery" + - name: "rotate_recovery0" type: "rotate_recovery/RotateRecovery" - frequency: 20.0 - sim_granularity: 0.017 - name: "aggressive_reset" type: "clear_costmap_recovery/ClearCostmapRecovery" + - name: "rotate_recovery1" + type: "rotate_recovery/RotateRecovery" + - name: "all_reset" + type: "clear_costmap_recovery/ClearCostmapRecovery" + - name: "rotate_recovery2" + type: "rotate_recovery/RotateRecovery" + - name: "move_slow_and_clear" + type: "move_slow_and_clear/MoveSlowAndClear" conservative_reset: - reset_distance: 1.0 # 3.0 + reset_distance: 2.0 # 3.0 + rotate_recovery0: + frequency: 20.0 + sim_granularity: 0.017 aggressive_reset: - reset_distance: 0.2 # 0.5 + reset_distance: 1.0 # 0.5 + rotate_recovery1: + frequency: 20.0 + sim_granularity: 0.017 + all_reset: + reset_distance: 0.0 + rotate_recovery2: + frequency: 20.0 + sim_granularity: 0.017 move_slow_and_clear: - clearing_distance: 0.5 + clearing_distance: 3.0 + limited_trans_speed: 0.2 + limited_rot_speed: 0.52 limited_distance: 0.3 - limited_rot_speed: 0.45 - limited_trans_speed: 0.25 + max_planning_retries: 2 </rosparam> </group> diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_teleop.xml b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_teleop.xml index dbe9a8382e..416ab28fc4 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_teleop.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_teleop.xml @@ -3,6 +3,7 @@ <arg name="enable_auto_dock" default="true" /> <arg name="joy_device" default="/dev/ps3joy"/> <arg name="launch_fetch_bringup_teleop" default="false" /> + <arg name="odom_topic" default="odom" /> <group unless="$(arg launch_fetch_bringup_teleop)" > <!-- need to launch joy_node because of launch_teleop:=false is set at /etc/ros/indigo/robot.launch, @@ -11,13 +12,6 @@ <param name="autorepeat_rate" value="1"/> <param name="dev" value="$(arg joy_device)"/> </node> - - <!-- need to launch cmd_vel_mux because of launch_teleop:=false is set at /etc/ros/indigo/robot.launch, - see https://github.com/fetchrobotics/fetch_robots/pull/40 --> - <node name="cmd_vel_mux" pkg="topic_tools" type="mux" respawn="true" output="screen" - args="base_controller/command /cmd_vel /teleop/cmd_vel"> - <remap from="mux" to="cmd_vel_mux" /> - </node> </group> <!-- copied for button mapping is changed to standardize with PR2 joy. @@ -27,13 +21,49 @@ joystick_teleop need to publish /teleop/cmd_vel/unsafe , see https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_fetch_robot/jsk_fetch_startup/README.md --> <node name="teleop" pkg="fetch_teleop" type="joystick_teleop" respawn="true"> - <remap from="teleop/cmd_vel" to="/teleop/cmd_vel/unsafe" /> + <remap from="teleop/cmd_vel" to="/joy_vel" /> + <remap from="/odom" to="$(arg odom_topic)" /> <param name="arm/button_arm_linear" value="4"/> <param name="arm/button_arm_angular" value="6"/> <param name="head/button_deadman" value="11"/> <param name="base/use_mux" value="false" /> </node> + <!-- Mux cmd_vel topics --> + <include file="$(find jsk_robot_startup)/launch/safe_teleop.launch" > + <arg name="odom_topic" value="/odom_teleop"/> + <arg name="joy_topic" value="/joy_vel"/> + <arg name="navigation_topic" value="/navigation/cmd_vel"/> + <arg name="input_topic" value="/input_vel"/> + <arg name="base_trajectory_action" value="false"/> + </include> + <!-- Relay topic names according to system diagram --> + <node name="relay_odom" + pkg="topic_tools" type="relay" + args="/odom_combined /odom_teleop" /> + <node name="relay_navigation_cmd_vel" + pkg="topic_tools" type="relay" + args="/cmd_vel /navigation/cmd_vel" /> + <group ns="safe_teleop_base"> + <rosparam file="$(find fetch_navigation)/config/costmap_common.yaml" command="load" ns="local_costmap" /> + <rosparam file="$(find fetch_navigation)/config/fetch/costmap_common.yaml" command="load" ns="local_costmap" /> + <rosparam file="$(find fetch_navigation)/config/costmap_local.yaml" command="load" ns="local_costmap" /> + <rosparam file="$(find fetch_navigation)/config/fetch/costmap_local.yaml" command="load" ns="local_costmap" /> + <rosparam ns="local_costmap"> + inflater: + inflation_radius: 1.0 # 0.7 + cost_scaling_factor: 3.0 # 25.0 default 10, increasing factor decrease the cost value + obstacles: + min_obstacle_height: 0.05 + # default 5 (http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide) + update_frequency: 10.0 + footprint_padding: 0.05 + </rosparam> + </group> + + <!-- Do not publish /base_controller/command if fetch is docking --> + <node pkg="jsk_fetch_startup" name="warning" type="warning.py" respawn="true" /> + <!-- copied for button mapping is changed to standardize with PR2 joy. --> <node name="controller_reset" pkg="fetch_bringup" type="controller_reset.py"> <param name="reset_button" value="7" /> @@ -45,49 +75,6 @@ <param name="tuck_button" value="5"/> </node> - <!-- safe teleop --> - <node name="unsafe_vel_mux" pkg="topic_tools" type="mux" respawn="true" - args="/teleop/cmd_vel /teleop/cmd_vel/safe /teleop/cmd_vel/unsafe"> - <remap from="mux" to="unsafe_vel_mux" /> - </node> - - <!-- m.button[10]: L1 --> - <!-- m.button[9] : R2 --> - <!-- safe teleop with L1 --> - <node name="cmd_vel_mux_selector" pkg="jsk_robot_startup" type="mux_selector.py" - respawn="true" - args="/joy 'm.buttons[10]==1' /teleop/cmd_vel /cmd_vel 'True' /cmd_vel"> - <remap from="mux" to="cmd_vel_mux" /> - <param name="default_select" value="/cmd_vel" /> - </node> - - <!-- unsafe teleop with L1 and R2 --> - <node name="unsafe_vel_mux_selector" pkg="jsk_robot_startup" type="mux_selector.py" - respawn="true" - args="/joy 'm.buttons[10]==1 and m.buttons[9]==1' /teleop/cmd_vel/unsafe /joy 'm.buttons[10]==1 and m.buttons[9]==0' /teleop/cmd_vel/safe"> - <remap from="mux" to="unsafe_vel_mux" /> - <param name="default_select" value="/teleop/cmd_vel/safe" /> - </node> - - <node name="safe_teleop_base" pkg="safe_teleop_base" type="safe_teleop_base"> - <remap from="base_velocity" to="/teleop/cmd_vel/unsafe" /> - <remap from="~safe_vel" to="/teleop/cmd_vel/safe" /> - <rosparam file="$(find fetch_navigation)/config/costmap_common.yaml" command="load" ns="local_costmap" /> - <rosparam file="$(find fetch_navigation)/config/fetch/costmap_common.yaml" command="load" ns="local_costmap" /> - <rosparam file="$(find fetch_navigation)/config/costmap_local.yaml" command="load" ns="local_costmap" /> - <rosparam file="$(find fetch_navigation)/config/fetch/costmap_local.yaml" command="load" ns="local_costmap" /> - </node> - <rosparam ns="safe_teleop_base/local_costmap"> - inflater: - inflation_radius: 1.0 # 0.7 - cost_scaling_factor: 3.0 # 25.0 default 10, increasing factor decrease the cost value - obstacles: - min_obstacle_height: 0.05 - # default 5 (http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide) - update_frequency: 10.0 - footprint_padding: 0.05 - </rosparam> - <node name="safe_tilt_head" pkg="jsk_fetch_startup" type="safe_tilt_head.py" /> <!-- audible warning on unsafe teleop --> diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch index d8faf71fb8..198a504b64 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch @@ -1,11 +1,10 @@ <launch> - <include file="$(find jsk_fetch_startup)/jsk_fetch.machine" /> <include file="$(find jsk_robot_startup)/lifelog/tweet.launch"> <arg name="robot_name" value="fetch15"/> - <arg name="image_topics" default="/head_camera/rgb/image_rect_color"/> + <arg name="image_topics" default="/head_camera/rgb/image_rect_color /edgetpu_object_detector/output/image /edgetpu_human_pose_estimator/output/image"/> <arg name="machine" value="localhost"/> <arg name="output" value="screen"/> <arg name="motor_subscribe" value="true"/> diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro new file mode 100644 index 0000000000..49c05d4fbc --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro @@ -0,0 +1,7 @@ +<?xml version="1.0" ?> +<robot name="baxter" xmlns:xacro="http://www.ros.org/wiki/xacro"> + <!-- VIRTUAL JOINT: virtual joint from map to base_link --> + <!-- this is necessary to add collision objects based on map frame --> + <virtual_joint name="world_joint" type="planar" parent_frame="map" child_link="base_link" /> + <xacro:include filename="$(find fetch_moveit_config)/config/fetch.srdf" /> +</robot> diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch new file mode 100644 index 0000000000..81a523cd17 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch @@ -0,0 +1,95 @@ +<?xml version="1.0"?> +<launch> + <arg name="rosbag" /> + <arg name="manager" default="rosbag_play_nodelet_manager" /> + <arg name="launch_nodelet_manager" default="true" /> + <arg name="loop" default="true" /> + <arg name="gui" default="false" /> + <arg name="loop_flag" value="--loop" if="$(arg loop)" /> + <arg name="loop_flag" value="" unless="$(arg loop)" /> + + <arg name="RGB_CAMERA_INFO" value="/head_camera/rgb/throttled/camera_info" /> + <arg name="RGB_IMAGE" value="/head_camera/rgb/throttled/image_rect_color" /> + <arg name="QUAT_RGB_CAMERA_INFO" value="/head_camera/rgb/quater/throttled/camera_info" /> + <arg name="QUAT_RGB_IMAGE" value="/head_camera/rgb/quater/throttled/image_rect_color" /> + <arg name="DEPTH_CAMERA_INFO" value="/head_camera/depth_registered/throttled/camera_info" /> + <arg name="DEPTH_IMAGE" value="/head_camera/depth_registered/throttled/image_rect" /> + + <param name="use_sim_time" value="true" /> + <param name="robot_description" textfile="$(find fetch_description)/robots/fetch.urdf" /> + + <node pkg="nodelet" type="nodelet" name="$(arg manager)" args="manager" output="screen" /> + + <!-- decompress --> + <node name="rgb_decompress" pkg="image_transport" type="republish" + args="compressed in:=$(arg RGB_IMAGE) out:=$(arg RGB_IMAGE)" /> + <node name="depth_decompress" pkg="image_transport" type="republish" + args="compressedDepth in:=$(arg DEPTH_IMAGE) out:=$(arg DEPTH_IMAGE)" /> + <node pkg="nodelet" type="nodelet" name="point_cloud_xyzrgb" + args="load depth_image_proc/point_cloud_xyzrgb $(arg manager)" output="screen" > + <remap from="rgb/camera_info" to="$(arg RGB_CAMERA_INFO)" /> + <remap from="rgb/image_rect_color" to="$(arg RGB_IMAGE)" /> + <remap from="depth_registered/image_rect" to="$(arg DEPTH_IMAGE)" /> + <remap from="depth_registered/points" to="/head_camera/depth_registered/throttled/points" /> + <rosparam> + queue_size: 100 + </rosparam> + </node> + <node name="resize_rgb" pkg="nodelet" type="nodelet" + args="load image_proc/resize $(arg manager)" output="screen"> + <remap from="image" to="$(arg RGB_IMAGE)" /> + <remap from="camera_info" to="$(arg RGB_CAMERA_INFO)" /> + <remap from="~image" to="$(arg QUAT_RGB_IMAGE)" /> + <remap from="~camera_info" to="$(arg QUAT_RGB_CAMERA_INFO)" /> + <rosparam> + scale_width: 0.25 + scale_height: 0.25 + </rosparam> + </node> + <node name="resize_cloud" pkg="nodelet" type="nodelet" + args="load jsk_pcl/ResizePointsPublisher $(arg manager)" output="screen"> + <remap from="~input" to="/head_camera/depth_registered/throttled/points" /> + <remap from="~output" to="/head_camera/depth_registered/quater/throttled/points" /> + <rosparam> + step_x: 4 + step_y: 4 + </rosparam> + </node> + + <!-- relay --> + <node name="rgb_image_relay" pkg="topic_tools" type="relay" + args="$(arg RGB_IMAGE) /head_camera/rgb/image_rect_color" /> + <node name="rgb_info_relay" pkg="topic_tools" type="relay" + args="$(arg RGB_CAMERA_INFO) /head_camera/rgb/camera_info" /> + <node name="quat_rgb_image_relay" pkg="topic_tools" type="relay" + args="$(arg QUAT_RGB_IMAGE) /head_camera/rgb/quater/image_rect_color" /> + <node name="quat_rgb_info_relay" pkg="topic_tools" type="relay" + args="$(arg QUAT_RGB_CAMERA_INFO) /head_camera/rgb/quater/camera_info" /> + <node name="depth_image_relay" pkg="topic_tools" type="relay" + args="$(arg DEPTH_IMAGE) /head_camera/depth_registered/image_rect" /> + <node name="depth_info_relay" pkg="topic_tools" type="relay" + args="$(arg DEPTH_CAMERA_INFO) /head_camera/depth_registered/camera_info" /> + <node name="points_relay" pkg="topic_tools" type="relay" + args="/head_camera/depth_registered/throttled/points /head_camera/depth_registered/points" /> + <node name="quat_points_relay" pkg="topic_tools" type="relay" + args="/head_camera/depth_registered/quater/throttled/points /head_camera/depth_registered/quater/points" /> + + <!-- latched topic republisher --> + <node pkg="jsk_fetch_startup" type="latched_topic_republisher.py" name="latched_topic_republisher_tf_static" + output="screen" > + <param name="~file" value="$(arg rosbag)" /> + <param name="~topicname" value="/tf_static" /> + </node> + <node pkg="jsk_fetch_startup" type="latched_topic_republisher.py" name="latched_topic_republisher_map" + output="screen" > + <param name="~file" value="$(arg rosbag)" /> + <param name="~topicname" value="/map" /> + </node> + + <!-- rosbag player --> + <node pkg="rosbag" type="play" name="rosbag_play" + args="$(arg rosbag) $(arg loop_flag) --clock" output="screen" /> + + <node pkg="rviz" type="rviz" name="$(anon rviz)" if="$(arg gui)" + args="-d $(find jsk_fetch_startup)/config/jsk_startup.rviz" /> +</launch> diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch new file mode 100644 index 0000000000..6cd4dc63b7 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<launch> + <arg name="rosbag" doc="rosbag file path" /> + <arg name="compress" default="false" doc="whether compress rosbag or not." /> + + <arg if="$(arg compress)" name="compress_flag" value="--bz2" /> + <arg unless="$(arg compress)" name="compress_flag" value="" /> + + <node name="rosbag_record" pkg="rosbag" type="record" + args="-q $(arg compress_flag) -O $(arg rosbag) -b 0 + /rosout + /tf + /tf_static + /joint_states + /map + /odom + /odom_combined + /cmd_vel + /move_base/NavFnROS/plan + /move_base/TrajectoryPlannerROS/global_plan + /move_base/TrajectoryPlannerROS/local_plan + /move_base/global_costmap/footprint + /spots_marker_array + /spots_pictogram + /safe_teleop_base/local_costmap/costmap + /move_base/local_costmap/costmap + /move_base/global_costmap/costmap + /particlecloud + /base_scan/throttled + /head_camera/rgb/throttled/camera_info + /head_camera/depth_registered/throttled/camera_info + /head_camera/rgb/throttled/image_rect_color/compressed + /head_camera/depth_registered/throttled/image_rect/compressedDepth" + output="screen" /> + +</launch> diff --git a/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro new file mode 100644 index 0000000000..0a3c4cc0f1 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro @@ -0,0 +1,32 @@ +<?xml version="1.0" ?> +<robot name="fetch" xmlns:xacro="http://www.ros.org/wiki/xacro"> + <xacro:include filename="/etc/ros/indigo/calibrated_latest.urdf" /> + <link name="base_camera_mount"> + <inertial> + <origin rpy="0 0.523598775 0" xyz="0 0 0" /> + <mass value="0.17" /> + <inertia ixx="0.024" ixy="0.01" ixz="0.034" iyy="0.034" iyz="0.024" izz="0.01" /> + </inertial> + <visual> + <origin rpy="0 0 0" xyz="0 0 0" /> + <geometry> + <mesh filename="package://jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_main.stl" scale="0.001 0.001 0.001" /> + </geometry> + <material name=""> + <color rgba="0.356 0.361 0.376 1" /> + </material> + </visual> + <collision> + <origin rpy="0 0 0" xyz="0 0 0" /> + <geometry> + <mesh filename="package://jsk_fetch_accessories/base_camera_mount_mk1/fetch_base_camera_mount_mk1_collision.stl" scale="0.001 0.001 0.001" /> + </geometry> + </collision> + </link> + <joint name="base_camera_mount_joint" type="fixed"> + <origin rpy="0 0 0" xyz="0 0 0" /> + <parent link="base_link" /> + <child link="base_camera_mount" /> + <axis xyz="0 0 1" /> + </joint> +</robot> diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/latched_topic_republisher.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/latched_topic_republisher.py new file mode 100755 index 0000000000..6bb60226a1 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/latched_topic_republisher.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import rosbag +import rospy + + +class LatchedTopicRepublisher(object): + def __init__(self): + self.topicname = rospy.get_param('~topicname', 'tf_static') + self.bagfilename = rospy.get_param("~file") + try: + with rosbag.Bag(self.bagfilename, 'r') as inputbag: + topic, msg, t = inputbag.read_messages(self.topicname).next() + packagename, typename = msg._type.split('/') + exec('from {}.msg import {}'.format(packagename, typename)) + + self.publisher = rospy.Publisher( + self.topicname, eval(typename), latch=True, queue_size=10) + list_messages = [] + with rosbag.Bag(self.bagfilename, 'r') as inputbag: + for topic, msg, t in inputbag.read_messages(self.topicname): + list_messages.append(msg) + for message in list_messages: + self.publisher.publish(message) + rospy.loginfo('Republishing topic: {}'.format(self.topicname)) + except StopIteration: + rospy.logwarn('Fail to republish topic: {}'.format(self.topicname)) + rospy.logwarn('There is no topic {} in {}'.format( + self.topicname, self.bagfilename)) + + +if __name__ == '__main__': + rospy.init_node('latched_topic_republisher') + app = LatchedTopicRepublisher() + rospy.spin() diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/odom_corrector.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/odom_corrector.py index d6f37c8f38..f442537ead 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/odom_corrector.py +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/odom_corrector.py @@ -17,7 +17,7 @@ def __init__(self): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1e-3] + 0, 0, 0, 0, 0, 1e-2] def _cb(self, msg): msg.pose.covariance = self.covariance diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/vertical-touchscreen.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/vertical-touchscreen.sh new file mode 100755 index 0000000000..1ea8578308 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/vertical-touchscreen.sh @@ -0,0 +1,22 @@ +# Set monitor orientation to vertical. +# monitor port (fetch has only one external HDMI port) +# You can list up monitor names by 'xrandr' +MONITOR="HDMI2" +xrandr --output $MONITOR --rotate right # right rotation +# xrandr --output $MONITOR --rotate normal # reset to normal + +# Set touchpad orientation to vertical. +# See https://stackoverflow.com/questions/18755967/how-to-make-a-program-that-finds-ids-of-xinput-devices-and-sets-xinput-some-set/18756948#18756948 +# You can list up input devices by 'xinput --list' +SEARCH="ILITEK" # touchpad name +ids=$(xinput --list | awk -v search="$SEARCH" \ + '$0 ~ search {match($0, /id=[0-9]+/);\ + if (RSTART) \ + print substr($0, RSTART+3, RLENGTH-3)\ + }'\ + ) +for i in $ids +do + xinput set-prop $i 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 # right rotation + # xinput set-prop $i 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1 # reset to normal +done diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py index 196823dc37..81e97c478e 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py @@ -89,10 +89,12 @@ def __init__(self): self.base_breaker = rospy.ServiceProxy('base_breaker', BreakerCommand) # self.battery_sub = rospy.Subscriber("battery_state", BatteryState, self.battery_callback, queue_size = 1) - self.cmd_vel_sub = rospy.Subscriber("base_controller/command", Twist, self.cmd_vel_callback, queue_size = 1) + self.cmd_vel_sub = rospy.Subscriber("base_controller/command_unchecked", Twist, self.cmd_vel_callback, queue_size = 1) self.robot_state_sub = rospy.Subscriber("robot_state", RobotState, self.robot_state_callback, queue_size = 1) self.diagnostics_status_sub = rospy.Subscriber("diagnostics", DiagnosticArray, self.diagnostics_status_callback, queue_size = 1) self.undock_sub = rospy.Subscriber("/undock/status", GoalStatusArray, self.undock_status_callback) + # + self.cmd_vel_pub = rospy.Publisher("base_controller/command", Twist, queue_size=1) def undock_status_callback(self, msg): for status in msg.status_list: @@ -131,6 +133,8 @@ def cmd_vel_callback(self, msg): sound.play(4) # play builtin sound Boom! time.sleep(5) self.base_breaker(BreakerCommandRequest(enable=True)) + else: + self.cmd_vel_pub.publish(msg) ## self.twist_msgs = msg diff --git a/jsk_pr2_robot/README.md b/jsk_pr2_robot/README.md index 996b45d1da..22bbf8ffa9 100644 --- a/jsk_pr2_robot/README.md +++ b/jsk_pr2_robot/README.md @@ -1,6 +1,10 @@ jsk_pr2_robot ============= +## Teleoperation + +For the JSK safe teleop system, please see [data flow diagram of safe_teleop.launch](https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_robot_common/jsk_robot_startup#launchsafe_teleoplaunch) +  diff --git a/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_left_hand_anne.stl b/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_left_hand_anne.stl new file mode 100644 index 0000000000..2f2b03cee9 Binary files /dev/null and b/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_left_hand_anne.stl differ diff --git a/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_right_hand_anne.shapr b/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_right_hand_anne.shapr new file mode 100644 index 0000000000..c8c3716e5a Binary files /dev/null and b/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_right_hand_anne.shapr differ diff --git a/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_right_hand_anne.stl b/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_right_hand_anne.stl new file mode 100644 index 0000000000..3662667dcb Binary files /dev/null and b/jsk_pr2_robot/jsk_pr2_accessories/pr2_fingertips/pr2_fingertip_right_hand_anne.stl differ diff --git a/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_move_base/safe_teleop.xml b/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_move_base/safe_teleop.xml index 4a0b06075b..ea0ffcb11f 100644 --- a/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_move_base/safe_teleop.xml +++ b/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_move_base/safe_teleop.xml @@ -19,39 +19,31 @@ <remap from="odom" to="/base_odometry/odom"/> </node> - <node pkg="topic_tools" type="mux" name="unsafe_vel_mux" respawn="true" - args="/navigation/unsafe_vel /input_vel /navigation/cmd_vel /teleop/joy_vel" machine="c2"> - <remap from="mux" to="vel_type_mux" /> - </node> - <!-- args is (topic, condition, select)* --> - <node pkg="jsk_robot_startup" type="mux_selector.py" machine="c2" - name="vel_type_selector" respawn="true" output="screen" - args="/joy 'm.buttons[10]==1' /teleop/joy_vel /navigation/cmd_vel 'True' /navigation/cmd_vel"> - <remap from="mux" to="vel_type_mux" /> - <param name="default_select" value="/input_vel"/> - </node> - - <node pkg="safe_teleop_base" type="safe_teleop_base" respawn="true" - name="safe_teleop_base" machine="c2" clear_params="true"> - <remap from="/odom" to="/base_odometry/odom"/> - <remap from="base_velocity" to="/navigation/unsafe_vel"/> - <remap from="~safe_vel" to="/navigation/safe_vel"/> + <!-- Mux cmd_vel topics --> + <include file="$(find jsk_robot_startup)/launch/safe_teleop.launch"> + <arg name="machine" value="c2" /> + <arg name="odom_topic" value="/odom_teleop" /> + <arg name="teleop_topic" value="/teleop/cmd_vel/unsafe" /> + <arg name="navigation_topic" value="/navigation/cmd_vel" /> + <arg name="input_topic" value="/input_vel/unsafe" /> + </include> + <!-- Relay topic names according to system diagram --> + <node name="relay_odom" + pkg="topic_tools" type="relay" + args="/base_odometry/odom /odom_teleop" /> + <node name="relay_teleop_cmd_vel" + pkg="topic_tools" type="relay" + args="/teleop/joy_vel /teleop/cmd_vel/unsafe" /> + <group ns="safe_teleop_base"> <rosparam file="$(find jsk_pr2_startup)/jsk_pr2_move_base/costmap_common_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find jsk_pr2_startup)/jsk_pr2_move_base/local_costmap_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find jsk_pr2_startup)/jsk_pr2_move_base/safe_teleop_pr2_params.yaml" command="load" ns="local_costmap"/> - </node> - - <!-- switch base velocity, safe or not --> - <node pkg="topic_tools" type="mux" name="cmd_vel_mux" respawn="true" machine="c2" - args="base_controller/command_unchecked /navigation/unsafe_vel /navigation/safe_vel"> - <remap from="mux" to="cmd_vel_mux" /> - </node> - <node pkg="jsk_robot_startup" type="mux_selector.py" machine="c2" - name="cmd_vel_selector" respawn="true" output="screen" - args="/joy 'm.buttons[9]==0 and m.buttons[10]==1' /navigation/safe_vel /input_vel 'True' /navigation/safe_vel"> - <remap from="mux" to="cmd_vel_mux" /> - <param name="default_select" value="/navigation/unsafe_vel"/> - </node> + </group> + <group ns="safe_input_vel"> + <rosparam file="$(find jsk_pr2_startup)/jsk_pr2_move_base/costmap_common_params.yaml" command="load" ns="local_costmap" /> + <rosparam file="$(find jsk_pr2_startup)/jsk_pr2_move_base/local_costmap_params.yaml" command="load" ns="local_costmap" /> + <rosparam file="$(find jsk_pr2_startup)/jsk_pr2_move_base/safe_teleop_pr2_params.yaml" command="load" ns="local_costmap"/> + </group> <!-- check cable and filter baser_controller/command --> <node pkg="roseus" type="roseus" name="cable_warning" respawn="true" diff --git a/jsk_robot_common/jsk_robot_startup/README.md b/jsk_robot_common/jsk_robot_startup/README.md index 7affbb03c5..8d25ba2284 100644 --- a/jsk_robot_common/jsk_robot_startup/README.md +++ b/jsk_robot_common/jsk_robot_startup/README.md @@ -72,3 +72,49 @@ This script sets initial pose with relative pose from specified TF frame by publ ### Subscribing Topics * `/amcl_pose` (`geometry_msgs/PoseWithcovariancestamped`) + + +## util/mux_selector.py + +This node check and select mux input topic on condition of the specified topic. +This node takes three arguments for one topic. +The first one is the topic to be monitored. +When a message from this topic is received, it is assigned as a variable `m`. +If a condition specified as the second argument, +this node calls a service to select the topic specified as the third argument. + +### Usage + +``` +rosrun jsk_robot_startup mux_selector.py /joy1 'm.buttons[9]==1' /cmd_vel1 /joy2 'm.buttons[9]==1' /cmd_vel2 +``` + +### Parameters + +* `~patient` (Double, default: 0.5) + + Indicates the allowable range of the difference between the received topic time and the current time. + +* `~frequency` (Double, default: 20.0) + + Frequency of processing loop. + +* `~default_select` (String, default: `None`) + + Default topic name. + +* `~wait` (Bool, default: `False`) + + If wait is `True`, this node waits for the topic to be received. + +### Subscribing Topics + +The topic specified in the argument is subscribed. + + +## launch/safe_teleop.launch + +This launch file provides a set of nodes for safe teleoperation common to mobile robots. Robot-specific nodes such as `/joy`, `/teleop` or `/cable_warning` must be included in the teleop launch file for each robot, such as [safe_teleop.xml for PR2](https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_pr2_robot/jsk_pr2_startup/jsk_pr2_move_base/safe_teleop.xml) or [safe_teleop.xml for fetch](https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_teleop.xml). + + + diff --git a/jsk_robot_common/jsk_robot_startup/launch/safe_teleop.launch b/jsk_robot_common/jsk_robot_startup/launch/safe_teleop.launch new file mode 100644 index 0000000000..fa1094a6f6 --- /dev/null +++ b/jsk_robot_common/jsk_robot_startup/launch/safe_teleop.launch @@ -0,0 +1,83 @@ +<launch> + <machine name="localhost" address="localhost" /> + + <arg name="machine" default="localhost" /> + <arg name="odom_topic" default="/odom_teleop" /> + <arg name="joy_topic" default="/joy_vel" /> + <arg name="navigation_topic" default="/navigation/cmd_vel" /> + <arg name="input_topic" default="/input_vel" /> + <arg name="base_trajectory_action" default="true" /> + + <!-- input mux: ($(arg joy_topic) & $(arg input_topic)) -> /teleop/cmd_vel/unsafe --> + <node name="input_vel_mux" pkg="topic_tools" type="mux" + respawn="true" machine="$(arg machine)" + args="/teleop/cmd_vel/unsafe $(arg input_topic) $(arg joy_topic)"> + <remap from="mux" to="input_vel_mux" /> + </node> + <!-- input mux selector with PS3 L1 button --> + <node name="input_vel_selector" pkg="jsk_robot_startup" type="mux_selector.py" + respawn="true" machine="$(arg machine)" + args="/joy 'm.buttons[10]==1' $(arg joy_topic) /joy 'm.buttons[10]==0' $(arg input_topic)"> + <remap from="mux" to="input_vel_mux" /> + <param name="default_select" value="$(arg input_topic)" /> + <param name="wait" value="true" /> + </node> + + <!-- /teleop/cmd_vel/unsafe -> /teleop/cmd_vel/safe --> + <node name="safe_teleop_base" pkg="safe_teleop_base" type="safe_teleop_base" + machine="$(arg machine)" > + <remap from="/odom" to="$(arg odom_topic)"/> + <remap from="base_velocity" to="/teleop/cmd_vel/unsafe" /> + <remap from="~safe_vel" to="/teleop/cmd_vel/safe" /> + </node> + + <!-- unsafe mux: (/teleop/cmd_vel/unsafe & /teleop/cmd_vel/safe) -> /teleop/cmd_vel --> + <node name="unsafe_vel_mux" pkg="topic_tools" type="mux" + respawn="true" machine="$(arg machine)" + args="/teleop/cmd_vel /teleop/cmd_vel/safe /teleop/cmd_vel/unsafe"> + <remap from="mux" to="unsafe_vel_mux" /> + </node> + <!-- unsafe mux selector with PS3 R2 button --> + <node name="unsafe_vel_selector" pkg="jsk_robot_startup" type="mux_selector.py" + respawn="true" machine="$(arg machine)" + args="/joy 'm.buttons[9]==1' /teleop/cmd_vel/unsafe /joy 'm.buttons[9]==0' /teleop/cmd_vel/safe"> + <remap from="mux" to="unsafe_vel_mux" /> + <param name="default_select" value="/teleop/cmd_vel/safe" /> + <param name="wait" value="true" /> + </node> + + <group if="$(arg base_trajectory_action)"> + <!-- vel type mux: (/teleop/cmd_vel & $(arg navigation_topic) & /base_controller/cmd_vel) -> /base_controller/command_unchecked --> + <node pkg="topic_tools" type="mux" name="vel_type_mux" + respawn="true" machine="$(arg machine)" + args="/base_controller/command_unchecked /teleop/cmd_vel $(arg navigation_topic) /base_controller/cmd_vel"> + <remap from="mux" to="vel_type_mux" /> + </node> + <!-- vel type mux with PS3 L1 button --> + <node pkg="jsk_robot_startup" type="mux_selector.py" name="vel_type_selector" + respawn="true" output="screen" machine="$(arg machine)" + args="/joy 'm.buttons[10]==1' /teleop/cmd_vel $(arg navigation_topic) 'True' $(arg navigation_topic) /base_controller/cmd_vel 'True' /base_controller/cmd_vel"> + <remap from="mux" to="vel_type_mux" /> + <param name="default_select" value="/teleop/cmd_vel"/> + <param name="wait" value="true" /> + </node> + </group> + + <group unless="$(arg base_trajectory_action)"> + <!-- vel type mux: (/teleop/cmd_vel & $(arg navigation_topic)) -> /base_controller/command_unchecked --> + <node pkg="topic_tools" type="mux" name="vel_type_mux" + respawn="true" machine="$(arg machine)" + args="/base_controller/command_unchecked /teleop/cmd_vel $(arg navigation_topic)"> + <remap from="mux" to="vel_type_mux" /> + </node> + <!-- vel type mux --> + <node pkg="jsk_robot_startup" type="mux_selector.py" name="vel_type_selector" + respawn="true" output="screen" machine="$(arg machine)" + args="/teleop/cmd_vel 'True' /teleop/cmd_vel $(arg navigation_topic) 'True' $(arg navigation_topic)"> + <remap from="mux" to="vel_type_mux" /> + <param name="default_select" value="/teleop/cmd_vel"/> + <param name="wait" value="true" /> + </node> + </group> + +</launch> diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch b/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch index ed1cc38888..79733ff2a6 100644 --- a/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch +++ b/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch @@ -11,6 +11,12 @@ doc="launch roswww server if true"/> <arg name="roswww_port" default="8000" doc="port number for roswww server"/> + <arg name="basic" default="false" + doc="enable basic authentication" /> + <arg name="basic_yaml" default="/var/lib/robot/roswww_basic_keys.yaml" + doc="basic yaml file path" /> + <arg name="basic_flag" value="--basic $(arg basic) --basic-yaml $(arg basic_yaml)" if="$(arg basic)" /> + <arg name="basic_flag" value="" unless="$(arg basic)" /> <arg name="remote" default="false" doc="set true with valid 'machine' argument"/> @@ -43,7 +49,7 @@ <node if="$(arg launch_roswww)" name="roswww" pkg="roswww" type="webserver.py" output="screen" machine="$(arg machine)" respawn="$(arg respawn)" - args="--name roswww --webpath www --cached true + args="--name roswww --webpath www --cached true $(arg basic_flag) --port $(arg roswww_port) --start_port $(arg roswww_port) --end_port $(arg roswww_port)"/> <!-- diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/rwt_image_view.launch b/jsk_robot_common/jsk_robot_startup/lifelog/rwt_image_view.launch new file mode 100644 index 0000000000..841d870d7c --- /dev/null +++ b/jsk_robot_common/jsk_robot_startup/lifelog/rwt_image_view.launch @@ -0,0 +1,30 @@ +<launch> + <arg name="launch_roswww" default="false" + doc="launch roswww server if true"/> + <arg name="launch_websocket" default="false" + doc="launch rosbridge_websocket if true"/> + <arg name="websocket_port" default="9090" + doc="port number for rosbridge_websocket server"/> + <arg name="roswww_port" default="8000" + doc="port number for roswww server"/> + + <include file="$(find roswww)/launch/roswww.launch" if="$(arg launch_roswww)"> + <arg name="port" value="$(arg roswww_port)" /> + </include> + <include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch" + if="$(arg launch_websocket)"> + <arg name="port" value="$(arg websocket_port)" /> + </include> + <node pkg="web_video_server" type="web_video_server" + name="web_video_server" + output="screen" + clear_params="true"> + <param name="port" value="8080" /> + <param name="address" value="0.0.0.0" /> + </node> + <node pkg="rwt_image_view" type="rosbag_record_server.py" + name="rosbag_record_server" + output="screen" + clear_params="true"> + </node> +</launch> diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch b/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch index f647b7fbfc..b22b0d066c 100644 --- a/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch +++ b/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch @@ -33,6 +33,7 @@ <remap from="mux" to="tweet_image_mux" /> <param name="lazy" value="true" /> </node> + <!-- <node name="tweet_image_saver" pkg="image_view" type="image_saver" machine="$(arg machine)"> <remap from="image" to="/tweet_image" /> @@ -40,6 +41,7 @@ <param name="filename_format" value="/tmp/tweet_image.jpg" /> <param name="image_transport" value="raw" /> </node> + --> <node name="active_user" pkg="roseus" type="roseus" args="$(find jsk_robot_startup)/lifelog/active_user.l" machine="$(arg machine)" diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client.l b/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client.l index cfd528b611..e0ced3da45 100755 --- a/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client.l +++ b/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client.l @@ -1,7 +1,9 @@ #!/usr/bin/env roseus -(ros::load-ros-manifest "roseus") -(ros::load-ros-manifest "topic_tools") +(ros::roseus-add-srvs "topic_tools") +(ros::roseus-add-msgs "std_msgs") +(ros::roseus-add-msgs "sensor_msgs") + (load "package://pr2eus/speak.l") (ros::roseus "tweet_client") @@ -33,7 +35,7 @@ (setq *waking-target-second* *waking-tweet-second*))) (defun tweet-string (twit-str &key (warning-time) (with-image) (image-wait 30) (speak t)) - (let (prev-image-topic (save-wait 0)) + (let (prev-image-topic img) (when warning-time (unless (numberp warning-time) (setq warning-time 3)) @@ -73,18 +75,18 @@ (setq prev-image-topic (send (one-shot-subscribe "/tweet_image_mux/selected" std_msgs::String) :data))) ;; retrieve image - (call-empty-service "/tweet_image_saver/save" :wait t) - (ros::service-call "/tweet_image_mux/select" (instance topic_tools::muxselectrequest :init :topic prev-image-topic)) - - (ros::ros-info "tweeting ~A" twit-str) - ;; waiting for 10 seconds for image saver - (while (and (not (probe-file "/tmp/tweet_image.jpg")) (< save-wait 10)) - (incf save-wait 1) - (unix:sleep 1)) - (ros::publish "/tweet" - (instance std_msgs::String :init - :data (format nil "~A ~A" - twit-str (format nil "/tmp/tweet_image.jpg"))))) + ;; (call-empty-service "/tweet_image_saver/save" :wait t) + (setq img (one-shot-subscribe "/tweet_image" sensor_msgs::Image :timeout 1000)) + (if img + (progn + (write-image-file "/tmp/tweet_image.jpg" (ros::sensor_msgs/Image->image img)) + (ros::ros-info "tweeting ~A" twit-str) + (ros::publish "/tweet" + (instance std_msgs::String :init + :data (format nil "~A ~A" + twit-str (format nil "/tmp/tweet_image.jpg"))))) + (ros::ros-error "fail saving image and tweeting")) + (ros::service-call "/tweet_image_mux/select" (instance topic_tools::muxselectrequest :init :topic prev-image-topic))) (t (ros::publish "/tweet" (instance std_msgs::String :init :data twit-str)))) (when speak (speak-jp "ついーとしました" :wait t)))) diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client_tablet.l b/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client_tablet.l index ff5b640c83..a9ae5b1e54 100755 --- a/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client_tablet.l +++ b/jsk_robot_common/jsk_robot_startup/lifelog/tweet_client_tablet.l @@ -1,6 +1,7 @@ #!/usr/bin/env roseus (ros::roseus "twitter_client_tablet") +(ros::roseus-add-msgs "roseus") (load "package://jsk_robot_startup/lifelog/tweet_client.l") diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/unsafe_warning.l b/jsk_robot_common/jsk_robot_startup/lifelog/unsafe_warning.l index 7716fa7b50..a5db2e8875 100755 --- a/jsk_robot_common/jsk_robot_startup/lifelog/unsafe_warning.l +++ b/jsk_robot_common/jsk_robot_startup/lifelog/unsafe_warning.l @@ -1,29 +1,17 @@ #!/usr/bin/env roseus -(ros::roseus-add-msgs "std_msgs") -(ros::roseus-add-msgs "sound_play") -(ros::roseus-add-msgs "sensor_msgs") +(require :speak "package://pr2eus/speak.l") -(defun play_sound (sound) - (let ((msg (instance sound_play::SoundRequest :init))) - (cond - ((numberp sound) - (send msg :sound sound)) - (t - (send msg :sound sound_play::SoundRequest::*play_file*) - (send msg :arg sound))) - (send msg :command sound_play::SoundRequest::*play_once*) - (ros::publish "/robotsound" msg))) +(ros::roseus-add-msgs "sensor_msgs") (defun joy-cb (msg) (when (and (eq 1 (elt (send msg :buttons) 9)) (eq 1 (elt (send msg :buttons) 10))) - (play_sound 2) ;; kan kan + (play-sound 2 :topic-name "/robotsound" :wait nil) ;; kan kan (unix::sleep 2) )) (ros::roseus "unsafe_warning") (ros::subscribe "/joy" sensor_msgs::joy #'joy-cb) -(ros::advertise "/robotsound" sound_play::SoundRequest 10) (ros::spin) diff --git a/jsk_robot_common/jsk_robot_startup/util/mux_selector.py b/jsk_robot_common/jsk_robot_startup/util/mux_selector.py index 6639f91542..d14e0857db 100755 --- a/jsk_robot_common/jsk_robot_startup/util/mux_selector.py +++ b/jsk_robot_common/jsk_robot_startup/util/mux_selector.py @@ -46,13 +46,23 @@ def gen_callback(expr, select, index): return (lambda m: callback(m, expr, select, index)) -def add_trigger(topic, expr, select, index): +def add_trigger(topic, expr, select, index, wait=False): topic_type, _, _ = rostopic.get_topic_type(topic) topic_class, _, _ = rostopic.get_topic_class(topic) - if(topic_type is None): - rospy.loginfo('%s is not published yet', topic) - return None + if topic_type is None: + if wait is False: + rospy.loginfo('%s is not published yet', topic) + return None + elif wait is True: + rate = rospy.Rate(1) + while not rospy.is_shutdown() and topic_type is None: + topic_type, _, _ = rostopic.get_topic_type(topic) + topic_class, _, _ = rostopic.get_topic_class(topic) + rospy.loginfo('waiting topic %s' % topic) + rate.sleep() + else: + raise ValueError('wait should be bool') if(topic_class is None): rospy.loginfo('%s is not builded yet', topic_type) @@ -69,14 +79,15 @@ def add_trigger(topic, expr, select, index): return sub -def update_trigger(conditions): +def update_trigger(conditions, wait=False): # setting triggers global subs for index in range(len(conditions)): if subs[index] is not None: continue cond = conditions[index] - subs[index] = add_trigger(cond[0],cond[1],cond[2],index) + subs[index] = add_trigger(cond[0],cond[1],cond[2],index, + wait=wait) if __name__ == "__main__": @@ -101,6 +112,7 @@ def update_trigger(conditions): deadtime = rospy.get_param('~patient', 0.5) freq = rospy.get_param('~frequency', 20.0) default_select = rospy.get_param('~default_select', None) + wait = rospy.get_param('~wait', False) mux_name_ = rospy.resolve_name('mux') rospy.wait_for_service(mux_name_+'/select') @@ -113,7 +125,7 @@ def update_trigger(conditions): # loop try: before = default_select - update_trigger(conditions) + update_trigger(conditions, wait=wait) looprate = rospy.Rate(freq) while not rospy.is_shutdown(): lockobj.acquire()