Dynamixel RX-28舵机用户手册

更新时间:2024-03-06 15:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Dynamixel RX-28舵机用户手册

目录 1 摘要

1-1 RX-28概述及特点 1-2 主要规格 2 Dynamixel 操作

2-1 机械组装 2-2 连接器组装 2-3 Dynamixel 连线 3 通讯协议

3-1 通讯概述 3-2 指令包 3-3 状态包 3-4 控制表 4 指令设置和实例

4-1 WRITE_DATA 4-2 READ_DATA

4-3 REG WRITE and ACTION 4-4 PING 4-5 RESET

4-6 SYNCWRITE 5 示例

附录

1 Dynamixel RX-28

1-1 RX-28概述及特点

Dynamixel RX-28 Dynamixel 系列机器人执行器是一个聪明的、模块化的驱动器。它将

一个齿轮减速装置、一个高精密直流电机和一个具有联网功能的控制电路集于一个单一封装中。尽管它体积比较小,但是它可以产生很大的扭矩。它由高品质的材料制成用于提供必要的强度和能够忍受大的外力的结构韧性。它也有检测诸如内部温度和电源电压的变化并采取相应应对措施的能力。

精密控制 舵机位置和转动速度是可以用1024步的分辨率进行控制

服从驱动 服从的等级可以调节并且可以指定在控制位置。 1

反馈 具有角位移、角速度和负载转矩的反馈。

报警系统 当参数偏离用户定义范围后(比如内部温度、扭矩电压等等),

Dynamixel系列机器人执行器可以报警给用户,并且也可以自动处理这些问题(比如关闭扭矩)。

通讯 类似链条的连接使得接线容易,支持最高1M bps的通讯速度。

分布式控制 位置、速度、遵从程度和扭矩可以用一个命令包进行设置。这样就可

以使主控器利用很少的资源就可以控制很多个Dynamixel单元。

工程塑料 舵机的主体是由高质量的工程塑料制成,使得它可以承受很高的扭矩

负载。

轴轴承 输出轴用轴承用于保证在高的外界负载下没有效率丢失。

状态指示灯 这个LED可以向用户指示错误状态。

框架 一个铰链框架和侧装框架支持选项

1-2主要规格和性能 RX-28 重量( g ) 齿轮减速比 输入电压( V ) 最大堵转扭矩( kgf.cm ) Sec/60degree

最小精度: 0.3°

1

72 1/193 At 12 V 28.3 0.167 At 16 V 37.7 0.126 原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

工作角度: 300°, 无边界旋转 电压 : 12V – 16V 最大电流: 1200mA 工作温度: -5℃ - +85℃ 命令信号: 数据包格式

协议类型: RS485 异步串行通讯(8数据位,1停止位,无校验位) 连接 : RS485 多路总线 ID : 254 ID

通讯速度: 7343bps ~1Mbps

反馈 : 位置,温度,负载,输入电压等 材料 : 全金属齿轮, 工程塑料 电机 : Maxon RE-MAX

2 Dynamixel 操作

2-1 机械装配 选项框

2-2 连接器装配

连接器的组装如下图所示,用正确的压线工具将电线和接头连接到一起,如果你没有工具 就将电线头和接头焊接到一起以保证在使用时不会松动。

2-3 Dynamixel 接线

引脚分配 连接头的引脚分配如下所示。两个连接头是引脚对应连接的,所以只要

2

接上一个连接头就可以操作RX-28 。

(注意:连接头边缘切掉一段的针脚号是PIN1)

接线 按照下图所示将RX-28执行器针脚对针脚连接起来。许多RX-28执行

可以按照如下所示组成单个总线来控制。

2

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

主控器 为了操作Dynamixel执行器,主控器必须支持RS485串行通讯。一个专有

控制器就可以控制,但是强烈建议使用CM-2 PLUS Dynamixel控制器。

串口连接 为了控制数字舵机,主控器需要将自己的串行信号转换成485类型。

