👻

myCobotをRustで動かしてみた

2021/08/26に公開

myCobotのRustクレート

随分と前にmyCobotを買ったにも関わらず、眠らせてしまっていたのでRustを使って動かしてみました。
myCobotとは?

mycobot という名前のクレートで公開しています。
https://github.com/neka-nat/mycobot-rs
https://crates.io/crates/mycobot

こんな感じで動いてます。
send_coords

基本的にはオリジナルのpythonで作られたシリアル通信用のAPI(pymycobot)をRustに移植した形になっていて、pymycobotとほとんど同じように使えると思います。
関節を動かすプログラムは以下のように書くことができます。

use mycobot::*;

pub fn main() -> Result<()> {
    let mut mycobot = MyCobotSerialOperator::new("/dev/ttyUSB0", 115200);
    mycobot.send_angles(&[0.0, 0.0, 0.0, 0.0, 30.0, 0.0], 50)?;
    Ok(())
}

動かし方

まずは以下を参考にmyCobot側の設定を済ませておいて下さい。
https://zenn.dev/karaage0703/books/3be6bad93b0c8e/viewer/3b3b5a

手っ取り早く試すには上のリポジトリをgit cloneしてexampleを実行するのが速いと思います。

git clone https://github.com/neka-nat/mycobot-rs.git
cd mycobot-rs

myCobotとPCをUSBでつなぎ、デバイス名を指定して以下のように実行します。

cargo run --release --example send_angles /dev/ttyUSB0

LEDが赤に代わり、アームが動き出せば成功です。

最後に

ロボット界隈でも脚光を浴びつつあるRustでmyCobotのAPIを実装しました。
Rustを使い始めてまだまだ慣れないですが、rust-analyzerやcargoなどの開発ツールがすごく使いやすく書いてて楽しかったので、いろいろこれからも作っていきたいと思います。

Discussion