{"id":16699222,"url":"https://github.com/camilo-cf/robotarm-abb140-autodrawing","last_synced_at":"2025-04-10T03:41:09.697Z","repository":{"id":104162675,"uuid":"304764347","full_name":"camilo-cf/Robotarm-ABB140-AutoDrawing","owner":"camilo-cf","description":"ABB 140 Robot Draws a Given Picture","archived":false,"fork":false,"pushed_at":"2020-10-17T22:54:17.000Z","size":4348,"stargazers_count":11,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T04:51:41.612Z","etag":null,"topics":["abb","coppeliasim","drawing","manipulator","manipulator-robotics","opencv2","python","robot","robotics","simulation","tsp-problem","v-rep","v-rep-robot-simulation-platform","v-rep-simulation"],"latest_commit_sha":null,"homepage":"","language":"xBase","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/camilo-cf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"Support_Files/Draw_process.gif","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-17T00:10:38.000Z","updated_at":"2025-03-21T13:08:53.000Z","dependencies_parsed_at":"2023-07-20T11:00:33.769Z","dependency_job_id":null,"html_url":"https://github.com/camilo-cf/Robotarm-ABB140-AutoDrawing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo-cf%2FRobotarm-ABB140-AutoDrawing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo-cf%2FRobotarm-ABB140-AutoDrawing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo-cf%2FRobotarm-ABB140-AutoDrawing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camilo-cf%2FRobotarm-ABB140-AutoDrawing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camilo-cf","download_url":"https://codeload.github.com/camilo-cf/Robotarm-ABB140-AutoDrawing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154963,"owners_count":21056541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abb","coppeliasim","drawing","manipulator","manipulator-robotics","opencv2","python","robot","robotics","simulation","tsp-problem","v-rep","v-rep-robot-simulation-platform","v-rep-simulation"],"created_at":"2024-10-12T18:06:14.289Z","updated_at":"2025-04-10T03:41:09.687Z","avatar_url":"https://github.com/camilo-cf.png","language":"xBase","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ABB 140 Robot Draws a Given Picture (Python)\nThis project takes an image as an input and processes it to create a custom drawing. \n\n![Project Customization](Support_Files/E2.png)\n\nLook at a [video](http://www.youtube.com/watch?v=eBD8MeGVFI8) of the simulation in VREP now CoppeliaSim.\n\n[![ABB 140 Drawing in VREP](http://img.youtube.com/vi/eBD8MeGVFI8/0.jpg)](http://www.youtube.com/watch?v=eBD8MeGVFI8 \"ABB 140 Drawing in VREP\")\n\nAnd a [video](http://www.youtube.com/watch?v=cmtysZaNMQg) of the implementation in the real robot.\n\n[![Robot arm ABB140 Drawing a custom image](http://img.youtube.com/vi/cmtysZaNMQg/0.jpg)](http://www.youtube.com/watch?v=cmtysZaNMQg \"Robot arm ABB140 Drawing a custom image\")\n\nSample of the obtained drawing in the real robot\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Real_image.png\", width=\"220\", class=\"center\" /\u003e\n\u003cimg src=\"Support_Files/Image7.svg\", width=\"220\", class=\"center\" /\u003e\n\u003c/p\u003e\n\nIt is not the best, but the algorithm can be improved.\n\n## Explanation and uses\n\nThis idea can be applied to customize/individualize products in mass.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Image1.svg\" class=\"center\"/\u003e\n\u003c/p\u003e\n\nThis project uses:\n* Image processing (Input image)\n* Trajectory optimization (Draw)\n* Inverse Kinematics (Robot Arm)\n \nThis project proposes implementing the real robot's obtained results using its proprietary language **RAPID**, bringing a **self-generated code** to get this result. (USE THIS FEATURE WITH **CAUTION**, IN THIS CASE, THE CODE IS OPTIMIZE TO THE FEATURES/CONFIGURATION/CALIBRATION OF THE ROBOT I AM USING)\n\n### Image processing\n\nThe image processing tries to obtain the edges of the image.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Image2.svg\" class=\"center\"/\u003e\n\u003c/p\u003e\n\n## Trajectory optimization (Draw)\n\nThen the problem is taken as an optimization problem, as follows:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Image3.svg\" class=\"center\"/\u003e\n\u003c/p\u003e\n\n\nThe trajectory looks like this:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Draw_process.gif\" width=\"200\" class=\"center\"/\u003e\n\u003c/p\u003e\n\n\n## Inverse Kinematics\n\n* It is possible to control the robot with the global coordinate system.\n* The use of Inverse Kinematics on the robot is not required.\n* A “Dummy” point may be a reference point that would be the starting point of the work area.\n\nDummy point:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Image4.svg\" width=\"500\" class=\"center\"/\u003e\n\u003c/p\u003e\n\nThe implementation of kinematics in VREP needs:\n* Create an associated SERVER in the API using TCP / IP on the host.\n* Create a class constructor for each of the objects to be used\n* Modify the position of the associated object in the robot's final tool or effector\n\n## Overview of the project\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Image5.svg\" width=\"500\" class=\"center\"/\u003e\n\u003c/p\u003e\n\n\n## RAPID code generator\n\n1. Understand the structure and syntax of RAPID code\n2. Abstractly generate a code template that can be executed in any case.\n3. Create the template in text form in the desired language (considering the possible changes in the code in the different requirements).\n4. Adjust and implement the code.\n\nUsed template:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Support_Files/Image6.svg\" width=\"700\" class=\"center\"/\u003e\n\u003c/p\u003e\n\n\n-------------------------------------\n-------------------------------------\n\n# How to use this code\n\n## Be sure you installed CoppeliaSim/ V-REP, and you have the correct API files\n\nVREP/CoppeliaSim, these files are included in the software (provided API by Coppelia):\n\nMake sure you have the following files in your directory:\n1. vrep.py\n2. vrepConst.py\n3. the appropriate remote API library: \n        \"remoteApi.dll\" (Windows), \"remoteApi.dylib\" (Mac) or \"remoteApi.so\" (Linux)\n    \n    In Windows, you can find them on:\n    C:\\Program Files\\CoppeliaRobotics\\CoppeliaSimEdu\\programming\\remoteApiBindings\\lib\\lib\n\n(This information was obtained from the simulator examples)\n\n# Requirements\n\nI worked with the next libraries:\n\n```\nopencv-python == 4.1.1.26\nnumpy == 1.17.1\ntsp-solver == 0.1\n```\n\n# Running the program\n\n1. Open the ABB140_Draws.ttt and press Play\n2. Go to the Source_Code folder\n3. Run the code ABB140_control.py\n4. If you want to change the input image file, put it on the Image folder in the Source_Code folder and be sure of use its name on the ABB140_control.py program.\n\nIt should work without any additional configuration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamilo-cf%2Frobotarm-abb140-autodrawing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamilo-cf%2Frobotarm-abb140-autodrawing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamilo-cf%2Frobotarm-abb140-autodrawing/lists"}