推荐的电路原理图如下所示。

主控器通过Molex3P的PIN1 和PIN2给舵机供电。(上面介绍的电路用

于解释485串行协议的用法,CM-2 PLUS控制器已包含上述的电路,所以 数字舵机可以直接连接上它。)

TTL电平的TXD 、RXD数据信号的方向取决于DIRECTION485 引脚的电平 ,如下所示

当DIRECTION485 为高电平:TXD信号输出为D+、 D-。 当DIRECTION485 为低电平:D+、 D-输入转化为RXD。 RS485串口 将多个舵机执行器连接到一个节点的多分枝方法是可以通过RS485串行通

讯实现的。所以当控制这些舵机时,一个不允许在同一时间有多个传输的 总线协议是需要存在的。

警告 当连接舵机线路时要确保引脚配置都正确。当上电时要检查电流消耗。一 个单独的舵机在待机模式下的电流不会大于50mA 。 连接状态验证

当通电时,LED闪烁两次来确认已经连接。

检查 当上述操作不成功时,就检查连接头连线是否正确还有电源的电压电流最

3

大限

3 通讯协议

3-1 通讯概述

数据包 主控器通过发送数据包和接收数据包和舵机单元通讯。有两种类型的数据

包,指令包(主控器发送给舵机单元),状态包(舵机发送给主控器)。

3

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

通讯 如下所示连接,如果主控器发送一个ID为N的指令包,只有ID为这个值

的舵机单元会发送检查状态包给主机并且执行相应的指令。

唯一的ID 如果多个舵机拥有同样的ID ,同时发送多个数据包就会发生碰撞,造成通

讯问题,因此,确保没有相同ID的舵机连接在同一个网络中就至关重要。

协议 舵机执行器通过拥有8位数据位,1位停止位和无校验的异步串行通讯协

议通讯。

3-2 指令包

指令包是主控器发送给舵机单元命令的数据包。指令包的结构如下所示

指令包 0XFF 0XFF ID LENGTH INSTRUCTION ARAMETER1 ……PARAMETERN

CHECKSUM 0XFF 0XFF 两个0XFF 0XFF 字节表明一个输入数据包的开始。

ID 一个舵机的唯一ID ,总共有254个可用的ID值,从0X00 到0XFD

广播ID ID 为0XFE为广播地址,表示所有的连接的舵机单元,一个ID为这个值

的数据包适用于所有连接的舵机,所以包含广播ID的数据包是不会返回任何状态数据包的。

长度 数据包的长度,它的值为: 参数个数+2 指令 舵机需要执行的指令。 参数。。N 用于除了指令本身还需要发送附加信息的情况。 检验和 校验和的计算方法如下所示:

CheckSum = ~(ID + Length + Instruction+Parameter1+….+ParameterN ) 如果计算的值超过255 ,最低八位的值将会被认为是CheckSum值。 ~是“按位取反”逻辑运算。 3-3 状态包(返回包)

状态包是舵机接收指令包后返回给主控器的应答包。返回包的构成如下: 0XFF 0XFF ID LENGTH ERROR PARAMETER1 PARAMETER2 …PARAMETER N CHECKSUM 每个包内字节的意义如下所示: 0XFF 0XFF 数据包的开始。

ID 返回数据包的舵机的唯一的ID 。初始缺省值是1 。 LENGTH4 数据包长度值为 :参数个数+2

ERROR 舵机发出的表示错误类型的字节。每个位的意义如下所示: 位 Bit7 名字 0 细节 如果一个没有定义的指令被发送或者一个Bit6 指令错误 4

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

Action指令被发送却没有一个REG_WRITE指令,这些情况下该位都会置为1 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 过载错误 校验错误 范围错误 过热错误 角度限制错误 输入电压错误 如果指定的最大负载都不能控制这个外部负载该位就会置为1 如果指令包的校验和不正确该位就会置为1 如果发送的指令超出定义范围该位就会置为1 如果内部温度超过控制表中定义的温度时就会该位置为1 如果目标位置超过 CW Angle 和 CCW Angle限定的范围,该位就会置为1 如果工作电压超过了控制表中定义的电压范围,该位就会置为1

