Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-ROSE ROBOTIS Dymamixelシリアルサーボの制御
  • Forums
  • Blog
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 6 replies
  • Subscribers 446 subscribers
  • Views 7917 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • B3M
  • DDS-XRCE
  • Dynamixel
  • esp8266
  • FIT
  • GR-ROSE
  • HYGRO
  • ICS
  • include
  • JSTK2
  • KYPD
  • MG996R
  • MIC3
  • NAV
  • OLED
  • pin
  • PMOD
  • ROS
  • ROS2
  • rosserial
  • RS-485
  • RX65N
  • Serial2
  • spi
  • Wire
Related

ROBOTIS Dymamixelシリアルサーボの制御

西村備山
西村備山 over 2 years ago

GR-ROSE作品発表会の賞品のDarwin Mini届きました。
ありがとうございました。

組み立てる前にDynamixelシリアルサーボXL-320を
GR-ROSEで制御してみました。

Dynamixelの通信プロトコルはV1とV2で別物なので要注意です。
Darwin MiniのXL-320はV2で、
ボーレートは1Mbpsがデフォでした。

#include

// CRC-16-IBM
uint16_t CRC_calc(uint8_t *data, int length)
{
  uint16_t crc16;
  int i,j;
  
  crc16 = 0x0000; // 初期値=0
  for(i=0;i<length;i++){
    crc16 ^= ( ((uint16_t)data[i]) << 8);
    for(j=0;j<8;j++){
      if(crc16 & 0x8000){
        crc16 = (crc16 << 1) ^ 0x8005; // 生成多項式
      }else{
        crc16 <<= 1;
      }
    }
  }
  return crc16;
}

bool sendpos(uint8_t id, uint16_t pos) {
  // インストラクションパケット
  uint8_t tx_buf[] = { // 多バイトの数値はリトルエンディアン
    0xFF, 0xFF, 0xFD, 0x00, // Header(固定値)
    id,         // ID
    0x09, 0x00, // Length
    0x03,       // Instruction (0x03 = WRITE)
    30, 0, // Address (30 = GoalPosition)
    (uint8_t)(pos & 0xFF), (uint8_t)(pos >> 8), 0x00, 0x00, // Data
    0, 0        // CRC (下で計算)
  };
  // CRC計算
  uint16_t crc = CRC_calc(tx_buf, 14);
  tx_buf[14] = (uint8_t)(crc & 0xFF);
  tx_buf[15] = (uint8_t)(crc >> 8);
  // 送信
  while (Serial1.available ()) Serial1.read (); // バッファクリア
  Serial1.write (tx_buf, 16);
  
  // ステータスパケット受信
  uint8_t rx_buf[16+11];
  if (Serial1.readBytes (rx_buf, 16+11) == 16+11){
    if(rx_buf[16+4] != id){ // IDの一致をチェック
     Serial.println("ID not matched!");
     return false;
    }
    if(rx_buf[16+8] != 0){ // エラーをチェック
     Serial.print("Status Error = "); Serial.println(rx_buf[16+8]);
     return false;
    }
    Serial.println("OK!");
    return true;
  }else{
    Serial.println("Bad response!");
    return false;
  }
}

void setup() {
  Serial1.begin (1000000);
  Serial1.direction(HALFDUPLEX);
  Serial1.setTimeout (50);
  
  Serial.begin(115200);
}
 
void loop() {
  for(int id = 1; id <= 3; id++){
    sendpos (id, 0);
    delay (1000);
    sendpos (id, 1023);
    delay (1000);
  }
}
  • Reply
  • Cancel
  • Cancel
Parents
  • JiGoRo
    JiGoRo over 1 year ago
    貴重なサンプルコードありがとうございます。

    Robotis の Dynamixel の V2 プロトコルと書かれてますね。

    Goal Position のアドレスが 30 と、V1プロトコルのアドレスになってます。 一方で、パケットのフォーマットはV2。

    この設定が正しいのでしょうか? それともV2のGoal Position のアドレス 116 が正しいのでしょうか?
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • JiGoRo
    JiGoRo over 1 year ago in reply to JiGoRo
    自己返信です。

    Dynamixel のプロトコル、V1, V2 で設定できるんですね。 ただし、フォーマットはV2のままでレジスタアドレスがV1になる、ということなのでしょうかね。手持ちサーボでやってみましたが、V1モードにしたとき、V1のフォーマットではダメで角度指示などのアドレスだけが変わってました。 なんでこんな仕様になってるんでしょう。。。

    ということで、ここにあげていただいているサンプルは、V2をサポートするXL340でV1指定としての制御モードになってるようですね。

    正しいでしょうか > 有識者の方
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Reply
  • JiGoRo
    JiGoRo over 1 year ago in reply to JiGoRo
    自己返信です。

    Dynamixel のプロトコル、V1, V2 で設定できるんですね。 ただし、フォーマットはV2のままでレジスタアドレスがV1になる、ということなのでしょうかね。手持ちサーボでやってみましたが、V1モードにしたとき、V1のフォーマットではダメで角度指示などのアドレスだけが変わってました。 なんでこんな仕様になってるんでしょう。。。

    ということで、ここにあげていただいているサンプルは、V2をサポートするXL340でV1指定としての制御モードになってるようですね。

    正しいでしょうか > 有識者の方
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Children
No Data
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.