Updated on: 2019-11-13
簡単なサンプルプログラムを利用してマニピュレータの関節(サーボモータ)動作を確認します。
サーボモータドライバをダウンロードしてコンパイルします。
ターミナルを起動し、以下のコマンドを実行します。
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
サーボモータ確認用プログラムをダウンロードします。
1
2
3
$ cd ~/Downloads/
$ git clone https://github.com/takahasi/dynamixel_servo_check.git
$ cd dynamixel_servo_check
サーボモータ確認用プログラムがドライバの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
サーボモータ確認用プログラムをコンパイルします。
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
$ sudo gpasswd -a ユーザ名 dialout
上記のユーザ名
の部分を現在お使いのユーザ名に変更します。
上記のようにパーミッショングループにユーザを追加しないとサーボモータ制御ソフトウェアはハードウェアへアクセスできないため、エラーになります。
また、 アクセス権をシステムに反映されるために、上記コマンド実行後は一旦ログアウトして再ログインしてください。
サーボモータ確認プログラムを実行し、サーボモータの動作を確認します。
プログラムにサーボ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
サーボID1から5まで、全サーボモータの動作を確認してみましょう。
上記プログラムの指令値を変更することでロボットアームをの手先を任意の姿勢に到達させてみましょう(例えば、机の上にある物体を掴む姿勢など)。