2.中位调整

您当前位置: 首页 > DOFBOT AI视觉机械臂(Jetson nano版) > 组装和装配教程

中位调整

一、API简介

1.打开或者关闭总线舵机扭矩对应的API为:

Arm_serial_set_torque(enable)

参数解释:

   enable:enable=0关闭扭矩,机械臂可以手动掰动舵机的角度,不接收电平信号;enable=1打开扭矩,舵机接收电平信号维持当前的角度,发命令才可以改变角度。

   返回值:无。

2. Arm_serial_servo_write_offset_switch(id)

参数解释:

id:id=0时,清空所有舵机的中位调整,恢复默认;id=1~6,对应六个舵机的ID号,底层单片机在接收到此命令后,会读取对应ID的舵机的角度数据,如果在合理的范围内,则保存起来,超过范围或者查不到舵机ID则不保存。

返回值:无。

3. Arm_serial_servo_write_offset_state()

参数解释:

返回值:返回设置中位偏差的状态state,state=0表示没有检测到该舵机;state=1表示设置中位成功;state=2表示超过设置中位的范围值。

 

二、代码内容

代码路径:/home/jetson/Dofbot/2.sys_settings/2.Offset/offset.ipynb

此代码不能一次按顺序全部执行,必须分步骤执行,这样才可以保证正确调整。调整的结果是让机械臂保持直立的状态。

此程序仅在需要调整中位的时候才能使用,不可随意使用,否则导致中位不准影响抓取效果。

#!/usr/bin/env   python3

#coding=utf-8

import   time

from   Arm_Lib import Arm_Device

 

#   创建机械臂对象

Arm   = Arm_Device()

time.sleep(.1)

#让舵机归中直立状态

Arm.Arm_serial_servo_write6(90,   90, 90, 90, 90, 180, 1000)

time.sleep(2)

#   关闭扭矩,此时可以用手掰动舵机的角度

Arm.Arm_serial_set_torque(0)

#   调节好了某个舵机的角度后,可以单独设置某个舵机中位偏差

id   = 6

Arm.Arm_serial_servo_write_offset_switch(id)

time.sleep(.1)

state   = Arm.Arm_serial_servo_write_offset_state()

if   state == 1:

    print("set offset ok!")

elif   state == 2:

    print("error! set offset overrun   !")

elif   state == 0:

    print("error! set offset error   !")

#   也可以一次性设置全部舵机(1-6号)中位偏差

for   i in range(6):

    id = i + 1

      Arm.Arm_serial_servo_write_offset_switch(id)

    time.sleep(.1)

    state =   Arm.Arm_serial_servo_write_offset_state()

    if state == 1:

        print("id:%d set offset   ok!" % id)

    elif state == 2:

        print("error!id:%d set offset   overrun !" % id)

    elif state == 0:

        print("error!id:%d set offset   error !" % id)

#   调整完成后,打开扭矩

Arm.Arm_serial_set_torque(1)

#   清除所有舵机设置的中位偏差,恢复默认状态.

#   如果需要清除所有舵机的中位偏差,请删除下方的#再运行此单元

#Arm.Arm_serial_servo_write_offset_switch(0)

del   Arm  # 释放掉Arm对象

 

image.png