ODrive ASCII 协议串口通信命令整理

本文详细介绍了如何使用ODrive的ASCII协议进行串口通信,包括请求信息状态、参数读写、系统指令及电机控制指令,如位置、速度和电流控制。通信涉及波特率设置、参数读取与写入,以及不同控制模式的切换。
摘要由CSDN通过智能技术生成

ODrive ASCII 协议串口通信命令整理

将 USB to TTL 插入到电脑 USB 1470 端口,识别为 tty.wchusbserial1470,设置波特率,通过 serial 模块实例化:

import serial

ted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200)
  1. 请求信息状态指令

    格式:f motor

    回复格式:pos vel

    注:

    f 表示请求返回信息;motor 表示电机编号,0 或 1 ;

    pos 当前编码器计数值(float);vel 当前转速,单位 counts/s (float)

    ted.write("f 0\n".encode('ascii'))
    res = ted.readline()
    print(res)
    # 回复结果如下
    # b'1.234375 0.000000\r\n'
    
  2. 参数读写

    支持所有 float 和 integer 类型的参数,但并非所有参数都可以通过 ASCII 协议读写

    格式:r [property]

    回复格式:返回锁清秋参数值的文本表示

    注:property 属性名称,如 ODrive Tool 中所示

    USB 控制下 Drive Tool 中 odrv0 的属性和方法如下:
    odrv0 属性和方法
    以及其中 axis0 对应的属性和方法:
    axis0 属性和方法

    相应地摘选可能需要的属性参数通过串口通信来获取,例如:

    import serial
    
    ted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200)
    ted.write("f 0\n".encode('ascii'))
    res = ted.readline()
    print(res)
    
    ted.write("r vbus_voltage;ted's words\n".encode('ascii'))
    vbus_voltage = float(ted.readline().decode('ascii'))
    print("vbus_voltage:",vbus_voltage,type(vbus_voltage))
    
    ted.write("r config.brake_resistance\n".
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值