トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

認知ロボティクス研究室>ゼミのお話>アルマジロゼミ>Linux組み込みボードでのサーボの取り扱い

概要

準備

接続

  1. Armadillo-300とAGB65-232Cを接続する.(接続ケーブル:ピンソケット-3ピン2mmピッチコネクタ)
  2. AGB65-232CとAGB65-RSCを接続する.(接続ケーブル:付属の4ピンケーブル・電源ケーブル)
  3. AGB65-RSCのHVピンをジャンパピンで短絡させる.
  4. サーボを接続する.
  5. サーボ用電源にバッテリーを接続する.
connection_servocontroller.png
DSC_0280.jpg
DSC_0281.jpg

プログラム1

AGB65-RSC の簡単な使い方

AGB65-RSCへの命令値とサーボ角度の関係について

対話的サーボ制御プログラムの作成

01:#include <sys/types.h>
02:#include <sys/stat.h>
03:#include <sys/ioctl.h>
04:#include <fcntl.h>
05:#include <termios.h>
06:#include <unistd.h>
07:#include <stdio.h>
08:#include <stdlib.h>
09:#include <string.h>
10:
11:#define SERIAL_PORT     "/dev/ttyAM1"
12:
13:int main(){
14:  int fd;
15:  fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY);
16:  if(fd < 0){
17:    printf("%s doesn't open it\n",SERIAL_PORT);
18:    return -1;
19:  }
20:
21:  struct termios oldtio, newtio;
22:  tcgetattr(fd, &oldtio);
23:  newtio = oldtio;
24:
25:  /* 通信方式の設定・非カノニカル入力処理選択 */
26:  newtio.c_iflag = IGNPAR;
27:  newtio.c_lflag = 0;
28:
29:  /* read関数での文字待ちうけの設定 */
30:  newtio.c_cc[VTIME] = 0; /* 値x0.1秒待つ */
31:  newtio.c_cc[VMIN] = 1; /* 値の文字分だけ入力されるまで待つ*/
32:
33:  /* 通信速度の設定 */
34:  cfsetspeed(&newtio, B9600);
35:
36:  /* シリアルデバイス初期化処理 */
37:  tcflush(fd, TCIFLUSH);
38:  tcsetattr(fd, TCSANOW, &newtio);
39:
40:  /* サーボ指令の雛形 */
41:  /* 個別サーボ駆動モード, サーボコントローラID:3, サーボ番号:0 */
42:  unsigned char output[7] = {255,3,4,2,0,127,20};
43:
44:  /* input(入力):サーボへの角度指令:有効範囲0(0°)-255(180°) */
45:  /* 入力が有効範囲内の間,サーボをコントロール */
46:  int input;
47:  while(1){
48:    printf("input value from 0 to 255[-1:end]:");
49:    scanf("%d", &input);
50:    if(input < 0 || input > 255){ /* サーボコントロール終了 */
51:      break;
52:    }
53:    /* output[5]がサーボへの角度指令 */
54:    output[5] = (unsigned char)input;
55:    write(fd, output, sizeof(output));
56:  }
57:
58:  /* シリアルデバイス終了処理 */
59:  tcsetattr(fd, TCSANOW, &oldtio);
60:  close(fd);
61:  return 0;
62:}

プログラム2

お題

参考

AGB65-RSC 命令仕様

基本形

[シンクロバイト(255)] [ID(0-3)] [送信バイト数(1-14)] [命令1] [命令2] [命令3] ...
シンクロバイトRSCにデータの通信開始を知らせるデータで,常に「255」で始まる.
IDRSCに設定された固有のID(AGB65シリーズを複数接続したときの判別用.RSCの場合,出荷時のIDは「3」.)
送信バイト数送信される命令の(バイト)数.シンクロバイト,ID,送信バイト数は数えない.
命令RSCに動作させたい命令.詳細は以下の表.

命令の説明

命令値動作方向フォーマット
全サーボ駆動送信[255][ID][長(14)][命令(1)][P0][P1]...[P10][P11][Speed]
個別サーボ駆動送信[255][ID][長(4)][命令(2)][サーボ番号][サーボ位置][Speed]
全サーボパルス停止送信[255][ID][長(1)][命令(3)]
指定サーボパルス停止送信[255][ID][長(2)][命令(4)][サーボ番号]
180°モード送信[255][ID][長(1)][命令(5)]
255解像度モード(default)送信[255][ID][長(1)][命令(6)]
(*)[Speed]は指定したサーボ位置までにかかる時間.[Speed]×15ms.

添付ファイル: fileconnection_servocontroller.png 780件 [詳細] fileservo_control.c 804件 [詳細] fileDSC_0281.jpg 771件 [詳細] fileconnection-servocontroller.png 383件 [詳細] fileDSC_0280.jpg 700件 [詳細]

Last-modified: 2023-03-29 (水) 10:47:55