#servo #motor #herkulex #servo-motor #dongbu

no-std drs-0x01

轻松与东芝机器人伺服电机 Herkulex DRS 0101 和 DRS 0201 通信

12 个版本

使用旧的 Rust 2015

0.3.0 2019 年 5 月 9 日
0.2.2 2018 年 11 月 28 日
0.1.7 2018 年 9 月 18 日
0.1.6 2018 年 7 月 17 日

#588 in 嵌入式开发


2 crate 中使用

MIT/Apache

95KB
2K SLoC

Latest version Documentation dependency status

文档

此 crate 提供了与 Herkulex DRS (0101 和 0201) 伺服电机通信的基本功能。它主要基于东芝机器人发布的文档,可在 此处 获取。

示例

发送数据

使用此库向伺服电机发送数据的最佳方法是使用 Servo 结构。例如,以下是设置伺服电机(id:0x40)为连续旋转的方法。

extern crate drs_0x01;
use drs_0x01::Servo;

fn main() {
    let servo = Servo::new(0x40);
    let message = servo.set_speed(512, Rotation::Clockwise);
    // ... send the message
}

还有一些更高级的类型,适用于熟悉 herkulex 数据表的用户。

这是如何执行相同的任务(将伺服电机设置为连续旋转),但使用这些类型。此外,我们将颜色从蓝色改为红色,以显示这些类型如何提供更多控制。

extern crate drs_0x01;
use drs_0x01::*;
use drs_0x01::builder::MessageBuilder;

fn main() {
    let message = MessageBuilder::new().id(0x40).s_jog(/* Playtime : datasheet value : */ 60, 
                                                       JogMode::continuous{speed : 512}, 
                                                       JogColor::red, 
                                                       0x40)
                                                 .build();
    // ... send the message.
}


要重启所有伺服电机,可以使用此消息

extern crate drs_0x01;
use drs_0x01::builder::MessageBuilder;

fn main () {
   let message = MessageBuilder::new().id(0xFE).reboot().build();  // 0xFE is the broadcast ID
}

以下是启用标记为 35 的伺服电机的扭矩的方法

extern crate drs_0x01;
use drs_0x01::builder::MessageBuilder;
use drs_0x01::WritableRamAddr::TorqueControl;
fn main() {
   let message = MessageBuilder::new_with_id(35).write_ram(TorqueControl(1)).build();
}

接收数据

您可以使用 ACKPacketACKReader 将传入的字节轻松解析并转换为 ACKPacket

请参阅 examples 文件夹中的代码片段。

依赖关系

~105KB