Parameter0..N 用于需要加5入附加信息的场合。 校验和 校验和的计算方法如下所示:

CheckSum = ~(ID + Length + Instruction+Parameter1+….+ParameterN ) 如果计算的值超过255 ,最低八位的值将会被认为是CheckSum值。 ~是“按位取反”逻辑运算。

3-4 控制表

地址 0(0x00) 1(0x01) 2(0x02) 3(0x03) 4(0x04) 5(0x05) 6(0x06) 7(0x07) 8(0x08) 9(0x09) 10(0x0A) 11(0x0B) 12(0x0C) 5

项目 模型号码(L) 模型号码(H) 硬件版本号 ID 波特率 返回延时时间 CW 角度极限(L) CW 角度极限(H) CCW 角度极限(L) CCW 角度极限(H) 保留 最高温度 最低电压 访问 RD RD RD RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR - RD , WR RD , WR 初始值 28(0x1C) 0(0x00) ? 1(0x01) 34(0x22) 250(0xFA) 0(0x00) 0(0x00) 255(0xFF) 3(0x03) 0(0x00) 85(0x55) 60(0X3C) 原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

13(0x0D) 14(0x0E) 15(0x0F) 16(0x10) 17(0x11) 18(0x12) 19(0x13) 20(0x14) 21(0x15) 22(0x16) 23(0x17) 24(0x18) 25(0x19) 26(0x1A) 27(0x1B) 28(0x1C) 29(0x1D) 30(0x1E) 31(0x1F) 32(0x20) 33(0x21) 34(0x22) 35(0x23) 36(0x24) 37(0x25) 38(0x26) 39(0x27) 40(0x28) 41(0x29) 42(0x2A) 43(0x2B) 44(60x2C) 45(0x2D) 46(0x2E) 47(0x2F) 6

最高电压 最大扭矩(L) 最大扭矩(H) 状态返回等级 报警灯 报警关闭 保留 RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD RD RD RD RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD , WR RD RD RD RD RD RD RD RD RD , WR - RD RD , WR 240(0xF0) 255(0XFF) 3(0x03) 2(0x02) 4(0x04) 4(0x04) 0(0x00) ? ? ? ? 0(0x00) 0(0x00) 0(0x00) 0(0x00) 32(0x20) 32(0x20) [addr36]value [addr37]value 0 0 [addr14]value [addr15]value ? ? ? ? ? ? ? ? 0(0x00) 0(0x00) 0(0x00) 0(0x00) 原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

18(0x30) 49(0x31) RD , WR RD , WR 32(0x20) 0(0x00) 控制表 控制表包含关于状态和操作的信息。操作数字舵机就是通过向控制表写

据来完成的,并且它的状态就是通过读取控制表的数值来实现。

RAM和EEPROM

任何刚开始上电的时候,RAM区域中的数据值都会被赋予缺省值。但是

EEPROM区域中的数值却不改变,依然和上次断电时一样的数值。

初始值 控制表的最右侧一列显示了EEPROM区域的出厂设置值和RAM区域中的

数据每次上电时的初始值。

地址0x00 0x01 模型号码,对于RX-28,这个值为0x001C(28)。 地址 0x02 硬件版本号

地址 0x03 ID ,为了辨别这些舵机,分配给它们唯一的ID号,在同一个网络中不同

的ID需要给每个舵机分配。

地址 0x04 波特率。决定通讯速率。这个计算由下列算式决定。 Speed = 2000000/(address4+1) 主要的几个波特率对应的数据值 地址 0x04 1 3 4 7 9 16 34 103 207 hex 0x01 0x03 0x04 0x07 0x09 0x10 0x22 0x67 0xCF 设置波特率 1000000.0 500000.0 400000.0 250000.0 200000.0 117647.1 57142.9 19230.8 9615.4 目标波特率 1000000.0 500000.0 400000.0 250000.0 200000.0 115200.0 57600.0 19200.0 9600.0 误差 0.0000% 0.0000% 0.0000% 0.0000% 0.0000% -2.1240% 0.7940% -0.1600% -0.1600%

