基于pyserial串口通信的CASIA III代抓手的操作函数封装(持续更新中....)

编程萌新,博客仅为记录自己的工作历程

Day1:

主要完成工作:pyserial串口通信平台搭建完成,基本操作函数封装完成,可以控制四个电机分别转动角度,用户可以不借助串口调试助手输入麻烦的16进制指令,pctomcu完成

明日计划完成工作:编写mcutopc回程检验函数,封装其他参数函数

import serial

ser=serial.Serial(port='COM6',
                  baudrate=115200,
                  bytesize=serial.EIGHTBITS,
                  timeout=0.5)

usercmd={}


def int_transform_4hex(intNums):#输入正负十进制,转4位16进制
    if intNums < 0:  #如果是负数
        str_list_16nums = list(hex(intNums%65536))
        insert_num = 'f'
    else:           #如果是正数
        str_list_16nums = list(hex(intNums))
        insert_num = '0'
    #补位数
    if len(str_list_16nums) == 5:
        str_list_16nums.insert(2, insert_num)
    elif len(str_list_16nums) == 4:
        str_list_16nums.insert(2, insert_num)
        str_list_16nums.insert(2, insert_num)
    elif len(str_list_16nums) == 3:
        str_list_16nums.insert(2, insert_num)
        str_list_16nums.insert(2, insert_num)
        str_list_16nums.insert(2, insert_num)
    else:
        pass
    crc_data = "".join(str_list_16nums)  # 用""把数组的每一位结合起来  组成新的字符串
    hexNums = crc_data[2:4] + ' ' + crc_data[4:]
    return hexNums

def cmdinput():#用户输入指令
    for value in range(1,6):
        if value==1:#用户输入工作模式
            name='mode'
            value_input=input("plz input the opreating mode: \n00:Rel_Agl 01:Abs_Agl 02:Spd 03:torquectrl 04:loosing 05:zero ff:off\t")
            value_input=int(value_input)
            usercmd[name]=value_input
        else:#用户输入各个电机的参数数值
            name=f"motor{value-1}"
            value_input=input(f"plz enter the corresponding value of the motor{value-1}\t")
            value_input=int(value_input)
            usercmd[name]=value_input

def cmdstr_get():#将用户输入的十进制转化为十六进制的字符串
    i=0
    for name in usercmd.keys():
        if i==0:
            cmdstr_mode=str(int_transform_4hex(usercmd[name])[2:])   
        elif i==1:
            cmdstrm1=int_transform_4hex(usercmd[name])
        elif i==2:
            cmdstrm2=int_transform_4hex(usercmd[name])
        elif i==3:
            cmdstrm3=int_transform_4hex(usercmd[name])
        elif i==4:
            cmdstrm4=int_transform_4hex(usercmd[name])
        i+=1
    cmdstr=f"{cmdstr_mode} {cmdstrm1} {cmdstrm2} {cmdstrm3} {cmdstrm4} 00 00 0A"
    return cmdstr
    
def inputbytes():#将字符串转化为可执行的bytes形式,并且开始写入
    byte_cmd=bytes.fromhex(cmdstr_get().strip())
    ser.write(byte_cmd)

Day2:

主要完成工作:

今日完成了对于电机相对绝对角度,转速转矩调整函数的封装,丰富了用户操作,若是放松或是归零操作,用户不需输入0x00指令,关机指令简化成yn,将各函数分别装入不同文件(分为src inc文件类型),方便查找检查

明日计划完成:

回程检验函数完善,debug操作函数

Day3:

研读文献

X. Q. Li, Y. Qian, R. Li, X. Y. Niu, H. Qiao, “Robust form-closure grasp planning for 4-pin gripper using learning-based Attractive Region in Environment,” Neurocomputing, vol. 384, pp. 268-281, 2020.

了解参数计算,明日完成函数编写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值