{ "info": { "author": "Michal Bednarek", "author_email": "michal.bednarek@put.poznan.pl", "bugtrack_url": null, "classifiers": [], "description": "# Description\nThe **arm-lightweight-controller** is a very lightweight robotic arm controller for a real robot that is \nbased on sending commands via tcp/ip (e.g. URScript commands in case of Universal Robots arms). \nIt can be used as a standalone module - ROS is not required. Module is written in Python2.7 (ROS compatibility).\n\n## Difference between existing drivers (UR)\nIn [ur_modern_driver](https://github.com/ros-industrial/ur_modern_driver) the MoveIt\nis used to plan a path. In order to be usable in simulation, MoveIt planner \ncomputes many points between points specified in a trajectory. In **arm-lightweight-controller**\nthere is no possibility to do that - path planning is performed entirely \nin the robot's controller. We cannot efficiently simulate the robot behavior, but it's fast and usable\nwhen it comes to the real robot.\n\n## TCP/IP communication details\nUniversal Robots provide the [description of TCP/IP packages](https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/remote-control-via-tcpip-16496/) that are sent from robot's controller via sockets. The current communication schema in **arm-lightweight-controller** is based on that. In order to add more functionalities from this interface - see attached file under provided link.\n\n# Installation\nA module arm-lightweight-controller can be installed using PyPi:\n\n```\npip2 install robot_controller\n```\n\nHere is how to start. See **examples/run.py** file for an example of use.\n```\nimport robot_controller\nrobot = robot_controller.Ur3(\"150.254.47.150\", 30003, 30002)\n...\n# write your code here\n...\n```\n\nIn order to configure your Python environment just run the **setup.py** script.\n\n## Functionality\nShort description of available methods in the Manipulator class. For more details\nplease refer to the method descriptions in the code.\n* **def move(self, trajectory, is_movej=True, is_pose=True, a=1, v=1, use_mapping=False)** - send \na move command to the specified robot. User can specify if it is a \nlinear move / points are specified in a joint space or as poses / if the trajectory is in a robot's\ncoordinate system or some external (see: set_mapping() method).\n* **def get_pose(self)** - reads current pose from a byte stream.\n* **def get_joints(self)** - reads current joint coordinates from a byte stream.\n* **def set_mapping(self, matrix)** - sets a mapping between a robot coordinate \nsystem and some external one. While this method is invoked, user can pass trajectory in some external \ncoordinate system (see: move() command).\n* **def execute_in_force_mode(self, trajectory_commands, task_frame, selection_vector, wrench, type=1, limits)** - \nExecutes constructed commands in the specified force mode. Please see URScript API reference doc - force_mode()\n\n# Contribution\nAll questions to: _michal.bednarek@put.poznan.pl_\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "robotics,arm,manipulator,ur3,ur5,universal,robots", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "robot-controller", "package_url": "https://pypi.org/project/robot-controller/", "platform": "", "project_url": "https://pypi.org/project/robot-controller/", "project_urls": null, "release_url": "https://pypi.org/project/robot-controller/0.2/", "requires_dist": [ "opencv-python (>=3.3.0.10)", "numpy (>=1.12.0)" ], "requires_python": "", "summary": "A high-level framework for programming robotic arms using TCP/IP connection.", "version": "0.2" }, "last_serial": 5352575, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "f411b7f3f7996a1e0707a71b6ee5aaee", "sha256": "87c73f61b78e5e0435552f3f920e5fcdcef9f563377129e8d4134284dbdc2599" }, "downloads": -1, "filename": "robot_controller-0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f411b7f3f7996a1e0707a71b6ee5aaee", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10768, "upload_time": "2019-06-03T09:24:48", "url": "https://files.pythonhosted.org/packages/d9/11/dc476419dc6263baefca286456033f01b2165f6e4c1c3efe23b8bf203864/robot_controller-0.1-py2-none-any.whl" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "353d9bf2e5963d56b895cd1f1a8eda9e", "sha256": "afdc5580fad07a9e5d54eef9728f54aeff33b7b3671c002db9b8f31a530dda19" }, "downloads": -1, "filename": "robot_controller-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "353d9bf2e5963d56b895cd1f1a8eda9e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11863, "upload_time": "2019-06-03T13:38:50", "url": "https://files.pythonhosted.org/packages/46/d2/9226b4aa172cdfc15cd4962cb75ce7edc422c7d188e49a1b0b1f25156bee/robot_controller-0.2-py2-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "353d9bf2e5963d56b895cd1f1a8eda9e", "sha256": "afdc5580fad07a9e5d54eef9728f54aeff33b7b3671c002db9b8f31a530dda19" }, "downloads": -1, "filename": "robot_controller-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "353d9bf2e5963d56b895cd1f1a8eda9e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11863, "upload_time": "2019-06-03T13:38:50", "url": "https://files.pythonhosted.org/packages/46/d2/9226b4aa172cdfc15cd4962cb75ce7edc422c7d188e49a1b0b1f25156bee/robot_controller-0.2-py2-none-any.whl" } ] }