注意 最大波特率误差不超过3%是在USART通讯的容忍范围内。 警告 波特率的初始设置值为34(57600bps)

地址 0x05 返回延时时间。舵机从收到指令包到返回状态包所耗费的时间值。这个延

时时间的值是决定于 2us*地址0x05的数值 。

地址 0x06 0x07 0x08 0x09

转角极限。设置舵机的转角范围。目标位置需要在这个范围以内:

CW角度极限<= 目标角度<= CCW角度值。如果目标位置超出转角极限规

定的范围就会产生一个角度越界错误。

地址 0x0B 最高极限温度。舵机操作温度的上限。如果舵机内部温度超过这个值,温

度过高位(状态包的第2位)将要返回一个1,并且在地址17 、18出现一个警告。这个值是以摄氏度为单位。

地址0x0C,0x0D

最高和最低供电电压。工作电压的最低和最高极限。如果当前电压(地址42)超出指定的范围,供电电压错误(返回包的第0位)将会返回一个1,

并且在地址17、18处产生一个警告,这个值是实际电压的10倍。比如说,如果地址12的值为80,那么最低电压极限设置为8V 。

地址 0x0E 0x0F 0x22 0x23

最大扭矩。舵机的最大扭矩输出。当这个值被置为0的时候,舵机进入自

由转动模式。定义这个最大值的位置有两个地址;在EEPROM(地址0X0E,0X0F)和RAM(地址0X22,0X23)。当电源刚供电时,EEPROM中定义的最大扭矩值被复制到RAM中的地址。舵机的扭矩输出由RAM(地址0x22,0x23 )中的数值来限制。

地址 0x10 状态返回等级。决定舵机是否在收到一个指令包后返回一个状态包。 地址16 0 1 2 返回状态包 不对任何指令做应答 只对READ_DATA指令做应答 对任何指令都做应答 在接收到一个应用广播地址的指令包的情况下,不管地址0x10是什么数值都不返回状态包。

地址 0x11 报警灯。如果相应位置1,当错误发生时,LED闪烁。 Bit Bit7 Bit6 Bit5 Bit47 Bit3 Bit2 Bit1 Bit0 返回状态包 0 如果置为1,指令错误时闪烁 如果置为1,过载错误时闪烁 如果置为1,校验和错误时闪烁 如果置为1,范围错误时闪烁 如果置为1,过热错误时闪烁 如果置为1,角度极限越界错误时闪烁 如果置为1,输入电压越界错误时闪烁 这个功能在进行按位与运算后开始起作用。例如,当这个值被设置为0x05,

当输入电压错误或者过热错误发生时LED灯会闪烁。当从一个错误的状态返回到一个正常的状态,LED将会闪烁2S后停止。

地址 0x12 报警关闭。如果相应位置1,当错误发生时,舵机的扭矩将关闭。

Bit Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 7

返回状态包 0 如果置为1,指令错误时扭矩关闭 如果置为1,过载错误时扭矩关闭 如果置为1,校验和错误时扭矩关闭 如果置为1,范围错误时扭矩关闭 如果置为1,过热错误时扭矩关闭 如果置为1,角度极限越界错误时扭矩关闭 如果置为1,输入电压越界错误时扭矩关闭 原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

这个功能在进行按位与运算后开始起作用。但是,和报警LED不同的是,

当返回到一个正常的状态后,它仍然处在扭矩关闭状态。想要恢复,就需要将扭矩开启(地址0x18)复位为1。

地址0x14~0x17

校准。用于补偿舵机中电位器误差的数据。用户不能改变这些数据。

