├── LICENSE ├── docs ├── README.md └── logo │ └── mecademic_logo.jpg ├── mecademic_description ├── CMakeLists.txt ├── launch │ └── meca_500_r3.launch ├── meshes │ ├── meca_500_r3_base.dae │ ├── meca_500_r3_base_collision.stl │ ├── meca_500_r3_j1.dae │ ├── meca_500_r3_j1_collision.stl │ ├── meca_500_r3_j2.dae │ ├── meca_500_r3_j2_collision.stl │ ├── meca_500_r3_j3.dae │ ├── meca_500_r3_j3_collision.stl │ ├── meca_500_r3_j4.dae │ ├── meca_500_r3_j4_collision.stl │ ├── meca_500_r3_j5.dae │ ├── meca_500_r3_j5_collision.stl │ ├── meca_500_r3_j6.dae │ └── meca_500_r3_j6_collision.stl ├── package.xml └── urdf │ └── meca_500_r3.urdf.xacro ├── mecademic_robot_node ├── CMakeLists.txt ├── package.xml ├── setup.py └── src │ └── mecademic_robot_driver │ ├── __init__.py │ └── mecademic_robot_driver.py └── mecademic_viz ├── CMakeLists.txt ├── launch ├── view_meca_500_r3_model.launch └── view_robot.launch ├── package.xml └── rviz ├── model.rviz └── robot.rviz /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Mecademic 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | ![Mecademic](./logo/mecademic_logo.jpg "Mecademic") 2 | # Mecademic ROS package 3 | 4 | NOTE: **This package uses an old version of the Python driver and is no longer supported. We currently do not have a ROS package that is being actively developed and tested** 5 | 6 | A ROS package that can be built on to create ROS projects that can communicate with the Robot Products from Mecademic. The package can also be taken and placed into your already existing project (the project must be built after including the Mecademic package in order for your project to integrate the new package correctly). 7 | 8 | #### Supported Robots 9 | 10 | * Meca500 R3 11 | 12 | #### Supported ROS distros 13 | 14 | * Melodic 15 | 16 | ## Getting Started 17 | 18 | These instructions will allow you to control the Robots from Mecademic through nodes and topics in ROS for development and deployment purposes. 19 | 20 | ## Prerequisites 21 | 22 | To be able to use the package without unexpected errors, the user must have a copy of python version 3.6 or higher installed on their machine. [Python](https://www.python.org/) can be installed from its main website. 23 | 24 | The user will also need to have ROS installed on their computer. The installation guide for [ROS](http://wiki.ros.org/ROS/Installation) can be found on i main website. Warning: the ROS distribution must be a distribution of ROS that is supported by the package, which are listed at the top of the README. If your ROS distribution is not listed in the supported distributions, compatibility is not guaranteed and errors may arise due to the incompatibility. It is also recommended to be familiar or an expert on ROS to be able to develop your own ROS project intergrating this package. ROS tutorials can be found [here](http://wiki.ros.org/ROS/Tutorials). 25 | 26 | The user will need to download the MecademicRobot python driver package for the ROS node to interface with the physical hardware. The package and its installation instructions can be found on the [Mecademic Github](https://github.com/Mecademic/python_driver). 27 | 28 | ## Downloading the project base 29 | 30 | The project can be cloned from the Mecademic Github repository. Once cloned, the user is able to use the package for their project. 31 | 32 | ## Running a Robot from Mecademic with the ROS package 33 | 34 | #### MecademicRobot_driver Node 35 | 36 | The package only has one node called "MecademicRobot_driver", with anonymous set to true to give it a unique name by adding random numbers to the end of the node name. The node is already capable of interfacing with the hardware as it is without modification of the source code. The node subscribes to certain topics meant for control and publishes to topics meant for feedback. The topics are listed in the table below. 37 | 38 | | Topics | Driver link| Message Format | Description | 39 | | ------------- | ------------- | ----------------- | --------------| 40 | | _/MecademicRobot_command_ | Subscriber | String |Ascii string with the command written like it is in the user manual 41 | | _/MecademicRobot_pose_ | Subscriber | geometry_msgs.Pose | Target Position and Orientation of the Tool Reference Frame (TRF) 42 | | _/MecademicRobot_joint_ | Subscriber | sensor_msgs.JointState | Target Joint angles and velocity (same for all joints) 43 | | _/MecademicRobot_gripper_ | Subscriber | Bool | Make the Gripper Open or Close 44 | | _/MecademicRobot_reply_ | Publisher | String | Ascii reply from the Robot after executing a command 45 | | _/MecademicRobot_pose_fb_ | Publisher | geometry_msgs.Pose | Current Position and Orientation of the Tool Reference Frame (TRF) 46 | | _/MecademicRobot_joint_fb_ | Publisher | sensor_msgs.JointState | Current joint angles 47 | | _/MecademicRobot_status_ | Publisher | UInt8MultiArray | Array of the Status flags of the Robot 48 | 49 | The topics are used to send and receive data with the ROS middleware to interact with the robot. To be able to control the robot, the user can use the control methods available through the existing topics. 50 | 51 | * Joint Control can be done using the _/MecademicRobot_joint_ and _/MecademicRobot_joint_fb_ topics. By using _/MecademicRobot_joint_ to give the robot target positions to reach and monitoring the movement with _/MecademicRobot_joint_fb_, the joints can be controlled to make the robot move to desired locations. The message format used for the topics are the [JointState](http://docs.ros.org/melodic/api/sensor_msgs/html/msg/JointState.html) message format. This format has float64 arrays for the values of name, position, velocity and effort. The node only uses the values for position, which are the angles of each independent joint, and the first value of the velocity array (since all joints on the robot go at the same velocity) when subscribing to _/MecademicRobot_joint_ and only the positions when giving feedback through the _/MecademicRobot_joint_fb_ topic. The length of position must be equal to the amount of joints on the robot or the robot will refuse the movement. 52 | 53 | * Pose Control can be done using the _/MecademicRobot_pose_ and _/MecademicRobot_pose_fb_ topics. By using _/MecademicRobot_pose_ to give the robot target positions to reach and monitoring the movement with _/MecademicRobot_pose_fb_, the pose can be controlled to make the robot move to desired locations. The message format used for the topics are the [Pose](http://docs.ros.org/melodic/api/geometry_msgs/html/msg/Pose.html) message format. This format uses the [Point](http://docs.ros.org/melodic/api/geometry_msgs/html/msg/Point.html) and [Quaternion](http://docs.ros.org/melodic/api/geometry_msgs/html/msg/Quaternion.html) message formats. Point contains the x, y and z position while Quarternion contains the angles of the reference fram for x, y, z and w. The node doesn't use the value for w in the Quarternion message. To know the reference system used by the Mecademic Robots, the information can be found in the [user manual](https://mecademic.com/resources/documentation). 54 | 55 | * Gripper Control can be done by using the _/MecademicRobot_gripper_ topic. The topic uses the Bool message format, which is just a regular boolean. Sending True will open the gripper and sending a False will close the gripper. 56 | 57 | * Custom Control can be done by using the _/MecademicRobot_command_ and _/MecademicRobot_reply_ topics. By using the _/MecademicRobot_command_ topic to send the commands written in the user manual and the _/MecademicRobot_reply_ to analyse the returned message and message code from the robot, the robot can be used in various ways and can use all the robot's features and capabilities. Both use the String message format, which is a simple string value. 58 | 59 | The _/MecademicRobot_reply_ topic has two different formats. If commands are sent through the _/MecademicRobot_command_ topic, the replies from the robot will be raw and contain the message code and message contents. If any other topic for commands is used, the replies will be published already decoded so only the contents of the message are passed. 60 | 61 | The driver takes detects when it is in error and flag the module when it is. When an error is detected, it will attempt to reset the error before performing the next command. If it is stuck in error mode, the robot will need to be inspected by a person and, possibly, the system rebooted. 62 | 63 | The feedback from the joints, pose and status are continuously published to their respective topic as they are acquired from the robot. The joints and pose format have been described in their appropriate control scheme. The status feedback is a UInt8MultiArray message format, which is an array of uint8 values. The representation of every value can be interpreted as a boolean value, 0 for False and True otherwise. The values correspond to the **Activation (robot), Homing (robot), Simulation Mode, Error, Paused, EOB, EOM, Gripper enabled, Homing state (end effector), Limit reached (end effector), Error state (end effector) and force overload (end effector)** respectively. 64 | 65 | Using the different available control methods and continuous feedback, the robot can be controlled in the manner the user sees more fit for their project. Each control method has its perks and using can be used independently from each other. Using them in unison will allow the user to use more of the robots features and maximize their use of the Mecademic Robot. 66 | 67 | #### Communicating with the MecademicRobot_driver Node 68 | 69 | In order to communicate with the MecademicRobot_driver node, the user must make their own node(s) that will subscribe and publish to the topics listed below. 70 | 71 | | Topics | Driver link| Message Format | Description | 72 | | ------------- | ------------- | ----------------- | --------------| 73 | | _/MecademicRobot_command_ | Publisher | String |Ascii string with the command written like it is in the user manual 74 | | _/MecademicRobot_pose_ | Publisher | geometry_msgs.Pose | Target Position and Orientation of the Tool Reference Frame (TRF) 75 | | _/MecademicRobot_joint_ | Publisher | sensor_msgs.JointState | Target Joint angles and velocity (same for all joints) 76 | | _/MecademicRobot_gripper_ | Publisher | Bool | Make the Gripper Open or Close 77 | | _/MecademicRobot_reply_ | Subscriber | String | Ascii reply from the Robot after executing a command 78 | | _/MecademicRobot_pose_fb_ | Subscriber | geometry_msgs.Pose | Current Position and Orientation of the Tool Reference Frame (TRF) 79 | | _/MecademicRobot_joint_fb_ | Subscriber | sensor_msgs.JointState | Current joint angles 80 | | _/MecademicRobot_status_ | Subscriber | UInt8MultiArray | Array of the Status flags of the Robot 81 | 82 | Notice that the driver link column of the table is the reverse of the previous table found in the section MecademicRobot_driver Node. This is because one node must be publishing data that the other subscribes to so that it can retrieve it. It is not necessary to use all the topics, but the more topics that are used, the more you maximize the features of the robot. The controller design is up to the user. The controller can utilize other ROS packages or custom packages as long as the MecademicRobot_driver node gets the required data so that it can perform actions. 83 | 84 | When sending commands to the robot, be aware that the movement commands and the status retrieval occur over the same socket. Sending a large amount of movements over a short time may block the status feedback retriever from using the socket to retrieve the status information. Positional feedback does **not** share this issue. It is on its own socket and has no restrictions for accessing the socket. This means that positional information will always be retrieved whether commands are being sent or the robot is idle. 85 | 86 | ## Getting Help 87 | 88 | To get support, you can start an issue on the Mecademic/ROS issues section or send an email to support@mecademic.com. 89 | 90 | ## License 91 | 92 | All packages in this repository are licensed under the MIT license. 93 | 94 | ## Authors 95 | 96 | * **Mecademic** - *Continuous work* 97 | 98 | -------------------------------------------------------------------------------- /docs/logo/mecademic_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/docs/logo/mecademic_logo.jpg -------------------------------------------------------------------------------- /mecademic_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(mecademic_description) 3 | 4 | find_package(catkin REQUIRED COMPONENTS) 5 | 6 | catkin_package() 7 | 8 | include_directories( 9 | ${catkin_INCLUDE_DIRS} 10 | ) 11 | -------------------------------------------------------------------------------- /mecademic_description/launch/meca_500_r3.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_base_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_base_collision.stl -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j1_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_j1_collision.stl -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j2_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_j2_collision.stl -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j3_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_j3_collision.stl -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j4_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_j4_collision.stl -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j5_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_j5_collision.stl -------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j6.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.79.0 commit date:2018-03-22, commit time:14:10, hash:f4dc9f9d68b 7 | 8 | 2019-07-03T20:05:00 9 | 2019-07-03T20:05:00 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 0 0 1 21 | 22 | 23 | 0 0 0 1 24 | 25 | 26 | 0.06997798 0.06997798 0.06997798 1 27 | 28 | 29 | 1 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -5.05134e-4 1.1176e-6 0.01323676 -5.05134e-4 -0.002299129 0.01305365 -5.05134e-4 0.002301335 0.01305365 -5.05134e-4 1.11759e-6 0.01000189 -5.05134e-4 -0.001734554 0.009849309 -5.05134e-4 -0.004530727 0.0124433 -5.05134e-4 -0.00342065 0.009391546 -5.05134e-4 0.004532933 0.0124433 -5.05134e-4 0.00173676 0.009849309 -5.05134e-4 -0.006624996 0.01146674 -5.05134e-4 -0.004999935 0.008659124 -5.05134e-4 0.006627202 0.01146674 -5.05134e-4 0.003419041 0.009391546 -5.05134e-4 -0.008517086 0.01015448 -5.05134e-4 -0.006426632 0.007652044 -5.05134e-4 0.008519291 0.01015448 -5.05134e-4 0.00500214 0.008659124 -5.05134e-4 -0.01014977 0.008506536 -5.05134e-4 -0.007658779 0.006431341 -5.05134e-4 0.01015198 0.008506536 -5.05134e-4 0.006428837 0.007652044 -2.45735e-4 1.11759e-6 0.01000189 -2.45735e-4 0.00173676 0.009849309 -2.45735e-4 -0.001734554 0.009849309 -1.59442e-6 1.11759e-6 0.009849309 -1.59442e-6 0.001713871 0.009696722 -1.59442e-6 -0.001711666 0.009696722 -1.59442e-6 -3.46115e-4 0.008933186 -1.59442e-6 1.28332e-4 0.008995592 -2.45735e-4 -0.00342065 0.009391546 -1.79014e-6 -0.003412365 0.009247899 -2.45735e-4 0.003419041 0.009391546 -1.59442e-6 -8.1964e-4 0.008681118 -1.68342e-6 0.003392517 0.009257435 -1.59442e-6 7.83208e-4 0.008711218 -1.59469e-6 -0.007551312 0.006336569 -1.59442e-6 -0.001218676 0.008045494 -1.59442e-6 -0.001182734 0.007377147 -1.59537e-6 0.003979504 0.005590558 -1.59442e-6 0.00409609 0.006068348 -1.59442e-6 0.00446254 0.006585061 -1.59442e-6 0.001162648 0.008186519 -1.59442e-6 0.001221418 0.007451832 -2.45735e-4 -0.004999935 0.008659124 -2.45735e-4 0.00500214 0.008659124 -1.59442e-6 0.004929661 0.008537054 -1.59442e-6 -0.004927456 0.008537054 -1.59442e-6 0.005168974 0.006959795 -0.00399965 3.38258e-4 0.00893557 -0.004000365 -1.31362e-4 0.008994698 -0.004747033 1.11759e-6 0.007743597 -0.004000127 -8.56887e-4 0.008659899 -0.003999948 8.21709e-4 0.008678913 -2.45735e-4 -0.006426632 0.007652044 -1.63905e-6 -0.006345748 0.007549583 -2.45735e-4 0.006428837 0.007652044 -5.05134e-4 -0.01147347 0.006614446 -0.004000186 0.001220285 0.008039712 -1.59832e-6 0.006341934 0.007555723 -5.05134e-4 -0.00865823 0.004997014 -5.05134e-4 0.01147568 0.006614446 -5.05134e-4 0.007660984 0.006431341 -0.003999888 -0.00118345 0.008107483 -0.004000008 -0.001217603 0.007437705 -1.59442e-6 0.006083369 0.006876528 -0.004000425 3.50545e-4 0.006543099 -0.00399971 8.63825e-4 0.006857573 -0.003999888 0.001164138 0.00730437 -0.00399965 -8.78379e-4 0.006872653 -0.003999114 -3.54133e-4 0.006536602 -2.45735e-4 -0.007658779 0.006431341 -2.45735e-4 0.007660984 0.006431341 -1.59061e-6 0.007547736 0.006342411 -1.59442e-6 -9.17972e-4 0.006905376 -1.59442e-6 8.8883e-4 0.006882846 -0.002993464 0.00578463 0.006961584 -0.002992272 0.005047082 0.006918966 -0.003907799 0.005478978 0.005485296 -0.002992928 0.004419088 0.006559431 -0.002992987 0.006495416 0.006588399 -1.59442e-6 -3.26153e-4 0.006531774 -1.59442e-6 4.04525e-4 0.006561815 -5.05134e-4 -0.01245003 0.004539251 -1.59442e-6 0.006783664 0.006242871 -5.05134e-4 -0.009394466 0.0034101 -5.05134e-4 0.01245224 0.004539251 -5.05134e-4 0.008660435 0.004997014 -0.002992868 0.0068717 0.006058514 -2.45735e-4 -0.00865823 0.004997014 -1.59442e-6 -0.008536159 0.004935979 -2.45735e-4 0.008660435 0.004997014 -0.002993702 0.004001021 0.005810379 -0.002992689 0.006982684 0.005576372 -1.60313e-6 -0.004301786 0.002547442 -1.73315e-6 -0.003554105 0.003542542 -1.61815e-6 -0.004868149 0.001209616 -1.60551e-6 -0.002564489 0.004290878 -2.08631e-6 -0.001288175 0.004856169 -2.10544e-6 4.30897e-4 0.00500822 -1.59442e-6 0.004069864 0.0049268 -1.59278e-6 0.002831459 0.004142522 -1.59442e-6 0.001710057 0.004691839 -1.59442e-6 0.007005333 0.005371391 -1.59442e-6 0.00853455 0.004935979 -1.60327e-6 -0.00926882 0.00336188 -0.002992808 0.004016876 0.005124628 -0.002992987 0.00429368 0.004531681 -0.002992451 0.004736602 0.004169523 -0.002992272 0.005219578 0.003989934 -0.002995431 0.00591886 0.004032373 -0.002992928 0.006634473 0.004491388 -0.00299257 0.006935715 0.005088984 -1.59214e-6 0.009262025 0.003381907 -2.45735e-4 -0.009394466 0.0034101 -5.05134e-4 1.11759e-6 0.004508733 -5.13612e-4 -0.001307904 0.004318296 -5.05134e-4 0.009396672 0.0034101 -2.45735e-4 0.009396672 0.0034101 -1.59442e-6 0.006671011 0.004535317 -5.00121e-4 0.001283824 0.004326045 -1.59442e-6 0.004564404 0.004264891 -5.05134e-4 -0.002249538 0.003898382 -5.05134e-4 -0.01304703 0.002311468 -5.05134e-4 -0.009848415 0.001731634 -5.05134e-4 0.01305115 0.002311468 -0.002198815 -1.62434e-4 0.004514813 -0.002198815 0.001359403 0.004302799 -0.002198815 -0.00193417 -0.004065155 -0.002198815 -0.001540005 0.004234075 -1.63177e-6 0.004045426 0.00297892 -1.59442e-6 0.006191849 0.004149913 -5.07036e-4 0.002540111 0.003731429 -5.12319e-4 -0.003243327 0.003136157 -0.002198815 -0.00250262 0.003754734 -0.002198815 0.002251744 0.003898382 -1.59442e-6 0.005215108 0.003990054 -1.60165e-6 0.005678474 0.003998756 -0.002198815 0.003267824 0.003112852 -0.002198815 -0.003649353 0.002658963 -5.05134e-4 0.003449559 0.002891302 -2.45735e-4 -0.009848415 0.001731634 -1.59442e-6 -0.009703457 0.001701116 -5.05134e-4 0.009850621 0.001731634 -2.45735e-4 0.009850621 0.001731634 -5.03151e-4 -0.004120767 0.001853406 -5.07067e-4 0.004081666 0.001938164 -0.002198815 0.004120647 0.001852393 -1.59054e-6 -0.007938146 0.001235067 -1.59442e-6 -0.008579552 9.20523e-4 -1.59442e-6 -0.007440149 0.001192808 -1.59611e-6 -0.006132245 -0.00410211 -1.76648e-6 -0.004990279 -5.03412e-4 -1.59442e-6 -0.006887853 9.06518e-4 -1.59442e-6 -0.006566464 3.58627e-4 -1.59442e-6 -0.006529867 -3.05399e-4 -1.75817e-6 0.004831969 0.001355528 -1.76141e-6 0.005005896 -3.48996e-4 -1.59477e-6 0.007546484 -0.006328761 -1.59442e-6 0.006564199 3.71892e-4 -1.59442e-6 0.006533682 -2.76379e-4 -1.59442e-6 0.006919503 9.20523e-4 -1.59442e-6 0.007409989 0.001183629 -1.59442e-6 0.009705662 0.001701116 -1.59443e-6 0.007880628 0.001243889 -1.59442e-6 0.008611202 9.06518e-4 -5.05134e-4 -0.01324921 -7.83056e-6 -5.05134e-4 -0.010001 -7.83085e-6 -5.05134e-4 0.01324951 -7.83052e-6 -0.002198815 -0.004339575 0.001259207 -2.45735e-4 -0.010001 -7.83085e-6 -5.05134e-4 0.009999394 -7.83085e-6 -2.45735e-4 0.009999394 -7.83085e-6 -1.59442e-6 0.00985825 -7.83085e-6 -1.59442e-6 -0.009856045 -7.83085e-6 -1.59442e-6 -0.008971452 2.80678e-4 -1.59442e-6 0.008967638 2.60717e-4 -5.05134e-4 -0.004431545 7.85626e-4 -5.0696e-4 0.004499793 4.18073e-4 -0.002198815 0.004506886 3.22856e-4 -0.00399971 -0.007405877 0.001182615 -0.003999888 -0.007884383 0.001243591 -0.004747033 -0.007750332 -7.83085e-6 -0.00399965 0.008089661 0.001184105 -0.004000365 0.007618129 0.001243531 -0.004747033 0.007752537 -7.83085e-6 -0.004000008 -0.008611738 9.03789e-4 -0.004000008 -0.006920337 9.23242e-4 -0.004000008 0.006887376 9.03804e-4 -0.004000008 0.008578658 9.23241e-4 -5.06554e-4 -0.004496932 -4.0362e-4 -0.003999948 -0.00653088 2.93523e-4 -0.003999829 0.008935987 3.74938e-4 -0.002198815 -0.004503607 -3.12807e-4 -0.003999829 -0.008936345 3.43298e-4 -0.003999948 0.006532967 2.57117e-4 -0.004000008 -0.008970439 -3.00119e-4 -5.05134e-4 -0.01304703 -0.002296626 -5.05134e-4 -0.009848415 -0.00174731 -2.45735e-4 -0.009848415 -0.00174731 -1.59442e-6 -0.009703457 -0.001716792 -1.59442e-6 -0.008874297 -5.59209e-4 -0.004000008 -0.008576452 -9.38902e-4 -0.003999412 -0.008036613 -0.00121802 -0.004000604 -0.007420539 -0.001218974 -0.003999829 -0.006823539 -8.40429e-4 -0.003999888 -0.00656569 -3.71689e-4 -0.002198815 0.004350006 -0.001200079 -0.002198815 0.003133118 -0.003266096 -0.002198815 0.003899693 -0.002266108 -0.002198815 7.83131e-4 -0.004432857 -0.002198815 0.001816928 -0.004119336 -0.002198815 -5.26045e-4 -0.004483222 -0.002198815 -0.003231048 -0.003168284 -0.002198815 -0.004109501 -0.00187999 -5.08388e-4 0.004373371 -0.00111556 -0.003999829 0.006565272 -3.90592e-4 -0.003999769 0.006858766 -8.66756e-4 -0.004000008 0.007350504 -0.001191556 -0.004000604 0.008078038 -0.001219213 -0.003999829 0.008675515 -8.40417e-4 -0.003999948 0.008968293 -2.72763e-4 -1.59442e-6 0.00893706 -3.87553e-4 -1.59442e-6 0.009705662 -0.001716792 -5.05134e-4 0.009850621 -0.00174731 -5.05134e-4 0.01305115 -0.002296626 -2.45735e-4 0.009850621 -0.00174731 -1.59442e-6 0.00682795 -8.42932e-4 -1.59442e-6 -0.006854534 -8.64596e-4 -1.59442e-6 0.008644521 -8.64597e-4 -5.15791e-4 -0.00405538 -0.001996994 -1.70549e-6 0.004517853 -0.002226293 -1.59442e-6 -0.00837928 -0.001077353 -1.59917e-6 0.009259581 -0.003372132 -1.71677e-6 -0.00448054 -0.002279698 -1.59379e-6 -0.009262025 -0.003362417 -1.59442e-6 -0.007393062 -0.001214325 -1.59442e-6 0.007425725 -0.001219868 -1.59442e-6 0.008155941 -0.001189589 -1.59442e-6 -0.007963955 -0.001228511 -5.05134e-4 0.003899693 -0.002266108 -2.45735e-4 0.009396672 -0.003425776 -5.05134e-4 -0.009394466 -0.003425776 -2.45735e-4 -0.009394466 -0.003425776 -5.05134e-4 0.009396672 -0.003425776 -5.05134e-4 0.01245224 -0.004524409 -5.05134e-4 -0.003447353 -0.002906978 -5.05134e-4 0.003449559 -0.002906978 -5.05134e-4 -0.01245003 -0.004524409 -1.59442e-6 -0.008536159 -0.004921138 -1.59442e-6 -0.006724476 -0.004642009 -1.59048e-6 -0.006977558 -0.005268573 -1.59503e-6 -0.005423069 -0.003973126 -1.59442e-6 -0.004798114 -0.004129528 -1.6759e-6 -0.003552496 -0.003528475 -1.73437e-6 0.003564417 -0.00351721 -1.59442e-6 0.00853455 -0.004921138 -5.05134e-4 -0.002890408 -0.003456294 -5.05134e-4 0.002892613 -0.003456294 -2.45735e-4 -0.00865823 -0.005012691 -5.05134e-4 -0.00865823 -0.005012691 -5.05134e-4 0.008660435 -0.005012691 -5.05134e-4 0.01147568 -0.006630122 -2.45735e-4 0.008660435 -0.005012691 -1.65678e-6 -0.002489089 -0.00434041 -5.12144e-4 -0.001909375 -0.004079043 -5.18766e-4 0.001953959 -0.004055678 -1.69943e-6 0.002502381 -0.004331648 -1.59442e-6 -0.004259645 -0.004603743 -1.75721e-6 0.001437723 -0.004806876 -0.002992928 -0.005017399 -0.004045307 -0.002993106 -0.005537688 -0.003973543 -0.003907799 -0.005480587 -0.005470454 -0.002993464 -0.006167531 -0.004134654 -0.00299263 -0.00459516 -0.004273116 -1.97706e-6 -0.001262962 -0.004858434 -5.05134e-4 -7.80895e-4 -0.004432857 -5.10904e-4 4.74987e-4 -0.0044896 -1.59442e-6 -0.003987848 -0.005218684 -0.002992749 -0.006699919 -0.004606723 -0.002992689 -0.004234969 -0.004638791 -1.59442e-6 1.11759e-6 -0.005012691 -5.05134e-4 -0.01147347 -0.006630122 -0.002992868 -0.006967008 -0.005210757 -0.002992689 -0.003979802 -0.005266964 -2.45735e-4 0.007660984 -0.006416499 -5.05134e-4 -0.007658779 -0.006416499 -2.45735e-4 -0.007658779 -0.006416499 -5.05134e-4 0.007660984 -0.006416499 -5.05134e-4 0.01015198 -0.008522212 -0.002993106 -0.006941318 -0.0058344 -0.002992689 -0.00672239 -0.006332516 -0.002990543 -0.006191968 -0.00682789 -0.002993524 -0.005549788 -0.006996035 -0.002993404 -0.004872024 -0.006890177 -0.002992749 -0.00425744 -0.006364703 -0.002992987 -0.004025876 -0.005871236 -1.60762e-6 -0.00753647 -0.00633651 -1.59346e-6 -0.006923794 -0.00589174 -1.59572e-6 -0.004027247 -0.005859494 -1.59442e-6 -0.001141309 -0.007281184 -1.59442e-6 -8.1964e-4 -0.006821751 -1.59559e-6 -0.003363728 -0.009257972 -1.59499e-6 -0.001240491 -0.007770717 -1.59442e-6 -3.46115e-4 -0.006569683 -1.59442e-6 1.28332e-4 -0.006507277 -1.59442e-6 7.83208e-4 -0.006791651 -1.59442e-6 0.001205801 -0.007410407 -1.61609e-6 0.003336369 -0.009270906 -1.61233e-6 0.00634557 -0.007537126 -1.59442e-6 -0.006697714 -0.006367683 -1.59442e-6 -0.004232883 -0.006329417 -2.45735e-4 -0.006426632 -0.00766772 -1.59528e-6 -0.006337761 -0.007542908 -1.59442e-6 -0.006327271 -0.006723344 -5.05134e-4 -0.01014977 -0.008522212 -5.05134e-4 -0.006426632 -0.00766772 -5.05134e-4 0.006428837 -0.00766772 -5.05134e-4 0.008519291 -0.01013964 -2.45735e-4 0.006428837 -0.00766772 -1.59442e-6 -0.004822254 -0.006867527 -0.00399965 3.38258e-4 -0.006567299 -0.004000365 -1.31362e-4 -0.006508171 -0.004747033 1.11759e-6 -0.007759273 -0.004000127 -8.56887e-4 -0.00684297 -0.003999948 8.21709e-4 -0.006823956 -1.59442e-6 -0.005701541 -0.006991624 -0.003999769 0.001132249 -0.007262408 -0.003999888 -0.00118345 -0.007395386 -0.004001438 0.00124228 -0.007759273 -0.004000186 -0.001217126 -0.00806576 -5.05134e-4 -0.008517086 -0.01013964 -5.05134e-4 -0.004999935 -0.0086748 -2.45735e-4 -0.004999935 -0.0086748 -1.59442e-6 -0.004927456 -0.008522212 -5.05134e-4 0.00500214 -0.0086748 -5.05134e-4 0.006627202 -0.01148241 -2.45735e-4 0.00500214 -0.0086748 -0.003999948 -8.16709e-4 -0.008699357 -0.004000663 -2.61811e-4 -0.008960962 -0.004000663 5.33831e-4 -0.008892595 -0.003997981 0.001080155 -0.008381605 -1.59442e-6 0.001179993 -0.008155047 -1.59442e-6 -0.001075923 -0.008380949 -1.59442e-6 0.004929661 -0.008522212 -1.59442e-6 8.24824e-4 -0.008691847 -2.45735e-4 -0.00342065 -0.009407222 -1.59442e-6 -5.58917e-4 -0.008877336 -1.59442e-6 0.001713871 -0.009712398 -5.05134e-4 -0.006624996 -0.01148241 -5.05134e-4 -0.00342065 -0.009407222 -5.05134e-4 0.003419041 -0.009407222 -5.05134e-4 0.004532933 -0.01245898 -2.45735e-4 0.003419041 -0.009407222 -1.59442e-6 -0.001711666 -0.009712398 -1.59442e-6 1.81123e-4 -0.008983135 -1.59442e-6 1.11759e-6 -0.009864985 -5.05134e-4 -0.004530727 -0.01245898 -5.05134e-4 -0.001734554 -0.009834468 -2.45735e-4 -0.001734554 -0.009834468 -5.05134e-4 0.00173676 -0.009834468 -5.05134e-4 0.002301335 -0.01303881 -2.45735e-4 0.00173676 -0.009834468 -2.45735e-4 1.11759e-6 -0.009987056 -5.05134e-4 -0.002299129 -0.01303881 -5.05134e-4 1.11759e-6 -0.009987056 -5.05134e-4 1.11732e-6 -0.01325243 -0.005202472 1.11757e-6 0.01323676 -0.005202472 -0.002299129 0.01305365 -0.005202472 0.002301335 0.01305365 -0.005202472 -0.004530727 0.0124433 -0.005202472 0.004532933 0.0124433 -0.005202472 -0.006624996 0.01146674 -0.005202472 0.006627202 0.01146674 -0.005202472 -0.008517086 0.01015448 -0.005202472 0.008519291 0.01015448 -0.005202472 -0.01014977 0.008506536 -0.005202472 0.01015198 0.008506536 -0.005202472 -0.01147347 0.006614446 -0.005202472 0.01147568 0.006614446 -0.005202472 -0.01245003 0.004539251 -0.005202472 0.01245224 0.004539251 -0.005202472 -0.01304703 0.002311468 -0.005202472 0.01305115 0.002311468 -0.005202472 -0.01324921 -7.83085e-6 -0.005202472 0.01324951 -7.83085e-6 -0.005202472 -0.01304703 -0.002296626 -0.005202472 0.01305115 -0.002296626 -0.005202472 -0.01245003 -0.004524409 -0.005202472 0.01245224 -0.004524409 -0.005202472 -0.01147347 -0.006630122 -0.005202472 0.01147568 -0.006630122 -0.005202472 -0.01014977 -0.008522212 -0.005202472 0.01015198 -0.008522212 -0.005202472 -0.008517086 -0.01013964 -0.005202472 0.008519291 -0.01013964 -0.005202472 -0.006624996 -0.01148241 -0.005202472 0.006627202 -0.01148241 -0.005202472 -0.004530727 -0.01245898 -0.005202472 0.004532933 -0.01245898 -0.005202472 -0.002299129 -0.01303881 -0.005202472 0.002301335 -0.01303881 -0.005202472 1.11759e-6 -0.01325243 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 1 0 0 1 0 0 1 0 0 0 -0.0875743 0.9961581 0 0.0875743 0.9961581 0.5285323 -0.07434296 0.8456517 0.528493 0.07533085 0.8455888 0.5335273 0.07406884 0.8425334 0.5335543 -0.0750494 0.8424295 0 -0.2620087 0.9650655 0.4999396 -0.2269154 0.8358049 0.5319626 -0.2161337 0.8187198 0 0.262562 0.9649152 0.5316346 0.2223831 0.8172579 1 -9.34223e-5 -8.20577e-5 0.4880982 0.2209986 0.8443458 1 4.25124e-5 -4.01485e-5 1 -1.4342e-5 8.75247e-5 1 -9.19298e-5 -4.94807e-6 1 -6.6376e-5 4.16722e-5 1 -6.43319e-5 1.37158e-5 1 -3.00096e-5 2.12874e-5 1 3.84366e-5 3.07451e-6 1 1.85524e-5 2.6984e-5 1 2.96235e-5 2.14262e-5 0 -0.4207249 0.9071882 0.4809446 -0.368871 0.7953782 0 0.4198901 0.907575 0.5007088 0.3634635 0.7856112 0.477755 0.3727598 0.7954876 0.5009092 -0.3675613 0.7835744 1 2.93333e-4 -3.4989e-4 1 -1.45731e-5 2.74687e-5 1 -6.23311e-5 -9.45699e-6 0.008336007 -0.1249414 -0.9921291 0.853693 -0.06635576 -0.516532 -0.008241534 0.1303283 -0.9914367 0.008542478 0.4189694 -0.9079602 0.8473201 0.222739 -0.4821161 3.14194e-4 0.4698812 -0.8827296 0.002625584 -0.4688841 -0.8832558 -0.007139444 -0.3982701 -0.9172405 0.8510006 -0.2458105 -0.4640855 0 -0.5766834 0.8169678 0.4710206 -0.5087053 0.7206654 0.5016973 -0.494282 0.7099192 0 0.5766834 0.8169678 0.5015153 0.4989169 0.7067987 -0.005063235 0.8469123 -0.5317085 0.007205367 -0.8485053 -0.5291379 -0.003064215 -0.8102663 -0.5860539 0.8472041 -0.450678 -0.2813087 1 -1.84792e-4 2.20227e-4 0.4663608 0.5047814 0.7264321 1 3.08032e-6 4.67342e-7 -3.06952e-4 0.8608048 -0.5089353 0.8499004 0.4537726 -0.26788 0.008005201 0.9986712 -0.05091029 0.849231 0.5273293 -0.02703148 -0.01143455 -0.996751 -0.07972913 1 5.04503e-7 5.53749e-6 -0.007902741 0.9985234 0.05374497 0.8495935 -0.003325879 0.5274275 0.8501604 -0.2759227 0.4484352 0.8508805 -0.4358486 0.2933232 0.8475717 -0.5291153 0.04073685 0.8493387 0.4523264 0.2720745 0.8503003 0.283411 0.4434725 0.01148736 -0.9970279 0.07618141 0 -0.7038 0.7103981 0.4692109 -0.6215162 0.6273428 0 0.7038 0.7103981 0.5051807 0.607389 0.6130834 0.4687598 0.6265458 0.6226594 0.5054833 -0.61199 0.6082391 1 -4.50083e-7 5.9008e-6 1 0 0 -1.98606e-4 0.8720647 0.4893907 0.004279851 0.8573377 0.5147367 0.001667559 -0.8299399 0.5578505 -0.006232142 -0.8632766 0.5046929 1 2.4554e-7 -1.43566e-7 -0.01925027 -0.09070008 -0.9956923 0.01128786 0.05770701 -0.9982697 0.8467266 0.03205537 -0.5310619 -0.008392214 0.4968103 -0.8678185 0.8470883 0.2633692 -0.4616039 7.47096e-4 0.4686588 -0.8833791 0.02123683 -0.4647713 -0.885176 0.8456664 -0.248554 -0.4723021 -0.001541554 0.5396611 0.841881 1 0 0 -0.002716541 0.5337761 0.8456214 0.003063857 -0.5224141 0.8526865 -0.001808643 -0.552488 0.8335189 1 1.87459e-7 -2.82711e-7 -0.0209918 -0.670772 -0.7413666 1 -4.35947e-6 -4.81841e-6 0.001270055 -0.009248673 0.9999565 -0.004118323 -0.04107779 0.9991475 1 0 -8.44642e-7 1 0 -1.04078e-6 -0.006902277 0.8156173 -0.5785508 0.01169788 -0.8153002 -0.5789204 0.8485827 -0.4314638 -0.3061804 0 -0.8204602 0.5717036 0.4840376 -0.7179415 0.5002677 0.5038751 -0.7065819 0.496842 0 0.8204645 0.5716976 0 0.820464 0.5716983 0.507484 0.7069622 0.49261 0.01428717 0.8731182 -0.4872993 0.8456624 0.4656829 -0.2607578 -0.01041895 0.9714604 -0.2369729 -0.007986485 -0.9744859 -0.2243067 -0.01331871 -0.9690595 -0.2464681 0.851482 -0.5110867 -0.117341 1 -4.82737e-6 -1.22776e-6 1 8.25962e-5 6.86066e-5 1 -7.03127e-6 -8.25709e-6 1 1.82266e-4 4.39023e-4 1 2.94723e-5 -2.07398e-4 0.9999999 -4.06009e-5 -6.28475e-4 1 -4.39545e-5 -1.12439e-4 1 3.92936e-7 1.47641e-6 1 -4.25477e-7 2.12519e-6 0.9999999 -2.45743e-4 6.21596e-4 0.492329 0.712507 0.4999461 1 -9.64027e-7 -3.3858e-6 1 1.53751e-6 -3.77263e-6 1 2.4422e-5 -1.69846e-5 0.008886337 0.9996946 0.0230627 0.8490864 0.5280858 0.01333028 -0.008634805 0.9908306 0.1348344 0.8501776 0.477171 0.2224994 0.8523541 0.181979 0.4902819 0.8518904 0.3309366 0.405911 0.850338 -0.02808338 0.5254872 0.8477799 -0.2884385 0.4450536 0.8504165 -0.4700123 0.2363904 0.8517896 -0.5214397 0.05055004 0.01411104 -0.9952881 0.0959298 1 4.83271e-7 1.69755e-6 0 -0.907128 0.4208551 0 -0.907128 0.4208552 0.4877908 -0.7918869 0.3673899 0.6542336 0.1047406 -0.7490046 0.7221702 0.06095653 -0.6890244 1 0 0 0 0.907128 0.4208552 0 0.907128 0.4208551 0.4811901 0.7952035 0.3689278 0.4971184 0.7858483 0.3678529 0.01192754 0.9060416 0.4230206 0.004307925 -0.8929457 0.4501438 -0.01344281 -0.9284467 0.3712223 1 -7.48985e-7 2.99528e-7 0.4819022 -0.7943938 0.3697417 0.6761976 -0.1771325 -0.7151091 0.7419145 -0.09739267 -0.6633834 1 9.01401e-7 6.73495e-7 -0.01910543 0.8009416 0.5984376 0.6853138 0.3017235 -0.6628032 0.694822 0.2914457 -0.6574814 0.7192003 -0.3056574 -0.6239588 0.01008373 -0.141049 -0.9899513 0.007407903 -0.1379663 -0.9904093 1 -1.98884e-7 0 -0.01744687 0.1440697 -0.9894138 0.02145105 0.19962 -0.9796386 1 3.21309e-7 0 0.01175832 0.6329729 0.7740848 1 3.08832e-6 -3.02888e-5 0.01619154 -0.5398912 0.8415791 -0.003774821 -0.6267337 0.7792245 1 -5.68011e-7 7.06287e-7 0.7002453 -0.3022552 -0.6467599 0.706784 0.4273163 -0.5637883 0.707813 0.4260179 -0.5634799 -0.01666778 0.445693 -0.8950308 0.01658397 0.4073277 -0.9131315 -0.006668984 -0.4278214 -0.9038387 -0.01952862 -0.412695 -0.9106599 1 -2.3256e-7 0 1 -1.04804e-5 -2.48134e-5 -0.006974577 0.3890693 0.9211822 1 -6.86751e-6 -2.44768e-5 4.82424e-4 0.3485121 0.9373042 -0.01190829 -0.2823789 0.9592291 1 1.66521e-5 -5.61999e-5 -6.82597e-5 -0.01880419 0.9998232 0.006342828 -0.06055879 0.9981446 -0.02365654 0.6085352 -0.7931743 0.02616703 -0.611449 -0.7908511 1 -1.39865e-7 0 0.7021182 -0.4927097 -0.5140694 0.03821057 0.6903505 -0.7224653 -0.0232501 -0.6783365 -0.7343835 0.6817644 -0.4971741 -0.5366706 0 -0.9653186 0.2610748 0.480514 -0.8484127 0.2220414 0.518134 -0.8256365 0.2232971 0 0.9653186 0.2610748 0.4903099 0.8413216 0.2275399 0.6942977 0.5754219 -0.4322503 0.7316109 0.565101 -0.3813219 -0.03885304 0.8246211 -0.5643498 0.01715284 -0.8332661 -0.5526059 0.009302556 -0.8281782 -0.5603877 1 2.5107e-7 0 0.7342382 -0.5651049 -0.3762325 1 -6.8778e-6 1.68077e-6 1 3.12993e-6 4.50604e-6 1 8.7703e-6 1.14705e-5 1 9.14898e-6 1.17904e-5 1 5.44395e-4 -1.25405e-4 1 1.07985e-5 6.33411e-6 1 9.11118e-6 1.75752e-5 1 1.35967e-5 7.49757e-7 1 1.34054e-5 9.5965e-7 1 2.31675e-5 -6.66324e-5 1 -1.35714e-4 -1.57514e-5 1 -1.11484e-4 -1.94994e-5 1 -5.34569e-5 -9.00362e-6 1 -6.83552e-6 3.22259e-7 1 -2.23435e-6 1.44661e-6 1 -1.03444e-6 1.92987e-6 1 -2.47468e-6 1.0446e-6 0.5182204 0.8269245 0.2182739 1 -3.88011e-7 -8.21648e-7 1 8.28765e-7 -1.14156e-6 1 1.64561e-7 -1.17844e-6 0.6571497 0.6941174 -0.2938628 0.6402332 -0.6913012 -0.3349688 0.0392099 0.8962017 -0.4419108 1 2.58313e-7 0 0 -0.9961748 0.08738374 0.5160077 -0.8533073 0.07485151 1 0 0 0 0.9963626 0.08521521 0.5160399 0.8531706 0.07617592 0.4990971 0.8633941 0.07384288 0.5090408 -0.8573319 0.07654744 1 0 0 1 0 0 0.7302764 0.6555731 -0.1921466 -0.02598512 0.9598535 -0.2792958 -0.008791446 -0.9641453 -0.2652292 0.009723305 -0.9695219 -0.2448118 1 0 0 0.7476847 -0.6402827 -0.1760842 0.00144422 -0.1263819 -0.9919806 -0.003265261 -0.08449792 -0.9964183 0.8535943 -0.06620937 -0.5167139 0.008303046 -0.1251111 -0.9921081 0.8536935 -0.06636792 -0.5165296 -0.008248448 0.1270262 -0.9918652 0.003760576 0.4232899 -0.9059866 0.8470348 0.224892 -0.4816179 2.18899e-4 0.4403125 -0.8978446 1.42916e-4 -0.4712551 -0.881997 -0.001684129 -0.4602418 -0.887792 0.8512939 -0.2467994 -0.4630212 0.008356928 0.421588 -0.9067491 0.8472799 0.2242484 -0.4814867 -1.12576e-4 0.4727101 -0.881218 1.38923e-4 -0.4706792 -0.8823046 -0.008339166 -0.4192678 -0.9078244 0.8509041 -0.2467567 -0.4637603 0.6742213 0.7373701 -0.04136401 0.692831 0.7192692 -0.05135333 0.6442866 -0.7608318 -0.07765179 -0.00466752 0.8527526 -0.5222943 0.004715144 -0.8504515 -0.5260322 0.8480602 -0.4507189 -0.2786509 -0.00446999 0.8393715 -0.5435399 0.004531979 -0.837792 -0.5459707 0.8490084 -0.4428037 -0.2882878 0.02497798 0.9942916 -0.103732 1 -3.9079e-7 0 -0.006860673 0.9984676 -0.05491298 -2.42921e-4 0.865348 -0.5011715 0.8493548 0.4568728 -0.2643175 5.56867e-4 -0.8625574 -0.505959 0.006940424 0.8769227 -0.4805814 0.848306 0.4643675 -0.2544403 -0.006878197 -0.8754912 -0.4831852 0.007947862 0.998565 -0.05295962 0.8494801 0.5268682 -0.02816963 -0.007995188 -0.9984514 -0.05505532 -0.006456673 0.9988706 -0.04707401 0.006476402 -0.9987366 -0.0498321 0.8491135 -0.527546 -0.02648693 1 0 0 0 -0.9961748 -0.08738374 0.5090926 -0.8574193 -0.07521218 0.5160782 -0.8531476 -0.0761739 1 0 0 1 0 0 -0.01643365 0.9932429 0.114885 0.8473311 0.4520263 0.2787512 0.8501248 0.2411199 0.4681335 0.8510076 0.002395093 0.525148 0.8488877 -0.2838174 0.445912 0.85149 -0.4594086 0.2528015 0.8493036 -0.5271793 0.02766954 0.008086562 -0.9985985 0.0523051 1 0 0 1 0 0 1 5.15055e-7 0 -0.008791625 -0.9965795 0.08217102 0.008614659 -0.9947007 0.1024521 0.7464292 -0.6632713 0.0539878 0.006472289 0.9987372 0.04982316 0.8498653 0.5263374 0.02642172 0.8511337 0.4468301 0.2755256 0.8507212 0.2899528 0.4384073 0.8486608 0.02079361 0.5285287 0.8484783 -0.2841594 0.4464732 0.8492867 -0.4691047 0.2421833 -0.006453335 -0.9988706 0.04707401 1 0 0 0.4989748 0.8631827 -0.07706987 1 0 0 0 0.9963626 -0.08521521 0.5158692 0.8535513 -0.07300108 -1.35197e-4 -0.8761712 0.4820001 1 -1.63494e-7 0 -0.006152153 0.8873991 0.4609611 0.006217539 -0.8886995 0.458448 0.0135526 0.8510566 0.5248991 -0.003659725 -0.8648026 0.5020987 1 6.47662e-7 -3.76329e-7 0.003435492 0.8512664 0.5247225 -0.003436982 -0.852472 0.5227616 1 0 0 0.009284973 0.9697641 0.2438678 0.7053437 0.6841609 0.1855109 -0.0124036 0.9635869 0.267108 0.6375687 -0.7456027 0.1938627 1 0 0 -0.01173251 0.7230167 0.6907309 1 -1.8928e-6 -2.35715e-6 1 3.20333e-5 3.71757e-5 0.6874799 0.6980237 0.2003359 1 2.80248e-6 2.90566e-5 1 -1.64548e-7 3.41164e-7 0.002693951 -0.5355324 0.8445104 8.53143e-4 -0.5446267 0.8386782 1 2.95438e-7 -4.55013e-7 -7.22691e-4 0.5511936 0.8343771 1 0 0 -0.004045069 0.5334208 0.8458403 0.004175245 -0.5355047 0.844522 7.48115e-4 -0.5538695 0.8326032 1 1.08199e-6 -1.62729e-6 0.008116722 0.4592762 0.8882565 -0.003749608 0.3419485 0.9397112 1 0 2.43317e-7 1 6.73019e-7 -2.90234e-7 0.002595543 0.001542627 0.9999955 1 0 3.01746e-7 -9.95859e-4 -0.02488201 0.9996899 0.006362438 0.03798741 0.999258 -0.006594002 -0.04143738 0.9991194 1 0 -2.13002e-6 1 2.57967e-6 0 -0.006258904 -0.9246886 0.3806728 0 -0.9211807 0.389135 0.7410699 -0.6201299 0.2573997 0.5181774 -0.8260688 -0.2215915 0.5140637 0.8282064 -0.2231877 0.5180969 0.8256583 -0.223303 0 -0.9653186 -0.2610748 0.5090674 -0.8308753 -0.2247143 0 0.9653186 -0.2610748 0.0126096 0.8261519 0.5633064 0.7046605 0.5861237 0.3998908 0.02042001 0.8311832 0.5556236 0 -0.8183156 0.5747693 0.01927357 -0.7934942 0.6082726 0.6922703 -0.5905279 0.4147755 1 3.7047e-5 1.68442e-5 1 -1.03269e-5 -1.06405e-5 1 2.84368e-6 5.14417e-6 1 1.17505e-6 1.83485e-6 1 -1.62497e-5 8.09354e-5 1 1.49458e-5 6.35725e-5 1 3.65198e-5 5.98688e-5 0.6706019 0.5953935 0.4424927 1 -3.34205e-5 2.31499e-6 0.6704625 -0.5968201 0.4407788 1 -1.41602e-5 9.69242e-6 0.7159765 0.4902323 0.4970414 -0.02016651 0.7020707 0.7118217 -0.0197646 -0.7020764 0.7118274 0.71518 -0.4908052 0.4976223 0.5153435 -0.7773939 -0.3606659 0.5217345 -0.7733656 -0.3601375 0.515561 0.7760517 -0.3632364 0 -0.907128 -0.4208551 0 -0.907128 -0.4208549 0 0.907128 -0.4208549 0 0.907128 -0.4208551 0.5303056 0.769069 -0.3568036 0.02544289 0.5686234 0.8222045 0.7225285 0.3742092 0.581309 0.6738631 0.4483715 0.5872578 -9.18249e-4 0.5359632 0.844241 0.01817226 -0.5382836 0.8425679 0.0125721 -0.5439077 0.8390509 0.7168884 -0.3825814 0.58284 0.6722643 -0.4505043 0.5874578 1 2.65485e-5 5.8312e-5 1 4.22544e-5 4.79834e-5 1 -2.48328e-6 4.61319e-5 0.6769641 -0.3000158 0.672094 0.005372762 -0.1365982 -0.990612 0.8498336 -0.07226198 -0.5220741 -0.006715297 0.1789301 -0.9838389 0.007611453 0.2477605 -0.9687914 0.848176 0.1307934 -0.5133135 -0.009517788 -0.2427425 -0.9700441 0.01003044 -0.4748326 -0.880019 0.8496279 -0.2508513 -0.4639031 0.003717005 0.284612 0.9586356 0.6745322 0.2874592 0.6799806 0.7366897 0.1981099 0.6465607 0.0165975 0.2989943 0.9541106 -0.01339262 -0.2815839 0.9594432 -0.02078604 -0.2901427 0.9567577 0.7461932 -0.1837768 0.6398608 1 3.3049e-5 1.46058e-5 1 1.69214e-4 -2.17756e-4 1 -3.65086e-5 -3.98076e-5 3.12274e-4 0.6634602 -0.7482116 0.8466312 0.3537129 -0.3976214 -0.003179132 0.6736837 -0.7390131 0.002353668 -0.7124078 -0.7017617 -0.008812069 -0.6608573 -0.7504599 0.849098 -0.3762533 -0.3707643 0.6656466 0.03675359 0.7453616 -0.02294093 0.04504388 0.9987216 0.02657783 -0.03845536 0.9989069 0.6626385 -0.1061415 0.74138 0.7494114 0.07997822 0.6572565 1 0 0 0.002737879 0.9145646 -0.4044306 0.848075 0.4845453 -0.214441 -0.003982365 0.9272241 -0.3744859 0.003579735 -0.9264684 -0.3763554 -0.002799034 -0.9146546 -0.404227 0.8484581 -0.4903672 -0.1991454 0.9999986 -9.00053e-5 0.00174278 1 6.22313e-5 3.56524e-4 0.5298433 -0.6927291 -0.4892775 0.5375501 0.6869254 -0.4890537 0.5083357 0.7048494 -0.4947547 0 -0.81463 -0.5799812 0.5133025 -0.6991218 -0.4977443 1 0 -2.04548e-7 0 0.8146338 -0.5799757 0 0.8146343 -0.579975 0.004307031 0.9991417 0.04120147 0.8497351 0.5267749 0.02141541 1 -1.84846e-5 -6.37118e-6 -0.004190325 0.9962908 0.08594852 0.8499221 0.3577589 0.3868345 0.8511879 0.4802778 0.2116894 0.8524828 0.1360961 0.5047285 0.8533486 -0.08056938 0.5150775 0.8497564 -0.3431236 0.4002255 0.8517245 -0.4741801 0.222977 0.8507354 -0.524108 0.03949803 -7.5857e-4 -0.9971058 0.07602161 -0.003681659 -0.9981099 0.0613451 1 0 -3.00947e-7 1 -7.3171e-7 -1.0091e-6 1 0 0 1 0 0 1 0 1.39513e-7 1 -8.05373e-6 -1.53422e-6 1 0 0 1 0 0 1 1.70771e-6 -9.68813e-6 1 1.66679e-5 -3.10947e-5 0.002346336 0.9155105 0.4022873 1 -1.60876e-5 -9.67201e-6 -0.002419233 0.9032829 0.4290386 0.002421677 -0.9052711 0.4248276 -0.001998841 -0.9161313 0.4008734 1 4.31224e-6 8.80232e-7 0.5260326 -0.6032885 -0.5994437 0.506106 -0.6145251 -0.6051576 1 -1.1197e-5 -8.96466e-7 1 -1.63613e-5 -1.70386e-5 0.50555 0.6119618 -0.6082122 0 -0.7125167 -0.7016552 0 0.7125167 -0.7016552 0.5259784 0.6059941 -0.5967563 0.002948939 0.6825127 0.7308679 0.006135582 0.6926185 0.7212781 0.00505048 -0.6498712 0.7600277 -0.003170251 -0.6742425 0.7385033 1 2.86654e-7 -3.14296e-7 0.008336007 -0.1249423 -0.9921291 0.8536926 -0.06635695 -0.5165324 -0.008242011 0.1303272 -0.9914368 0.008542776 0.4189699 -0.9079599 0.8473199 0.2227399 -0.4821161 3.14194e-4 0.4698816 -0.8827295 0.002625584 -0.4688839 -0.883256 -0.007140219 -0.3982697 -0.9172406 0.8510008 -0.2458095 -0.4640856 1 -4.43208e-7 -1.0335e-6 -0.01430463 0.3939333 0.9190277 0.01141822 0.253284 0.9673246 1 -2.7024e-7 -6.54317e-7 -0.009278655 -0.1542373 0.9879903 -0.005183577 -0.1397306 0.9901761 1 2.60435e-7 -1.84516e-6 -0.004582166 0.8191553 -0.5735536 -0.00639224 -0.8159653 -0.5780656 -0.003391504 -0.8257549 -0.564019 0.8508954 -0.4288734 -0.3033889 0.005463063 0.8607929 -0.5089263 0.8498999 0.4537734 -0.2678807 -0.004658877 0.9800775 -0.1985616 0.009953439 -0.9762996 -0.2161948 0.8514164 -0.5114766 -0.1161117 0.009539484 0.9986967 -0.0501393 0.8492135 0.5273652 -0.02687901 0 -0.5766831 -0.8169681 0.563331 -0.4764736 -0.6750046 0.531519 -0.4831222 -0.695759 0 0.5766831 -0.8169681 0.5353112 0.4870981 -0.6900561 0.8476761 0.4482966 0.2836821 0.8488557 0.2263076 0.4777332 0.8440471 -0.04588967 0.534302 0.8470268 -0.3653086 0.3861287 0.8490611 -0.5100626 0.1375917 -0.01213449 -0.9993258 0.03465175 1 9.86912e-6 -3.42209e-7 0.009884357 -0.9676302 0.2521793 1 3.58951e-6 6.03991e-6 1 -7.85891e-7 7.16365e-7 -0.01356714 0.9653977 0.2604291 1 -6.82103e-5 1.16218e-4 0.5637742 0.4717001 -0.6779807 0.01225554 0.8452743 0.5341922 -0.01044183 -0.8339014 0.5518147 1 7.48362e-6 -4.95206e-6 0.5689808 -0.3459836 -0.7460271 0.546332 -0.3566038 -0.7578623 0.5689944 0.3497368 -0.7442645 1 -3.65447e-7 -3.80587e-7 -0.01254558 0.6925429 0.7212677 0.01304376 -0.6830869 0.7302207 1 1.07933e-5 9.40306e-6 0 -0.4207249 -0.9071882 0 0.4198901 -0.907575 0.5443346 0.3522325 -0.7613357 1 -5.13191e-7 7.08517e-7 0.0127685 0.4263911 0.9044488 -0.01574224 -0.4121928 0.9109607 1 0 0 -0.01018661 0.1414518 0.9898928 0.01499366 -0.08557784 0.9962188 0 -0.2456306 -0.9693636 0.5456574 -0.2222374 -0.8080028 0.4527047 -0.2190191 -0.8643433 0 0.2461538 -0.9692308 0.5296872 0.208786 -0.8220949 0.452252 0.2341679 -0.8606007 0.4516967 -0.07813131 -0.8887438 0.4458006 -0.07942992 -0.8916012 0.4517405 0.07916522 -0.8886302 0 -0.0875743 -0.9961581 0 0.0875743 -0.9961581 0.4458375 0.07838898 -0.891675 0 0.9962655 -0.08634305 0 0.07935088 0.9968468 0 0.2638148 0.9645735 -2.03035e-7 0.8193876 -0.57324 0 -0.9659186 0.2588464 0 0.7103886 0.7038097 0 -0.9961214 -0.08799022 -2.6988e-7 0.5787503 -0.8155048 0 -0.8193876 -0.5732399 -2.01449e-7 -0.9962221 0.08684259 0 -0.5787475 -0.8155069 -1.31674e-7 -0.9071879 -0.4207258 0 -0.9659186 -0.2588462 -6.08147e-7 0.4226143 0.9063097 -1.91012e-7 0.9963626 0.08521527 0 -0.703779 -0.710419 -4.30429e-7 -0.7103879 0.7038105 -3.36348e-7 0.569902 0.8217127 0 0.9071883 -0.420725 -1.22457e-7 0.7037787 -0.7104193 0 -0.904819 0.4257966 2.22383e-7 -0.2514786 -0.9678629 -1.68841e-7 0.9048187 0.425797 0 -0.2638149 0.9645733 0 0.251479 -0.9678628 0 0.819387 0.5732409 -2.71645e-7 -0.4226143 -0.9063097 0 -0.09247148 -0.9957153 0 0.4226139 -0.9063099 -3.56778e-7 -0.4226146 0.9063095 -1.50778e-7 0.9657116 0.2596174 0 0.09247142 -0.9957153 -1.50778e-7 0.9657115 -0.2596179 -3.35393e-7 -0.8193873 0.5732404 2.69374e-7 -0.5698986 0.8217151 2.37868e-7 -0.07935088 0.9968468 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -4.03987e-7 -2.53281e-7 -1 0 0 -1 0 -4.94411e-7 -1 0 0 -1 0 0 -1 0 -4.94415e-7 -1 0 0 -1 4.03987e-7 -2.53281e-7 -1 0 0 -1 0 0 -1 0 0 -1 5.71087e-7 -3.13206e-6 -1 0 0 -1 2.80145e-7 0 -1 -9.13736e-7 -3.13204e-6 -1 0 -1.4285e-7 -1 -2.80145e-7 0 -1 6.58118e-7 -1.05852e-6 -1 0 0 -1 0 0 -1 2.81033e-7 -1.42849e-7 -1 0 0 -1 -2.61403e-7 0 -1 -6.5812e-7 -1.05852e-6 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1.8699e-7 0.9962655 -0.08634305 0 0.079351 0.9968468 0 0.2638149 0.9645734 0 0.8193871 -0.5732406 0 -0.9659186 0.2588463 0 0.7103878 0.7038105 -1.9223e-7 -0.9961212 -0.08799159 3.33807e-7 0.5787501 -0.8155051 0 -0.8193871 -0.5732406 0 -0.9962223 0.08684128 0 -0.5787469 -0.8155072 0 -0.9071883 -0.4207247 0 -0.9659186 -0.2588462 0 0.4226143 0.9063097 0 0.9963626 0.08521527 -1.68495e-7 -0.7037791 -0.7104189 1.66928e-7 -0.7103881 0.7038102 0 0.569902 0.8217127 -1.6683e-7 0.9071881 -0.4207253 -1.68495e-7 0.7037794 -0.7104187 0 -0.9048187 0.4257974 0 -0.2514789 -0.9678629 0 0.9048189 0.4257968 -3.34754e-7 -0.2638149 0.9645734 0 0.2514789 -0.9678629 -1.67697e-7 0.8193873 0.5732405 0 -0.4226143 -0.9063097 -3.35247e-7 -0.09247106 -0.9957154 0 0.4226143 -0.9063097 0 -0.4226143 0.9063097 -2.09827e-7 0.9657114 0.259618 0 0.09247106 -0.9957154 0 0.9657116 -0.2596173 0 -0.8193873 0.5732405 0 -0.5698992 0.8217147 0 -0.079351 0.9968468 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |

3 0 2 0 0 0 4 0 3 0 0 0 1 0 4 0 0 0 6 0 4 0 1 0 5 0 6 0 1 0 3 0 8 0 2 0 8 1 7 1 2 1 10 0 6 0 5 0 9 0 10 0 5 0 12 0 11 0 7 0 8 0 12 0 7 0 14 0 10 0 9 0 13 0 14 0 9 0 16 0 15 0 11 0 12 0 16 0 11 0 18 0 14 0 13 0 17 0 18 0 13 0 20 2 19 2 15 2 16 0 20 0 15 0 4 3 21 3 3 3 21 4 22 4 3 4 22 4 8 4 3 4 4 3 23 3 21 3 23 5 24 5 21 5 24 6 25 6 21 6 25 7 22 7 21 7 23 8 26 8 24 8 26 0 27 0 24 0 28 0 25 0 24 0 27 0 28 0 24 0 6 9 23 9 4 9 6 9 29 9 23 9 29 10 30 10 23 10 30 11 26 11 23 11 22 12 31 12 8 12 31 12 12 12 8 12 25 13 31 13 22 13 30 14 32 14 26 14 32 0 27 0 26 0 33 15 31 15 25 15 28 0 34 0 25 0 34 16 33 16 25 16 35 17 37 17 30 17 37 18 36 18 30 18 36 19 32 19 30 19 38 20 39 20 33 20 39 21 40 21 33 21 41 22 42 22 33 22 42 23 38 23 33 23 34 24 41 24 33 24 10 25 29 25 6 25 10 25 43 25 29 25 43 26 30 26 29 26 31 27 44 27 12 27 44 27 16 27 12 27 45 28 44 28 31 28 33 29 45 29 31 29 43 30 46 30 30 30 46 31 35 31 30 31 40 32 47 32 33 32 47 33 45 33 33 33 48 34 28 34 49 34 50 35 48 35 49 35 27 36 49 36 28 36 27 37 51 37 49 37 51 38 50 38 49 38 32 39 51 39 27 39 52 40 34 40 48 40 34 41 28 41 48 41 50 42 52 42 48 42 14 43 43 43 10 43 14 43 53 43 43 43 53 44 54 44 43 44 54 45 46 45 43 45 44 46 55 46 16 46 55 46 20 46 16 46 45 47 55 47 44 47 36 48 51 48 32 48 57 49 41 49 52 49 41 50 34 50 52 50 50 51 57 51 52 51 54 52 35 52 46 52 58 53 55 53 45 53 47 54 58 54 45 54 59 0 18 0 17 0 56 0 59 0 17 0 61 0 60 0 19 0 20 0 61 0 19 0 36 55 62 55 51 55 62 56 50 56 51 56 36 57 63 57 62 57 63 58 50 58 62 58 42 59 41 59 57 59 47 60 64 60 58 60 37 61 63 61 36 61 69 62 65 62 50 62 65 63 66 63 50 63 66 64 67 64 50 64 67 65 57 65 50 65 63 66 68 66 50 66 68 67 69 67 50 67 67 68 42 68 57 68 18 69 53 69 14 69 18 69 70 69 53 69 70 70 54 70 53 70 55 71 71 71 20 71 71 71 61 71 20 71 72 72 71 72 55 72 58 73 72 73 55 73 70 74 35 74 54 74 64 75 72 75 58 75 35 76 73 76 37 76 73 77 63 77 37 77 73 78 68 78 63 78 66 79 74 79 67 79 74 80 42 80 67 80 74 81 38 81 42 81 64 82 47 82 75 82 47 83 76 83 75 83 76 84 77 84 75 84 47 85 78 85 76 85 78 86 77 86 76 86 40 87 78 87 47 87 79 88 64 88 75 88 77 89 79 89 75 89 73 90 69 90 68 90 35 91 80 91 73 91 80 92 69 92 73 92 65 93 81 93 66 93 81 94 74 94 66 94 81 95 38 95 74 95 83 96 64 96 79 96 83 97 72 97 64 97 84 0 59 0 56 0 82 0 84 0 56 0 86 0 85 0 60 0 61 0 86 0 60 0 69 98 80 98 65 98 80 99 81 99 65 99 80 100 38 100 81 100 35 101 38 101 80 101 39 102 78 102 40 102 87 103 83 103 79 103 77 104 87 104 79 104 59 105 70 105 18 105 59 105 88 105 70 105 88 106 89 106 70 106 89 107 35 107 70 107 71 108 90 108 61 108 90 109 86 109 61 109 72 110 90 110 71 110 39 111 91 111 78 111 91 112 77 112 78 112 39 113 38 113 91 113 92 114 102 114 87 114 102 115 83 115 87 115 77 116 92 116 87 116 102 117 72 117 83 117 93 118 94 118 35 118 95 119 93 119 35 119 96 120 97 120 35 120 97 121 98 121 35 121 98 122 38 122 35 122 94 123 96 123 35 123 100 124 99 124 38 124 101 125 100 125 38 125 98 126 101 126 38 126 103 127 90 127 72 127 102 128 103 128 72 128 104 129 95 129 35 129 89 130 104 130 35 130 38 131 105 131 91 131 105 132 77 132 91 132 99 133 105 133 38 133 105 134 106 134 77 134 107 135 108 135 77 135 106 136 107 136 77 136 108 137 109 137 77 137 109 138 110 138 77 138 110 139 111 139 77 139 111 140 92 140 77 140 111 141 102 141 92 141 112 142 103 142 102 142 84 143 88 143 59 143 84 144 113 144 88 144 113 145 89 145 88 145 115 146 114 146 98 146 97 147 115 147 98 147 116 148 85 148 86 148 90 149 117 149 86 149 117 150 116 150 86 150 112 151 117 151 90 151 103 152 112 152 90 152 99 153 106 153 105 153 110 154 118 154 111 154 118 155 102 155 111 155 118 156 112 156 102 156 113 157 104 157 89 157 119 158 101 158 98 158 114 159 119 159 98 159 100 160 120 160 99 160 120 161 106 161 99 161 121 162 115 162 97 162 96 163 121 163 97 163 119 164 100 164 101 164 123 0 84 0 82 0 122 0 123 0 82 0 116 0 124 0 85 0 119 165 114 165 125 165 126 166 119 166 125 166 127 167 126 167 125 167 115 168 125 168 114 168 115 169 128 169 125 169 128 170 127 170 125 170 120 171 107 171 106 171 100 172 129 172 120 172 109 173 130 173 110 173 130 174 118 174 110 174 130 175 112 175 118 175 119 176 131 176 100 176 132 177 121 177 96 177 94 178 132 178 96 178 115 179 133 179 128 179 133 0 127 0 128 0 121 180 133 180 115 180 131 181 119 181 126 181 134 182 131 182 126 182 127 183 134 183 126 183 129 184 135 184 120 184 135 185 107 185 120 185 136 186 112 186 130 186 135 187 108 187 107 187 136 188 130 188 109 188 129 189 136 189 135 189 136 190 108 190 135 190 108 191 136 191 109 191 132 192 133 192 121 192 137 193 131 193 134 193 127 194 137 194 134 194 131 195 129 195 100 195 132 196 138 196 133 196 138 0 127 0 133 0 139 197 131 197 137 197 139 198 129 198 131 198 123 199 113 199 84 199 123 199 140 199 113 199 141 200 104 200 113 200 140 201 141 201 113 201 142 0 124 0 116 0 117 202 143 202 116 202 143 202 142 202 116 202 112 203 143 203 117 203 93 204 132 204 94 204 93 205 144 205 132 205 144 206 138 206 132 206 145 207 139 207 137 207 146 208 145 208 137 208 127 209 146 209 137 209 145 210 129 210 139 210 148 211 147 211 104 211 141 212 148 212 104 212 147 213 149 213 104 213 149 214 95 214 104 214 150 215 151 215 95 215 152 216 153 216 95 216 149 217 152 217 95 217 153 218 154 218 95 218 154 219 150 219 95 219 129 220 155 220 136 220 155 221 156 221 136 221 156 222 157 222 136 222 157 223 159 223 136 223 159 224 158 224 136 224 158 225 160 225 136 225 160 226 161 226 136 226 161 227 112 227 136 227 162 228 143 228 112 228 163 229 164 229 112 229 164 230 162 230 112 230 161 231 163 231 112 231 95 232 144 232 93 232 145 233 155 233 129 233 166 0 123 0 122 0 165 0 166 0 122 0 142 0 167 0 124 0 144 234 168 234 138 234 168 235 127 235 138 235 166 236 140 236 123 236 166 236 169 236 140 236 169 237 141 237 140 237 170 238 167 238 142 238 143 239 171 239 142 239 171 239 170 239 142 239 162 240 172 240 143 240 172 241 171 241 143 241 169 242 173 242 141 242 173 243 174 243 141 243 174 244 148 244 141 244 175 0 172 0 162 0 164 0 175 0 162 0 176 245 144 245 95 245 176 246 168 246 144 246 177 247 145 247 146 247 178 248 177 248 146 248 127 249 178 249 146 249 177 250 155 250 145 250 179 251 149 251 180 251 149 252 147 252 180 252 181 253 179 253 180 253 182 254 163 254 183 254 184 255 182 255 183 255 161 256 183 256 163 256 147 257 185 257 180 257 185 258 181 258 180 258 148 259 185 259 147 259 186 260 152 260 179 260 152 261 149 261 179 261 181 262 186 262 179 262 161 263 187 263 183 263 187 264 184 264 183 264 160 265 187 265 161 265 188 266 164 266 182 266 164 267 163 267 182 267 184 268 188 268 182 268 189 269 176 269 95 269 151 270 189 270 95 270 177 271 156 271 155 271 174 272 185 272 148 272 190 273 152 273 186 273 181 274 190 274 186 274 158 275 187 275 160 275 191 276 164 276 188 276 184 277 191 277 188 277 176 278 192 278 168 278 192 279 127 279 168 279 189 280 192 280 176 280 174 281 193 281 185 281 193 282 181 282 185 282 153 283 152 283 190 283 158 284 194 284 187 284 194 285 184 285 187 285 175 286 164 286 191 286 174 287 195 287 193 287 195 288 181 288 193 288 154 289 153 289 190 289 159 290 194 290 158 290 220 291 175 291 191 291 184 292 220 292 191 292 197 293 166 293 165 293 196 0 197 0 165 0 197 294 169 294 166 294 197 294 198 294 169 294 198 295 173 295 169 295 198 296 199 296 173 296 199 297 200 297 173 297 200 298 174 298 173 298 200 299 195 299 174 299 195 300 201 300 181 300 201 301 202 301 181 301 202 302 203 302 181 302 203 303 204 303 181 303 204 304 205 304 181 304 205 305 190 305 181 305 205 306 154 306 190 306 206 0 178 0 127 0 207 0 208 0 127 0 208 0 206 0 127 0 209 307 210 307 127 307 210 308 207 308 127 308 211 0 209 0 127 0 192 0 213 0 127 0 213 309 212 309 127 309 214 310 177 310 178 310 206 311 214 311 178 311 214 312 156 312 177 312 159 313 215 313 194 313 215 314 184 314 194 314 215 315 216 315 184 315 216 316 217 316 184 316 217 317 218 317 184 317 218 318 219 318 184 318 219 319 220 319 184 319 221 320 175 320 220 320 221 321 172 321 175 321 222 322 171 322 172 322 221 0 222 0 172 0 223 0 224 0 170 0 224 323 167 323 170 323 225 324 223 324 170 324 171 324 225 324 170 324 222 325 225 325 171 325 204 326 154 326 205 326 157 327 226 327 159 327 226 328 215 328 159 328 219 329 221 329 220 329 200 330 201 330 195 330 227 331 154 331 204 331 227 332 150 332 154 332 226 333 216 333 215 333 228 334 221 334 219 334 228 335 222 335 221 335 189 336 213 336 192 336 151 337 229 337 189 337 229 338 213 338 189 338 230 339 156 339 214 339 199 340 231 340 200 340 231 341 201 341 200 341 232 342 222 342 228 342 150 343 233 343 151 343 233 344 229 344 151 344 230 345 157 345 156 345 199 346 234 346 231 346 203 347 235 347 204 347 235 348 227 348 204 348 235 349 150 349 227 349 226 350 217 350 216 350 157 351 236 351 226 351 236 352 217 352 226 352 218 353 237 353 219 353 237 354 228 354 219 354 237 355 232 355 228 355 231 356 202 356 201 356 231 357 238 357 202 357 234 358 238 358 231 358 234 359 150 359 235 359 238 360 203 360 202 360 234 361 235 361 238 361 235 362 203 362 238 362 236 363 218 363 217 363 236 364 237 364 218 364 236 365 232 365 237 365 157 366 232 366 236 366 239 367 214 367 206 367 208 368 239 368 206 368 239 369 230 369 214 369 198 370 234 370 199 370 232 371 240 371 222 371 240 372 225 372 222 372 196 0 241 0 197 0 241 373 198 373 197 373 241 373 242 373 198 373 242 374 234 374 198 374 243 0 244 0 223 0 244 0 224 0 223 0 225 375 240 375 223 375 240 375 243 375 223 375 229 376 212 376 213 376 233 377 245 377 229 377 245 378 212 378 229 378 246 379 239 379 208 379 207 380 246 380 208 380 246 381 230 381 239 381 247 0 241 0 196 0 248 382 296 382 234 382 296 383 250 383 234 383 250 384 249 384 234 384 249 385 150 385 234 385 251 386 233 386 150 386 251 387 252 387 233 387 252 388 253 388 233 388 253 389 245 389 233 389 254 390 157 390 230 390 246 391 254 391 230 391 255 392 232 392 157 392 253 393 256 393 245 393 256 394 212 394 245 394 257 395 246 395 207 395 257 396 254 396 246 396 242 397 258 397 234 397 258 398 248 398 234 398 255 399 240 399 232 399 247 0 259 0 241 0 259 400 242 400 241 400 259 401 258 401 242 401 260 0 261 0 243 0 261 0 244 0 243 0 240 402 262 402 243 402 262 403 260 403 243 403 255 404 262 404 240 404 256 405 127 405 212 405 263 406 264 406 256 406 253 407 263 407 256 407 264 408 127 408 256 408 265 409 257 409 207 409 210 410 265 410 207 410 265 411 266 411 257 411 266 412 254 412 257 412 267 413 263 413 253 413 252 414 267 414 253 414 266 415 157 415 254 415 268 416 266 416 265 416 269 417 251 417 270 417 271 418 269 418 270 418 150 419 270 419 251 419 150 420 272 420 270 420 272 421 271 421 270 421 252 422 251 422 269 422 273 423 252 423 269 423 271 424 273 424 269 424 264 425 211 425 127 425 263 426 274 426 264 426 274 427 275 427 264 427 275 428 211 428 264 428 276 429 265 429 210 429 209 430 276 430 210 430 276 431 268 431 265 431 267 432 277 432 263 432 277 433 274 433 263 433 268 434 157 434 266 434 150 435 278 435 272 435 278 436 271 436 272 436 249 437 278 437 150 437 279 438 267 438 273 438 267 439 252 439 273 439 271 440 279 440 273 440 274 441 276 441 275 441 276 442 211 442 275 442 211 443 276 443 209 443 280 444 268 444 276 444 274 445 280 445 276 445 281 446 259 446 247 446 249 447 282 447 278 447 282 448 271 448 278 448 250 449 282 449 249 449 283 450 277 450 279 450 277 451 267 451 279 451 271 452 283 452 279 452 277 453 280 453 274 453 280 454 157 454 268 454 258 455 296 455 248 455 284 456 262 456 255 456 157 457 284 457 255 457 281 0 285 0 259 0 285 458 258 458 259 458 285 458 286 458 258 458 286 459 296 459 258 459 277 460 157 460 280 460 287 0 288 0 260 0 288 0 261 0 260 0 262 461 284 461 260 461 284 462 287 462 260 462 250 463 289 463 282 463 289 464 271 464 282 464 296 465 297 465 250 465 297 466 289 466 250 466 290 467 291 467 271 467 289 468 290 468 271 468 291 469 292 469 271 469 292 470 293 470 271 470 293 471 294 471 271 471 294 472 295 472 271 472 295 473 283 473 271 473 295 474 298 474 283 474 298 475 277 475 283 475 299 0 300 0 277 0 301 476 302 476 277 476 302 477 299 477 277 477 300 478 303 478 277 478 303 479 304 479 277 479 304 480 157 480 277 480 298 481 301 481 277 481 304 482 305 482 157 482 305 483 306 483 157 483 306 484 307 484 157 484 307 485 308 485 157 485 297 486 290 486 289 486 296 487 309 487 297 487 309 488 290 488 297 488 294 489 310 489 295 489 310 490 298 490 295 490 310 491 301 491 298 491 311 492 312 492 296 492 286 493 311 493 296 493 312 494 313 494 296 494 313 495 309 495 296 495 308 496 284 496 157 496 281 0 314 0 285 0 314 0 315 0 285 0 315 497 286 497 285 497 315 497 311 497 286 497 316 0 317 0 287 0 317 0 288 0 287 0 284 498 318 498 287 498 318 498 316 498 287 498 308 499 318 499 284 499 309 500 291 500 290 500 313 501 291 501 309 501 293 502 319 502 294 502 319 503 310 503 294 503 319 504 301 504 310 504 320 505 304 505 321 505 322 506 320 506 321 506 303 507 321 507 304 507 303 508 323 508 321 508 323 509 322 509 321 509 300 510 323 510 303 510 324 511 305 511 320 511 305 512 304 512 320 512 322 513 324 513 320 513 312 514 325 514 313 514 325 515 291 515 313 515 325 516 292 516 291 516 312 517 301 517 319 517 292 518 325 518 293 518 325 519 319 519 293 519 325 520 312 520 319 520 299 521 323 521 300 521 326 522 306 522 324 522 306 523 305 523 324 523 322 524 326 524 324 524 299 525 327 525 323 525 327 526 322 526 323 526 302 527 327 527 299 527 328 528 306 528 326 528 322 529 328 529 326 529 302 530 329 530 327 530 329 531 322 531 327 531 314 0 330 0 315 0 330 0 331 0 315 0 331 532 311 532 315 532 331 532 332 532 311 532 332 533 333 533 311 533 333 534 312 534 311 534 334 0 335 0 316 0 335 0 317 0 316 0 318 535 336 535 316 535 336 535 334 535 316 535 308 536 336 536 318 536 329 537 337 537 322 537 337 538 338 538 322 538 338 539 339 539 322 539 339 540 340 540 322 540 340 541 328 541 322 541 341 542 306 542 328 542 341 543 307 543 306 543 340 544 341 544 328 544 333 545 301 545 312 545 342 546 302 546 301 546 342 547 329 547 302 547 343 548 308 548 307 548 343 549 336 549 308 549 342 550 337 550 329 550 344 551 341 551 340 551 344 552 307 552 341 552 332 553 345 553 333 553 345 554 301 554 333 554 307 555 336 555 343 555 301 556 346 556 342 556 346 557 337 557 342 557 339 558 344 558 340 558 347 559 307 559 344 559 330 0 348 0 331 0 348 0 349 0 331 0 349 560 332 560 331 560 349 560 345 560 332 560 350 0 351 0 334 0 351 0 335 0 334 0 336 561 352 561 334 561 352 561 350 561 334 561 307 562 352 562 336 562 301 563 353 563 346 563 346 564 338 564 337 564 354 565 344 565 339 565 354 0 347 0 344 0 353 566 354 566 346 566 354 567 338 567 346 567 355 0 347 0 354 0 353 0 355 0 354 0 338 568 354 568 339 568 348 0 356 0 349 0 356 0 357 0 349 0 357 569 345 569 349 569 357 569 358 569 345 569 353 570 301 570 345 570 358 571 353 571 345 571 359 0 360 0 350 0 360 0 351 0 350 0 352 572 361 572 350 572 361 572 359 572 350 572 307 573 361 573 352 573 347 574 361 574 307 574 358 575 362 575 353 575 362 576 355 576 353 576 355 577 361 577 347 577 356 0 363 0 357 0 363 0 364 0 357 0 364 578 358 578 357 578 364 578 362 578 358 578 364 0 365 0 359 0 365 0 360 0 359 0 361 579 362 579 359 579 362 579 364 579 359 579 355 580 362 580 361 580 363 0 365 0 364 0 224 581 384 581 167 581 2 582 366 582 0 582 7 583 368 583 2 583 288 584 390 584 261 584 82 585 381 585 122 585 19 586 374 586 15 586 165 587 385 587 196 587 335 588 394 588 317 588 281 589 391 589 314 589 122 590 383 590 165 590 330 591 395 591 348 591 247 592 389 592 281 592 196 593 387 593 247 593 11 594 370 594 7 594 167 595 382 595 124 595 314 596 393 596 330 596 13 597 375 597 17 597 15 598 372 598 11 598 261 599 388 599 244 599 317 600 392 600 288 600 56 601 379 601 82 601 356 602 399 602 363 602 85 603 378 603 60 603 1 604 369 604 5 604 360 605 398 605 351 605 60 606 376 606 19 606 348 607 397 607 356 607 363 608 401 608 365 608 351 609 396 609 335 609 5 610 371 610 9 610 124 611 380 611 85 611 365 612 400 612 360 612 244 613 386 613 224 613 17 614 377 614 56 614 9 615 373 615 13 615 0 616 367 616 1 616 396 617 398 617 366 617 388 618 390 618 366 618 387 619 385 619 366 619 399 620 397 620 366 620 374 621 376 621 366 621 386 622 388 622 366 622 398 620 400 620 366 620 372 623 374 623 366 623 390 624 392 624 366 624 401 625 399 625 366 625 373 626 371 626 366 626 391 627 389 627 366 627 400 625 401 625 366 625 375 628 373 628 366 628 382 629 384 629 366 629 383 630 381 630 366 630 384 631 386 631 366 631 369 632 367 632 366 632 385 633 383 633 366 633 393 634 391 634 366 634 368 635 370 635 366 635 376 636 378 636 366 636 392 637 394 637 366 637 371 638 369 638 366 638 379 639 377 639 366 639 394 640 396 640 366 640 377 641 375 641 366 641 378 642 380 642 366 642 395 643 393 643 366 643 370 644 372 644 366 644 381 645 379 645 366 645 397 646 395 646 366 646 389 647 387 647 366 647 380 648 382 648 366 648 224 649 386 649 384 649 2 650 368 650 366 650 7 651 370 651 368 651 288 652 392 652 390 652 82 653 379 653 381 653 19 654 376 654 374 654 165 655 383 655 385 655 335 656 396 656 394 656 281 657 389 657 391 657 122 658 381 658 383 658 330 659 393 659 395 659 247 660 387 660 389 660 196 661 385 661 387 661 11 662 372 662 370 662 167 663 384 663 382 663 314 664 391 664 393 664 13 665 373 665 375 665 15 666 374 666 372 666 261 667 390 667 388 667 317 668 394 668 392 668 56 669 377 669 379 669 356 670 397 670 399 670 85 671 380 671 378 671 1 672 367 672 369 672 360 673 400 673 398 673 60 674 378 674 376 674 348 675 395 675 397 675 363 676 399 676 401 676 351 677 398 677 396 677 5 678 369 678 371 678 124 679 382 679 380 679 365 680 401 680 400 680 244 681 388 681 386 681 17 682 375 682 377 682 9 683 371 683 373 683 0 684 366 684 367 684

