python实现示教

  • Post author:
  • Post category:python


机械臂的示教实现设置一系列的动作后,让机械臂跟着设置的动作执行连续动作,实现复现。list可以存储数据,并读取调用数据,可以用它实现机械臂位置的保存和读取。

首先,对list进行声明,分别用来表示x,y,z的坐标值

self.text_pred1_x_list = []
self.text_pred1_y_list = []
self.text_pred1_z_list = []

控制机械臂到达位置点后,保存当前位置。如果采用手动输入进行控制位置,要先对上位机文本框进行定义,我采用的是点击添加示教就可以对输入数据进行保存,并添加一行文本框,用来添加第二个动作,以此类推,设置最多20步。

首先,声明self.i = 0,然后定义添加示教函数

    def add(self, els=None):
        if self.i<20:
            y1 = 50 * (self.i + 1)
            self.text_pred1_x = Text(self.win, width=10, height=2, bg='white', relief='solid', borderwidth=1)
            self.text_pred1_x.place(x=10, y=y1)
            self.text_pred1_y = Text(self.win, width=10, height=2, bg='white', relief='solid', borderwidth=1)
            self.text_pred1_y.place(x=100, y=y1)
            self.text_pred1_z = Text(self.win, width=10, height=2, bg='white', relief='solid', borderwidth=1)
            self.text_pred1_z.place(x=190, y=y1)
            self.i +=1
            return(self.i)
        els
        print("超过20步了")

接着,定义保存数据函数对输入的数值进行保存

    def save(self):
        self.text_pred1_x_list.append(self.text_pred1_x.get("1.0", "end"))
        self.text_pred1_y_list.append(self.text_pred1_y.get("1.0", "end"))
        self.text_pred1_z_list.append(self.text_pred1_z.get("1.0", "end"))

调用保存的数据、读取、控制,实现示教功能

    def load(self):
        self.save()
        for ii,x_ in enumerate(self.text_pred1_x_list):
                print(self.text_pred1_x_list[ii])
                print(self.text_pred1_y_list[ii])
                print(self.text_pred1_z_list[ii])  
                self.arm.set_tool_pose(self.text_pred1_x_list[ii],self.text_pred1_y_list[ii],
                                    self.text_pred1_z_list[ii])
                time.sleep(2)

如果不使用数据手动输入方式进行控制,而是控制机械臂到达所需位置之后,再进行添加示教,那么在对机械臂坐标进行位置控制时要返回x,y,z的坐标值,点击添加后读取坐标值,调取list值,实现示教功能。self.x,self.y,self.z分别是返回的坐标值

def add(self, els=None):
    self.text_pred1_x_list.append(self.x)
    self.text_pred1_y_list.append(self.y)
    self.text_pred1_z_list.append(self.z)

def load(self):
    self.add()
    for ii, x_ in enumerate(self.text_pred1_x_list):
        x = self.text_pred1_x_list[ii]
        y = self.text_pred1_y_list[ii]
        z = self.text_pred1_z_list[ii]
        self.bus_servo_all(x,y,z,500)
        time.sleep(1)



版权声明:本文为qq_42719217原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。