以下(从地址0x18)是在RAM区域。

地址0x18 扭矩使能。当是第一次供电时,舵机进入自由运行状态(扭矩为0)。设

置在地址0x18中的这个值为1就开启了扭矩。

地址 0x19 LED。当置为1的时候LED点亮。反之,置为0 LED灭。 地址 0x1a~0x1d

斜坡和边缘顺从性。舵机的顺从性是由顺从斜坡和边缘来定义。这个特性

可以吸收输出轴的冲击。下图显示了每一个符合值(A,B,C,D的长度)如何被位置误差和施加的扭矩。

地址0x1E 0x1F 目标位置。舵机执行器输出将要移动到的期望位置。设置这个值到0x3ff

将移动这个输出轴到300°的位置。

地址0x20 0x21 转动速度。设置输出轴移动到目标位置的角速度。设置这个最大值到0x3ff

将使输出达到最大的移动速度,这个最大速度的具体数值取决于电池电压和舵机种类。(最低的速度是该值被置为1。当它被置为0时,角速度将以电源电压允许的最大速度移动。就像没有速度控制被应用于舵机。)

地址0x24 0x25 当前位置。当前舵机输出的角度位置。 地址0x26 0x27 当前速度。当前舵机输出的角速度。

地址0x28 0x29 当前负载。正在运行的舵机的负载大小。BIT10是负载的方向。

地址 0x2A 当前电压。当前舵机的供电电压。这个值是实际电压的10倍。例如,10V

的电压用100(0x64)表示。

地址 0x2B 当前温度。以摄氏度为单位的舵机当前内部温度。 地址 0x2C 注册指令。当一个指令被REG_WRITE分配后该地址的数值置为1。当舵机

8

通过Action指令完成被分配的指令后该地址的数值被清零。

地址 0x2E 正在转动。当舵机在电源的供应下移动,该处置1

地址 0x2F 锁住。当该处为1,只有0x18到0x23能够被执行写操作,而其他地方不

可以。一旦被锁住,只能通过断电解锁。

地址0x30 0x31

冲击。电机工作时供应的最小电流值。初始值为0x20而它的最大值是0x3ff。

无边际旋转 如果顺时针角速度和逆时针角速度都置为0,一个无限旋转模式将会通过

设置目标速度来实施。这种特性可以用来实施一个持续旋转的车轮。

目标速度设置

15~11 10 9 8 7 6 5 4 3 2 1 0 位 0 值 8

旋转方向 速度值 原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

范围 每个数据都有一个合理的最大和最小值。写指令时超出这些合理范围将会

导致返回一个错误。以下的表格总结了各个寄存器的数据范围。16位数据寄存器表明两个字节。两个字节需要在一个数据包中同时被写入。

4 指令设置和示例

以下为可用的指令

指令 PING READ DATA WRIT9E DATA REG WRITE ACTION RESET SYNC WRITE 功能 无动作,用于获取一个状态返回包 读取控制表的数值 向控制表写数据 同WRITE_DATA很相似,但是保持在待机模式直到给出ACTION指令 出发被REG_WRITE指令注册的指令 将控制表的所有值恢复到出厂设置值 用于在同一时间控制多个舵机 值 参数数量 0x01 0 0x02 2 0x03 2~ 0x04 2~ 0x05 0 0x06 0 0x83 4~

4-1 WRITE_DATA

功能: 向舵机的控制表中写数据。

长度: N+3(N是需要向控制表中的数据个数) 指令: 0x03

参数1: 需要被写数据的存储器首地址。 参数2: 将要写的第一个数据。 参数3: 将要写的第二个数据。 参数N+1: 将要写的第N个数据。

例1 : 设置一个连接的舵机ID为1

向控制表的地址3写入数据1。这个ID通过广播地址0xfe来传输。 指令包:0XFF 0XFF 0XFE 0X04 0X03 0X03 0X01 0XF6

ID 校验和 长度指令参数

a a a

4-2 READ_DATA