71 |
72 |
73 |
74 |
75 | 76 | 77 | 78 | 79 | 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 |
-------------------------------------------------------------------------------- /mecademic_description/meshes/meca_500_r3_j6_collision.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_description/meshes/meca_500_r3_j6_collision.stl -------------------------------------------------------------------------------- /mecademic_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | mecademic_description 4 | 1.0.0 5 | The mecademic_description package 6 | 7 | Mecademic 8 | Dave Niewinski 9 | 10 | MIT 11 | 12 | catkin 13 | urdf 14 | xacro 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /mecademic_description/urdf/meca_500_r3.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /mecademic_robot_node/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(mecademic_robot_node) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | roscpp 6 | rospy 7 | std_msgs 8 | geometry_msgs 9 | sensor_msgs 10 | ) 11 | 12 | catkin_python_setup() 13 | 14 | catkin_package( 15 | CATKIN_DEPENDS 16 | roscpp 17 | rospy 18 | std_msgs 19 | geometry_msgs 20 | sensor_msgs 21 | ) 22 | 23 | catkin_install_python(PROGRAMS src/mecademic_robot_driver/mecademic_robot_driver.py 24 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /mecademic_robot_node/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | mecademic_robot_node 4 | 1.0.1 5 | The mecademic_robot_node package 6 | 7 | Mecademic 8 | 9 | MIT 10 | 11 | https://github.com/Mecademic/ROS/tree/master/catkin_ws/src/mecademic_robot_node 12 | 13 | Mecademic 14 | 15 | catkin 16 | roscpp 17 | rospy 18 | std_msgs 19 | geometry_msgs 20 | sensor_msgs 21 | roscpp 22 | rospy 23 | std_msgs 24 | geometry_msgs 25 | sensor_msgs 26 | roscpp 27 | rospy 28 | std_msgs 29 | geometry_msgs 30 | sensor_msgs 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /mecademic_robot_node/setup.py: -------------------------------------------------------------------------------- 1 | ## ! DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD 2 | 3 | from distutils.core import setup 4 | from catkin_pkg.python_setup import generate_distutils_setup 5 | 6 | # fetch values from package.xml 7 | setup_args = generate_distutils_setup( 8 | packages=['mecademic_robot_node'], 9 | package_dir={'': 'src'}, 10 | ) 11 | 12 | setup(**setup_args) 13 | -------------------------------------------------------------------------------- /mecademic_robot_node/src/mecademic_robot_driver/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mecademic/ROS/5c471e98a834b68503c93bd4c6a4719c32e3e491/mecademic_robot_node/src/mecademic_robot_driver/__init__.py -------------------------------------------------------------------------------- /mecademic_robot_node/src/mecademic_robot_driver/mecademic_robot_driver.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | import rospy 3 | from geometry_msgs.msg import Pose 4 | from sensor_msgs.msg import JointState 5 | from std_msgs.msg import String, Bool, UInt8MultiArray 6 | from MecademicRobot import RobotController, RobotFeedback 7 | 8 | 9 | class MecademicRobot_Driver(): 10 | """ROS Mecademic Robot Node Class to make a Node for the Mecademic Robot 11 | 12 | Attributes: 13 | subscriber: ROS subscriber to send command to the Mecademic Robot through a topic 14 | publisher: ROS publisher to place replies from the Mecademic Robot in a topic 15 | MecademicRobot : driver to control the MecademicRobot Robot 16 | """ 17 | 18 | def __init__(self, robot, feedback): 19 | """Constructor for the ROS MecademicRobot Driver 20 | """ 21 | rospy.init_node("MecademicRobot_driver", anonymous=True) 22 | self.joint_subscriber = rospy.Subscriber("MecademicRobot_joint", JointState, self.joint_callback) 23 | self.pose_subscriber = rospy.Subscriber("MecademicRobot_pose", Pose, self.pose_callback) 24 | self.command_subscriber = rospy.Subscriber("MecademicRobot_command", String, self.command_callback) 25 | self.gripper_subscriber = rospy.Subscriber("MecademicRobot_gripper", Bool, self.gripper_callback) 26 | self.reply_publisher = rospy.Publisher("MecademicRobot_reply", String, queue_size=1) 27 | self.joint_publisher = rospy.Publisher("MecademicRobot_joint_fb", JointState, queue_size=1) 28 | self.pose_publisher = rospy.Publisher("MecademicRobot_pose_fb", Pose, queue_size=1) 29 | self.status_publisher = rospy.Publisher("MecademicRobot_status", UInt8MultiArray, queue_size=1) 30 | 31 | self.robot = robot 32 | self.feedback = feedback 33 | 34 | self.socket_available = True 35 | 36 | self.feedbackLoop() 37 | 38 | def __del__(self): 39 | """Deconstructor for the Mecademic Robot ROS driver 40 | Deactivates the robot and closes socket connection with the robot 41 | """ 42 | self.robot.DeactivateRobot() 43 | self.robot.disconnect() 44 | self.feedback.disconnect() 45 | 46 | def command_callback(self, command): 47 | """Forwards a ascii command to the Mecademic Robot 48 | 49 | :param command: ascii command to forward to the Robot 50 | """ 51 | while not self.socket_available: # wait for socket to be available 52 | pass 53 | self.socket_available = False # block socket from being used in other processes 54 | if self.robot.is_in_error(): 55 | self.robot.ResetError() 56 | self.robot.ResumeMotion() 57 | reply = self.robot.exchange_msg(command.data, decode=False) 58 | self.socket_available = True # Release socket so other processes can use it 59 | if reply is not None: 60 | self.reply_publisher.publish(reply) 61 | 62 | def joint_callback(self, joints): 63 | """Callback when the MecademicRobot_emit topic receives a message 64 | Forwards message to driver that translate into real command 65 | to the Mecademic Robot 66 | 67 | :param joints: message received from topic containing position and velocity information 68 | """ 69 | while not self.socket_available: # wait for the socket to be available 70 | pass 71 | reply = None 72 | self.socket_available = False # Block other processes from using the socket 73 | if self.robot.is_in_error(): 74 | self.robot.ResetError() 75 | self.robot.ResumeMotion() 76 | if len(joints.velocity) > 0: 77 | self.robot.SetJointVel(joints.velocity[0]) 78 | if len(joints.position) == 6: 79 | reply = self.robot.MoveJoints(joints.position[0], joints.position[1], joints.position[2], 80 | joints.position[3], joints.position[4], joints.position[5]) 81 | elif len(joints.position) == 4: 82 | reply = self.robot.MoveJoints(joints.position[0], joints.position[1], joints.position[2], 83 | joints.position[3]) 84 | self.socket_available = True # Release the socket so other processes can use it 85 | if reply is not None: 86 | self.reply_publisher.publish(reply) 87 | 88 | def pose_callback(self, pose): 89 | """Callback when the MecademicRobot_emit topic receives a message 90 | Forwards message to driver that translate into real command 91 | to the Mecademic Robot 92 | 93 | :param pose: message received from topic containing position and orientation information 94 | """ 95 | while (not self.socket_available): # wait for socket to become available 96 | pass 97 | reply = None 98 | self.socket_available = False # Block other processes from using the socket while in use 99 | if self.robot.is_in_error(): 100 | self.robot.ResetError() 101 | self.robot.ResumeMotion() 102 | if pose.position.z is not None: 103 | reply = self.robot.MovePose(pose.position.x, pose.position.y, pose.position.z, pose.orientation.x, 104 | pose.orientation.y, pose.orientation.z) 105 | else: 106 | reply = self.robot.MovePose(pose.position.x, pose.position.y, pose.orientation.x, pose.orientation.y) 107 | self.socket_available = True # Release socket so other processes can continue 108 | if reply is not None: 109 | self.reply_publisher.publish(reply) 110 | 111 | def gripper_callback(self, state): 112 | """Controls whether to open or close the gripper. 113 | True for open, False for close 114 | 115 | :param state: ROS Bool message 116 | """ 117 | while not self.socket_available: # wait for socket to be available 118 | pass 119 | self.socket_available = False # Block other processes from using the socket 120 | if self.robot.is_in_error(): 121 | self.robot.ResetError() 122 | self.robot.ResumeMotion() 123 | if state.data: 124 | reply = self.robot.GripperOpen() 125 | else: 126 | reply = self.robot.GripperClose() 127 | self.socket_available = True # Release socket so other processes can use it 128 | if reply is not None: 129 | self.reply_publisher.publish(reply) 130 | 131 | def feedbackLoop(self): 132 | """Retrieves live position feedback and publishes the data 133 | to its corresponding topic. (infinite loop) 134 | """ 135 | while not rospy.is_shutdown(): 136 | try: 137 | # Robot Status Feedback 138 | if self.socket_available: 139 | self.socket_available = False # Block other operations from using the socket while in use 140 | robot_status = self.robot.GetStatusRobot() 141 | gripper_status = self.robot.GetStatusGripper() 142 | self.socket_available = True # Release the socket so other processes can happen 143 | status = UInt8MultiArray() 144 | status.data = [ 145 | robot_status["Activated"], 146 | robot_status["Homing"], 147 | robot_status["Simulation"], 148 | robot_status["Error"], 149 | robot_status["Paused"], 150 | robot_status["EOB"], 151 | robot_status["EOM"], 152 | gripper_status["Gripper enabled"], 153 | gripper_status["Homing state"], 154 | gripper_status["Limit reached"], 155 | gripper_status["Error state"], 156 | gripper_status["force overload"] 157 | ] 158 | self.status_publisher.publish(status) 159 | 160 | # Position Feedback 161 | self.feedback.get_data() 162 | joints_fb = JointState() 163 | joints_fb.position = feedback.joints 164 | pose_fb = Pose() 165 | pose_fb.position.x = feedback.cartesian[0] 166 | pose_fb.position.y = feedback.cartesian[1] 167 | if len(feedback.cartesian) == 4: 168 | pose_fb.orientation.x = feedback.cartesian[2] 169 | pose_fb.orientation.y = feedback.cartesian[3] 170 | else: 171 | pose_fb.position.z = feedback.cartesian[2] 172 | pose_fb.orientation.x = feedback.cartesian[3] 173 | pose_fb.orientation.y = feedback.cartesian[4] 174 | pose_fb.orientation.z = feedback.cartesian[5] 175 | self.joint_publisher.publish(joints_fb) 176 | self.pose_publisher.publish(pose_fb) 177 | except Exception as error: 178 | rospy.logerr(str(error)) 179 | 180 | 181 | if __name__ == "__main__": 182 | robot = RobotController('192.168.0.100') 183 | feedback = RobotFeedback('192.168.0.100', "v8.1.6.141") 184 | robot.connect() 185 | feedback.connect() 186 | robot.ActivateRobot() 187 | robot.home() 188 | driver = MecademicRobot_Driver(robot, feedback) 189 | rospy.spin() 190 | -------------------------------------------------------------------------------- /mecademic_viz/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(mecademic_viz) 3 | 4 | find_package(catkin REQUIRED COMPONENTS) 5 | 6 | catkin_package() 7 | 8 | include_directories( 9 | ${catkin_INCLUDE_DIRS} 10 | ) 11 | -------------------------------------------------------------------------------- /mecademic_viz/launch/view_meca_500_r3_model.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /mecademic_viz/launch/view_robot.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /mecademic_viz/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | mecademic_viz 4 | 1.0.0 5 | The mecademic_viz package 6 | 7 | Mecademic 8 | Dave Niewinski 9 | 10 | MIT 11 | 12 | catkin 13 | joint_state_publisher 14 | mecademic_description 15 | rviz 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /mecademic_viz/rviz/model.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 0 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | Splitter Ratio: 0.5 10 | Tree Height: 797 11 | - Class: rviz/Selection 12 | Name: Selection 13 | - Class: rviz/Tool Properties 14 | Expanded: 15 | - /2D Pose Estimate1 16 | - /2D Nav Goal1 17 | - /Publish Point1 18 | Name: Tool Properties 19 | Splitter Ratio: 0.588679016 20 | - Class: rviz/Views 21 | Expanded: 22 | - /Current View1 23 | Name: Views 24 | Splitter Ratio: 0.5 25 | - Class: rviz/Time 26 | Experimental: false 27 | Name: Time 28 | SyncMode: 0 29 | SyncSource: "" 30 | Toolbars: 31 | toolButtonStyle: 2 32 | Visualization Manager: 33 | Class: "" 34 | Displays: 35 | - Alpha: 0.5 36 | Cell Size: 1 37 | Class: rviz/Grid 38 | Color: 160; 160; 164 39 | Enabled: true 40 | Line Style: 41 | Line Width: 0.0299999993 42 | Value: Lines 43 | Name: Grid 44 | Normal Cell Count: 0 45 | Offset: 46 | X: 0 47 | Y: 0 48 | Z: 0 49 | Plane: XY 50 | Plane Cell Count: 10 51 | Reference Frame: 52 | Value: true 53 | - Alpha: 1 54 | Class: rviz/RobotModel 55 | Collision Enabled: false 56 | Enabled: true 57 | Links: 58 | All Links Enabled: true 59 | Expand Joint Details: false 60 | Expand Link Details: false 61 | Expand Tree: false 62 | Link Tree Style: Links in Alphabetic Order 63 | meca_axis_1_link: 64 | Alpha: 1 65 | Show Axes: false 66 | Show Trail: false 67 | Value: true 68 | meca_axis_2_link: 69 | Alpha: 1 70 | Show Axes: false 71 | Show Trail: false 72 | Value: true 73 | meca_axis_3_link: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | Value: true 78 | meca_axis_4_link: 79 | Alpha: 1 80 | Show Axes: false 81 | Show Trail: false 82 | Value: true 83 | meca_axis_5_link: 84 | Alpha: 1 85 | Show Axes: false 86 | Show Trail: false 87 | Value: true 88 | meca_axis_6_link: 89 | Alpha: 1 90 | Show Axes: false 91 | Show Trail: false 92 | Value: true 93 | meca_base_link: 94 | Alpha: 1 95 | Show Axes: false 96 | Show Trail: false 97 | Value: true 98 | Name: RobotModel 99 | Robot Description: robot_description 100 | TF Prefix: "" 101 | Update Interval: 0 102 | Value: true 103 | Visual Enabled: true 104 | - Class: rviz/TF 105 | Enabled: false 106 | Frame Timeout: 15 107 | Frames: 108 | All Enabled: true 109 | Marker Scale: 1 110 | Name: TF 111 | Show Arrows: true 112 | Show Axes: true 113 | Show Names: true 114 | Tree: 115 | {} 116 | Update Interval: 0 117 | Value: false 118 | Enabled: true 119 | Global Options: 120 | Background Color: 48; 48; 48 121 | Default Light: true 122 | Fixed Frame: meca_base_link 123 | Frame Rate: 30 124 | Name: root 125 | Tools: 126 | - Class: rviz/Interact 127 | Hide Inactive Objects: true 128 | - Class: rviz/MoveCamera 129 | - Class: rviz/Select 130 | - Class: rviz/FocusCamera 131 | - Class: rviz/Measure 132 | - Class: rviz/SetInitialPose 133 | Topic: /initialpose 134 | - Class: rviz/SetGoal 135 | Topic: /move_base_simple/goal 136 | - Class: rviz/PublishPoint 137 | Single click: true 138 | Topic: /clicked_point 139 | Value: true 140 | Views: 141 | Current: 142 | Class: rviz/Orbit 143 | Distance: 0.840920627 144 | Enable Stereo Rendering: 145 | Stereo Eye Separation: 0.0599999987 146 | Stereo Focal Distance: 1 147 | Swap Stereo Eyes: false 148 | Value: false 149 | Focal Point: 150 | X: 0.255677342 151 | Y: -0.00529691018 152 | Z: 0.329776019 153 | Focal Shape Fixed Size: true 154 | Focal Shape Size: 0.0500000007 155 | Invert Z Axis: false 156 | Name: Current View 157 | Near Clip Distance: 0.00999999978 158 | Pitch: 0.504797339 159 | Target Frame: 160 | Value: Orbit (rviz) 161 | Yaw: 0.476867557 162 | Saved: ~ 163 | Window Geometry: 164 | Displays: 165 | collapsed: false 166 | Height: 1000 167 | Hide Left Dock: false 168 | Hide Right Dock: true 169 | QMainWindow State: 000000ff00000000fd0000000400000000000001c70000035efc020000001dfb000000100044006900730070006c00610079007301000000280000035e000000d700fffffffb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006700000002300000018e0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb0000000a0049006d00610067006500000002f4000000ca0000000000000000fb0000000a0049006d00610067006500000002de000000c40000000000000000fb0000000c00430061006d00650072006101000003a8000000160000000000000000fb0000000a0049006d00610067006500000002f4000000ca0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006700000002300000018e0000000000000000fb0000000a0049006d00610067006501000002300000018e0000000000000000fb0000000a0049006d00610067006501000002520000009c0000000000000000fb0000000a0049006d00610067006501000002f4000000ca0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006700000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000000a0049006d00610067006501000002f4000000ca0000000000000000fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002140000018e0000000000000000000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000396000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004bf0000003efc0100000002fb0000000800540069006d00650100000000000004bf0000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000002f20000035e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 170 | Selection: 171 | collapsed: false 172 | Time: 173 | collapsed: false 174 | Tool Properties: 175 | collapsed: false 176 | Views: 177 | collapsed: true 178 | Width: 1215 179 | X: 65 180 | Y: 24 181 | -------------------------------------------------------------------------------- /mecademic_viz/rviz/robot.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 0 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | Splitter Ratio: 0.5 10 | Tree Height: 797 11 | - Class: rviz/Selection 12 | Name: Selection 13 | - Class: rviz/Tool Properties 14 | Expanded: 15 | - /2D Pose Estimate1 16 | - /2D Nav Goal1 17 | - /Publish Point1 18 | Name: Tool Properties 19 | Splitter Ratio: 0.588679016 20 | - Class: rviz/Views 21 | Expanded: 22 | - /Current View1 23 | Name: Views 24 | Splitter Ratio: 0.5 25 | - Class: rviz/Time 26 | Experimental: false 27 | Name: Time 28 | SyncMode: 0 29 | SyncSource: "" 30 | Toolbars: 31 | toolButtonStyle: 2 32 | Visualization Manager: 33 | Class: "" 34 | Displays: 35 | - Alpha: 0.5 36 | Cell Size: 1 37 | Class: rviz/Grid 38 | Color: 160; 160; 164 39 | Enabled: true 40 | Line Style: 41 | Line Width: 0.0299999993 42 | Value: Lines 43 | Name: Grid 44 | Normal Cell Count: 0 45 | Offset: 46 | X: 0 47 | Y: 0 48 | Z: 0 49 | Plane: XY 50 | Plane Cell Count: 10 51 | Reference Frame: 52 | Value: true 53 | - Alpha: 1 54 | Class: rviz/RobotModel 55 | Collision Enabled: false 56 | Enabled: true 57 | Links: 58 | All Links Enabled: true 59 | Expand Joint Details: false 60 | Expand Link Details: false 61 | Expand Tree: false 62 | Link Tree Style: Links in Alphabetic Order 63 | meca_axis_1_link: 64 | Alpha: 1 65 | Show Axes: false 66 | Show Trail: false 67 | Value: true 68 | meca_axis_2_link: 69 | Alpha: 1 70 | Show Axes: false 71 | Show Trail: false 72 | Value: true 73 | meca_axis_3_link: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | Value: true 78 | meca_axis_4_link: 79 | Alpha: 1 80 | Show Axes: false 81 | Show Trail: false 82 | Value: true 83 | meca_axis_5_link: 84 | Alpha: 1 85 | Show Axes: false 86 | Show Trail: false 87 | Value: true 88 | meca_axis_6_link: 89 | Alpha: 1 90 | Show Axes: false 91 | Show Trail: false 92 | Value: true 93 | meca_base_link: 94 | Alpha: 1 95 | Show Axes: false 96 | Show Trail: false 97 | Value: true 98 | Name: RobotModel 99 | Robot Description: robot_description 100 | TF Prefix: "" 101 | Update Interval: 0 102 | Value: true 103 | Visual Enabled: true 104 | - Class: rviz/TF 105 | Enabled: false 106 | Frame Timeout: 15 107 | Frames: 108 | All Enabled: true 109 | Marker Scale: 1 110 | Name: TF 111 | Show Arrows: true 112 | Show Axes: true 113 | Show Names: true 114 | Tree: 115 | {} 116 | Update Interval: 0 117 | Value: false 118 | Enabled: true 119 | Global Options: 120 | Background Color: 48; 48; 48 121 | Default Light: true 122 | Fixed Frame: meca_base_link 123 | Frame Rate: 30 124 | Name: root 125 | Tools: 126 | - Class: rviz/Interact 127 | Hide Inactive Objects: true 128 | - Class: rviz/MoveCamera 129 | - Class: rviz/Select 130 | - Class: rviz/FocusCamera 131 | - Class: rviz/Measure 132 | - Class: rviz/SetInitialPose 133 | Topic: /initialpose 134 | - Class: rviz/SetGoal 135 | Topic: /move_base_simple/goal 136 | - Class: rviz/PublishPoint 137 | Single click: true 138 | Topic: /clicked_point 139 | Value: true 140 | Views: 141 | Current: 142 | Class: rviz/Orbit 143 | Distance: 0.840920627 144 | Enable Stereo Rendering: 145 | Stereo Eye Separation: 0.0599999987 146 | Stereo Focal Distance: 1 147 | Swap Stereo Eyes: false 148 | Value: false 149 | Focal Point: 150 | X: 0.255677342 151 | Y: -0.00529691018 152 | Z: 0.329776019 153 | Focal Shape Fixed Size: true 154 | Focal Shape Size: 0.0500000007 155 | Invert Z Axis: false 156 | Name: Current View 157 | Near Clip Distance: 0.00999999978 158 | Pitch: 0.504797339 159 | Target Frame: 160 | Value: Orbit (rviz) 161 | Yaw: 0.476867557 162 | Saved: ~ 163 | Window Geometry: 164 | Displays: 165 | collapsed: false 166 | Height: 1000 167 | Hide Left Dock: false 168 | Hide Right Dock: true 169 | QMainWindow State: 000000ff00000000fd0000000400000000000001c70000035efc020000001dfb000000100044006900730070006c00610079007301000000280000035e000000d700fffffffb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006700000002300000018e0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb0000000a0049006d00610067006500000002f4000000ca0000000000000000fb0000000a0049006d00610067006500000002de000000c40000000000000000fb0000000c00430061006d00650072006101000003a8000000160000000000000000fb0000000a0049006d00610067006500000002f4000000ca0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006700000002300000018e0000000000000000fb0000000a0049006d00610067006501000002300000018e0000000000000000fb0000000a0049006d00610067006501000002520000009c0000000000000000fb0000000a0049006d00610067006501000002f4000000ca0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006700000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002300000018e0000000000000000fb0000000a0049006d00610067006501000002f4000000ca0000000000000000fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002140000018e0000000000000000000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000396000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004bf0000003efc0100000002fb0000000800540069006d00650100000000000004bf0000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000002f20000035e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 170 | Selection: 171 | collapsed: false 172 | Time: 173 | collapsed: false 174 | Tool Properties: 175 | collapsed: false 176 | Views: 177 | collapsed: true 178 | Width: 1215 179 | X: 65 180 | Y: 24 181 | --------------------------------------------------------------------------------