マニピュレータの動作確認

Updated on: 2019-11-13

トップページ

簡単なサンプルプログラムを利用してマニピュレータの関節(サーボモータ)動作を確認します。

サンプルプログラムのコンパイル

  1. サーボモータドライバをダウンロードしてコンパイルします。
    ターミナルを起動し、以下のコマンドを実行します。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    $ cd ~/Downloads/
    $ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
    $ cd DynamixelSDK/c/build/linux64/
    $ make
    mkdir -p ./.objects/
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/group_bulk_read.c -o .objects/group_bulk_read.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/group_bulk_write.c -o .objects/group_bulk_write.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/group_sync_read.c -o .objects/group_sync_read.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/group_sync_write.c -o .objects/group_sync_write.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/packet_handler.c -o .objects/packet_handler.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/port_handler.c -o .objects/port_handler.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/protocol1_packet_handler.c -o .objects/protocol1
    _packet_handler.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk/protocol2_packet_handler.c -o .objects/protocol2
    _packet_handler.o
    gcc -O2 -O3 -DLINUX -D_GNU_SOURCE -Wall -c -I../../include -m64 -fPIC -g -c
        ../../src/dynamixel_sdk_linux/port_handler_linux.c -o .objects/port_han
    dler_linux.o
    g++ -shared -fPIC -m64 -o ./libdxl_x64_c.so ./.objects/group_bulk_read.o
        ./.objects/group_bulk_write.o ./.objects/group_sync_read.o ./.objects/gr
    oup_sync_write.o
        ./.objects/packet_handler.o ./.objects/port_handler.o
        ./.objects/protocol1_packet_handler.o ./.objects/protocol2_packet_handler.o
        ./.objects/port_handler_linux.o -lrt
    
  2. サーボモータ確認用プログラムをダウンロードします。

    1
    2
    3
    
    $ cd ~/Downloads/
    $ git clone https://github.com/takahasi/dynamixel_servo_check.git
    $ cd dynamixel_servo_check
    
  3. サーボモータ確認用プログラムがドライバのAPIを利用できるように、サーボモータドライバのライブラリとヘッダーをコピーします。

    1
    2
    3
    4
    5
    
    $ cp -r ~/Downloads/DynamixelSDK/c/include/dynamixel_sdk/ .
    $ cp ~/Downloads/DynamixelSDK/c/build/linux64/libdxl_x64_c.so .
    $ ls
    CMakeLists.txt  dynamixel_sdk  libdxl_x64_c.so  LICENSE  README.md
    servo_check.c
    
  4. サーボモータ確認用プログラムをコンパイルします。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    $ mkdir build
    $ cd build
    $ cmake ../
    -- The C compiler identification is GNU 5.4.0
    -- The CXX compiler identification is GNU 5.4.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/geoff/Downloads/dynamixel
    _servo_check/build
    $ make
    [ 50%] Building C object CMakeFiles/servo_check.dir/servo_check.c.o
    [100%] Linking C executable servo_check
    [100%] Built target servo_check
    $ ls
    CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile  servo_check
    

サンプルプログラムの実行

  1. シリアルポートへアクセスするために、シリアルデバイスへのアクセス件を付与します。
    下記のコマンドでパーミッショングループにユーザを追加します。

    1
    
    $ sudo gpasswd -a ユーザ名 dialout
    

    上記のユーザ名の部分を現在お使いのユーザ名に変更します。
    上記のようにパーミッショングループにユーザを追加しないとサーボモータ制御ソフトウェアはハードウェアへアクセスできないため、エラーになります。
    また、 アクセス権をシステムに反映されるために、上記コマンド実行後は一旦ログアウトして再ログインしてください。

  2. サーボモータ確認プログラムを実行し、サーボモータの動作を確認します。
    プログラムにサーボIDを指定します。CRANE+のサーボIDは1~5です。
    また、サーボモータの目標位置を設定します。
    CRANE+で利用しているサーボモータは1024段階(0~1023)で目標位置を指定できますので、下記の例では中央値である 512 を指定します。
    すべてのモータに512 を指定すると、CRANE+は直立した姿勢となります。
    注意:プログラムを実行すると指定したサーボモータは高速で指定位置に移動します。電源を入れる前にマニピュレータをまっすぐ上向きに近い姿勢にしてください。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    $ cd ~/Downloads/dynamixel_servo_check/build/
    $ ./servo_check 1 512
    Opened port
    Changed buadrate
    Dynamixel has been successfully connected
    [ID:003] GoalPos:512  PresPos:760
    [ID:003] GoalPos:512  PresPos:757
    [ID:003] GoalPos:512  PresPos:744
    [ID:003] GoalPos:512  PresPos:730
    [ID:003] GoalPos:512  PresPos:718
    [ID:003] GoalPos:512  PresPos:705
    [ID:003] GoalPos:512  PresPos:687
    [ID:003] GoalPos:512  PresPos:672
    [ID:003] GoalPos:512  PresPos:656
    [ID:003] GoalPos:512  PresPos:640
    [ID:003] GoalPos:512  PresPos:623
    [ID:003] GoalPos:512  PresPos:604
    [ID:003] GoalPos:512  PresPos:586
    [ID:003] GoalPos:512  PresPos:564
    [ID:003] GoalPos:512  PresPos:543
    [ID:003] GoalPos:512  PresPos:522
    

課題

  1. サーボID1から5まで、全サーボモータの動作を確認してみましょう。

  2. 上記プログラムの指令値を変更することでロボットアームをの手先を任意の姿勢に到達させてみましょう(例えば、机の上にある物体を掴む姿勢など)。