功能: 从控制表中读取数据。 9

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

长度: 0x04 指令: 0x02

参数1: 需要被读出数据的存储器首地址。 参数2: 10 将要读取数据的长度。

例2 : 读取一个ID为1的舵机的内部温度。 读取控制表地址0x2B的1个字节。

指令包:0XFF 0XFF 0X01 0X04 0X02 0X2B 0X01 0XCC

ID 校验和 长度指令参数

a a a 返回状态包如下所示: 状态包:0XFF 0XFF 0X01 0X03 0X00 0X20 0XDB

ID 错误 校验和 长度参数

a a

读取的值为0x20 。所以当前舵机的内部温度为大约为32℃(0x20)。

4-3 REG_WRITE 和 ACTION 4-3-1 REG_WRITE

功能: REG_WRITE指令和WRITE_DATA指令很相似,但是执行时间却不同。当指

令包被接收时这些值被存在缓存区中并且写操作处于待机模式。这时,注 册指令寄存器(地址0x2C)被置为1。当Action指令包被接收,已经寄存 的写指令将被最终被执行。

长度: N+3(N是需要向控制表中的数据个数) 指令: 0x04

参数1: 需要被写数据的存储器首地址。 参数2: 将要写的第一个数据。 参数3: 将要写的第二个数据。 参数N+1: 将要写的第N个数据。 4-3-2 ACTION

功能: 触发被REG_WRITE指令寄存的动作。 长度: 0x02 指令: 0x05 参数: NONE。

这个ACTION指令在多个舵机需要同时动作的场合很有用。当控制多个舵

机时,从第一个舵机收到到最后一个接收到指令会出现稍微的时间延迟。 所以,Dynamxiel系列舵机通过ACTION指令解决这个问题。

广播 ACTION指令用广播ID(0Xfe)来给多于两个的舵机发送指令。注意这个操

作不会返回任何数据包。

4-4 PING 功能: 不产生任何操作,只是为了返回一个数据包或者检查特定ID的舵机的存在。 10

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

长度: 0x02 指令: 0x0111 参数: NONE。

例3 : 读取一个ID为1的舵机的状态包。

指令包:0XFF 0XFF 0X01 0X02 0X01 0XFB

ID 校验和 长度指令

a a 返回状态包如下所示: 状态包:0XFF 0XFF 0X01 0X02 0X00 0XRC

ID 错误 校验和 长度

a

不管是否广播地址被使用或者状态返回级别(地址16)是0,PING指令

总会返回一个状态包。

4-5 RESET

功能: 控制表中数据恢复出厂设置。 长度: 0x02 指令: 0x06 参数: NONE。

例4 : 复位一个ID为0的舵机。

指令包:0XFF 0XFF 0X00 0X02 0X06 0XF7

ID 校验和 长度指令

a a 返回状态包如下所示: 状态包:0XFF 0XFF 0X00 0X02 0X00 0XFD

ID 错误 校验和 长度

a

注意复位操作后舵机的ID已经改变为1。

4-6 .SYNC WRITE

功能: 用于在同一时间控制多个舵机。由于多个指令可以用一个指令来代替,所

以通讯时间会减少。但是,只有在要写的控制表数据的长度和地址都相同 时才可以用这个指令。并且,传输时需要用到广播地址。

ID: 0xFE

长度: ( L+1 )*N+4 (L:每个舵机的数据长度,N:舵机的数量) 11

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

指令: 0x83

参数1: 需要写数据的首地址。 参数2: 需要写的数据的长度。 参数3: 第一个12舵机执行器的ID。 参数4: 第一个舵机的第一个数据。 参数5: 第一个舵机的第二个数据。 … …

参数L+3: 第一个舵机的第L个数据。

参数L+4: 第二个舵机执行器的ID。 参数L+5: 第二个舵机的第一个数据。 参数L+6: 第二个舵机的第二个数据。 … …

参数2L+4: 第二个舵机的第L个数据。

