From 772b738aab9b25b7cdafb3633745538546832756 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 25 Oct 2023 22:06:35 +0200 Subject: [PATCH] updated roboter lib --- groupTasks/groups/rex-robots/index.json | 4 +- groupTasks/groups/rex-robots/test.py | 19 ++-- .../robots/__pycache__/rex.cpython-39.pyc | Bin 3286 -> 3016 bytes groupTasks/libs/robots/rex.py | 91 ++++++++++-------- 4 files changed, 59 insertions(+), 55 deletions(-) diff --git a/groupTasks/groups/rex-robots/index.json b/groupTasks/groups/rex-robots/index.json index 90d40e2..319268c 100644 --- a/groupTasks/groups/rex-robots/index.json +++ b/groupTasks/groups/rex-robots/index.json @@ -1,10 +1,10 @@ { "category": "RexRobots", - "name": "Produktionstask 1", + "name": "Rex test - Drucker leeren", "globalInputs": [], "tasks": [ { - "name": "Bild zu Label konvertieren", + "name": "Ausführen", "onFinish": "next", "undoPossible": false, "repeatPossible": true, diff --git a/groupTasks/groups/rex-robots/test.py b/groupTasks/groups/rex-robots/test.py index 5abc9b6..4fc241a 100644 --- a/groupTasks/groups/rex-robots/test.py +++ b/groupTasks/groups/rex-robots/test.py @@ -1,13 +1,11 @@ import sys import os -import random -import time # add the path to the libs folder sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) from libs.robots import rex - +''' randomJobs = [ "Drucker leeren", "Müll rausbringen", @@ -23,19 +21,14 @@ randomJobs = [ rJob = randomJobs[random.randint(0, len(randomJobs) - 1)] -print("job: " + rJob) +print("job: " + rJob)''' -rexRobot = rex.Rex("test", rJob) +rexRobot = rex.Rex("test", "Drucker leeren") -# rexRobot.moveToXYZ(1, 2, 3) +rexRobot.move_to(x=15, z=20, AprilTagId=1) +rexRobot.change_tool_head(rex.ToolHead.Gripper) +rexRobot.move_to(y=5) -rexRobot.move_to_x(5) - -time.sleep(5) - -rexRobot.move_to_x(5) - -time.sleep(5) print("no finish") rexRobot.finish() \ No newline at end of file diff --git a/groupTasks/libs/robots/__pycache__/rex.cpython-39.pyc b/groupTasks/libs/robots/__pycache__/rex.cpython-39.pyc index 73142ca6dc9ac2ca0a6bd609572cab10ef9095a4..8510f1d706704c4bcf12ca538fed863916aafa1c 100644 GIT binary patch literal 3016 zcmZ`*OOM<{5bn0ykMYbd34|;O379v7$W8)TB%%lfg-3V|Qiueai{+j6W;{DP9=g5B z#&S*xM9(ezw4VYNv7#mmLw)hlC45+PiWprk{`Fz$z0-myJ@^nl`518zTMcEeX_sfz8{jZ|;y z-XvewIApyj@t5ta&h99(vV}+cAR!m{*|o3aLlEW=`o-VXacktF&X5qfHwe=Emi`7NXLp^N?XrjT&k;<1837(+ZH#iU z!m#50?A�cPymXbk()elOA#R9L`FAH<12A&ROm5hB$-QTn4AuT~Uj&HI6nNRYE_! z2aN??lC>fG1+vzE$U1n>uaHHDWfnf|{y>zd2-Q;W)`i}%n3k%T^e#N&MvQeaef&Ev z^`xzBMT@D}D1z|7Z)#k%WFrt4O`)pV4U42MRCTgpG|E+6l%q_=cD=i#UcnJ2oO@Lp zF+;*w7@7H-5_*&IW-6bS#?^PAlkMcCdJP+GO;Xe%6jdul@#=a_bV+X9Vts5}0C?ax zc0V0-df{H=d)T922Vq<|ArGAsPQ*Jrazgwf9%6Pt=YUw;-yaeR_6F6reMCF}14MX; zB1a6)Gzo9f>`CV`p@G&f*1$(X=;pO2U97uy{cD^4gdGR#0!VUe?;e*PVl7L7Mg|;E z>#Bv-FKYq40D3}(*yXJ-*;)ZoXx9oOZD2E~Jwljmc~P}y>sO5NO>rxW5vHcD#bsfc zX?8otZSyiOrcJFQ-M%`7tEtmOUL-;(Tb=0_F{M#FQ^l=ZW-{I=RJ?_Ald>?;#|Y=- zMtbuL`6Rebo##?qMOG~7ZQbz5p~gjJQe8TpiU4p>Dz%DP*KeYI#0Cna5oEy8fCqCM zzJi8+6@&>2wNF7_pdAFefxu~}YE$OV_Z`Z4!vB7R&x0x9ONt%5jSMf5_j}%!Zq0LU zD}q})*6a3Dp?YiI>sLqV^k(CCs%NQBdr)s& z@ar97y<-*?An=o)%-0K?UIUu0YH?R+wcw`U0QB39?+ z2|mf?Bs*|lwQO+~Z`e~aS)Djk<6UMM=$R{n{+DkAsJ-_O-?NV}qs(QQBVos=Z97$%9L zR%%P9jj*~1*0?B;YK;UGfCUSzE%sB2nlB})rf(_$+>N3z2+u@kJCPz8?rE?19OmjB kA{1D4k_c_FO8<4T2`@L_upd$O+bg1c^3Y%QgtHv|3#8JJIRF3v literal 3286 zcmb_fOK;mo5Z>iW)XUDpv74qz*>}~(R)Qui5ClblBz*vl0yqI02n7gQOGlC=QrV>v zi;z!FF9rG!a9lYv2kdV=rnug#_Qy5K4m{`}sDt5N89;!hc zsqj$}Bts=>-WyE}^cpoMbA3Mw`l0V~*5>HIo&rpvl3LdOPlibs2{$Tz#%uu?Xvd=y#%35vcY?97u7TU)=~=TVW*XPh~tD zJPy>Bs`ok@3X5#S37T+wZ7`DLUGl$jKwNI&r^nu00e`|Pv$JSIdc-Ts+UFd;v4!)J z!9NAzqIE=3l+YGLSya%vqAC{97R91CgSI5jigReo;=EWwTM-xF*Okm%54Y2+B@fTz zc1L-wUZ9jG!-0egqC|NCm~BsQW=*RdEVq+naI0SL#jT*%j#YB&=Cx}#Z?-JhI(?{5 zo4AWt-2)l(G4ol%_l$kEXYMm_*4Pj%v41x%66cIfP=E&1)wHN-Nz<}mFxP14bFWph zqBf|3^Ukc{up^o_(HmL8_f;Zs?shlc_*rD<`@y!4ZVruJ7(GqeSpfrjY9SB;`&1d< z&iE+fX>+j^M^V^HLh(Q&sAgrB3VWOKEcPImiL4NrK}J@=681V#C-MCcz^OAJj5~Y* zKWFkwD{%DMRINqGoj%kje`#NxLubso^uiNegu*LR@BFoy+pq+M+>p!Y)wsMw1IO&C z`Z9br3{~QbAPGK)hN3WGJUy$;n3uM+grsawzaT3em1%U88%--g{H4|U^XqjSWFq5U{rYR9p00|cgR;`8 z!=tFqOq_eu$&*Q1)oAkKJR?YQKw8enLP{3ta?U6u2QN|=31iT&++kSa2dS&orb3DYy#iEYqUbZn82^KIzTWW1Bvqqmriawacgv8l1t zKh@aLFOcTpXB{DgJWDZYj4xY2Q#~oUpfpL^R!6J%~ z2dGjlFxHH8@d#i?=?NUnB9GEbg1Z zsw@z3LFk4g;+F4Ax~k~%rGYKKCiW_kRU+4kd_&|0k;D6i?$M=3E`m^+RpJ*VTt{ovT&ed-7aP<%{0ES9yz&boCXow7XtB3_C3A1*fcu`VNs7LX!p1Ay Jbrx)^_#fa;%N_s# diff --git a/groupTasks/libs/robots/rex.py b/groupTasks/libs/robots/rex.py index f417b52..0415bf6 100644 --- a/groupTasks/libs/robots/rex.py +++ b/groupTasks/libs/robots/rex.py @@ -1,6 +1,5 @@ import requests import uuid -from enum import Enum import sys ### @@ -14,6 +13,9 @@ class ResponseStatus(): max_job_name_length = 30 +class ToolHead(): + Gripper = 0 + ### # CLASSES ### @@ -25,18 +27,22 @@ class Rex: """ This class represents a rex robot. """ - def __init__(self, robotName, jobName, address='http://localhost:50055'): - self.robotName = robotName - self.jobId = uuid.uuid4().__str__() - self.jobName = jobName[:max_job_name_length] + def __init__(self, robot_name, job_name, address='http://localhost:50055'): + self.robot_name = robot_name + self.job_id = uuid.uuid4().__str__() + self.job_name = job_name[:max_job_name_length] self.address = address self.x = 0 self.y = 0 self.z = 0 - self.connectedModule = 0 + self.tool_head = 0 def _request_data(self): - return {'robotName': self.robotName, 'jobId': self.jobId, 'jobName': self.jobName} + return { + 'robotName': self.robot_name, + 'jobId': self.job_id, + 'jobName': self.job_name + } def _post_request(self, json): obj = {} @@ -46,8 +52,9 @@ class Rex: res = requests.post(self.address + '/v1/control/1', json=obj) - print("status code", res.status_code) - print("res", res.json()) + if res.status_code != 200: + print("status code", res.status_code) + sys.exit(1) json = res.json() @@ -65,43 +72,44 @@ class Rex: print("robot some other error") sys.exit(1) - def move_to_x(self, x): - """ - Move the robot to the new x position. - """ - self.x = x - - self._post_request({'x': self.x}) - - def move_to_y(self, y): - """ - Move the robot to the new y position. - """ - self.y = y - - def move_to_z(self, z): - """ - Move the robot to the new z position. - """ - self.z = z - - def move_to_xyz(self, x, y, z): + def move_to(self, x = None, y = None, z = None, AprilTagId = None): """ Move the robot to the new position. """ - self.x = x - self.y = y - self.z = z + data = {} - print('Robot: ' + self.robotName + ' moved to (' + str(self.x) + ', ' + str(self.y) + ')') - - self._post_request({'x': self.x, 'y': self.y, 'z': self.z}) + if x != None: + self.x = x + data['x'] = self.x - def change_connected_module(self, module): + if y != None: + self.y = y + data['y'] = self.y + + if z != None: + self.z = z + data['z'] = self.z + + if len(data) == 0: + print("No data provided for move_to") + return + + if AprilTagId != None: + data['AprilTagId'] = AprilTagId + + print('Robot: ' + self.robot_name + ' moved to ' + str(data)) + + self._post_request(data) + + def change_tool_head(self, tool_head = int): """ - Change the connected module. + Change the tool head. """ - print('Robot: ' + self.robotName + ' changed connected module to ' + str(module)) + print('Robot: ' + self.robot_name + ' changed tool head to ' + str(tool_head)) + + data = {'ToolHead': tool_head} + + self._post_request(data) def finish(self): """ @@ -112,6 +120,9 @@ class Rex: # TODO: request to the server to finish the robot and update the robot status to idle - res = requests.post(self.address + '/v1/control/1/finish', json={'robotName': self.robotName, 'jobId': self.jobId}) + res = requests.post(self.address + '/v1/control/1/finish', json={ + 'robotName': self.robot_name, + 'jobId': self.job_id + }) print("status code", res.status_code) \ No newline at end of file