-
Notifications
You must be signed in to change notification settings - Fork 0
/
kxr-document.txt
executable file
·5337 lines (4179 loc) · 182 KB
/
kxr-document.txt
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2018.4.20,2018.10.08 M.I
2018.11.15 : add 22,23,24
2018.12.15 : update 26
2020.4.3 : update
2021.3.19 : rename lmarm mrarm to lmarm rmarm
2022.6.1 : :devname :serial keys for :com-init
2024.1.8 : :robotset
-----------------------------------------------------------------
*** lispでの使い方
-----------------------------------------------------------------
近藤科学のKXRセットを組立マニュアルに従って自分の好きな
ロボットを組み立て,HeartToHeartで動かす方法を試した後,
Lispで動かす際に使えるコマンドの例を順に説明してゆく.
Windows上にVmware Workstation Playerを入れて,Ubuntu環境をVmwareの
中に入れて使うのが便利.
RCB4用のUSBケーブルをWindowsとUbuntuの両方に切り替えるのは
VmwareのUbuntu画面の左上隅のPlayerメニューから取り外し可能デバイスの
メニューの中のKondo Kagaku Dual USB ADAPTER HSのチェックを操作する
ことで可能.
まだeuslispをインストールしていない場合,本ドキュメントの
"3. euslispのインストール"を参照してaptでroseusを入れるか(ROS環境が必要),
jsk_roseusなどをソースからインストールする.
また、ホームディレクトリに.eusrcが存在しない場合、
"echo >> ~/.eusrc"
などで空の.eusrcを作る
mkdir ~/prog
cd prog
git clone http://gitlab.jsk.imi.i.u-tokyo.ac.jp/rcb4eus/rcb4eus
cd prog/rcb4eus
make libs
make
irteusgl rcb4robots.l
(make-kxr-robot "kxrl2w2l5a4h2")
;; *ri* と *robot*が生成される.
;; prog/rcb4eus/projects/Hello_kxrl2w2l5a4h2/*.h4p
;; にあるとして読み込んで*ri*のスロット変数に蓄えられる.
*robot* ;; 緑を背景にして表示されるロボット.
(send *ri* :robot) ;; 紫を背景にして表示されているロボット
実機をシリアルケーブルでPCに接続してあることを確認.
(send *ri* :com-init)
;; rcb4ボード用付属DUAL USB ADAPTER HSのシリアルモード側(LEDは緑)
(send *ri* :timer-on) ;; *ri*のロボットが実機の状態を表示
;; 加速度センサがついているとそれに合わせて絵も傾く.
(send *ri* :servo-sorted-ids) ;; このロボットが使うサーボのIDのリスト
(send *ri* :servo-state 3) ;; サーボID 3の状態(20バイト領域の設定)を返す.
(send *ri* :servo-mixing 3) ;; サーボID 3のミキシング関連設定のみを返す.
(send *ri* :servo-vector) ;; lisp上で保持されている角度
;; サーボベクタは36個の要素をもつサーボの値を使われてなくても返す.
(send *ri* :read-servo-vector) ;;実機のサーボベクタを実機から読む.
(send *ri* :send-servo-vector sv cnt) ;;サーボベクタを実機へ送る.
(send *ri* :read-ref-servo-error) ;; 実機へ指定されている目標角度サーボベクタを実機から読む
(send *ri* :read-servo-error) ;; 実機の目標角度と現在角度との差のベクタを実機から読む
;;;
(send *ri* :angle-vector) ;; lisp上で保持されているアングルベクタを返す.
(send *ri* :angle-vector av cnt) ;; アングルベクタavでフレーム数 cntで動かす.
(send *ri* :read-angle-vector) ;; 実機のサーボベクタを読んで,アングルベクタを返す.
;;;
(send *ri* :read-analog) ;; AD変換のベクトル(11要素)を返す.
;; 最初からバッテリ,ジャイロ2軸,加速度3軸の6要素が有効.
(wait-key (send *ri* :read-analog))
;; AD変換ベクトルを表示し続ける.キー入力を入れると終わる.
;;; 関節のサーボON/OFF
(send *ri* :free :larm) ;; 左腕のサーボOFF.手で左腕を動かすとviewer
;; の絵が動く.
(send *ri* :hold :larm) ;; 左腕のサーボON
(send *ri* :free) ;; 全身のサーボOFF
(send *ri* :free-all) ;; 全身のサーボOFF
(send *ri* :hold) ;; 全身のサーボON
(send *ri* :hold-all) ;; 全身のサーボON
(send *ri* :timer-off) ;; 表示を止める.通信コマンドを送る時には止めておく.
;;; モーションプログラムの表示・実行
(send *ri* :draw-project-file)
;; projectファイルのモーションテーブルを順に表示する.キー入力で
;; 止まる.
(send *ri* :draw-project-file 10) ;; モーションテーブル 10番の動作を表示
(send *ri* :call-motion 10)
;; 実機のROMのモーションテーブルの10番を実行する.
;;; モーションプログラムのアセンブル・逆アセンブル
(setq m0 (send *ri* :project-file :mcodes 0))
;; プロジェクトファイルのモーションテーブルの0番目のプログラム
;; を返す.
(setq b (send m0 :bcodes)) ;; ROMのモーション数値列をリストで返す.
(setq a (send m0 :acodes)) ;; ROMのモーション数値列を逆アセンブルする.
(equal a (rcb4-disassemble b 0)) -> t
;; 0番のモーションコードであるbを逆アセンブルする.
(equal b (rcb4-assemble a 0)) -> t
;; 0番のモーションコードとしてaをアセンブルする.
;;
;;; ROMのモーションテーブルの読み込み
(send *ri* :read-rom-table)
;; ROMの中のモーションテーブル(120モーション)を読み出す.
;; rcb4ボード,kondoh7のボードの両方に対応.
(send *ri* :write-project-to-rom-table)
;; プロジェクトファイルのモーションテーブルをROMへ書き込む
;; KondoH7ボードの場合には,これでROMに書き込む.
;; RCB4ボードではHeartToHeartで書き込んだものが入っている.
(send *ri* :reset-rom-table)
;; ROMの120個のモーションテーブルに:returnコマンドだけを書き込む.
(send *ri* :rom-table) ;; ROMのモーションテーブル配列を返す.
;;; ROMのモーションプログラムのアセンブル・逆アセンブル
(setq m10 (send *ri* :rom-table 10))
;; ROMのモーションテーブルの10番のモーションコードを返す.
(setq b (send m10 :bcodes)) ;; ROMのモーション数値列をリストで返す.
(setq a (send m10 :acodes)) ;; ROMのモーション数値列を逆アセンブルする.
(equal a (rcb4-disassemble b 10)) -> t
;; 10番のモーションコードであるbを逆アセンブルする.
(equal b (rcb4-assemble a 10)) -> t
;; 10番のモーションコードとしてaをアセンブルする.
(send *ri* :write-motion-lst b 10)
;; 10番用のモーションコードリストをROMの10番へ書き込む
(send *ri* :write-convert-motion 10 100)
;; 10番目のモーションコードを100番目へ書き込む.
(send *ri* :write-motion-code mc i)
;; モーションコードmcを ROMのモーションテーブルのi番へ整形して書
;; き込む
(send *ri* :write-project-to-rom-table)
;; プロジェクトファイルのモーションテーブルをROMへ書き込む
;;;
(send *ri* :read-jump-vectors)
;; リモコンボタンの組み合わせと対応する動作のリストを返す.
;; 31個まで登録可能となっている.
(send *ri* :write-jump-vectors)
;; プロジェクトファイルの中に書かれているリモコンのマップを書き
;; 込む
(test-gripper3)
;; グリッパーの開閉を繰り返す.
;;;
(send *ri* :check-project-file)
;; 新しいロボットのプロジェクトファイルの内容が*ri*のロボットと
;; 合致しているかをチェックする.servo-sorted-idsが使っているサー
;; ボのindexになっているが,:servo命令などの引数でそれ以外の
;; サーボIDを指定している命令がある場合にメッセージを表示する.
;; :jump/:call命令の飛び先番地が,命令の境界になっているかどうか.
;; 一つの命令バイト列の途中を指している場合にはメッセージを出す.
(send *ri* :reform-project-file)
;; チェックでメッセージがでていた場合に,その部分を修正する.
;; :servo命令ではservo-sorted-ids(すべてのサーボID)の命令に変更
;; し, :stretch, :speedは,実際には搭載していないIDだけを除く.
(send *ri* :save-project-file)
;; prog/rcb4eusに,(send *ri* :robot :name)のファイル名.h4pの
;; プロジェクトファイルを生成する.
-----------------------------------------------------------------
以下, 補足説明
-----------------------------------------------------------------
*** 1. Windowsでの操作実行
*** 2. Ubuntuでの環境設定
*** 3. euslispの環境設定
*** 4. euslispの立ち上げ
*** 5. ロボットモデルの生成
*** 6. ロボット生成時のプロジェクトファイルの指定方法
*** 7. euscollada-robot モデルの生成
*** 8. ロボットへの通信ポートを初期化する.
*** 9. ロボット実機状態の読み込み,自動表示
*** 10. 実ロボットを操作デバイスとして使う例
*** 11. 動作テーブルの動作の実行
*** 12. 動作プログラムのエミュレート
*** 13. プロジェクトファイル内の動作プログラムの確認
*** 14. アセンブリプログラムの例
*** 15. angle-vectorの列から動作プログラムを生成する
*** 16. ROMの動作表の読み出し
*** 17. 動作のROMモーションテーブルへの書込み
*** 18. Jump vector表とRemocon の機構
*** 19. Jump表への書込み
*** 20. USBシリアルを使えるようにするために
*** 21. ftdi.lについて
*** 22. swigについて
*** 23. リモコンのエミュレータ kxrviewer.l 2018.11.15
*** 24. irtviewerの中への文字・画像表示
*** 25. irtviewerの中の表示モデルの面のマウス選択の方法
*** 26. assemble, disassemble, conversion, deconversion
*** 27. メモリマップ
*** 28. RCB-4 プログラムのエミュレーションEmulation
*** 29. euslispプログラムのコンパイル
*** 30. ROS を用いて通信を行う方法
*** 31. C言語でのエミュレーション
*** 32. rcb4interface.l の実装メモ
*** 33. euslispによるロボットの姿勢・動作生成方法
*** 34. emulaterに送る動作プログラムの例
*** 35. rcb4lisp rcb4へのコンパイラ
*** 36. kxrmodels.l モデルの作り方
*** 37. nn.l ニューラルネットモデル生成,計算
*** 38. BVHアニメーション kxranimate.l
*** 39. odedyna.l, kxrdyna.l 動力学シミュレーション環境
*** 42. /dev/tty*** としてのopen/read/write方法 2022.5.22
*** 43. meshの削減方法
*** 48. rcb4robotconfig.lのロボットモデル記述 2023.7.12
*** 49. kxr-robotset クラスとモジュールロボットを統合 2024.1.8
-----------------------------------------------------------------
-----------------------------------------------------------------
近藤科学のKHR3, KXRは背中にRCB4/RCB4-miniという制御ボードが入って
おり,HeartToHeart4というWindows上アプリでロボットの通信,関節構成,
動作プログラムを作って,RCB4ボード上のROMに焼き込むことで,リモコン
で書き込まれている動作を呼び出すことができるようになっている.
ボードにはA/Dポートがあり,KHR3では,ジャイロ2軸,加速度2軸,
KXRでは,ジャイロ2軸,加速度3軸を動作プログラム中で取得することが
できる.
-----------------------------------------------------------------
*** 1. Windowsでの操作実行
-----------------------------------------------------------------
WindowsでのUSBシリアルに対応するドライバーは,
近藤科学のダウンロードサイト
http://kondo-robot.com/archives/faq_category/software_sapmple
の2015.06.30 KO Driver 2015をダウンロードしてインストールする.
HeartToHeart4のプログラムは,同じページの
2014.05.01 HeartToHeart4 Ver.2.3.0.0
をインストールする.Ubuntuで使う前にこのHeartToHeart4で
ロボットを動かすプログラムを作ってみておくとRCB4がどのように
利用される商品となっているかがわかってゆく.
HeartToHeart4での動作プログラムは,サーボの通信速度,ロボットが持って
いるサーボのid番号と関節の対応の登録,動作プログラムをGUIで登録できる
ようになっている.動作プログラムでは,ロボットの登録されたサーボの角度,
条件判断,A/Dデータの計算,繰返し制御などを表すコマンドブロックをGUIで
線をつないで作り,それを全体で120個までROM内の表に登録するようになっ
ている.各動作プログラムは,サブルーチンとして別の動作プログラムから呼
び出すことができる.ROMの動作テーブルに書き込む際に,各動作コマンドブ
ロックの意味が近藤科学が定めている動作コマンド命令列にコンパイルされる.
動作コマンド命令は,近藤科学のホームページ,サポート情報,RCB開発資料
のページ
http://kondo-robot.com/archives/faq_category/rcb-dep
から調べてゆく.
RCB-4リファレンスセット RCB4RefSetV220R20140507.zip
の中の
RCB-4コマンドリファレンス20130805.pdf
に示されている.命令には,
MOV,AND,OR,XOR,NOT,SHIFT,四則(+,-,x,div,mod),JUMP,CALL
RETURN,ICS,単独サーボ動作,複数サーボ動作,複数サーボの個別動作,
サーボのストレッチ変更,サーボのスピード変更,バージョン確認,通信確認
がある.
KHR3はヒューマノイド型になっているが,
KXRのロボットは,2脚2腕だけでなく,4脚,6脚,アーム型,車輪型など
を自由に作ってゆくことができる製品となっているところに特色がある.
KXR製品アドバンストセットAでは,18個のサーボが入っており,
2脚ロボットは,脚が5軸,腕が3軸,グリッパ2個で首が動かない
人型ロボットか,グリッパの代わりに,首を2軸動かすものを作ることが
できる.6脚ロボットでは,各足が3軸で18個を使い,
4脚首長ロボットは4軸の脚が4脚,首と口で2個のサーボを使っている
4脚カメロボットは,2軸脚が4つと首,4脚車輪型は,車輪を脚の先に
付けたロボットを創ることができる.
製品は,これらのパーツが組み立てられた状態ではなく,各サーボにidを
付けて,ロボットを順に作ってゆく作業が必要なキット製品となっている.
ネジ,電動ドライバを用いて,
http://kondo-robot.com/archives/faq_category/products-manual
などの作成マニュアルに沿って組み立てて
各ロボットは数時間から1日ほどの作業がかかる.
組みたったロボットをまず動かすには,WindowsでHeartToHeart4を
使ってニュートラル姿勢,サンプルプログラムのROMへの書き込みなど
を行ってゆく必要がある.
足を6軸とし,腕を4軸にしたヒューマノイドでの動作例が
http://kondo-robot.com/archives/14245
に公開されている.
KXRの各部品の寸法図,データが
http://kondo-robot.com/archives/faq_category/dimension
に公開されている.
-----------------------------------------------------------------
*** 2. Ubuntuでの環境設定
-----------------------------------------------------------------
ソフトウェアで自由にその身体をモデル化し,制御するプログラムを
その身体モデルに合わせて管理してゆく環境がほしくなる.
ubuntuで,euslispを使ってそれを行ってゆく環境を作り,
prog/rcb4eusを
https://gitlab.jsk.imi.i.u-tokyo.ac.jp/rcb4eus/rcb4eus
で利用できるようになっている.
ftdiのライブラリを使えるように
;;sudo apt-get install libftdi-dev
;;USBシリアルを認識させるために
;;sudo bash -c 'echo SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"165c\", ATTRS{idProduct}==\"0008\", MODE=\"0666\" > /etc/udev/rules.d/99-my-khr.rules'
USB-serialケーブルにはスイッチがついていて
serialに設定してつなぐ.
このスイッチのICS側は,個々のサーボのidを焼き込む時に使う.
cd ~/prog
git clone https://gitlab.jsk.imi.i.u-tokyo.ac.jp/rcb4eus/rcb4eus
;;svn up bvh
;;svn up models
;;cd $EUSDIR
;;ln -s ~/prog/bvh .
;;mv models models.org
;;ln -s ~/prog/models .
cd ~/prog/rcb4eus
まず,
make libs
とし,必要なライブラリをインストールする.
libftdi-dev
libopenblas-dev
gifsicle
などをapt-get installしている.
cd ~/prog/rcb4eus/MATPROD
make
する
次に,
;;euslispをインストールした後
~/prog/rcb4eus
において
make
するとlispのプログラムがコンパイルされる.
コンパイルは,compile-all.lのcompile-all関数で行っている.
コンパイルされるファイルは,
"utils.l" ;; 共通に使うもの
"tiny-xml.l" ;; xml パーザ
"odedyna.l" ;; 動力学ライブラリODEをbindする環境
"eus2wrl.l" ;; kxr-robotモデルをcollada-robotを生成する
"nn.l" ;; ニューラルネットライブラリ
"cblaslib.l" ;; 行列計算ライブラリopenblasをbindする環境
"mnist.l" ;; ニューラルネットMNISTのサンプル
"kxrdyna.l" ;; kxr-dyna "robot"による行動シミュレータ
"kxranimate.l" ;; bvhアニメーション,GIFアニメーション生成
"kxrbody.l" ;; kxrパーツ立体定義
"kxrbodyset.l" ;; kxrパーツからbodyset集合定義
"kxrlinks.l" ;; kxr用bodysetからbodyset-linkを作る
"kxrmodels.l" ;; kxr-robot全身モデルを生成する
"kxrviewer.l" ;; kxr用xwindow GUI,トップレベル
"rcb4robots.l" ;; 実機とモデル用ファイルをロードするトップレベル
"rcb4interface.l" ;; 実機とのシリアルI/Oを行う
"rcb4asm.l" ;; RCB4用命令セットのアセンブラ
"rcb4file.l" ;; RCB4用HeartToHeart用ファイルの入出力
"rcb4lisp.l" ;; RCB4用lispコンパイラ
"rcb4machine.l" ;; RCB4用命令セットのエミュレーション
"rcb4sample.l" ;; RCB4用命令で実機を動かすサンプルプログラム
となっている(2020.4.5現在)
euslispのコンパイルは,compile-fileで行われる.
ソースファイルとオブジェクトファイルの日付を比べて
ソースが変更されていた場合にコンパイルするものとして
(comp::compile-file-if-src-newer "file-name" "objdir")
で行われている.
euslispのコンパイラは,euslispのプログラムをC言語の
プログラムに変換する.生成される.c, .hファイルは
ソースファイルの.lと同じディレクトリに作られるが
compile-allの関数は"work"サブディレクトリにそれらを
移動している.
ただし,同じディレクトリにxx.lと同じxx.c,xx.hファイルは
書き換えられてしまうため,euslispの.lファイルと同じ名前の
.c,.hファイルを同じディレクトリに置いてはいけない.
-----------------------------------------------------------------
*** 3. euslispのインストール
-----------------------------------------------------------------
Ubuntu14.04では,
sudo apt-get install ros-indigo-roseus
Ubuntu16.04では,
sudo apt-get install ros-kinetic-roseus
Ubuntu18.04では,
sudo apt-get install ros-melodic-roseus
でroseusを使えるようになる.
roseusは,オリジナルのeuslispに,JSKのロボットモデル,
ロボットプログラミング環境であるirteus環境を載せた
irteusglに,rosの通信機能を追加したものとなっている.
rosを搭載していない
irteusglは,ソースから自分でbuildすることは,以下のようにすれば
可能である.
cd prog
git clone https://github.com/euslisp/jskeus.git
cd jskeus
make
最後に表示される
export EUSDIR=~/prog/jskeus/eus
export ARCHDIR=Linux64
export LD_LIBRARY_PATH=$EUSDIR/$ARCHDIR/bin:$LD_LIBRARY_PATH
export PATH=$EUSDIR/$ARCHDIR/bin:$EUSDIR/$ARCHDIR/lib:$PATH
を.bashrcなどに書き込むことでここに自分でインストールしたirteusglを
利用できるようになる.
ubuntu14.04では,https://github.com/euslisp/jskeus
のドキュメントにどのライブラリが必要かの説明がなされているが,
ubuntu16.04では,
libjpeg-dev
libgl11-mesa-dev
libglu1-mesa-dev
libpq-dev
libpng12-dev
xfonts-100dpi
xfonts-75dpi
をapt-get installしておけばirteusglをbuild可能となる.
X11のフォント登録を行うので,一度logoutかrebootを
しなおすとxwindowのサンプルプログラムを走らせる
ことができるようになる.
Xwindowを使うロボットのアニメーションサンプルの実行は,
irteusgl
(load "irteus/demo/demo.l")
configuring by "/home/inaba/prog/jskeus/eus/lib/eusrt.l"
;; readmacro ;; object ;; packsym ;; common ;; constants ;; stream ;;
string ;; loader ;; pprint ;; process ;; hashtab ;; array ;;
mathtran ;; eusdebug ;; eusforeign ;; coordinates ;; tty ;; history
;; toplevel ;; trans ;; comp ;; builtins ;; par ;; intersection ;;
geoclasses ;; geopack ;; geobody ;; primt ;; compose ;; polygon ;;
viewing ;; viewport ;; viewsurface ;; hid ;; shadow ;; bodyrel ;;
dda ;; helpsub ;; eushelp ;; xforeign ;; Xdecl ;; Xgraphics ;;
Xcolor ;; Xeus ;; Xevent ;; Xpanel ;; Xitem ;; Xtext ;; Xmenu ;;
Xscroll ;; Xcanvas ;; Xtop ;; Xapplwin
connected to Xserver DISPLAY=:0
X events are being asynchronously monitored.
;; pixword ;; RGBHLS ;; convolve ;; piximage ;; pbmfile ;;
;; image_correlation ;; oglforeign ;; gldecl ;; glconst ;; glforeign
;; ;; gluconst ;; gluforeign ;; glxconst ;; glxforeign ;; eglforeign
;; ;; eglfunc ;; glutil ;; gltexture ;; glprim ;; gleus ;; glview ;;
;; toiv-undefined ;; fstringdouble irtmath irtutil irtc irtgeoc
;; irtgraph ___time ___pgsql irtgeo euspqp pqp irtscene irtmodel
;; extending gcstack 0x6669420[16374] --> 0x6b18b30[32748] top=3f2a
;; irtdyna irtrobot irtsensor irtbvh irtcollada irtpointcloud irtx
;; eusjpeg euspng png irtimage irtglrgb irtgl irtglc irtviewer
EusLisp 9.25(be5bb75 0d3d979) for Linux64 created on ubuntu(Thu Nov 15 08:42:37 PST 2018)
(full-body-ik) ;; for humanoid
(shake-cocktail) ;; generate shaking cocktail motion using functional target-coords.
(null-space-ik) ;; for humanoid
(dual-arm-ik) ;; for tool usage
(hand-grasp) ;; for hand model
(dual-manip-ik) ;; for dual-armed object manipulation
(crank-motion) ;; for fullbody motion
(walk-motion-for-sample-robot) ;; for walking motion
(walk-motion-single-support-for-sample-robot) ;; for walking motion
(walk-motion-stair-climb-for-sample-robot) ;; for walking motion
(trot-walk-motion-for-sample-robot) ;; for walking motion
(crawl-walk-motion-for-sample-robot) ;; for walking motion
(walk-motion-for-robots) ;; for walking motion for several robot models
(test-preview-control-0) ;; Example for preview controller in walking ZMP input.
(test-preview-control-1) ;; Example for preview controller in linear ZMP transition.
(test-preview-control-2) ;; Example for preview controller to keep balance against for impulsive external force.
(test-preview-control-3) ;; Example for preview controller in long walking ZMP input.
(test-preview-control-dynamics-filter-for-sample-robot) ;; Example for dynamics filter using preview controller
(hanoi-arm) ;; for arm solving hanoi tower
(particle) ;; for particle simulation
(test-sample-1dof-closed-link-robot) ;; Example for 1dof closed-link robot.
(test-sample-2dof-closed-link-robot) ;; Example for 2dof closed-link robot.
(test-interlocking-joint-arm) ;; Example for arm with interlocking joints
(test-sample-legged-robot-with-interlocking-joints) ;; Example for legged robots with interlocking joints
(test-virtual-joint-for-rotation-axis) ;; test for virtual joint
(test-virtual-joint-for-rotation-axis-all) ;; test for virtual joint for several situations
(head-look-at-ik) ;; ik to look target by directing head camera
(hand-look-at-ik) ;; ik to look target by directing hand camera
(look-at-hand-object-ik) ;; ik to look object in hand by head camera
(look-at-ik-all) ;; all ik to look target
というような表示がなされ,ここに表示されている
(hand-grasp)などの
デモプログラムを走らせることでeuslispに用意されている
ロボットモデルでの動作サンプルを調べることができる.
apt-get installで先にroseusを入れて使うのではなく,
roseusをbuildするには,
まず,
http://wiki.ros.org/indigo/Installation/Ubuntu
や
http://wiki.ros.org/kinetic/Installation/Ubuntu
を参照して,ROSを入れて
mkdir -p catkin_ws/src
cd catkin_ws
wstool init src
sudo apt-get install ros-indigo-mongodb-store
or
sudo apt-get install ros-kinetic-mongodb-store
cd src
git clone https://github.com/jsk-ros-pkg/jsk_roseus.git jsk-ros-pkg/jsk_roseus
git clone https://github.com/jsk-ros-pkg/geneus.git jsk-ros-pkg/geneus
git clone https://github.com/euslisp/Euslisp.git euslisp/Euslisp
git clone https://github.com/euslisp/jskeus.git euslisp/jskeus
cd ..
./src/jsk-ros-pkg/jsk_roseus/setup_upstream.sh -w . -p jsk-ros-pkg/jsk_roseus
catkin build
source devel/setup.bash
roseus # roseusが立ち上がって,
$ irteusglのインタプリタが上がるか確認する.
/optでなく,~/catkin_ws以下のものが呼ばれていることを確認する.
printenv EUSDIR
として
~/catkin_wsの下のeusのあるディレクトリになっていれば
ここでbuildしたroseusを使うことができるようになる.
-----------------------------------------------------------------
*** 4. euslispの立ち上げ
-----------------------------------------------------------------
irteusgl rcb4robots.l
または
roseus rcb4robots.l
によって,
rcb4robots.l ;; Toplevel make-kxr-robot, サンプルプログラム
kxrmodels.l ;; ロボットモデル生成
rcb4robotconfig.l ;; ロボットの骨格とサーボのidとの対応付け
rcb4interface.l ;; rcb4と通信するrcb4-interfaceクラスの実装
rcb4machine.l ;; rcb4を仮想ボディでエミュレートするrcb4-machineクラス
ftdi.l ;; libftdi.so内の構造体・関数を宣言するファイル
rcb4asm.l ;; rcb4の命令のアセンブラ,逆アセンブラ
rcb4file.l ;; rcb4-file, project-file, motion-file クラスの実装
tiny-xml.l ;; xmlファイルを読み込むファイル.創造情報の千葉先生作
などがロードされる.
これらの中のクラスは,
rcb4interface.l:(defclass rcb4-interface :super propertied-object
rcb4file.l:(defclass rcb4-jump-vectors :super vector)
rcb4file.l:(defclass rcb4-motion-table :super vector)
rcb4file.l:(defclass rcb4-file :super object
rcb4file.l:(defclass rcb4-project-file :super rcb4-file
rcb4file.l:(defclass rcb4-servo-config :super object
rcb4file.l:(defclass rcb4-motion-file :super rcb4-file
rcb4file.l:(defclass rcb4-motion-code :super object
rcb4lisp.l:(defclass array-list :super object
rcb4lisp.l:(defclass stack-variables :super object
rcb4lisp.l:(defclass eval-env :super object
rcb4machine.l:(defclass rcb4-motion-table :super vector)
rcb4machine.l:(defclass rcb4-jump-vectors :super vector)
rcb4machine.l:(defclass rcb4-machine
が定義されている.
ロボット身体のモデル生成のためには,
kxrmodels.l ;; kxr-robotクラス,kxr-robot 生成関数
kxrlinks.l ;; kxr-robotを構成するbodyset-linkを作る数十の関数
kxrbodyset.l ;; bodyset-linkを作る際の要素となるbodysetを作る関数
kxrbody.l ;; bodysetを作るための基本形状要素bodyを作る関数
があり,
utils.l:(defclass kxr-body :super gl::glbody
kxrmodels.l:(defclass kxr-robot :super robot-model
kxrviewer.l:(defclass robot-control-panel :super panel
kxrviewer.l:(defclass kxrviewer :super x::irtviewer
kxrviewer.l:(defclass kxr-model-panel :super panel
のクラスが定義されている.
<other files>
eus2wrl.l ;; eus modelか
らwrlを作る.
rosrcb4.l ;; ROS sample
rosishiguro.l ;; ROS sample
kxrviewer.l ;; 近藤科学リモコン模擬GUI,ロボットモデル生成GUI
kxrmotions.l ;;
bvh/bvh-demo.l ;; モーションキャプチャデータ形式bvhを扱い表示するサンプル
nn.l ;; ニューラルネットモデルの生成.MNISTサンプルの実行関数
mnist.l ;; MNISTサンプルをテストする.
rcb4lisp.l ;; lisp形式のrcb4命令へのコンパイラ
makabe.l ;; 真壁トランスフォーマkxrl2makabe用サンプル
~/prog/bvhが
$EUSDIR/bvh
にsymbolic linkされていることを想定している.
同様に, ~/prog/modelsが
$EUSDIR/models
にsymbolic linkされていることを想定している.
-----------------------------------------------------------------
*** 5. ロボットモデルの生成
-----------------------------------------------------------------
(make-kxr-robot "kxrl2l5a3h2")
で,2脚,5軸脚,3軸腕,2軸首のロボットモデル
が*robot*に入り,2つのviewerが
2つのviewerのうち,ロボットの名前がタイトルに
表示されるviewerは,*ri*がもっているrobotの
状態を表示し,他方は*robot*を表示している.
(send *ri* :timer-on)
とした場合に実機の状態が表示されるのは*ri*が
もっているrobotへ実機の状態を反映させるために
ロボットのタイトルが出ているviewerとなる.
他方の*robot*は,通常の(objects xxxx)で
ロボットの姿勢を確認するためのviewerとして
用いる.
kxrviewer.lをロードして環境で
(make-kxr-robot "kxrl2l5a3h2")
とすると,2つのviewerに加えて,
ロボットのモデルを操作するGUIと近藤科学の
リモコンにマップされた動作を選ぶことができるGUI
の両方が生成される.
make-kxr-robotの内部でロボットモデルを作る
関数として
(kxr-make-robot "kxrl2l5a3h2")
(kxr-create-robot "kxrl2l5a3h2")
などがある.
(kxr-create-robot "kxrl2l5a3h2")
は,モデルだけが生成され,
(objects (list (kxr-create-robot "kxrl2l5a3h2")))
とするとviewerにそのロボットのモデルが生成される.
大域変数*robot*も変更はしない.内部ではrcb4-interfaceの
インスタンスも生成し,サーボとジョイント名との対応付けと
モデル構造とが対応しているかの検査を行っている.
(kxr-make-robot "kxrl2l5a3h2")
は,モデルだけを作り,サーボとジョイント名との対応付けと
モデル構造とが対応しているかの検査は行わない.
大域変数*kxrl2l5a3h2*を作りその値にモデルが代入される.
*robot*は変更しない.
(make-kxr-robot ロボット名)
(kxr-create-robot ロボット名)
(kxr-make-robot ロボット名)
で指定できるロボット名は
(kxr-all-robot-names)
で知ることができ,
"khr3" "khr3sl5a3h2" "kxrl4t" "kxrl4th" "kxrl4d" "kxrl2" "kxrl2l5a3"
"kxrl2l5a3g" "kxrl2l5a3h2" "kxrl2w2l5a3h2" "kxrl2l6a3"
"kxrl2l6a4" "kxrl2l6a4h2" "kxrl2w2l6a4h2" "kxrl2l6a5h2"
"kxrl2w2l6a5h2" "kxrl2l6a6" "kxrl2l6a6h2" "kxrl2l6a6h2n"
"kxrl2w2l6a6h2n" "kxrl2l6a7" "kxrl2l6a7h2" "kxrl2l6a7h2n"
"kxrl2l6a7h2w" "kxrl2w2l6a7h2w"
....
などがある.
これらは名前を付けて,各関節のサーボ番号が何番かの記述が
なされているもので,これら以外にも
軸数は同じでも足の取り付け幅や軸の向きの順が
異なる形態など,数は数万を越えるものとなる.
kxrmodels.lの中には,ロボットを生成する関数kxr-robotがある.当初は,
kxr-l2-robot kxr-l4-robot, kxr-l6-robotなどと2脚,4脚,6脚型のロボッ
トごとにサブクラスを設けて,それぞれのlimbの定義をそれぞれの標準的な
arm/leg 用に作ってきていたが,2脚,4脚,6脚でも同じ脚関節構造の脚を
作ることも可能なものであり,サブクラス構造で行うのではなく,kxr-robot
のみとして,腕と脚で本数は自由に設定できるように2020年3月に改造を行っ
た.
脚の本数を指定するのではなく,脚腕を伸ばしてゆく土台をkxr-robot
生成関数に:body :l4dのように指定するようにした.
:bodyには,
:l4d ;; 4脚にpitch軸を出す胴体
:dyp ;; 真壁ロボットの2脚pitch軸,torso用差動台
:dyp-z ;; 真壁ロボットの2脚pitch軸,torso用Yaw軸
:lyp-low ;; 2脚pitch軸が下でtorso用Yaw軸の腰
:lyp-high ;; 2脚pitch軸が上でtorso用Yaw軸の腰
:l2l6 ;; 2脚Yaw軸2腕Pitch軸の胴体
:l2l6w ;; 2脚Yaw軸の間隔が広い2腕Pitch軸の胴体
:l2l6r ;; 2脚Yaw軸サーボが横を向いている2腕Pitch軸の胴体
:l2l6c ;; 2脚Yaw軸とtorso用Yaw軸の腰
:l2l5 ;; 2脚Roll軸接続2腕Pitch軸の胴体
:l4t ;; 4脚Yaw軸の胴体
:l6 ;; 6脚Yaw軸の胴体
4,6脚では,:arm/:legで腕と脚を指定していたが,2脚でも:arm/:leg
を指定してあれば4脚,6脚用のarmやlegを付けることができ,
:armがなければ,:shoulder, :wristなどを指定する腕
:legがなければ,:crotch, :ankleなどを指定する脚を
肩:shoulderについて
肩:shoulderでは、:cross, :y, nilの3種類
肘は:elbow-pで一種類、手首:wristは、:cross,:cross-y,:y-r,:rの4種類
手:gripperは、:wheel, t, nilの3種類
脚について、関節数:l6が :rotate, :wide, tの3種類と:l6を指定しない5軸がある.
(kxr-robot :body :l2l5 :head :e :gripper t)
(脚5軸x2、腕3軸x2、把持1軸x2、首2軸) ;; 20関節
(kxr-robot :body :l2l5 :l6 :wide :head :e :gripper t)
(脚6軸x2、腕3軸x2、把持1軸x2、首2軸) ;; 22関節
(kxr-robot :body :l2l5 :ankle :w :head :e :gripper :wheel) ;; 22関節
(脚5軸x2、足首車輪1軸x2、腕3軸x2、把持1軸x2、手受動車輪1軸x2、首2軸)
(kxr-robot :body :l2l6r :ankle :w :head :e :gripper :wheel) ;; 24関節
(脚6軸x2、足首車輪1軸x2、腕3軸x2、把持1軸x2、手受動車輪1軸x2、首2軸)
(kxr-robot :body :l2l6r :shoulder :cross :ankle :w :head :e :gripper :wheel)
(脚6軸x2、足首車輪1軸x2、腕4軸x2、把持1軸x2、手受動車輪1軸x2、首2軸) ;; 26関節
(kxr-robot :body :l2l6r :shoulder :y :ankle :w :head :e :gripper :wheel)
(脚6軸x2、足首車輪1軸x2、腕4軸x2、把持1軸x2、手受動車輪1軸x2、首2軸);; 26関節
(kxr-robot :body :l2l6 :shoulder :y :wrist :y :ankle :w :head :e :gripper :wheel)
(脚6軸x2、足首車輪1軸x2、腕5軸x2、把持1軸x2、手受動車輪1軸x2、首2軸) ;; 28関節
(kxr-robot :body :l2l6 :shoulder :y :wrist :y-r
:ankle :w :head :e :gripper :wheel) ;; 30関節
(脚6軸x2、足首車輪1軸x2、腕6軸x2、把持1軸x2、手受動車輪1軸x2、首2軸)
(kxr-robot :body :l2l6 :shoulder :y :wrist :cross
:ankle :w :head :e :gripper :wheel) ;; 30関節
(脚6軸x2、足首車輪1軸x2、腕6軸x2、把持1軸x2、手受動車輪1軸x2、首2軸)
(kxr-robot :body :l2l6 :shoulder :cross :wrist :cross
:ankle :w :head :e :gripper :wheel) ;; 30関節
(脚6軸x2、足首車輪1軸x2、腕6軸x2、把持1軸x2、手受動車輪1軸x2、首2軸)
(kxr-robot :body :l2l6 :shoulder :cross
:wrist :cross-y :ankle :w :head :e :gripper :wheel) ;; 32関節
(脚6軸x2、足首車輪1軸x2、腕7軸x2、把持1軸x2、手受動車輪1軸x2、首2軸)
(kxr-l2 :shoulder :cross :wrist :cross-y
:crotch :w :ankle :w :head :e :gripper :wheel)
(脚6軸x2、脚元車輪1軸x2、 足首車輪1軸x2、腕7軸x2、
把持1軸x2、手受動車輪1軸x2、首2軸) ;; 34関節
*kxr-l2s-options* ;; よく使う名前でrcb4robotconfig.lの実機の呼び名と指定引数
*kxr-forearm-options* 7
*kxr-arm-options* 63(7 x 3 x 3(gripper,wheel))
*kxr-head-options* 4
*kxr-armhead-options* 252(4 x 7 x 3 x 3)
*kxr-l2l5all-options* 1008(4 x 252)
*kxr-l2l6all-options* 1008(4 x 252)
*kxr-l2nl6all-options* 1008(4 x 252)
*kxr-l2wl6all-options* 1008(4 x 252)
*kxr-l4all-options* 9
*kxr-l6all-options* 3
*kxr-all-options* 4044 = (+ 1008 1008 1008 1008 9 3)
*kxr-all-names* list of function names
(send *robot* :init-limb :head :head :e)
(send *robot* :init-limb :larm :shoulder :cross :wrist :cross)
とすると,後から変更も可能となっている.
これにより左右非対称な腕、脚のものも生成可能.
rcb4robotconfig.l
の中には、実機ですでに製作したものや,作ってはいないが
オプション指定に何があるのかがわかるようにサンプルが書いてある.
2脚ロボットで最後にnがついているのは,2脚の幅が狭いもので,
wは2脚の幅が広いものになっている例や,
2脚で足首の後ろに車輪がついているものはl2w2となっている.
近藤科学の基本セットの2脚ロボットは,
kxrl2l5a3やkxrl2l5a3h2などで,4脚亀形はkxrl4t,
4脚車輪輪形はkxrl4r,
4脚恐竜型はkxrl4d,6脚型はkxrl6でモデル生成,
実機制御が可能となっている.
kxrl2w2l5a4h2は,足首に能動車輪が付き,グリッパの外に受動車輪を付けた
ロボットとなっており,足首車輪での倒立バランス制御,転倒状態からバラン
ス姿勢への形態遷移,バランス制御起動姿勢の学習などに用いられている.
(make-kxr-robot "kxrl2w2l5a4h2")
(("kxrl2w2l5a4h2" "kxrl2w2l5a4h2rw" "kxrl2kimura2" "kxrl2sato")
(:body :l2l5 :type :l2 :head :e :active-wheel :ankle :wrist :r
:gripper t :passive-wheel :gripper :neck :a :sole t) ;; 24
(2 :rarm-shoulder-p 1) (3 :larm-shoulder-p -1)
(4 :rarm-shoulder-r -1) (5 :larm-shoulder-r 1)
(6 :rarm-elbow-p 1) (7 :larm-elbow-p 1)
(8 :rleg-crotch-r 1) (9 :lleg-crotch-r 1)
(10 :rleg-crotch-p -1) (11 :lleg-crotch-p -1)
(12 :rleg-knee-p 1) (13 :lleg-knee-p 1)
(14 :rleg-ankle-p -1) (15 :lleg-ankle-p -1)
(16 :rleg-ankle-r -1) (17 :lleg-ankle-r -1)
(18 :rarm-gripper-r 1/2) (19 :larm-gripper-r 1/2)
(18 :rarm-gripper2-r 1/2) (19 :larm-gripper2-r 1/2)
(20 :rleg-ankle-w 1) (21 :lleg-ankle-w -1)
(22 :rarm-wrist-r -1) (23 :larm-wrist-r -1)
(30 :head-neck-y -1) (32 :head-neck-p 1)
)
2019年7月より真壁ロボットの実機ができてきたので,kxrl2makabe
という名前でモデル生成が可能となるようにし,KXRパーツでは
無いパーツもすべてではないが主要なリンクを作ってある.
(make-kxr-robot "kxrl2makabe")
(("kxrl2makabe" "kxrl2w2t2l6a7h1") ;; 33
(:body :dyp :type :l2 :active-wheel :knee
:shoulder :y-p-r :wrist :r :passive-wheel :wrist
:wrist-sensor t :gripper-inner t :gripper-sensor :finger1 :sole t
:sole-sensor t :torso :dy-p :neck-axis :p :head :m5s :head-length 20)
(2 :rarm-shoulder-p 1) (3 :larm-shoulder-p -1)
(4 :rarm-shoulder-r -1) (5 :larm-shoulder-r -1)
(6 :rarm-elbow-p 1) (7 :larm-elbow-p -1)
(8 :rleg-crotch-r -1) (9 :lleg-crotch-r -1)
(10 :rleg-crotch-p -3/2) (11 :lleg-crotch-p 3/2)
(12 :rleg-knee-p -1) (13 :lleg-knee-p -1)
(14 :rleg-ankle-p -1) (15 :lleg-ankle-p -1)
(16 :rleg-ankle-r -1) (17 :lleg-ankle-r -1)
(18 :rarm-gripper-r -1/2) (19 :larm-gripper-r -1/2)
(18 :rarm-gripper2-r -1/2) (19 :larm-gripper2-r -1/2)
(20 :rleg-knee-w 1) (21 :lleg-knee-w -1)
(22 :rarm-shoulder-y -1) (23 :larm-shoulder-y -1)
(24 :rleg-crotch-y 1) (25 :lleg-crotch-y 1)
(26 :rarm-elbow-y 1) (27 :larm-elbow-y 1)
(28 :rarm-wrist-r 1) (29 :larm-wrist-r -1)
(30 :rarm-wrist-y 1) (31 :larm-wrist-y 1)
(32 :torso-chest-y -3/4) (33 :torso-chest-y -3/4)
(32 :torso-chest-p 3/2) (33 :torso-chest-p -3/2)
(34 :head-neck-p 1)
;;
(42 ("rarm" "palm" "gripper-")) ;; sensor-board 21
(50 ("larm" "palm" "gripper-")) ;; sensor-board 25
(38 ("rarm" "joint" "wrist")) ;; sensor-board 19
(46 ("larm" "joint" "wrist")) ;; sensor-board 23
(44 ("rleg" "sole")) ;; sensor-board 22
(52 ("lleg" "sole")) ;; sensor-board 26
)
KXRパーツをできるだけ再利用した真壁ロボットとして,
(make-kxr-robot "kxrl2makabel")
というのも作ってあり,両脚の間隔が広くなるが車の形態も可能だが,
肩の前輪のステアリングの可動範囲が限定されてしまっている.
膝車輪の直交軸のパーツは少し削る必要がある.
("kxrl2makabel" ;; 34 makabe low cost structure
(:body :lyp-low :type :l2 :knee-type :lp :active-wheel :knee
:shoulder :uy-p-r :wrist :r :passive-wheel :wrist
:gripper-inner t :torso :ly-p :sole-sensor t
:neck-axis :p :head :m5 :head-length 20 :sole t)
(2 :rarm-shoulder-p 1) (3 :larm-shoulder-p -1)
(4 :rarm-shoulder-r -1) (5 :larm-shoulder-r -1)
(6 :rarm-elbow-p 1) (7 :larm-elbow-p -1)
(8 :rleg-crotch-r -1) (9 :lleg-crotch-r -1)
(10 :rleg-crotch-p -3/2) (11 :lleg-crotch-p 3/2)
(12 :rleg-knee-p -1) (13 :lleg-knee-p -1)
(14 :rleg-ankle-p -1) (15 :lleg-ankle-p -1)
(16 :rleg-ankle-r -1) (17 :lleg-ankle-r -1)
(18 :rarm-gripper-r -1/2) (19 :larm-gripper-r -1/2)
(18 :rarm-gripper2-r -1/2) (19 :larm-gripper2-r -1/2)
(20 :rleg-knee-w 1) (21 :lleg-knee-w -1)
(22 :rarm-shoulder-y -1) (23 :larm-shoulder-y -1)
(24 :rleg-crotch-y 1) (25 :lleg-crotch-y 1)
(26 :rarm-elbow-y 1) (27 :larm-elbow-y 1)
(28 :rarm-wrist-r 1) (29 :larm-wrist-r -1)
(30 :rarm-wrist-y 1) (31 :larm-wrist-y 1)
(32 :torso-chest-y -3/4) (33 :torso-chest-y -3/4)
(32 :torso-chest-p 3/2) (33 :torso-chest-p -3/2)
(34 :head-neck-p 1)
)
(make-kxr-robot "kxrl2t2l6a7h2yprb")
は,torsoにyaw,pitch軸をもち,脚6軸,腕7軸グリッパにセンサボード
を搭載したロボットの例.動作教示,テレオペのための例.
(("kxrl2t2l6a7h2yprb" ) ;; 32 from kxrl2l6a7h2w's arm 2020.1.8
(:body :l2l6c :type :l2 :torso :y-p :shoulder :cross :wrist :y-cross
:gripper t :head :e :neck :b :gripper-sensor :finger1 :sole t)
(2 :rarm-shoulder-p 1 30) (3 :larm-shoulder-p -1 -30)
(4 :rarm-shoulder-r 1) (5 :larm-shoulder-r -1)
(6 :rarm-elbow-p 1 90) (7 :larm-elbow-p 1 90)
(8 :rleg-crotch-r 1) (9 :lleg-crotch-r 1)
(10 :rleg-crotch-p -1) (11 :lleg-crotch-p -1)
(12 :rleg-knee-p 1 -45) (13 :lleg-knee-p 1 -45)
(14 :rleg-ankle-p -1 45) (15 :lleg-ankle-p -1 45)
(16 :rleg-ankle-r -1) (17 :lleg-ankle-r -1)
(18 :rarm-gripper-r 1/2) (19 :larm-gripper-r 1/2)
(18 :rarm-gripper2-r 1/2) (19 :larm-gripper2-r 1/2)