第一个舵机数据 第二个舵机数据 例5 : 设置以下的四个舵机位置和角速度。 ID为0的舵机:位置0x010速度0x150 ID为1的舵机:位置0x220速度0x360 ID为2的舵机:位置0x030速度0x170 ID为3的舵机:位置0x220速度0x380

指令包:0XFF 0XFF 0XFE 0X18 0X83 0X1E 0X04 0X00 0X10 0X00 0X50 0X01

0X01 0X20 0X02 0X60 0X03 0X02 0X30 0X00 0X70 0X01 0X03 0X20 0X02 0X80 0X03 0X12

由于使用了广播地址所以没有状态包返回。

5 示例

为了下面的这个例子,我们假设一个在复位状态的ID为1的舵机,并且它

的波特率为57142bps

示例6 读取ID为1的舵机的模型号码和版本号。 指令包 指令= READ_DATA 地址= 0x00 长度= 0x03 通讯 发送:FF FF 01 04 02 00 03 F5 (LEN:008) 接收:FF FF 01 05 00 1C 00 08 D5 (LEN:009) 状态包结果 模型号 = 28(0x1C)(针对RX-28舵机) 版本号 = 0x08

示例7 把一个ID为1的舵机ID改为0。

指令包 指令= WRITE_DATA 地址= 0x03 数据= 0x00 通讯 发送:FF FF 01 04 03 03 00 F4 (LEN:008) 接收:FF FF 01 02 00 FC (LEN:006) 12

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

状态包结果 无错误

示例8 把一个舵机的波特率改为1Mbps。

指令包 指令= WRITE_DATA 地址= 0x04 数据= 0x01 通讯 发送:FF FF 00 04 03 04 01 F5 (LEN:008) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

示例9 把一个ID为0的舵机返回延迟时间复位为4微秒。 返回时间值1对应于2微秒

指令包 指令= WRITE_DATA 地址= 0x05 数据= 0x02 通讯 发送:FF FF 00 04 03 05 02 F1 (LEN:008) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

强烈建议将返回延迟时间调整到主控器能允许的最小时间。

示例10 把一个ID为0的舵机工作角度范围限制在0°~150°。

由于CCW角度限制0x3ff对应于300°,150°就对应于0x1ff 。 指令包 指令= WRITE_DATA 地址= 0x08 数据= 0xff,0x01 通讯 发送:FF FF 00 05 03 08 FF 01 EF (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

示例11 把一个ID为0的舵机工作最高温度改为80℃。

指令包 指令= WRITE_DATA 地址= 0x0B 数据= 0x50 通讯 发送:FF FF 00 04 03 0B 50 9D (LEN:008) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

示例12 把一个ID为0的舵机工作电压范围限制在10V~17V。 10V用100表示,17V用170表示 。

指令包 指令= WRITE_DATA 地址= 0x0C 数据= 0x64,0xAA 通讯 发送:FF FF 00 05 03 0C 64 AA DD (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

示例13 把一个ID为0的舵机最大扭矩调整为其最大可能值的50%。

设置位于ROM区域最大扭矩值为0x1ff,这个数值是最大值0X3FF的50%。 指令包 指令= WRITE_DATA 地址= 0x0E 数据= 0xff,0x01 通讯 发送:FF FF 00 05 03 0E FF 01 E9 (LEN:009) 13

13

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误 14

示例14 把一个ID为0的舵机永不返回状态包。

指令包 指令= WRITE_DATA 地址= 0x10 数据= 0x00 通讯 发送:FF FF 00 04 03 10 00 E8 (LEN:008) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

在这个指令之后就不会再返回状态包。

示例15 设置当工作温度超过设定限制时报警LED闪烁并且关闭舵机扭矩。 由于过热位是第二位,所以设置报警值为0x04 。 指令包 指令= WRITE_DATA 地址= 0x11 数据= 0x04,0x04 通讯 发送:FF FF 00 05 03 11 04 04 DE (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

示例16 把一个ID为0的舵机开启LED并且使能扭矩。

指令包 指令= WRITE_DATA 地址= 0x18 数据= 0x01,0x01 通讯 发送:FF FF 00 05 03 18 01 01 DD (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

你可以用手旋转舵机输出轴来鉴别扭矩使能状态。

示例17 把一个ID为0的舵机的服从边缘设置为1,服从斜线为0x40。 服从性 下图可以表示出角度偏差和扭矩输出的对应关系

即使在顺时针方向偏离目标位置一点点,也会在逆时针方向产生一个很大

的扭矩来弥补,但是由于必须考虑惯性,这种方法和实际情况不同。考虑 如此,在给定的条件下,可以表示为如下图。

A: 逆时针符合斜坡(地址0x1D)= 0x40(大约18.8°) B: 逆时针符合边缘(地址0x1B)= 0x01(大约0.29°) C: 逆时针符合斜坡(地址0x1A)= 0x01(大约0.29°)

D: 逆时针符合斜坡(地址0x1C)= 0x40(大约18.8°)

指令包 指令= WRITE_DATA 地址= 0x1A 数据= 0x01,0x01,0X40,0X40 通讯 发送:FF FF 00 07 03 1A 01 40 40 59 (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006) 14

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

状态包结果 无错误

15

符合斜坡通过2的n次幂的离散步进值起作用。所以任何在0x11到0x20

之间的符合值都拥有相同的效果。

示例18 把一个ID为0的舵机以57RPM的角速度转动到180°。 设置地址0x1e为0x200, 设置地址0x20为0x200。

指令包 指令= WRITE_DATA 地址= 0x1E 数据= 0x00,0x02,0x00,0x02 通讯 发送:FF FF 00 07 03 1E 00 02 00 02 D3 (LEN:011) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

示例19 把一个ID为0的舵机转动到0°, 把一个ID为1的舵机转动到300,

并且同时移动。

如果用WRITE_DATA指令,两个舵机不能同时转动,所以必须用REG_WRITE 和ACTION指令来代替。

设置地址0x1e为0x200, 设置地址0x20为0x200。 指令包 ID= 0指令= REG_WRITE 地址= 0x1E 数据= 0x00,0x00 ID= 1指令= REG_WRITE 地址= 0x1E 数据= 0xFF,0x03 ID= 0XFE(广播地址) 指令= ACTION

通讯 发送:FF FF 00 05 04 1E 00 00 D8 (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006)

发送:FF FF 01 05 04 1E FF 03 D5 (LEN:009) 接收:FF FF 01 02 00 FC (LEN:006) 发送:FF FF FE 02 05 FA (LEN:006) 接收:无返回包

状态包结果 无错误

示例20 把一个ID为0的舵机锁住除了0x18到0x23之外的所有地址。 设置地址0x2f为1。

指令包 指令= WRITE_DATA 地址= 02f 数据= 0x01 通讯 发送:FF FF 00 04 03 2F 01 C8 (LEN:008) 接收:FF FF 00 02 00 FD (LEN:006) 状态包结果 无错误

一旦被锁住,唯一的解锁方法就是断掉电源。

如果一个指令尝试访问锁定的数据,会返回一个错误。

发送:FF FF 00 05 03 30 40 00 87 (LEN:009)

接收:FF FF 00 02 08 F5 (LEN:006)

示例21 把一个ID为0的舵机最小功率为0x40。

15

原文出处及作者:Dynamixel RX-28 User’s Manual ROBOTIS

指令包 指令= WRITE_DATA 地址= 0x30 数据= 0x40,0x00 通讯 发送:FF FF 00 05 03 30 40 00 87 (LEN:009) 接收:FF FF 00 02 00 FD (LEN:006)

状态包结果 无16

错误

16

原文出处及作者:Dynamixel RX-28 User’s Manual

ROBOTIS

本文来源:https://www.bwwdw.com/article/iiaa.html

Top