├── .gitignore ├── meshes ├── wheel.STL ├── wheel.SLDPRT ├── kxr_auv │ ├── auv_backpack.STL │ ├── M5_camera_head.STL │ ├── auv_backpack_mount.STL │ └── buoyancybody-t35.STL ├── foot-plate.dae └── mesh_EUCLID-HEAD.dae ├── doc └── Robot_Assembler説明.pdf ├── sample ├── kxr_auv │ ├── test.urdf.euscollada.yaml │ ├── torso.urdf.euscollada.yaml │ ├── lleg.urdf.euscollada.yaml │ ├── rleg.urdf.euscollada.yaml │ ├── larm.urdf.euscollada.yaml │ ├── rarm.urdf.euscollada.yaml │ ├── test.roboasm.l │ ├── test.urdf.gz_controller.yaml │ ├── torso.urdf.gz_controller.yaml │ ├── lleg.urdf.gz_controller.yaml │ ├── rleg.urdf.gz_controller.yaml │ ├── larm.urdf.gz_controller.yaml │ ├── rarm.urdf.gz_controller.yaml │ ├── kxr_auv_fullbody.urdf.euscollada.yaml │ ├── kxr_auv_fullbody_initial.urdf.euscollada.yaml │ ├── kxr_auv_fullbody_model.urdf.euscollada.yaml │ ├── kxr_auv_fullbody.urdf.gz_controller.yaml │ ├── kxr_auv_fullbody_initial.urdf.gz_controller.yaml │ ├── merge.l │ └── larm.roboasm.l ├── FIXED_ARM.urdf.euscollada.yaml ├── SAMPLE.urdf.euscollada.orig.yaml ├── SAMPLE_HUMANOID.urdf.euscollada.orig.yaml ├── FIXED_ARM.urdf.gz_controller.yaml ├── SAMPLE.urdf.euscollada.yaml ├── SAMPLE.urdf.gz_controller.yaml ├── FIXED_ARM.urdf.xacro ├── kxr │ ├── kxr_head.roboasm.l │ ├── kxr_larm.roboasm.l │ ├── kxr_rarm.roboasm.l │ ├── kxr-merge-sample.l │ ├── sensor_sample.roboasm.l │ └── kxr_body.roboasm.l ├── 1st_assignment │ ├── 48-196639MHATTORI.roboasm.l │ ├── 37-196321_3388049435_CREEPINGROBO.roboasm.l │ ├── 48-196543.roboasm.l │ ├── 47-206684TEST5.roboasm.l │ └── 37-196957.roboasm.l ├── SAMPLE_HUMANOID.urdf.gz_controller.yaml ├── SAMPLE_HUMANOID.urdf.xacro ├── SAMPLE_HUMANOID.urdf.euscollada.yaml └── kxr_rcb4robots │ └── kxrl2l6a6h2.urdf.euscollada.fixed.yaml ├── config ├── kxr_parts03_button_layout.yaml ├── kxr_parts04_button_layout.yaml ├── parts01_button_layout.yaml ├── robot_assembler_tabbed_buttons.yaml ├── kxr_parts02_button_layout.yaml ├── robot_assembler_main_buttons_layout.yaml ├── parts02_button_layout.yaml ├── robot_assembler_module_buttons_layout.yaml ├── robot_assembler_kxr_tabbed_buttons.yaml ├── robot_assembler.rosinstall ├── parts00_button_layout.yaml ├── kxr_parts00_button_layout.yaml ├── kxr_parts01_button_layout.yaml ├── robot_assembler_buttons_layout.yaml ├── robot_assembler_kxr_buttons_layout.yaml └── robot_assembler_buttons_new.perspective ├── gazebo ├── urdf_check.launch ├── models │ ├── ra_basket │ │ ├── model.config │ │ └── model.sdf │ ├── ra_table │ │ ├── model.config │ │ └── model.sdf │ ├── ra_wall_blue │ │ ├── model.config │ │ └── model.sdf │ ├── ra_wall_cyan │ │ ├── model.config │ │ └── model.sdf │ ├── ra_wall_red │ │ ├── model.config │ │ └── model.sdf │ ├── ra_ball_large │ │ ├── model.config │ │ └── model.sdf │ ├── ra_ball_small │ │ ├── model.config │ │ └── model.sdf │ ├── ra_cube_large │ │ ├── model.config │ │ └── model.sdf │ ├── ra_cube_medium │ │ ├── model.config │ │ └── model.sdf │ ├── ra_cube_small │ │ ├── model.config │ │ └── model.sdf │ ├── ra_wall_green │ │ ├── model.config │ │ └── model.sdf │ ├── ra_wall_purple │ │ ├── model.config │ │ └── model.sdf │ ├── ra_wall_yellow │ │ ├── model.config │ │ └── model.sdf │ ├── ra_cylinder_large │ │ ├── model.config │ │ └── model.sdf │ ├── ra_cylinder_small │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_can │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_step_l │ │ └── model.config │ ├── rescue_step_m │ │ └── model.config │ ├── rescue_step_s │ │ └── model.config │ ├── rescue_step_x │ │ └── model.config │ ├── rescue_block_blue │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_block_gray │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_block_pink │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_block_beige │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_block_black │ │ ├── model.config │ │ └── model.sdf │ ├── rescue_block_brown │ │ ├── model.config │ │ └── model.sdf │ └── rescue_block_yellow │ │ ├── model.config │ │ └── model.sdf ├── range_sample.py ├── robot_assembler_gazebo_world.launch ├── worlds │ ├── table_manipulation.world │ └── sample_maze.world ├── move_sample.py ├── robot_assembler_gazebo.launch └── robot_assembler_gazebo_robot.launch ├── docker ├── exec_docker.sh ├── docker-compose.assemble.yaml ├── Dockerfile.for_run ├── Dockerfile.assembler └── run_docker.sh ├── scripts ├── create_urdf.sh ├── create_model_with_sensors.sh └── dump_yaml_to_sexp.py ├── euslisp ├── compile.sh ├── compile-kxr-robot.l ├── README.md ├── assembled-robot-interface.l └── eus-yaml.l ├── launch ├── kxr_assembler.launch ├── robot_assembler.launch └── robot_assembler_buttons.launch ├── LICENSE ├── README.md ├── package.xml ├── CMakeLists.txt └── test └── test-roboasm-base.l /.gitignore: -------------------------------------------------------------------------------- 1 | *.so -------------------------------------------------------------------------------- /meshes/wheel.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/meshes/wheel.STL -------------------------------------------------------------------------------- /meshes/wheel.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/meshes/wheel.SLDPRT -------------------------------------------------------------------------------- /doc/Robot_Assembler説明.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/doc/Robot_Assembler説明.pdf -------------------------------------------------------------------------------- /sample/kxr_auv/test.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - hoge : rarm-hoge 4 | -------------------------------------------------------------------------------- /meshes/kxr_auv/auv_backpack.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/meshes/kxr_auv/auv_backpack.STL -------------------------------------------------------------------------------- /meshes/kxr_auv/M5_camera_head.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/meshes/kxr_auv/M5_camera_head.STL -------------------------------------------------------------------------------- /meshes/kxr_auv/auv_backpack_mount.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/meshes/kxr_auv/auv_backpack_mount.STL -------------------------------------------------------------------------------- /meshes/kxr_auv/buoyancybody-t35.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agent-system/robot_assembler/HEAD/meshes/kxr_auv/buoyancybody-t35.STL -------------------------------------------------------------------------------- /config/kxr_parts03_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: sensor joint-base' 2 | service: 'robot_assembler/parts/use_sensor_joint_base' 3 | column: 0 4 | - name: 'Add: M5-Camera' 5 | service: 'robot_assembler/parts/use_m5_camera' 6 | column: 0 7 | -------------------------------------------------------------------------------- /sample/kxr_auv/torso.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - larm-shoulder-p : rarm-larm-shoulder-p 4 | - rarm-shoulder-p : rarm-rarm-shoulder-p 5 | - head-neck-y : rarm-head-neck-y 6 | - head-neck-p : rarm-head-neck-p 7 | -------------------------------------------------------------------------------- /sample/kxr_auv/lleg.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - lleg-crotch-r : rarm-lleg-crotch-r 4 | - lleg-crotch-p : rarm-lleg-crotch-p 5 | - lleg-knee-p : rarm-lleg-knee-p 6 | - lleg-ankle-p : rarm-lleg-ankle-p 7 | - lleg-ankle-r : rarm-lleg-ankle-r 8 | -------------------------------------------------------------------------------- /sample/kxr_auv/rleg.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - rleg-crotch-r : rarm-rleg-crotch-r 4 | - rleg-crotch-p : rarm-rleg-crotch-p 5 | - rleg-knee-p : rarm-rleg-knee-p 6 | - rleg-ankle-p : rarm-rleg-ankle-p 7 | - rleg-ankle-r : rarm-rleg-ankle-r 8 | -------------------------------------------------------------------------------- /sample/kxr_auv/larm.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - larm-shoulder-r : rarm-larm-shoulder-r 4 | - larm-shoulder-y : rarm-larm-shoulder-y 5 | - larm-elbow-p : rarm-larm-elbow-p 6 | - larm-gripper-r : rarm-larm-gripper-r 7 | - larm-gripper2-r : rarm-larm-gripper2-r 8 | -------------------------------------------------------------------------------- /sample/kxr_auv/rarm.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - rarm-shoulder-r : rarm-rarm-shoulder-r 4 | - rarm-shoulder-y : rarm-rarm-shoulder-y 5 | - rarm-elbow-p : rarm-rarm-elbow-p 6 | - rarm-gripper-r : rarm-rarm-gripper-r 7 | - rarm-gripper2-r : rarm-rarm-gripper2-r 8 | -------------------------------------------------------------------------------- /sample/FIXED_ARM.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - JOINT0 : rarm-JOINT0 4 | - JOINT1 : rarm-JOINT1 5 | - JOINT2 : rarm-JOINT2 6 | - JOINT3 : rarm-JOINT3 7 | - JOINT4 : rarm-JOINT4 8 | - JOINT5 : rarm-JOINT5 9 | - JOINT6 : rarm-JOINT6 10 | - JOINT7 : rarm-JOINT7 11 | -------------------------------------------------------------------------------- /gazebo/urdf_check.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /gazebo/models/ra_basket/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_basket 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_table/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_table 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_blue/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_wall_blue 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_cyan/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_wall_cyan 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_red/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_wall_red 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_ball_large/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_ball_large 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_ball_small/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_ball_small 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_cube_large/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_cube_large 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_cube_medium/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_cube_medium 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_cube_small/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_cube_small 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_green/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_wall_green 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_purple/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_wall_purple 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_yellow/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_wall_yellow 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_cylinder_large/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_cylinder_large 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/ra_cylinder_small/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | ra_cylinder_small 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | for Robot Assembler 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_can/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_can 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_step_l/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_step_l 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_step_m/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_step_m 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_step_s/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_step_s 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_step_x/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_step_x 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_blue/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_blue 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_gray/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_gray 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_pink/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_pink 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_beige/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_beige 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_black/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_black 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_brown/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_brown 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_yellow/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | rescue_block_yellow 4 | 1.0 5 | model.sdf 6 | 7 | 8 | YoheiKakiuchi 9 | youhei@jsk.imi.i.u-tokyo.ac.jp 10 | 11 | 12 | 13 | model for https://humanoid-rescon.org/ 14 | 15 | 16 | -------------------------------------------------------------------------------- /sample/SAMPLE.urdf.euscollada.orig.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - JOINT0 : rarm-JOINT0 4 | - JOINT1 : rarm-JOINT1 5 | - JOINT2 : rarm-JOINT2 6 | - JOINT3 : rarm-JOINT3 7 | - JOINT4 : rarm-JOINT4 8 | - JOINT5 : rarm-JOINT5 9 | - JOINT6 : rarm-JOINT6 10 | - JOINT7 : rarm-JOINT7 11 | - JOINT8 : rarm-JOINT8 12 | - JOINT9 : rarm-JOINT9 13 | - JOINT10 : rarm-JOINT10 14 | - JOINT11 : rarm-JOINT11 15 | -------------------------------------------------------------------------------- /sample/kxr_auv/test.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :s3301) (:parts-name :s3301_11476_0)) 2 | ((:robot-parts-point :s3301_11476_0/horn) 3 | (:parts-name :upper-arm26_11584_0) 4 | (:parts-type :upper-arm26) 5 | (:parts-point :upper-arm26_11584_0/horn-hole) 6 | (:configuration :fixed)) 7 | (:assemble-config 8 | (:actuator-name ((:s3301_11476_0/horn "JointA"))) 9 | (:initial-coords "(make-coords :rpy (list 0 0 0))") 10 | ) 11 | ) 12 | -------------------------------------------------------------------------------- /sample/kxr_auv/test.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - hoge 11 | gains: 12 | hoge: {p: 25, i: 0, d: 0} 13 | -------------------------------------------------------------------------------- /config/kxr_parts04_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: auv backpack' 2 | service: 'robot_assembler/parts/use_auv_backpack' 3 | column: 0 4 | - name: 'Add: auv backpack mount' 5 | service: 'robot_assembler/parts/use_auv_backpack_mount' 6 | column: 0 7 | - name: 'Add: buoyancybody-t35' 8 | service: 'robot_assembler/parts/use_buoyancybody_t35' 9 | column: 0 10 | - name: 'Add: M5-Camera-Head' 11 | service: 'robot_assembler/parts/use_m5_camera_head' 12 | column: 0 13 | 14 | 15 | -------------------------------------------------------------------------------- /docker/exec_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | OPT=${DOCKER_OPTION} ## -it --cpuset-cpus 0-2 4 | cname=${DOCKER_CONTAINER:-"cont_robot_assembler"} ## name of container (should be same as in run.sh) 5 | 6 | VAR=${@:-"bash --rcfile /my_entryrc"} 7 | if [ $# -eq 0 -a -z "$OPT" ]; then 8 | OPT=-it 9 | fi 10 | 11 | docker exec ${OPT} \ 12 | --privileged \ 13 | --env="DISPLAY" \ 14 | --env="QT_X11_NO_MITSHM=1" \ 15 | --workdir="/userdir" \ 16 | ${cname} ${VAR} 17 | -------------------------------------------------------------------------------- /config/parts01_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: FR12-X102' 2 | service: 'robot_assembler/parts/use_fr12_x102' 3 | column: 0 4 | - name: 'Add: FR12-X103' 5 | service: 'robot_assembler/parts/use_fr12_x103' 6 | column: 0 7 | - name: 'Add: HR12-F101' 8 | service: 'robot_assembler/parts/use_hr12_f101' 9 | column: 0 10 | - name: 'Add: FR12-E170' 11 | service: 'robot_assembler/parts/use_fr12_e170' 12 | column: 0 13 | - name: 'Add: FR12-E171' 14 | service: 'robot_assembler/parts/use_fr12_e171' 15 | column: 0 16 | -------------------------------------------------------------------------------- /config/robot_assembler_tabbed_buttons.yaml: -------------------------------------------------------------------------------- 1 | tabbed_layout: 2 | tab_list: ['parts0', 'parts1', 'parts2'] 3 | parts0: 4 | name: 'parts(act)' 5 | type: push 6 | yaml_file: 'package://robot_assembler/config/parts00_button_layout.yaml' 7 | parts1: 8 | name: 'parts(sub)' 9 | type: push 10 | yaml_file: 'package://robot_assembler/config/parts01_button_layout.yaml' 11 | parts2: 12 | name: 'parts(body)' 13 | type: push 14 | yaml_file: 'package://robot_assembler/config/parts02_button_layout.yaml' 15 | -------------------------------------------------------------------------------- /gazebo/range_sample.py: -------------------------------------------------------------------------------- 1 | import rospy 2 | from sensor_msgs.msg import LaserScan 3 | 4 | 5 | def callback(msg): 6 | ## see descripton 7 | ## http://docs.ros.org/melodic/api/sensor_msgs/html/msg/LaserScan.html 8 | rospy.loginfo('min %f -(%f)-> max %f'%( 9 | msg.angle_min, msg.angle_increment, msg.angle_max)) 10 | #msg.range_min 11 | #msg.range_max 12 | #msg.ranges 13 | 14 | if __name__ == '__main__': 15 | rospy.init_node('range_listener', anonymous=True) 16 | 17 | rospy.Subscriber("range_sensor", LaserScan, callback) 18 | 19 | rospy.spin() 20 | -------------------------------------------------------------------------------- /config/kxr_parts02_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: body-plate' 2 | service: 'robot_assembler/parts/use_body_plate' 3 | column: 0 4 | - name: 'Add: battery-leg-plate' 5 | service: 'robot_assembler/parts/use_battery_leg_plate' 6 | column: 0 7 | - name: 'Add: battery-box' 8 | service: 'robot_assembler/parts/use_battery_box' 9 | column: 0 10 | - name: 'Add: back-pack' 11 | service: 'robot_assembler/parts/use_back_pack' 12 | column: 0 13 | - name: 'Add: sole' 14 | service: 'robot_assembler/parts/use_sole' 15 | column: 0 16 | - name: 'Add: wheel' 17 | service: 'robot_assembler/parts/use_wheel' 18 | column: 0 19 | -------------------------------------------------------------------------------- /config/robot_assembler_main_buttons_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Align' 2 | service: 'robot_assembler/command/align' 3 | column: 0 4 | - name: 'Undo Align' 5 | service: 'robot_assembler/command/unalign' 6 | column: 0 7 | - name: 'Attach' 8 | service: 'robot_assembler/command/attach' 9 | column: 0 10 | - name: 'Undo' 11 | service: 'robot_assembler/command/undo' 12 | column: 0 13 | - name: 'Parse Structure' 14 | service: 'robot_assembler/command/parse' 15 | column: 0 16 | - name: 'Write URDF' 17 | service: 'robot_assembler/command/write_urdf' 18 | column: 0 19 | - name: 'Delete All' 20 | service: 'robot_assembler/command/delete_all' 21 | column: 0 22 | -------------------------------------------------------------------------------- /scripts/create_urdf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ./create_urdf.sh aaa.roboasm.l bbb.urdf [ ccc.l ] [ ddd.yaml ] [ robotname ] 3 | 4 | ROBOASM_FILE=$1 5 | URDF_FILE=$2 6 | arg3_str="" 7 | if [ "$3" != "" ]; then 8 | arg3_str=" :euslisp-model-file-name \"$3\"" 9 | fi 10 | arg4_str="" 11 | if [ "$4" != "" ]; then 12 | arg4_str=" :collada-yaml-file-name \"$4\"" 13 | fi 14 | arg5_str="" 15 | if [ "$5" != "" ]; then 16 | arg5_str=" :robotname \"$5\"" 17 | fi 18 | 19 | prog_str="(progn (load \"package://robot_assembler/euslisp/compile-kxr-robot.l\")" 20 | arg_str="(compile-kxr-robot \"${ROBOASM_FILE}\" \"${URDF_FILE}\" "$arg3_str$arg4_str$arg5_str" )(exit))" 21 | 22 | roseus "$prog_str$arg_str" 23 | -------------------------------------------------------------------------------- /sample/kxr_auv/torso.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - larm-shoulder-p 11 | - rarm-shoulder-p 12 | - head-neck-y 13 | - head-neck-p 14 | gains: 15 | larm-shoulder-p: {p: 25, i: 0, d: 0} 16 | rarm-shoulder-p: {p: 25, i: 0, d: 0} 17 | head-neck-y: {p: 25, i: 0, d: 0} 18 | head-neck-p: {p: 25, i: 0, d: 0} 19 | -------------------------------------------------------------------------------- /sample/kxr_auv/lleg.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - lleg-crotch-r 11 | - lleg-crotch-p 12 | - lleg-knee-p 13 | - lleg-ankle-p 14 | - lleg-ankle-r 15 | gains: 16 | lleg-crotch-r: {p: 25, i: 0, d: 0} 17 | lleg-crotch-p: {p: 25, i: 0, d: 0} 18 | lleg-knee-p: {p: 25, i: 0, d: 0} 19 | lleg-ankle-p: {p: 25, i: 0, d: 0} 20 | lleg-ankle-r: {p: 25, i: 0, d: 0} 21 | -------------------------------------------------------------------------------- /sample/kxr_auv/rleg.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - rleg-crotch-r 11 | - rleg-crotch-p 12 | - rleg-knee-p 13 | - rleg-ankle-p 14 | - rleg-ankle-r 15 | gains: 16 | rleg-crotch-r: {p: 25, i: 0, d: 0} 17 | rleg-crotch-p: {p: 25, i: 0, d: 0} 18 | rleg-knee-p: {p: 25, i: 0, d: 0} 19 | rleg-ankle-p: {p: 25, i: 0, d: 0} 20 | rleg-ankle-r: {p: 25, i: 0, d: 0} 21 | -------------------------------------------------------------------------------- /sample/kxr_auv/larm.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - larm-shoulder-r 11 | - larm-shoulder-y 12 | - larm-elbow-p 13 | - larm-gripper-r 14 | - larm-gripper2-r 15 | gains: 16 | larm-shoulder-r: {p: 25, i: 0, d: 0} 17 | larm-shoulder-y: {p: 25, i: 0, d: 0} 18 | larm-elbow-p: {p: 25, i: 0, d: 0} 19 | larm-gripper-r: {p: 25, i: 0, d: 0} 20 | larm-gripper2-r: {p: 25, i: 0, d: 0} 21 | -------------------------------------------------------------------------------- /sample/kxr_auv/rarm.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - rarm-shoulder-r 11 | - rarm-shoulder-y 12 | - rarm-elbow-p 13 | - rarm-gripper-r 14 | - rarm-gripper2-r 15 | gains: 16 | rarm-shoulder-r: {p: 25, i: 0, d: 0} 17 | rarm-shoulder-y: {p: 25, i: 0, d: 0} 18 | rarm-elbow-p: {p: 25, i: 0, d: 0} 19 | rarm-gripper-r: {p: 25, i: 0, d: 0} 20 | rarm-gripper2-r: {p: 25, i: 0, d: 0} 21 | -------------------------------------------------------------------------------- /config/parts02_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: Body(A)' 2 | service: 'robot_assembler/parts/use_body_a' 3 | column: 0 4 | - name: 'Add: Body(A) new' 5 | service: 'robot_assembler/parts/use_body_a_new' 6 | column: 0 7 | - name: 'Add: Body(B)' 8 | service: 'robot_assembler/parts/use_body_b' 9 | column: 0 10 | - name: 'Add: FootPlate' 11 | service: 'robot_assembler/parts/use_footplate' 12 | column: 0 13 | - name: 'Add: FixedPlate' 14 | service: 'robot_assembler/parts/use_fixedplate' 15 | column: 0 16 | - name: 'Add: BackBasket' 17 | service: 'robot_assembler/parts/use_backbasket' 18 | column: 0 19 | - name: 'Add: Body(C)' 20 | service: 'robot_assembler/parts/use_body_c' 21 | column: 0 22 | - name: 'Add: Wheel' 23 | service: 'robot_assembler/parts/use_wheel' 24 | column: 0 25 | -------------------------------------------------------------------------------- /config/robot_assembler_module_buttons_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Align' 2 | service: 'robot_assembler/align' 3 | column: 0 4 | - name: 'Undo Align' 5 | service: 'robot_assembler/unalign' 6 | column: 0 7 | - name: 'Attach' 8 | service: 'robot_assembler/attach' 9 | column: 0 10 | - name: 'Undo' 11 | service: 'robot_assembler/undo' 12 | column: 0 13 | - name: 'Write URDF' 14 | service: 'robot_assembler/write_urdf' 15 | column: 0 16 | - name: 'Delete All' 17 | service: 'robot_assembler/delete_all' 18 | column: 0 19 | #- name: 'Write Yaml' 20 | # service: 'robot_assembler/write_yaml' 21 | # column: 0 22 | - name: 'Add: Actuator' 23 | service: 'robot_assembler/use_module_actuator' 24 | column: 1 25 | - name: 'Add: Hinge' 26 | service: 'robot_assembler/use_module_hinge' 27 | column: 1 28 | -------------------------------------------------------------------------------- /sample/SAMPLE_HUMANOID.urdf.euscollada.orig.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - JOINT0 : rarm-JOINT0 4 | - JOINT1 : rarm-JOINT1 5 | - JOINT2 : rarm-JOINT2 6 | - JOINT3 : rarm-JOINT3 7 | - JOINT4 : rarm-JOINT4 8 | - JOINT5 : rarm-JOINT5 9 | - JOINT6 : rarm-JOINT6 10 | - JOINT7 : rarm-JOINT7 11 | - JOINT8 : rarm-JOINT8 12 | - JOINT9 : rarm-JOINT9 13 | - JOINT10 : rarm-JOINT10 14 | - JOINT11 : rarm-JOINT11 15 | - JOINT12 : rarm-JOINT12 16 | - JOINT13 : rarm-JOINT13 17 | - JOINT14 : rarm-JOINT14 18 | - JOINT15 : rarm-JOINT15 19 | - JOINT16 : rarm-JOINT16 20 | - JOINT17 : rarm-JOINT17 21 | - JOINT18 : rarm-JOINT18 22 | - JOINT19 : rarm-JOINT19 23 | - JOINT20 : rarm-JOINT20 24 | - JOINT21 : rarm-JOINT21 25 | - JOINT22 : rarm-JOINT22 26 | - JOINT23 : rarm-JOINT23 27 | -------------------------------------------------------------------------------- /docker/docker-compose.assemble.yaml: -------------------------------------------------------------------------------- 1 | version: "2.3" 2 | services: 3 | xserver: 4 | image: devrt/xserver:add_fonts 5 | ipc: host 6 | security_opt: 7 | - seccomp:unconfined 8 | ports: 9 | - "3000:80" 10 | environment: 11 | - DISPLAY=:1 12 | healthcheck: 13 | test: ["CMD-SHELL", "test -e /tmp/.X11-unix/X1"] 14 | interval: "1s" 15 | retries: 20 16 | simulator: 17 | image: agent_system/robot_assembler:assembler 18 | command: roslaunch robot_assembler kxr_assembler.launch OUTPUT_DIR:=/ros_home 19 | ipc: host 20 | security_opt: 21 | - seccomp:unconfined 22 | environment: 23 | - DISPLAY=:1 24 | - DOCKER_ROS_SETUP=/catkin_ws/devel/setup.bash 25 | - ROS_HOME=/ros_home 26 | volumes_from: 27 | - xserver 28 | depends_on: 29 | - xserver 30 | -------------------------------------------------------------------------------- /sample/FIXED_ARM.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - JOINT0 11 | - JOINT1 12 | - JOINT2 13 | - JOINT3 14 | - JOINT4 15 | - JOINT5 16 | - JOINT6 17 | - JOINT7 18 | gains: 19 | JOINT0: {p: 25, i: 0, d: 0} 20 | JOINT1: {p: 25, i: 0, d: 0} 21 | JOINT2: {p: 25, i: 0, d: 0} 22 | JOINT3: {p: 25, i: 0, d: 0} 23 | JOINT4: {p: 25, i: 0, d: 0} 24 | JOINT5: {p: 25, i: 0, d: 0} 25 | JOINT6: {p: 25, i: 0, d: 0} 26 | JOINT7: {p: 25, i: 0, d: 0} 27 | -------------------------------------------------------------------------------- /config/robot_assembler_kxr_tabbed_buttons.yaml: -------------------------------------------------------------------------------- 1 | tabbed_layout: 2 | tab_list: ['parts0', 'parts1', 'parts2', 'parts3', 'parts4'] 3 | parts0: 4 | name: 'parts(act)' 5 | type: push 6 | yaml_file: 'package://robot_assembler/config/kxr_parts00_button_layout.yaml' 7 | parts1: 8 | name: 'parts(sub)' 9 | type: push 10 | yaml_file: 'package://robot_assembler/config/kxr_parts01_button_layout.yaml' 11 | parts2: 12 | name: 'parts(body)' 13 | type: push 14 | yaml_file: 'package://robot_assembler/config/kxr_parts02_button_layout.yaml' 15 | parts3: 16 | name: 'parts(sensor)' 17 | type: push 18 | yaml_file: 'package://robot_assembler/config/kxr_parts03_button_layout.yaml' 19 | parts4: 20 | name: 'parts(jsk-original)' 21 | type: push 22 | yaml_file: 'package://robot_assembler/config/kxr_parts04_button_layout.yaml' 23 | -------------------------------------------------------------------------------- /sample/SAMPLE.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## This is the manually fixed file which was auto-generated by robot-assembler.l 2 | rleg: 3 | - JOINT0 : rleg-crotch-y 4 | - JOINT1 : rleg-crotch-r 5 | - JOINT2 : rleg-crotch-p 6 | - JOINT3 : rleg-knee-p 7 | - JOINT4 : rleg-ankle-p 8 | - JOINT5 : rleg-ankle-r 9 | lleg: 10 | - JOINT6 : lleg-crotch-y 11 | - JOINT7 : lleg-crotch-r 12 | - JOINT8 : lleg-crotch-p 13 | - JOINT9 : lleg-knee-p 14 | - JOINT10 : lleg-ankle-p 15 | - JOINT11 : lleg-ankle-r 16 | 17 | rleg-end-coords: 18 | parent : LINK5 19 | translate : [0, 0.032, 0.019] 20 | rotate : [0.57735, -0.57735, 0.57735, 120.0] 21 | 22 | lleg-end-coords: 23 | parent : LINK11 24 | translate : [0, 0.032, 0.019] 25 | rotate : [0.57735, -0.57735, 0.57735, 120.0] 26 | 27 | angle-vector: 28 | reset-pose : [0, 0, 20, -40, 20, 0, 0, 0, 20, -40, 20, 0] 29 | -------------------------------------------------------------------------------- /euslisp/compile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | irteusgl "(progn (setq *error-handler* #'(lambda (&rest args) (unix::exit -1))) (comp::compile-file \"eus-yaml.l\") (exit))" 6 | irteusgl "(progn (setq *error-handler* #'(lambda (&rest args) (unix::exit -1))) (comp::compile-file \"robot-assembler.l\") (exit))" 7 | irteusgl "(progn (setq *error-handler* #'(lambda (&rest args) (unix::exit -1))) (comp::compile-file \"robot-assembler-utils.l\") (exit))" 8 | irteusgl "(progn (setq *error-handler* #'(lambda (&rest args) (unix::exit -1))) (comp::compile-file \"robot-assembler-viewer.l\") (exit))" 9 | 10 | #rm -f robot-assembler.{o,c,h,so} robot-assembler-utils.{o,c,h,so} robot-assembler-viewer.{o,c,h,so} 11 | #rm -f robot-assembler.so robot-assembler-utils.so robot-assembler-viewer.so 12 | rm -f robot-assembler.{o,c,h} robot-assembler-utils.{o,c,h} robot-assembler-viewer.{o,c,h} eus-yaml.{o,c,h} 13 | -------------------------------------------------------------------------------- /config/robot_assembler.rosinstall: -------------------------------------------------------------------------------- 1 | - git: 2 | uri: https://github.com/agent-system/robot_assembler.git 3 | local-name: robot_assembler 4 | #- git: 5 | # uri: https://github.com/YoheiKakiuchi/robot_assembler.git 6 | # local-name: robot_assembler 7 | # version: development 8 | - git: 9 | uri: https://github.com/agent-system/robot_assembler_gui.git 10 | local-name: robot_assembler_gui 11 | #- git: 12 | # uri: https://github.com/agent-system/robot_assembler_gui.git 13 | # local-name: robot_assembler_gui 14 | # version: development 15 | #- git: 16 | # uri: https://github.com/jsk-ros-pkg/jsk_visualization.git 17 | # local-name: jsk_visualization 18 | # #version: master 19 | # version: 58fa4553169767acc0ad51b16f93fab06a5786d2 20 | - git: 21 | uri: https://github.com/YoheiKakiuchi/jsk_visualization.git 22 | local-name: jsk_visualization 23 | version: add_tabbed_button 24 | -------------------------------------------------------------------------------- /config/parts00_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: XM430' 2 | service: 'robot_assembler/parts/use_xm430' 3 | column: 0 4 | - name: 'Add: FR12-H101' 5 | service: 'robot_assembler/parts/use_fr12_h101' 6 | column: 0 7 | - name: 'Add: FR12-H102' 8 | service: 'robot_assembler/parts/use_fr12_h102' 9 | column: 0 10 | - name: 'Add: FR12-H103' 11 | service: 'robot_assembler/parts/use_fr12_h103' 12 | column: 0 13 | - name: 'Add: FR12-H101S' 14 | service: 'robot_assembler/parts/use_fr12_h101s' 15 | column: 0 16 | - name: 'Add: FR12-S101' 17 | service: 'robot_assembler/parts/use_fr12_s101' 18 | column: 0 19 | - name: 'Add: FR12-S102' 20 | service: 'robot_assembler/parts/use_fr12_s102' 21 | column: 0 22 | - name: 'Add: FR12-S103(A)' 23 | service: 'robot_assembler/parts/use_fr12_s103a' 24 | column: 0 25 | - name: 'Add: FR12-S103(B)' 26 | service: 'robot_assembler/parts/use_fr12_s103b' 27 | column: 0 28 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_red/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 0 0 0.3 0 0 0 8 | 9 | 10 | 0.02 0.6 0.6 11 | 12 | 13 | 14 | 15 | 0 0 0.3 0 0 0 16 | 17 | 18 | 0.02 0.6 0.6 19 | 20 | 21 | 24 | 25 | 1 0 0 1 26 | 1 0 0 1 27 | 0.1 0.1 0.1 1 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_blue/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 0 0 0.3 0 0 0 8 | 9 | 10 | 0.02 0.6 0.6 11 | 12 | 13 | 14 | 15 | 0 0 0.3 0 0 0 16 | 17 | 18 | 0.02 0.6 0.6 19 | 20 | 21 | 24 | 25 | 0 0 1 1 26 | 0 0 1 1 27 | 0.1 0.1 0.1 1 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_cyan/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 0 0 0.3 0 0 0 8 | 9 | 10 | 0.02 0.6 0.6 11 | 12 | 13 | 14 | 15 | 0 0 0.3 0 0 0 16 | 17 | 18 | 0.02 0.6 0.6 19 | 20 | 21 | 24 | 25 | 0 1 1 1 26 | 0 1 1 1 27 | 0.1 0.1 0.1 1 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_green/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 0 0 0.3 0 0 0 8 | 9 | 10 | 0.02 0.6 0.6 11 | 12 | 13 | 14 | 15 | 0 0 0.3 0 0 0 16 | 17 | 18 | 0.02 0.6 0.6 19 | 20 | 21 | 24 | 25 | 0 1 0 1 26 | 0 1 0 1 27 | 0.1 0.1 0.1 1 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_purple/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 0 0 0.3 0 0 0 8 | 9 | 10 | 0.02 0.6 0.6 11 | 12 | 13 | 14 | 15 | 0 0 0.3 0 0 0 16 | 17 | 18 | 0.02 0.6 0.6 19 | 20 | 21 | 24 | 25 | 1 0 1 1 26 | 1 0 1 1 27 | 0.1 0.1 0.1 1 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /gazebo/models/ra_wall_yellow/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 0 0 0.3 0 0 0 8 | 9 | 10 | 0.02 0.6 0.6 11 | 12 | 13 | 14 | 15 | 0 0 0.3 0 0 0 16 | 17 | 18 | 0.02 0.6 0.6 19 | 20 | 21 | 24 | 25 | 1 1 0 1 26 | 1 1 0 1 27 | 0.1 0.1 0.1 1 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /launch/kxr_assembler.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /launch/robot_assembler.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /config/kxr_parts00_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: s3301' 2 | service: 'robot_assembler/parts/use_s3301' 3 | column: 0 4 | - name: 'Add: dummy-servo' 5 | service: 'robot_assembler/parts/use_dummy_servo' 6 | column: 0 7 | - name: 'Add: dummy-half-servo' 8 | service: 'robot_assembler/parts/use_dummy_half_servo' 9 | column: 0 10 | - name: 'Add: upper-arm20' 11 | service: 'robot_assembler/parts/use_upper_arm20' 12 | column: 0 13 | - name: 'Add: upper-arm26' 14 | service: 'robot_assembler/parts/use_upper_arm26' 15 | column: 0 16 | - name: 'Add: upper-arm38' 17 | service: 'robot_assembler/parts/use_upper_arm38' 18 | column: 0 19 | - name: 'Add: bottom-arm20' 20 | service: 'robot_assembler/parts/use_bottom_arm20' 21 | column: 0 22 | - name: 'Add: bottom-arm26' 23 | service: 'robot_assembler/parts/use_bottom_arm26' 24 | column: 0 25 | - name: 'Add: bottom-arm38' 26 | service: 'robot_assembler/parts/use_bottom_arm38' 27 | column: 0 28 | - name: 'Add: finger' 29 | service: 'robot_assembler/parts/use_finger' 30 | column: 0 31 | -------------------------------------------------------------------------------- /sample/SAMPLE.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - JOINT0 11 | - JOINT1 12 | - JOINT2 13 | - JOINT3 14 | - JOINT4 15 | - JOINT5 16 | - JOINT6 17 | - JOINT7 18 | - JOINT8 19 | - JOINT9 20 | - JOINT10 21 | - JOINT11 22 | gains: 23 | JOINT0: {p: 25, i: 0, d: 0} 24 | JOINT1: {p: 25, i: 0, d: 0} 25 | JOINT2: {p: 25, i: 0, d: 0} 26 | JOINT3: {p: 25, i: 0, d: 0} 27 | JOINT4: {p: 25, i: 0, d: 0} 28 | JOINT5: {p: 25, i: 0, d: 0} 29 | JOINT6: {p: 25, i: 0, d: 0} 30 | JOINT7: {p: 25, i: 0, d: 0} 31 | JOINT8: {p: 25, i: 0, d: 0} 32 | JOINT9: {p: 25, i: 0, d: 0} 33 | JOINT10: {p: 25, i: 0, d: 0} 34 | JOINT11: {p: 25, i: 0, d: 0} 35 | -------------------------------------------------------------------------------- /sample/kxr_auv/kxr_auv_fullbody.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - larm-shoulder-p : rarm-larm-shoulder-p 4 | - larm-shoulder-r : rarm-larm-shoulder-r 5 | - larm-shoulder-y : rarm-larm-shoulder-y 6 | - larm-elbow-p : rarm-larm-elbow-p 7 | - larm-gripper-r : rarm-larm-gripper-r 8 | - larm-gripper2-r : rarm-larm-gripper2-r 9 | - rarm-shoulder-p : rarm-rarm-shoulder-p 10 | - rarm-shoulder-r : rarm-rarm-shoulder-r 11 | - rarm-shoulder-y : rarm-rarm-shoulder-y 12 | - rarm-elbow-p : rarm-rarm-elbow-p 13 | - rarm-gripper-r : rarm-rarm-gripper-r 14 | - rarm-gripper2-r : rarm-rarm-gripper2-r 15 | - head-neck-y : rarm-head-neck-y 16 | - head-neck-p : rarm-head-neck-p 17 | - rleg-crotch-r : rarm-rleg-crotch-r 18 | - rleg-crotch-p : rarm-rleg-crotch-p 19 | - rleg-knee-p : rarm-rleg-knee-p 20 | - rleg-ankle-p : rarm-rleg-ankle-p 21 | - rleg-ankle-r : rarm-rleg-ankle-r 22 | - lleg-crotch-r : rarm-lleg-crotch-r 23 | - lleg-crotch-p : rarm-lleg-crotch-p 24 | - lleg-knee-p : rarm-lleg-knee-p 25 | - lleg-ankle-p : rarm-lleg-ankle-p 26 | - lleg-ankle-r : rarm-lleg-ankle-r 27 | -------------------------------------------------------------------------------- /sample/kxr_auv/kxr_auv_fullbody_initial.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | rarm: 3 | - larm-shoulder-p : rarm-larm-shoulder-p 4 | - larm-shoulder-r : rarm-larm-shoulder-r 5 | - larm-shoulder-y : rarm-larm-shoulder-y 6 | - larm-elbow-p : rarm-larm-elbow-p 7 | - larm-gripper-r : rarm-larm-gripper-r 8 | - larm-gripper2-r : rarm-larm-gripper2-r 9 | - rarm-shoulder-p : rarm-rarm-shoulder-p 10 | - rarm-shoulder-r : rarm-rarm-shoulder-r 11 | - rarm-shoulder-y : rarm-rarm-shoulder-y 12 | - rarm-elbow-p : rarm-rarm-elbow-p 13 | - rarm-gripper-r : rarm-rarm-gripper-r 14 | - rarm-gripper2-r : rarm-rarm-gripper2-r 15 | - head-neck-y : rarm-head-neck-y 16 | - head-neck-p : rarm-head-neck-p 17 | - rleg-crotch-r : rarm-rleg-crotch-r 18 | - rleg-crotch-p : rarm-rleg-crotch-p 19 | - rleg-knee-p : rarm-rleg-knee-p 20 | - rleg-ankle-p : rarm-rleg-ankle-p 21 | - rleg-ankle-r : rarm-rleg-ankle-r 22 | - lleg-crotch-r : rarm-lleg-crotch-r 23 | - lleg-crotch-p : rarm-lleg-crotch-p 24 | - lleg-knee-p : rarm-lleg-knee-p 25 | - lleg-ankle-p : rarm-lleg-ankle-p 26 | - lleg-ankle-r : rarm-lleg-ankle-r 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 YoheiKakiuchi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # robot-assembler 2 | Support designing a robot using actuator module. 3 | 4 | See new version as a choreonoid Plugin ( https://github.com/IRSL-tut/robot_assembler_plugin ) 5 | 6 | ## Install 7 | You should install ROS( https://www.ros.org/ ) before install robot_assembler 8 | ``` 9 | $ source /opt/ros/melodic/setup.bash 10 | $ mkdir new_ws; cd new_ws 11 | $ wstool init src \ 12 | https://github.com/agent-system/robot_assembler/raw/master/config/robot_assembler.rosinstall 13 | ``` 14 | 15 | OR you can merge existing workspace 16 | ``` 17 | $ wstool merge -t src \ 18 | https://github.com/agent-system/robot_assembler/raw/master/config/robot_assembler.rosinstall 19 | ``` 20 | 21 | Then, install dependant packages 22 | ``` 23 | wstool update -t src 24 | rosdep install -q -y -r --from-paths src --ignore-src 25 | ``` 26 | 27 | Finally, build robot_assembler 28 | ``` 29 | catkin build robot_assembler robot_assembler_gui 30 | ``` 31 | 32 | Before using, source setup script 33 | ``` 34 | source your_ws/devel/setup.bash 35 | ``` 36 | 37 | ## Document 38 | https://github.com/agent-system/robot_assembler/blob/master/doc/Robot_Assembler%E8%AA%AC%E6%98%8E.pdf 39 | -------------------------------------------------------------------------------- /docker/Dockerfile.for_run: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE 2 | FROM ${BASE_IMAGE} 3 | 4 | ## TODO: change to the scripts for just compiling 5 | ## TODO: from gazebo rosdep install --skip-keys=SKIP_KEYS --skip-keys='' ... gazebo9 libgazebo9-dev ... 6 | 7 | RUN mkdir -p /ros_home/log && chmod a+rwx /ros_home && chmod a+rwx /ros_home/log 8 | 9 | RUN echo -e '#!/bin/bash\n\ 10 | set -e\n\ 11 | source /my_entryrc\n\ 12 | exec "$@"\n' >> /my_entrypoint.sh 13 | 14 | RUN chmod a+x /my_entrypoint.sh 15 | 16 | RUN echo -e '# setup ros environment\n\ 17 | if [ -e "${DOCKER_ROS_SETUP}" ]; then\n\ 18 | source "${DOCKER_ROS_SETUP}"\n\ 19 | else\n\ 20 | source "/opt/ros/$ROS_DISTRO/setup.bash"\n\ 21 | fi\n\ 22 | MY_IP=${DOCKER_ROS_IP:-$(hostname -i)}\n\ 23 | if [ "$ROS_IP" == "" ]; then\n\ 24 | export ROS_IP=${MY_IP}\n\ 25 | fi\n\ 26 | if [ "$ROS_HOSTNAME" == "" ]; then\n\ 27 | export ROS_HOSTNAME=${MY_IP}\n\ 28 | fi\n\ 29 | if [ "${DOCKER_ROS_MASTER_URI}" != "" ]; then\n\ 30 | export ROS_MASTER_URI=${DOCKER_ROS_MASTER_URI}\n\ 31 | fi\n\ 32 | export HOME=/ros_home\n\ 33 | export ROS_HOME=/ros_home\n' >> /my_entryrc 34 | 35 | ENTRYPOINT ["/my_entrypoint.sh"] 36 | CMD ["roslaunch", "robot_assembler", "kxr_assembler.launch"] 37 | -------------------------------------------------------------------------------- /gazebo/models/ra_cube_large/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | 6 | 7 | 0.2 8 | 0 0 0.045 0 0 0 9 | 10 | 2.70e-04 11 | 2.70e-04 12 | 2.70e-04 13 | 0 14 | 0 15 | 0 16 | 17 | 18 | 19 | 0 0 0.045 0 0 0 20 | 21 | 0.09 0.09 0.09 22 | 23 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.09 0.09 0.09 28 | 29 | 32 | 33 | 1 0.5 0 1 34 | 1 0.5 0 1 35 | 0.1 0.1 0.1 1 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /gazebo/models/ra_cube_medium/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | 6 | 7 | 0.14 8 | 0 0 0.03 0 0 0 9 | 10 | 8.40e-05 11 | 8.40e-05 12 | 8.40e-05 13 | 0 14 | 0 15 | 0 16 | 17 | 18 | 19 | 0 0 0.03 0 0 0 20 | 21 | 0.06 0.06 0.06 22 | 23 | 24 | 25 | 0 0 0.03 0 0 0 26 | 27 | 0.06 0.06 0.06 28 | 29 | 32 | 33 | 0 1 0.5 1 34 | 0 1 0.5 1 35 | 0.1 0.1 0.1 1 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /gazebo/models/ra_cube_small/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | 6 | 7 | 0 0 0.02 0 0 0 8 | 0.1 9 | 10 | 2.667e-05 11 | 2.667e-05 12 | 2.667e-05 13 | 0 14 | 0 15 | 0 16 | 17 | 18 | 19 | 0 0 0.02 0 0 0 20 | 21 | 0.04 0.04 0.04 22 | 23 | 24 | 25 | 0 0 0.02 0 0 0 26 | 27 | 0.04 0.04 0.04 28 | 29 | 32 | 33 | 0.5 0 1 1 34 | 0.5 0 1 1 35 | 0.1 0.1 0.1 1 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /gazebo/models/ra_ball_large/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 0.15 10 | 0 0 0 0 0 0 11 | 12 | 3.06e-05 13 | 3.06e-05 14 | 3.06e-05 15 | 0 16 | 0 17 | 0 18 | 19 | 20 | 21 | 22 | 23 | 0.035 24 | 25 | 26 | 27 | 28 | 29 | 30 | 0.035 31 | 32 | 33 | 36 | 37 | 0 0 1 1 38 | 0 0 1 1 39 | 0.1 0.1 0.1 1 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /gazebo/models/ra_ball_small/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 0.05 10 | 0 0 0 0 0 0 11 | 12 | 4.22e-06 13 | 4.22e-06 14 | 4.22e-06 15 | 0 16 | 0 17 | 0 18 | 19 | 20 | 21 | 22 | 23 | 0.0225 24 | 25 | 26 | 27 | 28 | 29 | 30 | 0.0225 31 | 32 | 33 | 36 | 37 | 1 0 0 1 38 | 1 0 0 1 39 | 0.1 0.1 0.1 1 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /sample/FIXED_ARM.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /gazebo/models/rescue_can/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.045 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | .05 .05 .05 1 37 | .05 .05 .05 1 38 | 0.1 0.1 0.1 1 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /gazebo/robot_assembler_gazebo_world.launch: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /gazebo/models/ra_cylinder_large/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | 6 | 7 | 0.2 8 | 0 0 0 0 0 0 9 | 10 | 5.6e-4 11 | 5.6e-4 12 | 4.083e-5 13 | 0 14 | 0 15 | 0 16 | 17 | 18 | 19 | 0 0 0.09 0 0 0 20 | 21 | 22 | 0.18 23 | 0.035 24 | 25 | 26 | 27 | 28 | 0 0 0.09 0 0 0 29 | 30 | 31 | 0.18 32 | 0.035 33 | 34 | 35 | 38 | 39 | 0 1 0 1 40 | 0 1 0 1 41 | 0.1 0.1 0.1 1 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /gazebo/models/ra_cylinder_small/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | 6 | 7 | 0.1 8 | 0 0 0.06 0 0 0 9 | 10 | 1.894e-4 11 | 1.894e-4 12 | 3.75e-6 13 | 0 14 | 0 15 | 0 16 | 17 | 18 | 19 | 0 0 0.06 0 0 0 20 | 21 | 22 | 0.15 23 | 0.015 24 | 25 | 26 | 27 | 28 | 29 | 0 0 0.06 0 0 0 30 | 31 | 0.12 32 | 0.015 33 | 34 | 35 | 38 | 39 | 1 1 0 1 40 | 1 1 0 1 41 | 0.1 0.1 0.1 1 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /sample/kxr/kxr_head.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) 2 | (:parts-type :joint-base) 3 | (:parts-name :joint-base_23576_0)) 4 | ((:robot-parts-point :joint-base_23576_0/side-hole1) 5 | (:parts-name :joint-frame-b-a_23576_9) 6 | (:parts-type :joint-frame-b-a) 7 | (:parts-point :joint-frame-b-a_23576_9/single-hole) 8 | (:configuration :fixed)) 9 | ((:robot-parts-point :joint-base_23576_0/side-hole0) 10 | (:parts-name :joint-frame-b-b_23576_10) 11 | (:parts-type :joint-frame-b-b) 12 | (:parts-point :joint-frame-b-b_23576_10/single-hole) 13 | (:configuration :fixed)) 14 | ((:robot-parts-point :joint-frame-b-b_23576_10/2-holes) 15 | (:parts-name :s3301_23576_11) 16 | (:parts-type :s3301) 17 | (:parts-point :s3301_23576_11/bottom-front-tap) 18 | (:configuration :fixed)) 19 | ((:robot-parts-point :s3301_23576_11/horn) 20 | (:parts-name :upper-arm26_23576_12) 21 | (:parts-type :upper-arm26) 22 | (:parts-point :upper-arm26_23576_12/horn-hole) 23 | (:configuration :fixed)) 24 | ((:robot-parts-point :upper-arm26_23576_12/single-hole) 25 | (:parts-name :joint-base_23576_15) 26 | (:parts-type :joint-base) 27 | (:parts-point :joint-base_23576_15/side-hole0) 28 | (:configuration :fixed)) 29 | ((:robot-parts-point :joint-base_23576_15/side-hole1) 30 | (:parts-name :bottom-arm26_23576_16) 31 | (:parts-type :bottom-arm26) 32 | (:parts-point :bottom-arm26_23576_16/single-hole) 33 | (:configuration :fixed))) 34 | -------------------------------------------------------------------------------- /launch/robot_assembler_buttons.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /config/kxr_parts01_button_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Add: joint-base' 2 | service: 'robot_assembler/parts/use_joint_base' 3 | column: 0 4 | - name: 'Add: joint-frame-a' 5 | service: 'robot_assembler/parts/use_joint_frame_a' 6 | column: 0 7 | - name: 'Add: joint-frame-b-a' 8 | service: 'robot_assembler/parts/use_joint_frame_b_a' 9 | column: 0 10 | - name: 'Add: joint-frame-b-b' 11 | service: 'robot_assembler/parts/use_joint_frame_b_b' 12 | column: 0 13 | - name: 'Add: bottom-spacer' 14 | service: 'robot_assembler/parts/use_bottom_spacer' 15 | column: 0 16 | ## 17 | - name: 'Add: cross-servo-frame-b' 18 | service: 'robot_assembler/parts/use_cross_servo_frame_b' 19 | column: 1 20 | - name: 'Add: cross-servo-frame-a' 21 | service: 'robot_assembler/parts/use_cross_servo_frame_a' 22 | column: 1 23 | - name: 'Add: cross-upper-arm28' 24 | service: 'robot_assembler/parts/use_cross_upper_arm28' 25 | column: 1 26 | - name: 'Add: cross-bottom-arm28' 27 | service: 'robot_assembler/parts/use_cross_bottom_arm28' 28 | column: 1 29 | - name: 'Add: angle-bracket' 30 | service: 'robot_assembler/parts/use_angle_bracket' 31 | column: 1 32 | - name: 'Add: arm-supporter-a' 33 | service: 'robot_assembler/parts/use_arm_supporter_a' 34 | column: 1 35 | - name: 'Add: arm-supporter-b' 36 | service: 'robot_assembler/parts/use_arm_supporter_b' 37 | column: 1 38 | - name: 'Add: flat-frame' 39 | service: 'robot_assembler/parts/use_flat_frame' 40 | column: 1 41 | -------------------------------------------------------------------------------- /scripts/create_model_with_sensors.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | URDF_FILE=$1 4 | ROBOT_NAME=$(basename ${URDF_FILE} .urdf) 5 | XACRO_FILE=${URDF_FILE}.xacro 6 | URDF_URI='' 7 | 8 | if [ $# -gt 1 ]; then 9 | package_name=$2 10 | target_dir=$(rospack find ${package_name}) 11 | URDF_URI="\$(find ${package_name})/${URDF_FILE}" 12 | URDF_FILE=${target_dir}/${URDF_FILE} 13 | XACRO_FILE=${target_dir}/${XACRO_FILE} 14 | fi 15 | 16 | YAML_FILE=${URDF_FILE}.euscollada.yaml 17 | EUS_FILE=$(dirname ${URDF_FILE})/${ROBOT_NAME}.l 18 | 19 | rosrun euscollada collada2eus -I ${URDF_FILE} -C ${YAML_FILE} -O ${EUS_FILE} 20 | 21 | if [ "${URDF_URI}" == "" ]; then 22 | echo "rosrun robot_assembler create_model_with_sensors.py -N ${ROBOT_NAME} -Y ${YAML_FILE} -U ${URDF_FILE} -O ${XACRO_FILE}" 23 | rosrun robot_assembler create_model_with_sensors.py -N ${ROBOT_NAME} -Y ${YAML_FILE} -U ${URDF_FILE} -O ${XACRO_FILE} 24 | else 25 | echo "rosrun robot_assembler create_model_with_sensors.py -N ${ROBOT_NAME} -Y ${YAML_FILE} -U ${URDF_URI} -O ${XACRO_FILE}" 26 | rosrun robot_assembler create_model_with_sensors.py -N ${ROBOT_NAME} -Y ${YAML_FILE} -U "${URDF_URI}" -O ${XACRO_FILE} 27 | fi 28 | 29 | #cat<> ${EUS_FILE} 30 | #(when (and (boundp 'euscollada-robot) (class euscollada-robot)) 31 | # (let ((clst (remove-if-not #'(lambda (cl) (eq (send cl :super) euscollada-robot)) 32 | # (system::list-all-classes)))) 33 | # (when (= (length clst) 1) 34 | # (setq *assembled-robot-class* (car clst))) 35 | #)) 36 | #EOF 37 | -------------------------------------------------------------------------------- /euslisp/compile-kxr-robot.l: -------------------------------------------------------------------------------- 1 | (defun compile-kxr-robot (roboasm-file-name urdf-file-name &key (robotname) (euslisp-model-file-name) (collada-yaml-file-name)) 2 | (warn "~%~%") 3 | (warn ";; roboasm: ~A~%" roboasm-file-name) 4 | (warn ";; output urdf: ~A~%" urdf-file-name) 5 | (if euslisp-model-file-name 6 | (warn ";; output euslisp: ~A~%" euslisp-model-file-name)) 7 | (if euslisp-model-file-name 8 | (warn ";; yaml for lisp: ~A~%" collada-yaml-file-name)) 9 | (load "package://robot_assembler/euslisp/robot-assembler-viewer") 10 | (robot-assembler-initialize 11 | (ros::resolve-ros-path "package://robot_assembler/config/robot_assembler_kxr_settings.yaml") 12 | :project-dir (ros::resolve-ros-path "package://robot_assembler")) 13 | ;; 14 | (setq roboasm (with-open-file (f roboasm-file-name) (read f))) 15 | (when roboasm 16 | (setq rbt (make-robot-from-roboasm roboasm)) 17 | (unless robotname 18 | (setq robotname (send rbt :name))) 19 | (send rbt :write-urdf urdf-file-name :robotname robotname 20 | :package-prefix "package://robot_assembler") 21 | ) 22 | ;; 23 | (when euslisp-model-file-name 24 | (unless collada-yaml-file-name 25 | (setq collada-yaml-file-name (format nil "~A.euscollada.yaml" urdf-file-name))) 26 | (let ((strm (piped-fork (format nil "rosrun euscollada collada2eus -I ~A -C ~A -O ~A" 27 | urdf-file-name collada-yaml-file-name euslisp-model-file-name)))) 28 | (while (read-line strm nil nil)) 29 | (close strm) 30 | )) 31 | ) 32 | -------------------------------------------------------------------------------- /scripts/dump_yaml_to_sexp.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from __future__ import print_function 4 | import os 5 | import sys 6 | 7 | def write_python_dict(instance_of_dict, strm=sys.stdout): 8 | print('(', end="", file=strm) 9 | for key in instance_of_dict.keys(): 10 | elem = instance_of_dict[key] 11 | print( '(:%s '%(key), end="", file=strm) 12 | _write_python_elem(elem, strm) 13 | print( ')', end="", file=strm) 14 | print( ')', end="", file=strm) 15 | 16 | def _write_python_elem (elem, strm=sys.stdout): 17 | if type(elem) == dict: 18 | write_python_dict(elem,strm) 19 | elif type(elem) == list: 20 | _write_python_list(elem,strm) 21 | elif type(elem) == str: 22 | print( '"%s" '%(elem), end="", file=strm) 23 | else: 24 | print( '%s '%(elem), end="", file=strm) 25 | 26 | def _write_python_list(instance_of_list, strm=sys.stdout): 27 | print ( '(', end="", file=strm) 28 | for elem in instance_of_list: 29 | _write_python_elem(elem,strm) 30 | print ( ')', end="", file=strm) 31 | 32 | import yaml 33 | 34 | if __name__ == '__main__': 35 | output_f = None 36 | if len(sys.argv) > 2: 37 | output_f = sys.argv[2] 38 | yfile = sys.argv[1] 39 | 40 | if not os.path.isfile(yfile): 41 | exit(1) 42 | 43 | f = open(yfile) 44 | data = yaml.load(f) 45 | f.close() 46 | ## 47 | 48 | if output_f: 49 | strm = open(output_f) 50 | else: 51 | strm = sys.stdout 52 | 53 | write_python_dict(data, strm=strm) 54 | -------------------------------------------------------------------------------- /euslisp/README.md: -------------------------------------------------------------------------------- 1 | # Conversion rcb4robot to roboasm-robot 2 | 3 | ## For making information table of kxr-parts in robot-assembler 4 | ~~~ 5 | ;; Here is the process on robot-assembler side 6 | (load "package://robot_assembler/euslisp/robot-assembler-viewer.l") 7 | (load "package://robot_assembler/euslisp/convert-rcb4robots.l") 8 | ;; "/tmp/ra_parts_attach_list.l" is the information table 9 | (make-parts-association-file "/tmp/ra_parts_attach_list.l") 10 | ~~~ 11 | 12 | ## Convert rcb4robots to roboasm-robot 13 | ~~~ 14 | ;; Here is the process on rcb4robot side 15 | (load "rcb4robots.l") 16 | (load "package://robot_assembler/euslisp/convert-rcb4robots.l") 17 | (load-parts-association-file "/tmp/ra_parts_attach_list.l") 18 | 19 | ;; convert kxr-robot to roboasm-robot 20 | (setq *robot* (rename-and-add-bbox (kxr-make-robot "kxrl2l6a6h2"))) 21 | (setq ht (convert-robot-to-roboasm *robot*)) ;; make hash-table from kxr-robot 22 | (dump-hash "/tmp/roboasm.l" ht) ;; dump hash-table to roboasm.l 23 | ~~~ 24 | 25 | ## Check created roboasm.l 26 | ~~~ 27 | ;; load roboasm.l and create roboasm-robot 28 | (load "package://robot_assembler/euslisp/robot-assembler-viewer.l") 29 | (require :eus-assimp "package://eus_assimp/euslisp/eus-assimp.l") 30 | (robot-assembler-initialize 31 | (ros::resolve-ros-path "package://robot_assembler/config/robot_assembler_kxr_settings.yaml") 32 | :project-dir (ros::resolve-ros-path "package://robot_assembler")) 33 | (setq ht (load-hash "/tmp/roboasm.l")) 34 | (setq roboasm (create-roboasm-from-parsed-table ht)) 35 | (setq rbt (make-robot-from-roboasm roboasm)) 36 | ;; if the conversion is successed, you can see correct robot 37 | (objects (list rbt)) 38 | ~~~ -------------------------------------------------------------------------------- /gazebo/worlds/table_manipulation.world: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 5 | 6 | 7 | 8 | 0 9 | 0 0 5 0 -0 0 10 | 0.8 0.8 0.8 1 11 | 0.1 0.1 0.1 1 12 | 13 | 1000 14 | 0.9 15 | 0.01 16 | 0.001 17 | 18 | -0.5 0.5 -1 19 | 20 | 21 | 22 | 0.001 23 | 1 24 | 1000 25 | 0 0 -9.8 26 | 27 | 28 | 29 | model://ground_plane 30 | 31 | 32 | 33 | 0.5 0 0 0 0 0 34 | model://ra_table 35 | 36 | 37 | 38 | 0.5 0.5 0 0 0 1.5707963 39 | model://ra_basket 40 | 41 | 42 | 43 | 44 | 0.5 0 0.246 0 0 0 45 | model://ra_ball_large 46 | 47 | 48 | 49 | 0.5 0.15 0.211 0 0 0 50 | model://ra_cube_medium 51 | 52 | 53 | 54 | 0.5 -0.15 0.211 0 0 0 55 | model://ra_cylinder_large 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /sample/1st_assignment/48-196639MHATTORI.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :xm430) (:parts-name :xm430_53_0)) 2 | ((:robot-parts-point :xm430_53_0/horn) 3 | (:parts-name :fr12-h101_53_2) 4 | (:parts-type :fr12-h101) 5 | (:parts-point :fr12-h101_53_2/horn-attachment) 6 | (:configuration :fixed)) 7 | ((:robot-parts-point :fr12-h101_53_2/utility-holes) 8 | (:parts-name :xm430_53_4) 9 | (:parts-type :xm430) 10 | (:parts-point :xm430_53_4/bottom-tap) 11 | (:configuration :rotate90)) 12 | ((:robot-parts-point :xm430_53_4/horn) 13 | (:parts-name :fr12-h101_53_5) 14 | (:parts-type :fr12-h101) 15 | (:parts-point :fr12-h101_53_5/horn-attachment) 16 | (:configuration :fixed)) 17 | ((:robot-parts-point :fr12-h101_53_5/utility-holes) 18 | (:parts-name :xm430_53_6) 19 | (:parts-type :xm430) 20 | (:parts-point :xm430_53_6/bottom-tap) 21 | (:configuration :default)) 22 | ((:robot-parts-point :xm430_53_6/horn) 23 | (:parts-name :fr12-h101_53_7) 24 | (:parts-type :fr12-h101) 25 | (:parts-point :fr12-h101_53_7/horn-attachment) 26 | (:configuration :fixed)) 27 | ((:robot-parts-point :fr12-h101_53_7/utility-holes) 28 | (:parts-name :xm430_53_8) 29 | (:parts-type :xm430) 30 | (:parts-point :xm430_53_8/bottom-tap) 31 | (:configuration :rotate90)) 32 | ((:robot-parts-point :xm430_53_8/horn) 33 | (:parts-name :fr12-h101_53_9) 34 | (:parts-type :fr12-h101) 35 | (:parts-point :fr12-h101_53_9/horn-attachment) 36 | (:configuration :fixed)) 37 | ((:robot-parts-point :fr12-h101_53_9/utility-holes) 38 | (:parts-name :footplate_53_11) 39 | (:parts-type :footplate) 40 | (:parts-point :footplate_53_11/foot_fix_point_right) 41 | (:configuration :flip-y))) 42 | -------------------------------------------------------------------------------- /euslisp/assembled-robot-interface.l: -------------------------------------------------------------------------------- 1 | (require :robot-interface "package://pr2eus/robot-interface.l") 2 | 3 | (defclass assembled-robot-interface 4 | :super robot-interface 5 | :slots ()) 6 | (defmethod assembled-robot-interface 7 | (:init 8 | (&rest args &key ((:controller-timeout ct) nil)) 9 | (prog1 10 | (send-super* :init :robot *assembled-robot-class* :controller-timeout ct args) 11 | ;; do something 12 | )) 13 | (:default-controller 14 | () 15 | (list 16 | (list 17 | (cons :controller-action "fullbody_controller/follow_joint_trajectory") 18 | (cons :controller-state "fullbody_controller/state") 19 | (cons :action-type control_msgs::FollowJointTrajectoryAction) 20 | (cons :joint-names (mapcar #'(lambda (n) (if (symbolp n) (symbol-name n) n)) (send-all (send robot :joint-list) :name)))))) 21 | ) 22 | 23 | (defun assembled-robot-init (&rest args) 24 | (if (not (boundp '*ri*)) 25 | (setq *ri* (instance* assembled-robot-interface :init args))) 26 | (if (not (boundp '*robot*)) 27 | (setq *robot* (instance *assembled-robot-class* :init)))) 28 | ;; 29 | ;; 30 | ;; 31 | (cond 32 | ((and (boundp 'euscollada-robot) (class euscollada-robot)) 33 | (let ((clst (remove-if-not #'(lambda (cl) (eq (send cl :super) euscollada-robot)) 34 | (system::list-all-classes)))) 35 | (cond 36 | ((= (length clst) 1) 37 | (setq *assembled-robot-class* (car clst))) 38 | ((null clst) ;; あまりないはず 39 | (warn ";; you should load robot-file before loading this file!") 40 | ) 41 | (t 42 | ;; 2タイプ以上のロボットをロードしている 43 | )) 44 | )) 45 | (t 46 | (warn ";; you should load robot-file before loading this file!") 47 | )) 48 | -------------------------------------------------------------------------------- /docker/Dockerfile.assembler: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE 2 | FROM ${BASE_IMAGE} 3 | 4 | # setup environment 5 | ENV LANG C.UTF-8 6 | ENV LC_ALL C.UTF-8 7 | 8 | SHELL ["/bin/bash", "-c"] 9 | ENV DEBIAN_FRONTEND noninteractive 10 | 11 | LABEL maintainer="AgentSystem(JSK Lab.) YoheiKakiuchi " 12 | 13 | RUN apt update -q -qq \ 14 | && apt dist-upgrade -q -qq -y \ 15 | && apt install -q -qq -y mesa-utils gettext less net-tools \ 16 | lsb-release python-pip ros-${ROS_DISTRO}-catkin python-wstool python-catkin-tools \ 17 | && apt clean \ 18 | && rm -rf /var/lib/apt/lists/* 19 | 20 | #> WORKDIR /catkin_ws 21 | #> 22 | #> RUN wstool init src https://github.com/agent-system/robot_assembler/raw/master/config/robot_assembler.rosinstall && \ 23 | #> wstool update -t src 24 | #> 25 | #> RUN apt update -q -qq && \ 26 | #> rosdep update -q -y && \ 27 | #> rosdep install -q -y -r --from-paths src --ignore-src || echo 'Ignore rosdep error' && \ 28 | #> apt clean && \ 29 | #> rm -rf /var/lib/apt/lists/* 30 | #> 31 | #> RUN source /opt/ros/${ROS_DISTRO}/setup.bash && \ 32 | #> catkin build robot_assembler 33 | 34 | WORKDIR / 35 | RUN mkdir /catkin_ws && cd /catkin_ws && \ 36 | wstool init src https://github.com/agent-system/robot_assembler/raw/master/config/robot_assembler.rosinstall && \ 37 | wstool update -t src && \ 38 | apt update -q -qq && \ 39 | rosdep update -q -y && \ 40 | rosdep install -q -y -r --from-paths src --ignore-src || echo 'Ignore rosdep error' && \ 41 | apt clean && \ 42 | rm -rf /var/lib/apt/lists/* && \ 43 | source /opt/ros/${ROS_DISTRO}/setup.bash && \ 44 | catkin config --install && \ 45 | catkin build robot_assembler && \ 46 | catkin clean -l -d -b -y 47 | -------------------------------------------------------------------------------- /sample/SAMPLE_HUMANOID.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - JOINT0 11 | - JOINT1 12 | - JOINT2 13 | - JOINT3 14 | - JOINT4 15 | - JOINT5 16 | - JOINT6 17 | - JOINT7 18 | - JOINT8 19 | - JOINT9 20 | - JOINT10 21 | - JOINT11 22 | - JOINT12 23 | - JOINT13 24 | - JOINT14 25 | - JOINT15 26 | - JOINT16 27 | - JOINT17 28 | - JOINT18 29 | - JOINT19 30 | - JOINT20 31 | - JOINT21 32 | - JOINT22 33 | - JOINT23 34 | gains: 35 | JOINT0: {p: 60, i: 0, d: 0} 36 | JOINT1: {p: 60, i: 0, d: 0} 37 | JOINT2: {p: 60, i: 0, d: 0} 38 | JOINT3: {p: 60, i: 0, d: 0} 39 | JOINT4: {p: 60, i: 0, d: 0} 40 | JOINT5: {p: 60, i: 0, d: 0} 41 | JOINT6: {p: 60, i: 0, d: 0} 42 | JOINT7: {p: 60, i: 0, d: 0} 43 | JOINT8: {p: 60, i: 0, d: 0} 44 | JOINT9: {p: 60, i: 0, d: 0} 45 | JOINT10: {p: 60, i: 0, d: 0} 46 | JOINT11: {p: 60, i: 0, d: 0} 47 | JOINT12: {p: 60, i: 0, d: 0} 48 | JOINT13: {p: 60, i: 0, d: 0} 49 | JOINT14: {p: 60, i: 0, d: 0} 50 | JOINT15: {p: 60, i: 0, d: 0} 51 | JOINT16: {p: 60, i: 0, d: 0} 52 | JOINT17: {p: 60, i: 0, d: 0} 53 | JOINT18: {p: 60, i: 0, d: 0} 54 | JOINT19: {p: 60, i: 0, d: 0} 55 | JOINT20: {p: 60, i: 0, d: 0} 56 | JOINT21: {p: 60, i: 0, d: 0} 57 | JOINT22: {p: 60, i: 0, d: 0} 58 | JOINT23: {p: 60, i: 0, d: 0} 59 | -------------------------------------------------------------------------------- /gazebo/move_sample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import rospy 4 | import actionlib 5 | from control_msgs.msg import FollowJointTrajectoryAction, FollowJointTrajectoryGoal 6 | from trajectory_msgs.msg import JointTrajectoryPoint 7 | 8 | rospy.init_node('send_motion') 9 | act_client = actionlib.SimpleActionClient('/fullbody_controller/follow_joint_trajectory', FollowJointTrajectoryAction) 10 | 11 | act_client.wait_for_server() 12 | 13 | # gen msg 14 | traj_msg = FollowJointTrajectoryGoal() 15 | traj_msg.trajectory.header.stamp = rospy.Time.now() + rospy.Duration(0.2) 16 | traj_msg.trajectory.joint_names = ['JOINT0', 'JOINT1', 'JOINT2', 'JOINT3', 'JOINT4', 'JOINT5', 'JOINT6', 'JOINT7', 'JOINT8', 'JOINT9', 'JOINT10', 'JOINT11'] 17 | 18 | ## 19 | traj_msg.trajectory.points.append(JointTrajectoryPoint(positions=[0, 0, 0.20, -0.40, 0.20, 0, 0, 0, 0.20, -0.40, 0.20, 0 ], #姿勢1 20 | time_from_start = rospy.Duration(2))) ## 前の姿勢から2sec 21 | traj_msg.trajectory.points.append(JointTrajectoryPoint(positions=[0, 0, 0.40, -0.80, 0.40, 0, 0, 0, 0.40, -0.80, 0.40, 0 ], #姿勢2 22 | time_from_start = rospy.Duration(6)))## 前の姿勢から4sec 23 | traj_msg.trajectory.points.append(JointTrajectoryPoint(positions=[0, 0, 0.20, -0.40, 0.20, 0, 0, 0, 0.20, -0.40, 0.20, 0 ], #姿勢3 24 | time_from_start = rospy.Duration(10)))## 前の姿勢から4sec 25 | traj_msg.trajectory.points.append(JointTrajectoryPoint(positions=[0, 0, 0.15, -0.3, 0.15, 0, 0, 0, 0.15, -0.3, 0.15, 0 ], #姿勢4 26 | time_from_start = rospy.Duration(12)))## 前の姿勢から2sec 27 | 28 | # send to robot arm 29 | act_client.send_goal(traj_msg) 30 | 31 | act_client.wait_for_result() 32 | 33 | rospy.loginfo("done") 34 | -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- 1 | 2 | robot_assembler 3 | 0.0.1 4 | 5 | 6 | package for assemble robot using GUI 7 | 8 | Yohei Kakiuchi 9 | Yohei Kakiuchi 10 | 11 | MIT 12 | 13 | catkin 14 | 15 | roseus 16 | eus_assimp 17 | euscollada 18 | yaml-cpp 19 | 20 | roseus 21 | eus_assimp 22 | euscollada 23 | jsk_rqt_plugins 24 | pr2eus 25 | 26 | urdf_tutorial 27 | joint_state_publisher_gui 28 | robot_state_publisher_gui 29 | rqt_gui 30 | 31 | gazebo_plugins 32 | gazebo_ros 33 | gazebo_ros_control 34 | controller_manager 35 | hardware_interface 36 | transmission_interface 37 | joint_limits_interface 38 | joint_trajectory_controller 39 | joint_state_controller 40 | velocity_controllers 41 | xacro 42 | rviz_plugin_tutorials 43 | jsk_rviz_plugins 44 | 45 | robot_assembler_gui 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /sample/kxr_auv/kxr_auv_fullbody_model.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | larm: 3 | - larm-shoulder-p : rarm-larm-shoulder-p 4 | - larm-shoulder-r : rarm-larm-shoulder-r 5 | - larm-shoulder-y : rarm-larm-shoulder-y 6 | - larm-elbow-p : rarm-larm-elbow-p 7 | - larm-gripper-r : rarm-larm-gripper-r 8 | - larm-gripper2-r : rarm-larm-gripper2-r 9 | rarm: 10 | - rarm-shoulder-p : rarm-rarm-shoulder-p 11 | - rarm-shoulder-r : rarm-rarm-shoulder-r 12 | - rarm-shoulder-y : rarm-rarm-shoulder-y 13 | - rarm-elbow-p : rarm-rarm-elbow-p 14 | - rarm-gripper-r : rarm-rarm-gripper-r 15 | - rarm-gripper2-r : rarm-rarm-gripper2-r 16 | torso: 17 | - head-neck-y : rarm-head-neck-y 18 | - head-neck-p : rarm-head-neck-p 19 | head: 20 | rleg: 21 | - rleg-crotch-r : rarm-rleg-crotch-r 22 | - rleg-crotch-p : rarm-rleg-crotch-p 23 | - rleg-knee-p : rarm-rleg-knee-p 24 | - rleg-ankle-p : rarm-rleg-ankle-p 25 | - rleg-ankle-r : rarm-rleg-ankle-r 26 | lleg: 27 | - lleg-crotch-r : rarm-lleg-crotch-r 28 | - lleg-crotch-p : rarm-lleg-crotch-p 29 | - lleg-knee-p : rarm-lleg-knee-p 30 | - lleg-ankle-p : rarm-lleg-ankle-p 31 | - lleg-ankle-r : rarm-lleg-ankle-r 32 | 33 | rleg-end-coords: 34 | parent : LINK18 35 | translate : [0.031, 0, 0.017] 36 | rotate : [0.0, 1.0, 0.0, -90] 37 | 38 | lleg-end-coords: 39 | parent : LINK23 40 | translate : [0.031, 0, 0.017] 41 | rotate : [0.0, 1.0, 0.0, -90] 42 | 43 | rarm-end-coords: 44 | #todo fix root link and coords 45 | parent : LINK10 46 | translate : [0, 0.02625, -0.019] 47 | #translate : [0, 0.0105, -0.0185] 48 | rotate : [0.850651, 0.525731, 0.0, 180] 49 | 50 | larm-end-coords: 51 | #todo fix root lonk and coords 52 | parent : LINK4 53 | translate : [0, 0.02625, -0.019] 54 | #translate : [0, 0.0105, -0.0185] 55 | rotate : [0.0, 0.0, 1.0, 63.435] 56 | 57 | torso-end-coords: 58 | parent : BASE 59 | translate : [0, 0, 0] 60 | rotate : [0.0, 0.0, 1.0, 90] -------------------------------------------------------------------------------- /sample/SAMPLE_HUMANOID.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /sample/kxr_auv/kxr_auv_fullbody.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - larm-shoulder-p 11 | - larm-shoulder-r 12 | - larm-shoulder-y 13 | - larm-elbow-p 14 | - larm-gripper-r 15 | - larm-gripper2-r 16 | - rarm-shoulder-p 17 | - rarm-shoulder-r 18 | - rarm-shoulder-y 19 | - rarm-elbow-p 20 | - rarm-gripper-r 21 | - rarm-gripper2-r 22 | - head-neck-y 23 | - head-neck-p 24 | - rleg-crotch-r 25 | - rleg-crotch-p 26 | - rleg-knee-p 27 | - rleg-ankle-p 28 | - rleg-ankle-r 29 | - lleg-crotch-r 30 | - lleg-crotch-p 31 | - lleg-knee-p 32 | - lleg-ankle-p 33 | - lleg-ankle-r 34 | gains: 35 | larm-shoulder-p: {p: 25, i: 0, d: 0} 36 | larm-shoulder-r: {p: 25, i: 0, d: 0} 37 | larm-shoulder-y: {p: 25, i: 0, d: 0} 38 | larm-elbow-p: {p: 25, i: 0, d: 0} 39 | larm-gripper-r: {p: 25, i: 0, d: 0} 40 | larm-gripper2-r: {p: 25, i: 0, d: 0} 41 | rarm-shoulder-p: {p: 25, i: 0, d: 0} 42 | rarm-shoulder-r: {p: 25, i: 0, d: 0} 43 | rarm-shoulder-y: {p: 25, i: 0, d: 0} 44 | rarm-elbow-p: {p: 25, i: 0, d: 0} 45 | rarm-gripper-r: {p: 25, i: 0, d: 0} 46 | rarm-gripper2-r: {p: 25, i: 0, d: 0} 47 | head-neck-y: {p: 25, i: 0, d: 0} 48 | head-neck-p: {p: 25, i: 0, d: 0} 49 | rleg-crotch-r: {p: 25, i: 0, d: 0} 50 | rleg-crotch-p: {p: 25, i: 0, d: 0} 51 | rleg-knee-p: {p: 25, i: 0, d: 0} 52 | rleg-ankle-p: {p: 25, i: 0, d: 0} 53 | rleg-ankle-r: {p: 25, i: 0, d: 0} 54 | lleg-crotch-r: {p: 25, i: 0, d: 0} 55 | lleg-crotch-p: {p: 25, i: 0, d: 0} 56 | lleg-knee-p: {p: 25, i: 0, d: 0} 57 | lleg-ankle-p: {p: 25, i: 0, d: 0} 58 | lleg-ankle-r: {p: 25, i: 0, d: 0} 59 | -------------------------------------------------------------------------------- /sample/kxr_auv/kxr_auv_fullbody_initial.urdf.gz_controller.yaml: -------------------------------------------------------------------------------- 1 | ## auto-generated by robot-assembler.l 2 | # Publish all joint states ----------------------------------- 3 | joint_state_controller: 4 | type: joint_state_controller/JointStateController 5 | publish_rate: 50 6 | fullbody_controller: 7 | # type: effort_controllers/JointTrajectoryController 8 | type: velocity_controllers/JointTrajectoryController 9 | joints: 10 | - larm-shoulder-p 11 | - larm-shoulder-r 12 | - larm-shoulder-y 13 | - larm-elbow-p 14 | - larm-gripper-r 15 | - larm-gripper2-r 16 | - rarm-shoulder-p 17 | - rarm-shoulder-r 18 | - rarm-shoulder-y 19 | - rarm-elbow-p 20 | - rarm-gripper-r 21 | - rarm-gripper2-r 22 | - head-neck-y 23 | - head-neck-p 24 | - rleg-crotch-r 25 | - rleg-crotch-p 26 | - rleg-knee-p 27 | - rleg-ankle-p 28 | - rleg-ankle-r 29 | - lleg-crotch-r 30 | - lleg-crotch-p 31 | - lleg-knee-p 32 | - lleg-ankle-p 33 | - lleg-ankle-r 34 | gains: 35 | larm-shoulder-p: {p: 25, i: 0, d: 0} 36 | larm-shoulder-r: {p: 25, i: 0, d: 0} 37 | larm-shoulder-y: {p: 25, i: 0, d: 0} 38 | larm-elbow-p: {p: 25, i: 0, d: 0} 39 | larm-gripper-r: {p: 25, i: 0, d: 0} 40 | larm-gripper2-r: {p: 25, i: 0, d: 0} 41 | rarm-shoulder-p: {p: 25, i: 0, d: 0} 42 | rarm-shoulder-r: {p: 25, i: 0, d: 0} 43 | rarm-shoulder-y: {p: 25, i: 0, d: 0} 44 | rarm-elbow-p: {p: 25, i: 0, d: 0} 45 | rarm-gripper-r: {p: 25, i: 0, d: 0} 46 | rarm-gripper2-r: {p: 25, i: 0, d: 0} 47 | head-neck-y: {p: 25, i: 0, d: 0} 48 | head-neck-p: {p: 25, i: 0, d: 0} 49 | rleg-crotch-r: {p: 25, i: 0, d: 0} 50 | rleg-crotch-p: {p: 25, i: 0, d: 0} 51 | rleg-knee-p: {p: 25, i: 0, d: 0} 52 | rleg-ankle-p: {p: 25, i: 0, d: 0} 53 | rleg-ankle-r: {p: 25, i: 0, d: 0} 54 | lleg-crotch-r: {p: 25, i: 0, d: 0} 55 | lleg-crotch-p: {p: 25, i: 0, d: 0} 56 | lleg-knee-p: {p: 25, i: 0, d: 0} 57 | lleg-ankle-p: {p: 25, i: 0, d: 0} 58 | lleg-ankle-r: {p: 25, i: 0, d: 0} 59 | -------------------------------------------------------------------------------- /gazebo/robot_assembler_gazebo.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /sample/SAMPLE_HUMANOID.urdf.euscollada.yaml: -------------------------------------------------------------------------------- 1 | ## This is the manually fixed file which was auto-generated by robot-assembler.l 2 | ## limbs and semantic joint name 3 | head: 4 | - JOINT0 : head-neck-y 5 | - JOINT1 : head-neck-p 6 | rarm: 7 | - JOINT2 : rarm-shoulder-p 8 | - JOINT3 : rarm-shoulder-r 9 | - JOINT4 : rarm-elbow-p 10 | - JOINT5 : rarm-wrist-p 11 | - JOINT6 : rarm-gripper 12 | larm: 13 | - JOINT7 : larm-shoulder-p 14 | - JOINT8 : larm-shoulder-r 15 | - JOINT9 : larm-elbow-p 16 | - JOINT10 : larm-wrist-p 17 | - JOINT11 : larm-gripper 18 | rleg: 19 | - JOINT12 : rleg-crotch-y 20 | - JOINT13 : rleg-crotch-r 21 | - JOINT14 : rleg-crotch-p 22 | - JOINT15 : rleg-knee-p 23 | - JOINT16 : rleg-ankle-p 24 | - JOINT17 : rleg-ankle-r 25 | lleg: 26 | - JOINT18 : lleg-crotch-y 27 | - JOINT19 : lleg-crotch-r 28 | - JOINT20 : lleg-crotch-p 29 | - JOINT21 : lleg-knee-p 30 | - JOINT22 : lleg-ankle-p 31 | - JOINT23 : lleg-ankle-r 32 | 33 | ## end-coords 34 | rleg-end-coords: 35 | parent : LINK17 36 | translate : [0, 0.032, 0.019] 37 | rotate : [0.57735, -0.57735, 0.57735, 120.0] 38 | lleg-end-coords: 39 | parent : LINK23 40 | translate : [0, 0.032, 0.019] 41 | rotate : [0.57735, -0.57735, 0.57735, 120.0] 42 | rarm-end-coords: 43 | parent : LINK6 44 | larm-end-coords: 45 | parent : LINK11 46 | 47 | ## pre-defined posture 48 | angle-vector: 49 | reset-pose : [0, 0, 50 | 0, 0, 0, 0, 0, 51 | 0, 0, 0, 0, 0, 52 | 0, 0, 20, -40, 20, 0, 53 | 0, 0, 20, -40, 20, 0, 54 | ] 55 | 56 | ## sensors 57 | sensors: 58 | - {sensor_name: 'imu_sensor', sensor_type: 'acceleration', parent_link: 'BASE', gazebo_frame: 'BASE'} 59 | - {sensor_name: 'rhsensor', sensor_type: 'base_force6d', parent_link: 'RARM_LINK7', gazebo_joint: 'JOINT6' , gazebo_topic: 'rhsensor'} 60 | - {sensor_name: 'lhsensor', sensor_type: 'base_force6d', parent_link: 'LARM_LINK7', gazebo_joint: 'JOINT11', gazebo_topic: 'lhsensor'} 61 | - {sensor_name: 'head_cam', sensor_type: 'camera', parent_link: 'LINK1', 62 | translate: '-0.03 0 0', rotate: '-0.57735 -0.57735 0.57735 120'} 63 | - {sensor_name: 'body_range', sensor_type: 'range', parent_link: 'BASE', translate: '0 0 -0.02'} -------------------------------------------------------------------------------- /sample/kxr_rcb4robots/kxrl2l6a6h2.urdf.euscollada.fixed.yaml: -------------------------------------------------------------------------------- 1 | lleg: 2 | - lleg_crotch_y : lleg-crotch-y 3 | - lleg_crotch_r : lleg-crotch-r 4 | - lleg_crotch_p : lleg-crotch-p 5 | - lleg_knee_p : lleg-knee-p 6 | - lleg_ankle_p : lleg-ankle-p 7 | - lleg_ankle_r : lleg-ankle-r 8 | rleg: 9 | - rleg_crotch_y : rleg-crotch-y 10 | - rleg_crotch_r : rleg-crotch-r 11 | - rleg_crotch_p : rleg-crotch-p 12 | - rleg_knee_p : rleg-knee-p 13 | - rleg_ankle_p : rleg-ankle-p 14 | - rleg_ankle_r : rleg-ankle-r 15 | rarm: 16 | - rarm_shoulder_p : rarm-shoulder-p 17 | - rarm_shoulder_y : rarm-shoulder-y 18 | - rarm_shoulder_r : rarm-shoulder-r 19 | - rarm_elbow_p : rarm-elbow-p 20 | - rarm_wrist_p : rarm-wrist-p 21 | - rarm_wrist_r : rarm-wrist-r 22 | - rarm_gripper_r : rarm-gripper-r 23 | - JOINT8 : rarm-gripper2-r 24 | larm: 25 | - larm_shoulder_p : larm-shoulder-p 26 | - larm_shoulder_y : larm-shoulder-y 27 | - larm_shoulder_r : larm-shoulder-r 28 | - larm_elbow_p : larm-elbow-p 29 | - larm_wrist_p : larm-wrist-p 30 | - larm_wrist_r : larm-wrist-r 31 | - larm_gripper_r : larm-gripper-r 32 | - JOINT17 : larm-gripper2-r 33 | head: 34 | - head_neck_y : head-neck-y 35 | - head_neck_p : head-neck-p 36 | 37 | angle-vector: 38 | reset-pose: [0.0, 0.0, -20.0, 40.0, -20.0, 0.0, 39 | 0.0, 0.0, -20.0, 40.0, -20.0, 0.0, 40 | 30.0, 0.0, 0.0, -40.0, -30.0, 0.0, 0.0, 0.0, 41 | 30.0, 0.0, 0.0, -40.0, -30.0, 0.0, 0.0, 0.0, 42 | 0.0, 10.0 ] 43 | reset-manip-pose: [0.0, 0.0, -20.0, 40.0, -20.0, 0.0, 44 | 0.0, 0.0, -20.0, 40.0, -20.0, 0.0, 45 | 45.0, 0.0, -30.0, -60.0, -45.0, 0.0, 0.0, 0.0, 46 | 45.0, 0.0, 30.0, -60.0, -45.0, 0.0, 0.0, 0.0, 47 | 0.0, 10.0 ] 48 | rarm-end-coords: 49 | parent: LINK6 50 | translate : [0.077, -0.023, 0] 51 | larm-end-coords: 52 | parent: LINK15 53 | translate : [0.077, 0.023, 0] 54 | rleg-end-coords: 55 | parent: LINK29 56 | translate : [0.031, 0, 0] 57 | rotate : [0.0, -1.0, 0.0, 90.0] 58 | lleg-end-coords: 59 | parent: LINK23 60 | translate : [0.031, 0, 0] 61 | rotate : [0.0, -1.0, 0.0, 90.0] 62 | -------------------------------------------------------------------------------- /docker/run_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | OPT=${DOCKER_OPTION} ## -it --cpuset-cpus 0-2 4 | iname=${DOCKER_IMAGE:-"yoheikakiuchi/robot_assembler"} ## name of image (should be same as in build.sh) 5 | cname=${DOCKER_CONTAINER:-"cont_robot_assembler"} ## name of container (should be same as in exec.sh) 6 | 7 | DEFAULT_USER_DIR="$(pwd)" 8 | 9 | #VAR=${@:-"bash --rcfile /my_entryrc"} 10 | VAR=${@:-"roslaunch robot_assembler robot_assembler.launch OUTPUT_DIR:=/userdir"} 11 | ## 12 | #VAR=${@:-"roslaunch robot_assembler robot_assembler.launch OUTPUT_DIR:=/userdir ROBOT_NAME:=SAMPLE START_WITH:=/catkin_ws/src/robot_assembler/sample/SAMPLE.roboasm.l"} 13 | #VAR=${@:-"roslaunch robot_assembler urdf_check.launch model:=/userdir/SAMPLE.urdf"} 14 | #VAR=${@:-"roslaunch robot_assembler robot_assembler_gazebo.launch model:=/userdir/SAMPLE.urdf"} 15 | 16 | ## --net=mynetworkname ## share docker inside network with another docker containar 17 | ## docker inspect -f '{{.NetworkSettings.Networks.mynetworkname.IPAddress}}' cont_test_ra 18 | ## docker inspect -f '{{.NetworkSettings.Networks.mynetworkname.Gateway}}' cont_test_ra 19 | 20 | if [ "$DOCKER_ROS_IP" == "" ]; then 21 | # export DOCKER_ROS_IP=127.0.0.1 22 | export DOCKER_ROS_IP=localhost 23 | fi 24 | 25 | NET_OPT="--net=host --env=DOCKER_ROS_IP --env=DOCKER_ROS_MASTER_URI" 26 | # for gdb 27 | #NET_OPT="--net=host --env=DOCKER_ROS_IP --env=DOCKER_ROS_MASTER_URI --cap-add=SYS_PTRACE --security-opt=seccomp=unconfined" 28 | #NET_OPT="--net=host --env=NVIDIA_DRIVER_CAPABILITIES --env=NVIDIA_VISIBLE_DEVICES" 29 | 30 | if [ $(nvidia-smi | grep Xorg | wc -l) -gt 0 ]; then 31 | GPU="--gpus all" 32 | else 33 | GPU="" 34 | fi 35 | 36 | xhost +local: 37 | ##xhost +si:localuser:$(id -u ${USER}) 38 | ##xhost +si:localuser:root 39 | 40 | docker rm ${cname} 41 | 42 | docker run ${OPT} \ 43 | --privileged \ 44 | ${GPU} \ 45 | ${NET_OPT} \ 46 | --env="DOCKER_ROS_SETUP=/catkin_ws/devel/setup.bash" \ 47 | --env="DISPLAY" \ 48 | --env="QT_X11_NO_MITSHM=1" \ 49 | --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ 50 | --name=${cname} \ 51 | --volume="${PROG_DIR:-$DEFAULT_USER_DIR}:/userdir" \ 52 | -w="/userdir" \ 53 | -u $(id -u ${USER}):$(id -g ${USER}) \ 54 | ${iname} ${VAR} 55 | 56 | xhost -local: 57 | -------------------------------------------------------------------------------- /sample/1st_assignment/37-196321_3388049435_CREEPINGROBO.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :xm430) (:parts-name :xm430_53_0)) 2 | ((:robot-parts-point :xm430_53_0/horn) 3 | (:parts-name :fr12-h101_53_4) 4 | (:parts-type :fr12-h101) 5 | (:parts-point :fr12-h101_53_4/horn-attachment) 6 | (:configuration :default)) 7 | ((:robot-parts-point :xm430_53_0/left-side-tap) 8 | (:parts-name :fr12-h101_53_5) 9 | (:parts-type :fr12-h101) 10 | (:parts-point :fr12-h101_53_5/utility-holes) 11 | (:configuration :default)) 12 | ((:robot-parts-point :fr12-h101_53_5/horn-attachment) 13 | (:parts-name :xm430_53_6) 14 | (:parts-type :xm430) 15 | (:parts-point :xm430_53_6/horn) 16 | (:configuration :default)) 17 | ((:robot-parts-point :xm430_53_6/bottom-tap) 18 | (:parts-name :footplate_53_7) 19 | (:parts-type :footplate) 20 | (:parts-point :footplate_53_7/foot_fix_point_right) 21 | (:configuration :rotate90)) 22 | ((:robot-parts-point :xm430_53_0/right-side-tap) 23 | (:parts-name :fr12-h101_53_8) 24 | (:parts-type :fr12-h101) 25 | (:parts-point :fr12-h101_53_8/utility-holes) 26 | (:configuration :default)) 27 | ((:robot-parts-point :fr12-h101_53_8/horn-attachment) 28 | (:parts-name :xm430_53_9) 29 | (:parts-type :xm430) 30 | (:parts-point :xm430_53_9/horn) 31 | (:configuration :fixed)) 32 | ((:robot-parts-point :xm430_53_9/bottom-tap) 33 | (:parts-name :footplate_53_11) 34 | (:parts-type :footplate) 35 | (:parts-point :footplate_53_11/foot_fix_point_left) 36 | (:configuration :rotate90)) 37 | ((:robot-parts-point :fr12-h101_53_4/utility-holes) 38 | (:parts-name :fr12-h101_53_13) 39 | (:parts-type :fr12-h101) 40 | (:parts-point :fr12-h101_53_13/utility-holes) 41 | (:configuration :flip-y)) 42 | ((:robot-parts-point :fr12-h101_53_13/horn-attachment) 43 | (:parts-name :xm430_53_14) 44 | (:parts-type :xm430) 45 | (:parts-point :xm430_53_14/horn) 46 | (:configuration :fixed)) 47 | ((:robot-parts-point :xm430_53_14/bottom-tap) 48 | (:parts-name :fr12-h101_53_23) 49 | (:parts-type :fr12-h101) 50 | (:parts-point :fr12-h101_53_23/utility-holes) 51 | (:configuration :rotate90)) 52 | ((:robot-parts-point :fr12-h101_53_23/horn-attachment) 53 | (:parts-name :xm430_53_24) 54 | (:parts-type :xm430) 55 | (:parts-point :xm430_53_24/horn) 56 | (:configuration :fixed)) 57 | ((:robot-parts-point :xm430_53_24/bottom-tap) 58 | (:parts-name :fr12-h101_53_42) 59 | (:parts-type :fr12-h101) 60 | (:parts-point :fr12-h101_53_42/utility-holes) 61 | (:configuration :rotate90))) 62 | -------------------------------------------------------------------------------- /config/robot_assembler_buttons_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Align' 2 | service: 'robot_assembler/align' 3 | column: 0 4 | - name: 'Undo Align' 5 | service: 'robot_assembler/unalign' 6 | column: 0 7 | - name: 'Attach' 8 | service: 'robot_assembler/attach' 9 | column: 0 10 | - name: 'Undo' 11 | service: 'robot_assembler/undo' 12 | column: 0 13 | - name: 'Write URDF' 14 | service: 'robot_assembler/write_urdf' 15 | column: 0 16 | - name: 'Delete All' 17 | service: 'robot_assembler/delete_all' 18 | column: 0 19 | #- name: 'Write Yaml' 20 | # service: 'robot_assembler/write_yaml' 21 | # column: 0 22 | - name: 'Add: XM430' 23 | service: 'robot_assembler/use_xm430' 24 | column: 1 25 | - name: 'Add: FR12-H101' 26 | service: 'robot_assembler/use_fr12_h101' 27 | column: 1 28 | - name: 'Add: FR12-H102' 29 | service: 'robot_assembler/use_fr12_h102' 30 | column: 1 31 | - name: 'Add: FR12-H103' 32 | service: 'robot_assembler/use_fr12_h103' 33 | column: 1 34 | - name: 'Add: FR12-H101S' 35 | service: 'robot_assembler/use_fr12_h101s' 36 | column: 1 37 | - name: 'Add: FR12-S101' 38 | service: 'robot_assembler/use_fr12_s101' 39 | column: 1 40 | - name: 'Add: FR12-S102' 41 | service: 'robot_assembler/use_fr12_s102' 42 | column: 1 43 | - name: 'Add: FR12-S103(A)' 44 | service: 'robot_assembler/use_fr12_s103a' 45 | column: 1 46 | - name: 'Add: FR12-S103(B)' 47 | service: 'robot_assembler/use_fr12_s103b' 48 | column: 1 49 | - name: 'Add: FR12-X102' 50 | service: 'robot_assembler/use_fr12_x102' 51 | column: 1 52 | - name: 'Add: FR12-X103' 53 | service: 'robot_assembler/use_fr12_x103' 54 | column: 1 55 | - name: 'Add: HR12-F101' 56 | service: 'robot_assembler/use_hr12_f101' 57 | column: 1 58 | - name: 'Add: FR12-E170' 59 | service: 'robot_assembler/use_fr12_e170' 60 | column: 1 61 | - name: 'Add: FR12-E171' 62 | service: 'robot_assembler/use_fr12_e171' 63 | column: 1 64 | - name: 'Add: Body(A)' 65 | service: 'robot_assembler/use_body_a' 66 | column: 1 67 | - name: 'Add: Body(A) new' 68 | service: 'robot_assembler/use_body_a_new' 69 | column: 1 70 | - name: 'Add: Body(B)' 71 | service: 'robot_assembler/use_body_b' 72 | column: 1 73 | - name: 'Add: FootPlate' 74 | service: 'robot_assembler/use_footplate' 75 | column: 1 76 | - name: 'Add: FixedPlate' 77 | service: 'robot_assembler/use_fixedplate' 78 | column: 1 79 | - name: 'Add: BackBasket' 80 | service: 'robot_assembler/use_backbasket' 81 | column: 1 82 | - name: 'Add: Body(C)' 83 | service: 'robot_assembler/use_body_c' 84 | column: 1 85 | - name: 'Add: Wheel' 86 | service: 'robot_assembler/use_wheel' 87 | column: 1 88 | 89 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(robot_assembler) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | roseus euslisp 6 | ) 7 | 8 | catkin_package( 9 | DEPENDS 10 | CATKIN_DEPENDS 11 | INCLUDE_DIRS 12 | LIBRARIES 13 | ) 14 | 15 | if(NOT euslisp_INCLUDE_DIRS) 16 | if(EXISTS ${euslisp_SOURCE_DIR}/jskeus) 17 | set(euslisp_PACKAGE_PATH ${euslisp_SOURCE_DIR}) 18 | else() 19 | set(euslisp_PACKAGE_PATH ${euslisp_PREFIX}/share/euslisp) 20 | endif() 21 | message("-- Set euslisp_PACKAGE_PATH to ${euslisp_PACKAGE_PATH}") 22 | set(euslisp_INCLUDE_DIRS ${euslisp_PACKAGE_PATH}/jskeus/eus/include) 23 | endif() 24 | message("-- Set euslisp_INCLUDE_DIRS to ${euslisp_INCLUDE_DIRS}") 25 | include_directories(/usr/include /usr/X11R6/include ${euslisp_INCLUDE_DIRS} ${assimpdevel_INCLUDE_DIRS}) 26 | 27 | find_package(yaml-cpp) 28 | add_library(eus_yaml_cpp src/eus_yaml_cpp.cpp) 29 | target_link_libraries(eus_yaml_cpp ${YAML_CPP_LIBRARIES}) 30 | set_target_properties(eus_yaml_cpp PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/euslisp) 31 | 32 | # compile flags 33 | add_definitions(-std=c++11 -O2 -Wno-write-strings -Wno-comment) 34 | add_definitions(-Di486 -DLinux -D_REENTRANT -DVERSION='\"9.00\"' -DTHREADED -DPTHREAD -DX11R6_1) 35 | add_definitions('-DREPOVERSION="\\"${REPOVERSION}\\""') 36 | if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64* OR 37 | ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64* OR 38 | ${CMAKE_SYSTEM_PROCESSOR} MATCHES aarch64* ) 39 | add_definitions(-Dx86_64) 40 | else() 41 | add_definitions(-Di486) 42 | endif() 43 | 44 | if(${CMAKE_SYSTEM_NAME} MATCHES Darwin) 45 | add_definitions(-Dx86_64) 46 | set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -flat_namespace -undefined suppress") 47 | endif() 48 | 49 | set_target_properties(eus_yaml_cpp PROPERTIES PREFIX "" SUFFIX ".so") 50 | 51 | ### 52 | add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler-viewer.so ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler.so ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler-utils.so 53 | COMMAND ./compile.sh 54 | WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/euslisp 55 | DEPENDS ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler-viewer.l ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler.l ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler-utils.l) 56 | 57 | add_custom_target(compile_lisp_files ALL DEPENDS eus_yaml_cpp ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler-viewer.so ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler.so ${PROJECT_SOURCE_DIR}/euslisp/robot-assembler-utils.so) 58 | 59 | # install 60 | install(DIRECTORY euslisp launch gazebo sample config meshes scripts 61 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 62 | USE_SOURCE_PERMISSIONS) 63 | -------------------------------------------------------------------------------- /gazebo/worlds/sample_maze.world: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 5 | 6 | 7 | 8 | 0 9 | 0 0 5 0 -0 0 10 | 0.8 0.8 0.8 1 11 | 0.1 0.1 0.1 1 12 | 13 | 1000 14 | 0.9 15 | 0.01 16 | 0.001 17 | 18 | -0.5 0.5 -1 19 | 20 | 21 | 22 | 0.001 23 | 1 24 | 1000 25 | 0 0 -9.8 26 | 27 | 28 | 29 | model://ground_plane 30 | 31 | 32 | 33 | 34 | 0.62 -0.31 0 0 0 1.570796326795 35 | model://ra_wall_blue 36 | 37 | 38 | 39 | 0.62 0.31 0 0 0 1.570796326795 40 | model://ra_wall_blue 41 | 42 | 43 | 1.24 0.31 0 0 0 1.570796326795 44 | model://ra_wall_blue 45 | 46 | 47 | 1.86 0.31 0 0 0 1.570796326795 48 | model://ra_wall_blue 49 | 50 | 51 | 52 | 0.31 -0.62 0 0 0 0 53 | model://ra_wall_blue 54 | 55 | 56 | 0.31 -1.24 0 0 0 0 57 | model://ra_wall_blue 58 | 59 | 60 | 61 | 0.62 -1.55 0 0 0 1.570796326795 62 | model://ra_wall_blue 63 | 64 | 65 | 1.24 -1.55 0 0 0 1.570796326795 66 | model://ra_wall_blue 67 | 68 | 69 | 1.86 -1.55 0 0 0 1.570796326795 70 | model://ra_wall_blue 71 | 72 | 73 | 74 | 1.24 -0.93 0 0 0 1.570796326795 75 | model://ra_wall_blue 76 | 77 | 78 | 79 | 1.55 0.0 0 0 0 0 80 | model://ra_wall_blue 81 | 82 | 83 | 1.55 -0.62 0 0 0 0 84 | model://ra_wall_blue 85 | 86 | 87 | 88 | 2.17 -0.62 0 0 0 0 89 | model://ra_wall_blue 90 | 91 | 92 | 2.17 -1.24 0 0 0 0 93 | model://ra_wall_blue 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /sample/kxr_auv/merge.l: -------------------------------------------------------------------------------- 1 | ;; use roseus 2 | (setq *project-dir* (ros::rospack-find "robot_assembler")) 3 | (setq *yaml-file* (format nil "~A/config/robot_assembler_kxr_settings.yaml" *project-dir*)) 4 | 5 | (load "package://robot_assembler/euslisp/robot-assembler.l") 6 | (robot-assembler-initialize *yaml-file* :project-dir *project-dir*) 7 | 8 | ;; 9 | ;; sample for merging some roboasm.l files 10 | ;; 11 | (setq ht-torso (parse-roboasm (with-open-file (f "torso.roboasm.l") (read f)))) 12 | (setq ht-rleg (parse-roboasm (with-open-file (f "rleg.roboasm.l") (read f)))) 13 | (setq ht-lleg (parse-roboasm (with-open-file (f "lleg.roboasm.l") (read f)))) 14 | (setq ht-rarm (parse-roboasm (with-open-file (f "rarm.roboasm.l") (read f)))) 15 | (setq ht-larm (parse-roboasm (with-open-file (f "larm.roboasm.l") (read f)))) 16 | 17 | (setq ht-merged ht-torso) 18 | (setq ht-merged 19 | (merge-parsed-table ht-merged ht-lleg 20 | :battery-leg-plate_18619_0/4holes0 21 | :joint-base_5143_0/bottom-4holes 22 | :configuration :invert)) 23 | (setq ht-merged 24 | (merge-parsed-table ht-merged ht-rleg 25 | :battery-leg-plate_18619_0/4holes1 26 | :joint-base_5142_0/bottom-4holes 27 | :configuration :invert)) 28 | (setq ht-merged 29 | (merge-parsed-table ht-merged ht-larm 30 | :joint-base_24725_1/side-hole2 31 | :upper-arm26_3776_3/single-hole 32 | :configuration :fixed)) 33 | (setq ht-merged 34 | (merge-parsed-table ht-merged ht-rarm 35 | :joint-base_24725_3/side-hole2 36 | :upper-arm26_3775_3/single-hole 37 | :configuration :fixed)) 38 | 39 | (setq asm (create-roboasm-from-parsed-table ht-merged)) 40 | 41 | (with-open-file (f "kxr_auv_fullbody.roboasm.l" :direction :io) (pprint asm f)) 42 | 43 | #| 44 | 45 | rarm 46 | :s3301_30133_8/horn 47 | / (make-coords :pos (float-vector -51.000000000000 7.250000000000 -43.500000000000) :rpy (float-vector 1.570796326795 0.000000000000 -1.570796326795)) 48 | 49 | larm 50 | :s3301_30133_18/horn 51 | / (make-coords :pos (float-vector 51.000000000000 7.250000000000 -43.500000000000) :rpy (float-vector 1.570796326795 -0.000000000000 1.570796326795)) 52 | 53 | head 54 | :s3301_30133_13/horn 55 | / (make-coords :pos (float-vector -0.000000000000 7.250000000000 -61.500000000000) :rpy (float-vector 1.570796326795 -0.000000000000 -3.141592653590)) 56 | 57 | rleg 58 | :battery-leg-plate_30133_3/4holes0 59 | / (make-coords :pos (float-vector -23.500000000000 0.000000000000 24.000000000000) :rpy (float-vector 1.570796326795 0.000000000000 -3.141592653590)) 60 | 61 | lleg 62 | :battery-leg-plate_30133_3/4holes1 63 | / (make-coords :pos (float-vector 23.500000000000 -0.000000000000 24.000000000000) :rpy (float-vector 1.570796326795 0.000000000000 -3.141592653590)) 64 | 65 | --- 66 | 67 | 68 | :joint-base_9085_0/bottom-4holes 69 | / (make-coords :pos (float-vector 0.000000000000 0.000000000000 -3.000000000000) :rpy (float-vector 0.000000000000 -0.000000000000 3.141592653590)) 70 | 71 | 72 | :joint-base_8085_0/bottom-4holes 73 | 74 | 75 | :joint-base_7089_0/horn-hole 76 | 77 | 78 | :joint-base_8089_0/horn-hole 79 | 80 | 81 | :joint-base_23576_0/horn-hole 82 | |# 83 | -------------------------------------------------------------------------------- /gazebo/robot_assembler_gazebo_robot.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | 53 | 54 | 55 | 56 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /sample/kxr/kxr_larm.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) 2 | (:parts-type :joint-base) 3 | (:parts-name :joint-base_8089_0)) 4 | ((:robot-parts-point :joint-base_8089_0/side-hole3) 5 | (:parts-name :upper-arm26_8089_1) 6 | (:parts-type :upper-arm26) 7 | (:parts-point :upper-arm26_8089_1/single-hole) 8 | (:configuration :default)) 9 | ((:robot-parts-point :joint-base_8089_0/side-hole2) 10 | (:parts-name :bottom-arm26_8089_2) 11 | (:parts-type :bottom-arm26) 12 | (:parts-point :bottom-arm26_8089_2/single-hole) 13 | (:configuration :default)) 14 | ((:robot-parts-point :upper-arm26_8089_1/horn-hole) 15 | (:parts-name :s3301_8089_3) 16 | (:parts-type :s3301) 17 | (:parts-point :s3301_8089_3/horn) 18 | (:configuration :rotate90)) 19 | ((:robot-parts-point :s3301_8089_3/bottom-front-tap) 20 | (:parts-name :joint-frame-a_8089_4) 21 | (:parts-type :joint-frame-a) 22 | (:parts-point :joint-frame-a_8089_4/2-holes) 23 | (:configuration :fixed)) 24 | ((:robot-parts-point :s3301_8089_3/bottom-back-tap) 25 | (:parts-name :joint-frame-a_8089_5) 26 | (:parts-type :joint-frame-a) 27 | (:parts-point :joint-frame-a_8089_5/2-holes) 28 | (:configuration :fixed)) 29 | ((:robot-parts-point :joint-frame-a_8089_4/single-hole) 30 | (:parts-name :joint-base_8089_6) 31 | (:parts-type :joint-base) 32 | (:parts-point :joint-base_8089_6/side-hole1) 33 | (:configuration :fixed)) 34 | ((:robot-parts-point :joint-base_8089_6/side-hole2) 35 | (:parts-name :bottom-arm26_8089_7) 36 | (:parts-type :bottom-arm26) 37 | (:parts-point :bottom-arm26_8089_7/single-hole) 38 | (:configuration :invert)) 39 | ((:robot-parts-point :joint-base_8089_6/side-hole3) 40 | (:parts-name :upper-arm26_8089_8) 41 | (:parts-type :upper-arm26) 42 | (:parts-point :upper-arm26_8089_8/single-hole) 43 | (:configuration :invert)) 44 | ((:robot-parts-point :upper-arm26_8089_8/horn-hole) 45 | (:parts-name :s3301_8089_9) 46 | (:parts-type :s3301) 47 | (:parts-point :s3301_8089_9/horn) 48 | (:configuration :fixed)) 49 | ((:robot-parts-point :s3301_8089_9/bottom-back-tap) 50 | (:parts-name :joint-frame-a_8089_10) 51 | (:parts-type :joint-frame-a) 52 | (:parts-point :joint-frame-a_8089_10/2-holes) 53 | (:configuration :fixed)) 54 | ((:robot-parts-point :s3301_8089_9/bottom-front-tap) 55 | (:parts-name :joint-frame-a_8089_11) 56 | (:parts-type :joint-frame-a) 57 | (:parts-point :joint-frame-a_8089_11/2-holes) 58 | (:configuration :fixed)) 59 | ((:robot-parts-point :joint-frame-a_8089_11/single-hole) 60 | (:parts-name :joint-base_8089_12) 61 | (:parts-type :joint-base) 62 | (:parts-point :joint-base_8089_12/side-hole2) 63 | (:configuration :fixed)) 64 | ((:robot-parts-point :joint-base_8089_12/side-hole1) 65 | (:parts-name :joint-frame-b-b_8089_14) 66 | (:parts-type :joint-frame-b-b) 67 | (:parts-point :joint-frame-b-b_8089_14/single-hole) 68 | (:configuration :invert)) 69 | ((:robot-parts-point :joint-base_8089_12/side-hole0) 70 | (:parts-name :joint-frame-b-a_8089_15) 71 | (:parts-type :joint-frame-b-a) 72 | (:parts-point :joint-frame-b-a_8089_15/single-hole) 73 | (:configuration :invert)) 74 | ((:robot-parts-point :joint-frame-b-b_8089_14/2-holes) 75 | (:parts-name :s3301_8089_16) 76 | (:parts-type :s3301) 77 | (:parts-point :s3301_8089_16/bottom-back-tap) 78 | (:configuration :fixed)) 79 | ((:robot-parts-point :s3301_8089_16/horn) 80 | (:parts-name :finger_8089_17) 81 | (:parts-type :finger) 82 | (:parts-point :finger_8089_17/horn-hole) 83 | (:configuration :fixed))) 84 | -------------------------------------------------------------------------------- /sample/kxr/kxr_rarm.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) 2 | (:parts-type :joint-base) 3 | (:parts-name :joint-base_7089_0)) 4 | ((:robot-parts-point :joint-base_7089_0/side-hole2) 5 | (:parts-name :upper-arm26_7089_1) 6 | (:parts-type :upper-arm26) 7 | (:parts-point :upper-arm26_7089_1/single-hole) 8 | (:configuration :default)) 9 | ((:robot-parts-point :joint-base_7089_0/side-hole3) 10 | (:parts-name :bottom-arm26_7089_2) 11 | (:parts-type :bottom-arm26) 12 | (:parts-point :bottom-arm26_7089_2/single-hole) 13 | (:configuration :default)) 14 | ((:robot-parts-point :upper-arm26_7089_1/horn-hole) 15 | (:parts-name :s3301_7089_3) 16 | (:parts-type :s3301) 17 | (:parts-point :s3301_7089_3/horn) 18 | (:configuration :rotate-90)) 19 | ((:robot-parts-point :s3301_7089_3/bottom-front-tap) 20 | (:parts-name :joint-frame-a_7089_4) 21 | (:parts-type :joint-frame-a) 22 | (:parts-point :joint-frame-a_7089_4/2-holes) 23 | (:configuration :fixed)) 24 | ((:robot-parts-point :s3301_7089_3/bottom-back-tap) 25 | (:parts-name :joint-frame-a_7089_5) 26 | (:parts-type :joint-frame-a) 27 | (:parts-point :joint-frame-a_7089_5/2-holes) 28 | (:configuration :fixed)) 29 | ((:robot-parts-point :joint-frame-a_7089_4/single-hole) 30 | (:parts-name :joint-base_7089_6) 31 | (:parts-type :joint-base) 32 | (:parts-point :joint-base_7089_6/side-hole1) 33 | (:configuration :fixed)) 34 | ((:robot-parts-point :joint-base_7089_6/side-hole2) 35 | (:parts-name :bottom-arm26_7089_7) 36 | (:parts-type :bottom-arm26) 37 | (:parts-point :bottom-arm26_7089_7/single-hole) 38 | (:configuration :invert)) 39 | ((:robot-parts-point :joint-base_7089_6/side-hole3) 40 | (:parts-name :upper-arm26_7089_8) 41 | (:parts-type :upper-arm26) 42 | (:parts-point :upper-arm26_7089_8/single-hole) 43 | (:configuration :invert)) 44 | ((:robot-parts-point :upper-arm26_7089_8/horn-hole) 45 | (:parts-name :s3301_7089_9) 46 | (:parts-type :s3301) 47 | (:parts-point :s3301_7089_9/horn) 48 | (:configuration :fixed)) 49 | ((:robot-parts-point :s3301_7089_9/bottom-back-tap) 50 | (:parts-name :joint-frame-a_7089_10) 51 | (:parts-type :joint-frame-a) 52 | (:parts-point :joint-frame-a_7089_10/2-holes) 53 | (:configuration :fixed)) 54 | ((:robot-parts-point :s3301_7089_9/bottom-front-tap) 55 | (:parts-name :joint-frame-a_7089_11) 56 | (:parts-type :joint-frame-a) 57 | (:parts-point :joint-frame-a_7089_11/2-holes) 58 | (:configuration :fixed)) 59 | ((:robot-parts-point :joint-frame-a_7089_11/single-hole) 60 | (:parts-name :joint-base_7089_12) 61 | (:parts-type :joint-base) 62 | (:parts-point :joint-base_7089_12/side-hole2) 63 | (:configuration :fixed)) 64 | ((:robot-parts-point :joint-base_7089_12/side-hole0) 65 | (:parts-name :joint-frame-b-b_7089_14) 66 | (:parts-type :joint-frame-b-b) 67 | (:parts-point :joint-frame-b-b_7089_14/single-hole) 68 | (:configuration :invert)) 69 | ((:robot-parts-point :joint-base_7089_12/side-hole1) 70 | (:parts-name :joint-frame-b-a_7089_15) 71 | (:parts-type :joint-frame-b-a) 72 | (:parts-point :joint-frame-b-a_7089_15/single-hole) 73 | (:configuration :invert)) 74 | ((:robot-parts-point :joint-frame-b-b_7089_14/2-holes) 75 | (:parts-name :s3301_7089_16) 76 | (:parts-type :s3301) 77 | (:parts-point :s3301_7089_16/bottom-front-tap) 78 | (:configuration :fixed)) 79 | ((:robot-parts-point :s3301_7089_16/horn) 80 | (:parts-name :finger_7089_17) 81 | (:parts-type :finger) 82 | (:parts-point :finger_7089_17/aux-horn-hole) 83 | (:configuration :fixed))) 84 | -------------------------------------------------------------------------------- /euslisp/eus-yaml.l: -------------------------------------------------------------------------------- 1 | (eval-when (load) 2 | ;; compiled code 3 | (require :eus-yaml "package://robot_assembler/euslisp/eus_yaml_cpp.so") ;; loading c-parse-yaml-file 4 | ) 5 | (eval-when (eval compile) 6 | ;; source code 7 | (require :eus-yaml "eus_yaml_cpp.so") ;; loading c-parse-yaml-file 8 | ) 9 | 10 | (defvar *yaml-not-exist* :yaml-not-existing-key) 11 | 12 | (defun yaml-map? (yaml-data) 13 | (every #'(lambda (x) (keywordp (car x))) yaml-data)) 14 | (defun yaml-list? (yaml-data) 15 | (and (listp yaml-data) 16 | (not (yaml-map? yaml-data)))) 17 | (defun yaml-scalar? (yaml-data) 18 | (not (listp yaml-data))) 19 | 20 | (defun write-yaml (yaml-data &key (fmt t) (offset "") (inline t)) 21 | (cond 22 | ((not (listp yaml-data)) ;; scalar 23 | (write-yaml-scalar yaml-data :fmt fmt :offset offset :inline inline) 24 | ) 25 | ((every #'(lambda (x) (keywordp (car x))) yaml-data) ;; list 26 | (write-yaml-map yaml-data :fmt fmt :offset offset :inline inline) 27 | ) 28 | (t ;; list 29 | (write-yaml-list yaml-data :fmt fmt :offset offset :inline inline) 30 | ) 31 | )) 32 | (defun write-yaml-map (yaml-data &key (fmt) (offset "") (inline t)) 33 | (if inline 34 | (progn 35 | (format fmt "~A{" offset) 36 | (dolist (elm yaml-data) 37 | (format fmt "~A: " (string (car elm))) 38 | (write-yaml (cadr elm) :fmt fmt :inline t) 39 | (format fmt ", ") 40 | ) 41 | (format fmt "}") 42 | ) 43 | (dolist (elm yaml-data) 44 | (format fmt "~A~A: " offset (car elm)) 45 | (write-yaml (cadr elm) :fmt fmt) 46 | (format fmt "~%") 47 | ) 48 | )) 49 | (defun write-yaml-list (yaml-data &key (fmt) (offset "") (inline t)) 50 | (if inline 51 | (progn 52 | (format fmt "~A[" offset) 53 | (dolist (elm yaml-data) 54 | (write-yaml elm :fmt fmt :inline t) 55 | (format fmt ", ") 56 | ) 57 | (format fmt "]") 58 | ) 59 | (dolist (elm yaml-data) 60 | (format fmt "~A-~%" offset) 61 | (write-yaml elm :fmt fmt :offset (format nil "~A " offset)) 62 | (format fmt "~%") 63 | ) 64 | )) 65 | (defun write-yaml-scalar (yaml-data &key (fmt) (offset "") (inline t)) 66 | (cond 67 | ((stringp yaml-data) 68 | (format fmt "~A\"~A\"" offset yaml-data) 69 | ) 70 | (t 71 | (format fmt "~A~A" offset yaml-data)) 72 | ) 73 | ) 74 | 75 | (defun yaml-list-keys (yaml-data) 76 | (if (not (yaml-map? yaml-data)) (return-from yaml-list-keys nil)) 77 | (mapcar #'(lambda (x) (car x)) yaml-data)) 78 | 79 | (defun yaml-key-exist? (yaml-data key) 80 | (assoc key yaml-data)) 81 | 82 | (defun yaml-get-value (yaml-data key &key (no-key *yaml-not-exist*)) 83 | (let ((data (yaml-key-exist? yaml-data key))) 84 | (if data (cadr data) no-key))) 85 | 86 | (defun yaml-parse-trans-and-rot (yaml-data) 87 | (let ((trs (yaml-get-value yaml-data :translation :no-key nil)) 88 | (rot (yaml-get-value yaml-data :rotation :no-key nil)) 89 | args) 90 | ;; 91 | (if trs (setq trs (coerce trs float-vector))) 92 | (if rot (setq rot (rotation-matrix (deg2rad (car (last rot))) 93 | (subseq (coerce rot float-vector) 0 3)))) 94 | (when (or trs rot) 95 | (when trs (push trs args) (push :pos args)) 96 | (when rot (push rot args) (push :rot args)) 97 | (apply #'make-coords args) 98 | ) 99 | )) 100 | -------------------------------------------------------------------------------- /config/robot_assembler_kxr_buttons_layout.yaml: -------------------------------------------------------------------------------- 1 | - name: 'Align' 2 | service: 'robot_assembler/align' 3 | column: 0 4 | - name: 'Undo Align' 5 | service: 'robot_assembler/unalign' 6 | column: 0 7 | - name: 'Attach' 8 | service: 'robot_assembler/attach' 9 | column: 0 10 | - name: 'Undo' 11 | service: 'robot_assembler/undo' 12 | column: 0 13 | - name: 'Write URDF' 14 | service: 'robot_assembler/write_urdf' 15 | column: 0 16 | - name: 'Delete All' 17 | service: 'robot_assembler/delete_all' 18 | column: 0 19 | #- name: 'Write Yaml' 20 | # service: 'robot_assembler/write_yaml' 21 | # column: 0 22 | - name: 'Add: s3301' 23 | service: 'robot_assembler/use_s3301' 24 | column: 1 25 | - name: 'Add: dummy-servo' 26 | service: 'robot_assembler/use_dummy_servo' 27 | column: 1 28 | - name: 'Add: dummy-half-servo' 29 | service: 'robot_assembler/use_dummy_half_servo' 30 | column: 1 31 | - name: 'Add: joint-base' 32 | service: 'robot_assembler/use_joint_base' 33 | column: 1 34 | - name: 'Add: upper-arm20' 35 | service: 'robot_assembler/use_upper_arm20' 36 | column: 1 37 | - name: 'Add: upper-arm26' 38 | service: 'robot_assembler/use_upper_arm26' 39 | column: 1 40 | - name: 'Add: upper-arm38' 41 | service: 'robot_assembler/use_upper_arm38' 42 | column: 1 43 | - name: 'Add: bottom-arm20' 44 | service: 'robot_assembler/use_bottom_arm20' 45 | column: 1 46 | - name: 'Add: bottom-arm26' 47 | service: 'robot_assembler/use_bottom_arm26' 48 | column: 1 49 | - name: 'Add: bottom-arm38' 50 | service: 'robot_assembler/use_bottom_arm38' 51 | column: 1 52 | - name: 'Add: joint-frame-a' 53 | service: 'robot_assembler/use_joint_frame_a' 54 | column: 1 55 | - name: 'Add: joint-frame-b-a' 56 | service: 'robot_assembler/use_joint_frame_b_a' 57 | column: 1 58 | - name: 'Add: joint-frame-b-b' 59 | service: 'robot_assembler/use_joint_frame_b_b' 60 | column: 1 61 | - name: 'Add: bottom-spacer' 62 | service: 'robot_assembler/use_bottom_spacer' 63 | column: 1 64 | - name: 'Add: cross-servo-frame-b' 65 | service: 'robot_assembler/use_cross_servo_frame_b' 66 | column: 1 67 | - name: 'Add: cross-servo-frame-a' 68 | service: 'robot_assembler/use_cross_servo_frame_a' 69 | column: 1 70 | - name: 'Add: cross-upper-arm28' 71 | service: 'robot_assembler/use_cross_upper_arm28' 72 | column: 1 73 | - name: 'Add: cross-bottom-arm28' 74 | service: 'robot_assembler/use_cross_bottom_arm28' 75 | column: 1 76 | - name: 'Add: angle-bracket' 77 | service: 'robot_assembler/use_angle_bracket' 78 | column: 2 79 | - name: 'Add: arm-supporter-a' 80 | service: 'robot_assembler/use_arm_supporter_a' 81 | column: 2 82 | - name: 'Add: arm-supporter-b' 83 | service: 'robot_assembler/use_arm_supporter_b' 84 | column: 2 85 | - name: 'Add: flat-frame' 86 | service: 'robot_assembler/use_flat_frame' 87 | column: 2 88 | - name: 'Add: body-plate' 89 | service: 'robot_assembler/use_body_plate' 90 | column: 2 91 | - name: 'Add: battery-leg-plate' 92 | service: 'robot_assembler/use_battery_leg_plate' 93 | column: 2 94 | - name: 'Add: battery-box' 95 | service: 'robot_assembler/use_battery_box' 96 | column: 2 97 | - name: 'Add: back-pack' 98 | service: 'robot_assembler/use_back_pack' 99 | column: 2 100 | - name: 'Add: sole' 101 | service: 'robot_assembler/use_sole' 102 | column: 2 103 | - name: 'Add: wheel' 104 | service: 'robot_assembler/use_wheel' 105 | column: 2 106 | - name: 'Add: finger' 107 | service: 'robot_assembler/use_finger' 108 | column: 2 109 | -------------------------------------------------------------------------------- /sample/kxr/kxr-merge-sample.l: -------------------------------------------------------------------------------- 1 | ;; use roseus 2 | (setq *project-dir* (ros::rospack-find "robot_assembler")) 3 | (setq *yaml-file* (format nil "~A/config/robot_assembler_kxr_settings.yaml" *project-dir*)) 4 | 5 | (load "package://robot_assembler/euslisp/robot-assembler.l") 6 | (robot-assembler-initialize *yaml-file* :project-dir *project-dir*) 7 | 8 | ;; 9 | ;; sample for merging some roboasm.l files 10 | ;; 11 | (setq ht-torso (parse-roboasm (with-open-file (f "kxr_body.roboasm.l") (read f)))) 12 | (setq ht-head (parse-roboasm (with-open-file (f "kxr_head.roboasm.l") (read f)))) 13 | (setq ht-lleg (parse-roboasm (with-open-file (f "kxr_lleg.roboasm.l") (read f)))) 14 | (setq ht-rleg (parse-roboasm (with-open-file (f "kxr_rleg.roboasm.l") (read f)))) 15 | (setq ht-larm (parse-roboasm (with-open-file (f "kxr_larm.roboasm.l") (read f)))) 16 | (setq ht-rarm (parse-roboasm (with-open-file (f "kxr_rarm.roboasm.l") (read f)))) 17 | 18 | (setq ht-merged ht-torso) 19 | (setq ht-merged 20 | (merge-parsed-table ht-merged ht-head 21 | :s3301_30133_13/horn 22 | :joint-base_23576_0/horn-hole 23 | :configuration :rotate90)) 24 | (setq ht-merged 25 | (merge-parsed-table ht-merged ht-lleg 26 | :battery-leg-plate_30133_3/4holes1 27 | :joint-base_8085_0/bottom-4holes 28 | :configuration :invert)) 29 | (setq ht-merged 30 | (merge-parsed-table ht-merged ht-rleg 31 | :battery-leg-plate_30133_3/4holes0 32 | :joint-base_9085_0/bottom-4holes 33 | :configuration :invert)) 34 | (setq ht-merged 35 | (merge-parsed-table ht-merged ht-larm 36 | :s3301_30133_18/horn 37 | :joint-base_8089_0/horn-hole)) 38 | (setq ht-merged 39 | (merge-parsed-table ht-merged ht-rarm 40 | :s3301_30133_8/horn 41 | :joint-base_7089_0/horn-hole)) 42 | 43 | (setq asm (create-roboasm-from-parsed-table ht-merged)) 44 | 45 | (with-open-file (f "kxr_fullbody.roboasm.l" :direction :io) (pprint asm f)) 46 | 47 | #| 48 | 49 | rarm 50 | :s3301_30133_8/horn 51 | / (make-coords :pos (float-vector -51.000000000000 7.250000000000 -43.500000000000) :rpy (float-vector 1.570796326795 0.000000000000 -1.570796326795)) 52 | 53 | larm 54 | :s3301_30133_18/horn 55 | / (make-coords :pos (float-vector 51.000000000000 7.250000000000 -43.500000000000) :rpy (float-vector 1.570796326795 -0.000000000000 1.570796326795)) 56 | 57 | head 58 | :s3301_30133_13/horn 59 | / (make-coords :pos (float-vector -0.000000000000 7.250000000000 -61.500000000000) :rpy (float-vector 1.570796326795 -0.000000000000 -3.141592653590)) 60 | 61 | rleg 62 | :battery-leg-plate_30133_3/4holes0 63 | / (make-coords :pos (float-vector -23.500000000000 0.000000000000 24.000000000000) :rpy (float-vector 1.570796326795 0.000000000000 -3.141592653590)) 64 | 65 | lleg 66 | :battery-leg-plate_30133_3/4holes1 67 | / (make-coords :pos (float-vector 23.500000000000 -0.000000000000 24.000000000000) :rpy (float-vector 1.570796326795 0.000000000000 -3.141592653590)) 68 | 69 | --- 70 | 71 | 72 | :joint-base_9085_0/bottom-4holes 73 | / (make-coords :pos (float-vector 0.000000000000 0.000000000000 -3.000000000000) :rpy (float-vector 0.000000000000 -0.000000000000 3.141592653590)) 74 | 75 | 76 | :joint-base_8085_0/bottom-4holes 77 | 78 | 79 | :joint-base_7089_0/horn-hole 80 | 81 | 82 | :joint-base_8089_0/horn-hole 83 | 84 | 85 | :joint-base_23576_0/horn-hole 86 | |# 87 | -------------------------------------------------------------------------------- /sample/1st_assignment/48-196543.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :xm430) (:parts-name :xm430_21463_0)) 2 | ((:robot-parts-point :xm430_21463_0/horn) 3 | (:parts-name :fr12-h101_21463_65) 4 | (:parts-type :fr12-h101) 5 | (:parts-point :fr12-h101_21463_65/horn-attachment) 6 | (:configuration :default)) 7 | ((:robot-parts-point :fr12-h101_21463_65/utility-holes) 8 | (:parts-name :fr12-h101_21463_66) 9 | (:parts-type :fr12-h101) 10 | (:parts-point :fr12-h101_21463_66/utility-holes) 11 | (:configuration :flip-x)) 12 | ((:robot-parts-point :fr12-h101_21463_66/horn-attachment) 13 | (:parts-name :xm430_21463_68) 14 | (:parts-type :xm430) 15 | (:parts-point :xm430_21463_68/horn) 16 | (:configuration :fixed)) 17 | ((:robot-parts-point :xm430_21463_68/bottom-cover-back-tap) 18 | (:parts-name :fr12-s102_21463_73) 19 | (:parts-type :fr12-s102) 20 | (:parts-point :fr12-s102_21463_73/to-actuator-front) 21 | (:configuration :fixed)) 22 | ((:robot-parts-point :fr12-s102_21463_73/utility-holes) 23 | (:parts-name :fr12-s102_21463_81) 24 | (:parts-type :fr12-s102) 25 | (:parts-point :fr12-s102_21463_81/utility-holes) 26 | (:configuration :flip-x)) 27 | ((:robot-parts-point :fr12-s102_21463_81/to-actuator-front) 28 | (:parts-name :xm430_21463_82) 29 | (:parts-type :xm430) 30 | (:parts-point :xm430_21463_82/bottom-cover-tap) 31 | (:configuration :fixed)) 32 | ((:robot-parts-point :xm430_21463_82/horn) 33 | (:parts-name :fr12-h101_21463_83) 34 | (:parts-type :fr12-h101) 35 | (:parts-point :fr12-h101_21463_83/horn-attachment) 36 | (:configuration :fixed)) 37 | ((:robot-parts-point :fr12-h101_21463_83/utility-holes) 38 | (:parts-name :fr12-h101_21463_84) 39 | (:parts-type :fr12-h101) 40 | (:parts-point :fr12-h101_21463_84/utility-holes) 41 | (:configuration :flip-x)) 42 | ((:robot-parts-point :fr12-h101_21463_84/horn-attachment) 43 | (:parts-name :xm430_21463_85) 44 | (:parts-type :xm430) 45 | (:parts-point :xm430_21463_85/horn) 46 | (:configuration :fixed)) 47 | ((:robot-parts-point :xm430_21463_85/bottom-cover-tap) 48 | (:parts-name :fr12-s102_21463_90) 49 | (:parts-type :fr12-s102) 50 | (:parts-point :fr12-s102_21463_90/to-actuator-front) 51 | (:configuration :fixed)) 52 | ((:robot-parts-point :fr12-s102_21463_90/utility-holes) 53 | (:parts-name :fr12-s102_21463_91) 54 | (:parts-type :fr12-s102) 55 | (:parts-point :fr12-s102_21463_91/utility-holes) 56 | (:configuration :flip-x)) 57 | ((:robot-parts-point :xm430_21463_0/bottom-cover-tap) 58 | (:parts-name :fr12-s102_21463_94) 59 | (:parts-type :fr12-s102) 60 | (:parts-point :fr12-s102_21463_94/to-actuator-front) 61 | (:configuration :fixed)) 62 | ((:robot-parts-point :fr12-s102_21463_94/utility-holes) 63 | (:parts-name :fr12-s102_21463_96) 64 | (:parts-type :fr12-s102) 65 | (:parts-point :fr12-s102_21463_96/utility-holes) 66 | (:configuration :flip-x)) 67 | ((:robot-parts-point :fr12-s102_21463_96/to-actuator-front) 68 | (:parts-name :xm430_21463_97) 69 | (:parts-type :xm430) 70 | (:parts-point :xm430_21463_97/bottom-cover-tap) 71 | (:configuration :fixed)) 72 | ((:robot-parts-point :fr12-s102_21463_91/to-actuator-front) 73 | (:parts-name :xm430_21463_98) 74 | (:parts-type :xm430) 75 | (:parts-point :xm430_21463_98/bottom-cover-tap) 76 | (:configuration :fixed)) 77 | ((:robot-parts-point :xm430_21463_98/horn) 78 | (:parts-name :fr12-h103_21463_99) 79 | (:parts-type :fr12-h103) 80 | (:parts-point :fr12-h103_21463_99/horn-attachment) 81 | (:configuration :fixed)) 82 | ((:robot-parts-point :xm430_21463_97/horn) 83 | (:parts-name :fr12-h103_21463_102) 84 | (:parts-type :fr12-h103) 85 | (:parts-point :fr12-h103_21463_102/horn-attachment) 86 | (:configuration :fixed))) 87 | -------------------------------------------------------------------------------- /gazebo/models/ra_basket/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 19 | 0 0 0.003 0 0 0 20 | 21 | 0.20 0.30 0.006 22 | 23 | 24 | 25 | 0.103 0 0.075 0 0 0 26 | 27 | 0.006 0.30 0.15 28 | 29 | 30 | 31 | -0.103 0 0.075 0 0 0 32 | 33 | 0.006 0.30 0.15 34 | 35 | 36 | 37 | 0 0.153 0.075 0 0 0 38 | 39 | 0.212 0.006 0.15 40 | 41 | 42 | 43 | 0 -0.153 0.075 0 0 0 44 | 45 | 0.212 0.006 0.15 46 | 47 | 48 | 53 | 54 | 0 0 0.003 0 0 0 55 | 56 | 0.20 0.30 0.006 57 | 58 | 59 | .6 .55 .55 1 60 | .65 .6 .6 1 61 | 0.1 0.1 0.1 1 62 | 63 | 64 | 65 | 0.103 0 0.075 0 0 0 66 | 67 | 0.006 0.30 0.15 68 | 69 | 70 | .6 .55 .55 1 71 | .65 .6 .6 1 72 | 0.1 0.1 0.1 1 73 | 74 | 75 | 76 | -0.103 0 0.075 0 0 0 77 | 78 | 0.006 0.30 0.15 79 | 80 | 81 | .6 .55 .55 1 82 | .65 .6 .6 1 83 | 0.1 0.1 0.1 1 84 | 85 | 86 | 87 | 0 0.153 0.075 0 0 0 88 | 89 | 0.212 0.006 0.15 90 | 91 | 92 | .6 .55 .55 1 93 | .65 .6 .6 1 94 | 0.1 0.1 0.1 1 95 | 96 | 97 | 98 | 0 -0.153 0.075 0 0 0 99 | 100 | 0.212 0.006 0.15 101 | 102 | 103 | .6 .55 .55 1 104 | .65 .6 .6 1 105 | 0.1 0.1 0.1 1 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_blue/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .05 .05 .05 1 61 | .05 .05 .05 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .05 .05 .05 1 72 | .05 .05 .05 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .05 .05 .05 1 83 | .05 .05 .05 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .05 .05 .05 1 94 | .05 .05 .05 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .05 .05 .05 1 105 | .05 .05 .05 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_gray/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .05 .05 .05 1 61 | .05 .05 .05 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .05 .05 .05 1 72 | .05 .05 .05 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .05 .05 .05 1 83 | .05 .05 .05 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .05 .05 .05 1 94 | .05 .05 .05 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .05 .05 .05 1 105 | .05 .05 .05 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_pink/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .05 .05 .05 1 61 | .05 .05 .05 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .05 .05 .05 1 72 | .05 .05 .05 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .05 .05 .05 1 83 | .05 .05 .05 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .05 .05 .05 1 94 | .05 .05 .05 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .05 .05 .05 1 105 | .05 .05 .05 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_beige/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .05 .05 .05 1 61 | .05 .05 .05 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .05 .05 .05 1 72 | .05 .05 .05 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .05 .05 .05 1 83 | .05 .05 .05 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .05 .05 .05 1 94 | .05 .05 .05 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .05 .05 .05 1 105 | .05 .05 .05 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_black/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .08 .08 .08 1 61 | .12 .12 .12 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .08 .08 .08 1 72 | .12 .12 .12 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .08 .08 .08 1 83 | .12 .12 .12 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .08 .08 .08 1 94 | .12 .12 .12 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .08 .08 .08 1 105 | .12 .12 .12 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_brown/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .05 .05 .05 1 61 | .05 .05 .05 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .05 .05 .05 1 72 | .05 .05 .05 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .05 .05 .05 1 83 | .05 .05 .05 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .05 .05 .05 1 94 | .05 .05 .05 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .05 .05 .05 1 105 | .05 .05 .05 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /gazebo/models/rescue_block_yellow/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 24 | 25 | 0 0 0.045 0 0 0 26 | 27 | 0.1 0.2 0.010 28 | 29 | 30 | 31 | 0 0 0.005 0 0 0 32 | 33 | 0.1 0.2 0.010 34 | 35 | 36 | 37 | 0 0 0.025 0 0 0 38 | 39 | 0.1 0.020 0.030 40 | 41 | 42 | 43 | 0 -0.065 0.025 0 0 0 44 | 45 | 0.1 0.020 0.030 46 | 47 | 48 | 49 | 0 0.065 0.025 0 0 0 50 | 51 | 0.1 0.020 0.030 52 | 53 | 54 | 55 | 0 0 0.045 0 0 0 56 | 57 | 0.1 0.2 0.010 58 | 59 | 60 | .05 .05 .05 1 61 | .05 .05 .05 1 62 | 0.1 0.1 0.1 1 63 | 64 | 65 | 66 | 0 0 0.005 0 0 0 67 | 68 | 0.1 0.2 0.010 69 | 70 | 71 | .05 .05 .05 1 72 | .05 .05 .05 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0 0 0.025 0 0 0 78 | 79 | 0.1 0.020 0.030 80 | 81 | 82 | .05 .05 .05 1 83 | .05 .05 .05 1 84 | 0.1 0.1 0.1 1 85 | 86 | 87 | 88 | 0 -0.065 0.025 0 0 0 89 | 90 | 0.1 0.020 0.030 91 | 92 | 93 | .05 .05 .05 1 94 | .05 .05 .05 1 95 | 0.1 0.1 0.1 1 96 | 97 | 98 | 99 | 0 0.065 0.025 0 0 0 100 | 101 | 0.1 0.020 0.030 102 | 103 | 104 | .05 .05 .05 1 105 | .05 .05 .05 1 106 | 0.1 0.1 0.1 1 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /sample/kxr/sensor_sample.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :sole) (:parts-name :sole_30563_0)) 2 | ((:robot-parts-point :sole_30563_0/4holes0) 3 | (:parts-name :joint-base_30563_1) 4 | (:parts-type :joint-base) 5 | (:parts-point :joint-base_30563_1/bottom-4holes) 6 | (:configuration :fixed)) 7 | ((:robot-parts-point :joint-base_30563_1/side-hole0) 8 | (:parts-name :upper-arm26_30563_2) 9 | (:parts-type :upper-arm26) 10 | (:parts-point :upper-arm26_30563_2/single-hole) 11 | (:configuration :fixed)) 12 | ((:robot-parts-point :upper-arm26_30563_2/horn-hole) 13 | (:parts-name :s3301_30563_3) 14 | (:parts-type :s3301) 15 | (:parts-point :s3301_30563_3/horn) 16 | (:configuration :fixed)) 17 | ((:robot-parts-point :s3301_30563_3/bottom-front-tap) 18 | (:parts-name :joint-frame-a_30563_4) 19 | (:parts-type :joint-frame-a) 20 | (:parts-point :joint-frame-a_30563_4/2-holes) 21 | (:configuration :fixed)) 22 | ((:robot-parts-point :joint-frame-a_30563_4/single-hole) 23 | (:parts-name :joint-base_30563_5) 24 | (:parts-type :joint-base) 25 | (:parts-point :joint-base_30563_5/side-hole2) 26 | (:configuration :default)) 27 | ((:robot-parts-point :joint-base_30563_5/bottom-4holes) 28 | (:parts-name :joint-base_30563_6) 29 | (:parts-type :joint-base) 30 | (:parts-point :joint-base_30563_6/bottom-4holes) 31 | (:configuration :default)) 32 | ((:robot-parts-point :joint-base_30563_5/side-hole3) 33 | (:parts-name :joint-frame-a_30563_8) 34 | (:parts-type :joint-frame-a) 35 | (:parts-point :joint-frame-a_30563_8/single-hole) 36 | (:configuration :fixed)) 37 | ((:robot-parts-point :joint-base_30563_1/side-hole1) 38 | (:parts-name :bottom-arm26_30563_9) 39 | (:parts-type :bottom-arm26) 40 | (:parts-point :bottom-arm26_30563_9/single-hole) 41 | (:configuration :default)) 42 | ((:robot-parts-point :joint-base_30563_6/side-hole1) 43 | (:parts-name :joint-frame-a_30563_10) 44 | (:parts-type :joint-frame-a) 45 | (:parts-point :joint-frame-a_30563_10/single-hole) 46 | (:configuration :default)) 47 | ((:robot-parts-point :joint-frame-a_30563_10/2-holes) 48 | (:parts-name :s3301_30563_11) 49 | (:parts-type :s3301) 50 | (:parts-point :s3301_30563_11/bottom-back-tap) 51 | (:configuration :fixed)) 52 | ((:robot-parts-point :joint-base_30563_6/side-hole0) 53 | (:parts-name :joint-frame-a_30563_13) 54 | (:parts-type :joint-frame-a) 55 | (:parts-point :joint-frame-a_30563_13/single-hole) 56 | (:configuration :default)) 57 | ((:robot-parts-point :s3301_30563_11/horn) 58 | (:parts-name :upper-arm20_30563_14) 59 | (:parts-type :upper-arm20) 60 | (:parts-point :upper-arm20_30563_14/horn-hole) 61 | (:configuration :default)) 62 | ((:robot-parts-point :s3301_30563_11/right-side-front-tap) 63 | (:parts-name :joint-frame-a_30563_15) 64 | (:parts-type :joint-frame-a) 65 | (:parts-point :joint-frame-a_30563_15/2-holes) 66 | (:configuration :default)) 67 | ((:robot-parts-point :s3301_30563_11/right-side-back-tap) 68 | (:parts-name :joint-frame-a_30563_16) 69 | (:parts-type :joint-frame-a) 70 | (:parts-point :joint-frame-a_30563_16/2-holes) 71 | (:configuration :default)) 72 | ((:robot-parts-point :joint-frame-a_30563_15/single-hole) 73 | (:parts-name :sensor-base_30563_17) 74 | (:parts-type :sensor-base) 75 | (:parts-point :sensor-base_30563_17/side-hole0) 76 | (:configuration :default)) 77 | ((:robot-parts-point :upper-arm20_30563_14/single-hole) 78 | (:parts-name :joint-base_30563_20) 79 | (:parts-type :joint-base) 80 | (:parts-point :joint-base_30563_20/side-hole2) 81 | (:configuration :default)) 82 | ((:robot-parts-point :joint-base_30563_20/bottom-4holes) 83 | (:parts-name :m5-camera_30563_21) 84 | (:parts-type :m5-camera) 85 | (:parts-point :m5-camera_30563_21/bottom-4holes) 86 | (:configuration :flip-y)) 87 | ((:robot-parts-point :joint-base_30563_20/side-hole3) 88 | (:parts-name :bottom-arm20_30563_22) 89 | (:parts-type :bottom-arm20) 90 | (:parts-point :bottom-arm20_30563_22/single-hole) 91 | (:configuration :fixed))) 92 | -------------------------------------------------------------------------------- /sample/kxr/kxr_body.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) 2 | (:parts-type :battery-box) 3 | (:parts-name :battery-box_30133_0)) 4 | ((:robot-parts-point :battery-box_30133_0/front-center) 5 | (:parts-name :body-plate_30133_1) 6 | (:parts-type :body-plate) 7 | (:parts-point :body-plate_30133_1/center) 8 | (:configuration :fixed)) 9 | ((:robot-parts-point :battery-box_30133_0/back-center) 10 | (:parts-name :body-plate_30133_2) 11 | (:parts-type :body-plate) 12 | (:parts-point :body-plate_30133_2/center) 13 | (:configuration :fixed)) 14 | ((:robot-parts-point :battery-box_30133_0/4holes0) 15 | (:parts-name :battery-leg-plate_30133_3) 16 | (:parts-type :battery-leg-plate) 17 | (:parts-point :battery-leg-plate_30133_3/bottom-4holes0) 18 | (:configuration :invert)) 19 | ((:robot-parts-point :body-plate_30133_1/back-4holes2) 20 | (:parts-name :joint-base_30133_4) 21 | (:parts-type :joint-base) 22 | (:parts-point :joint-base_30133_4/bottom-4holes) 23 | (:configuration :fixed)) 24 | ((:robot-parts-point :joint-base_30133_4/side-hole0) 25 | (:parts-name :arm-supporter-a_30133_5) 26 | (:parts-type :arm-supporter-a) 27 | (:parts-point :arm-supporter-a_30133_5/upper-hole) 28 | (:configuration :invert)) 29 | ((:robot-parts-point :joint-base_30133_4/side-hole1) 30 | (:parts-name :arm-supporter-a_30133_6) 31 | (:parts-type :arm-supporter-a) 32 | (:parts-point :arm-supporter-a_30133_6/upper-hole) 33 | (:configuration :invert)) 34 | ((:robot-parts-point :arm-supporter-a_30133_5/lower-hole) 35 | (:parts-name :joint-base_30133_7) 36 | (:parts-type :joint-base) 37 | (:parts-point :joint-base_30133_7/side-hole2) 38 | (:configuration :fixed)) 39 | ((:robot-parts-point :arm-supporter-a_30133_5/servo-fix) 40 | (:parts-name :s3301_30133_8) 41 | (:parts-type :s3301) 42 | (:parts-point :s3301_30133_8/bottom-front-tap) 43 | (:configuration :fixed)) 44 | ((:robot-parts-point :body-plate_30133_1/back-4holes0) 45 | (:parts-name :joint-base_30133_10) 46 | (:parts-type :joint-base) 47 | (:parts-point :joint-base_30133_10/bottom-4holes) 48 | (:configuration :fixed)) 49 | ((:robot-parts-point :joint-base_30133_10/side-hole2) 50 | (:parts-name :arm-supporter-a_30133_11) 51 | (:parts-type :arm-supporter-a) 52 | (:parts-point :arm-supporter-a_30133_11/upper-hole) 53 | (:configuration :invert)) 54 | ((:robot-parts-point :arm-supporter-a_30133_11/lower-hole) 55 | (:parts-name :joint-base_30133_12) 56 | (:parts-type :joint-base) 57 | (:parts-point :joint-base_30133_12/side-hole2) 58 | (:configuration :fixed)) 59 | ((:robot-parts-point :arm-supporter-a_30133_11/servo-fix) 60 | (:parts-name :s3301_30133_13) 61 | (:parts-type :s3301) 62 | (:parts-point :s3301_30133_13/bottom-front-tap) 63 | (:configuration :fixed)) 64 | ((:robot-parts-point :body-plate_30133_2/4holes0) 65 | (:parts-name :back-pack_30133_14) 66 | (:parts-type :back-pack) 67 | (:parts-point :back-pack_30133_14/4holes0) 68 | (:configuration :flip-x)) 69 | ((:robot-parts-point :body-plate_30133_1/back-4holes1) 70 | (:parts-name :joint-base_30133_15) 71 | (:parts-type :joint-base) 72 | (:parts-point :joint-base_30133_15/bottom-4holes) 73 | (:configuration :fixed)) 74 | ((:robot-parts-point :joint-base_30133_15/side-hole1) 75 | (:parts-name :arm-supporter-a_30133_16) 76 | (:parts-type :arm-supporter-a) 77 | (:parts-point :arm-supporter-a_30133_16/upper-hole) 78 | (:configuration :invert)) 79 | ((:robot-parts-point :arm-supporter-a_30133_16/lower-hole) 80 | (:parts-name :joint-base_30133_17) 81 | (:parts-type :joint-base) 82 | (:parts-point :joint-base_30133_17/side-hole2) 83 | (:configuration :fixed)) 84 | ((:robot-parts-point :arm-supporter-a_30133_16/servo-fix) 85 | (:parts-name :s3301_30133_18) 86 | (:parts-type :s3301) 87 | (:parts-point :s3301_30133_18/bottom-front-tap) 88 | (:configuration :fixed)) 89 | ((:robot-parts-point :joint-base_30133_15/side-hole0) 90 | (:parts-name :arm-supporter-a_30133_19) 91 | (:parts-type :arm-supporter-a) 92 | (:parts-point :arm-supporter-a_30133_19/upper-hole) 93 | (:configuration :invert))) 94 | -------------------------------------------------------------------------------- /test/test-roboasm-base.l: -------------------------------------------------------------------------------- 1 | (require :unittest "lib/llib/unittest.l") 2 | 3 | (require :eus-assimp "package://eus_assimp/euslisp/eus-assimp.l") 4 | (require :robot-assembler "package://robot_assembler/euslisp/robot-assembler.l") 5 | 6 | (init-unit-test) 7 | 8 | (deftest test-load-sample () 9 | (let (robot) 10 | ;; initialize 11 | (robot-assembler-initialize 12 | (ros::resolve-ros-path "package://robot_assembler/config/robot_assembler_parts_settings.yaml") 13 | :project-dir (ros::resolve-ros-path "package://robot_assembler")) 14 | ;; 15 | (setq robot (make-robot-from-roboasm 16 | (with-open-file (f (ros::resolve-ros-path "package://robot_assembler/test/SAMPLE_HUMANOID.roboasm.l")) 17 | (read f)))) 18 | (assert robot) 19 | (assert (= (length (send robot :all-parts)) 62)) 20 | ;; 21 | (send robot :write-urdf "/tmp/sample.urdf") 22 | ) 23 | ) 24 | 25 | (deftest test-load-sample-kxr () 26 | (let (robot) 27 | ;; initialize kxr 28 | (robot-assembler-initialize 29 | (ros::resolve-ros-path "package://robot_assembler/config/robot_assembler_kxr_settings.yaml") 30 | :project-dir (ros::resolve-ros-path "package://robot_assembler")) 31 | ;; 32 | (setq robot (make-robot-from-roboasm 33 | (with-open-file (f (ros::resolve-ros-path "package://robot_assembler/test/kxr_fullbody.roboasm.l")) 34 | (read f)))) 35 | (assert robot) 36 | (assert (= (length (send robot :all-parts)) 112)) 37 | ;; 38 | (send robot :write-urdf "/tmp/sample_kxr.urdf") 39 | ) 40 | ) 41 | 42 | (deftest test-load-sample-kxr-sensor-config () 43 | (let (robot robot2 robot3) 44 | ;; initialize kxr 45 | (robot-assembler-initialize 46 | (ros::resolve-ros-path "package://robot_assembler/config/robot_assembler_kxr_settings.yaml") 47 | :project-dir (ros::resolve-ros-path "package://robot_assembler")) 48 | ;; 49 | (setq robot (make-robot-from-roboasm 50 | (with-open-file (f (ros::resolve-ros-path "package://robot_assembler/test/kxr4r.roboasm.l")) 51 | (read f)))) 52 | (assert robot) 53 | (assert (= (length (send robot :all-parts)) 44)) 54 | (assert (eps-coords= (send (send robot :worldcoords) :transformation 55 | (send (car (send robot :descendants)) :worldcoords)) 56 | (make-coords) 1e-9)) 57 | (send robot :write-urdf "/tmp/sample_kxr4r.urdf") 58 | ;; check sensor, joint-name 59 | 60 | (setq robot2 (make-robot-from-roboasm 61 | (with-open-file (f (ros::resolve-ros-path "package://robot_assembler/test/kxr4r.test2.roboasm.l")) 62 | (read f)))) 63 | (assert robot2) 64 | (assert (= (length (send robot2 :all-parts)) 44)) 65 | (assert (eps-coords= (send (send robot2 :worldcoords) :transformation 66 | (send (car (send robot2 :descendants)) :worldcoords)) 67 | (make-coords :rpy (list 0 pi/2 0)) 1e-9)) 68 | (send robot2 :write-urdf "/tmp/sample_kxr4r_2.urdf") 69 | ;; check sensor, joint-name 70 | 71 | (setq robot3 (make-robot-from-roboasm 72 | (with-open-file (f (ros::resolve-ros-path "package://robot_assembler/test/kxr4r.test3.roboasm.l")) 73 | (read f)))) 74 | (assert robot3) 75 | (assert (= (length (send robot3 :all-parts)) 44)) 76 | (assert (eps-coords= (send (send robot3 :worldcoords) :transformation 77 | (send (car (send robot3 :descendants)) :worldcoords)) 78 | (make-coords :rpy (list 0 pi/2 0)) 1e-9)) 79 | (send robot3 :write-urdf "/tmp/sample_kxr4r_3.urdf") 80 | ;; check sensor 81 | ) 82 | ) 83 | ;; :iniial-angle 84 | ;; equality write-roboasm/read-roboasm 85 | ;; search method 86 | ;; roboasm-from-parts 87 | ;; attach robot 88 | ;; processing roboasm | merge/rename/root-change/re-write 89 | ;; TEST: Viewer ?GUI 90 | ;; TEST: Node / send command by service ?GUI 91 | (run-all-tests) 92 | (exit) 93 | -------------------------------------------------------------------------------- /config/robot_assembler_buttons_new.perspective: -------------------------------------------------------------------------------- 1 | { 2 | "keys": {}, 3 | "groups": { 4 | "pluginmanager": { 5 | "keys": { 6 | "running-plugins": { 7 | "type": "repr", 8 | "repr": "{u'robot_assembler_gui/AssembleEditor': [1], u'jsk_rqt_plugins/ServiceButtons': [1]}" 9 | } 10 | }, 11 | "groups": { 12 | "plugin__robot_assembler_gui__AssembleEditor__1": { 13 | "keys": {}, 14 | "groups": { 15 | "dock_widget__RAcontrol": { 16 | "keys": { 17 | "dockable": { 18 | "type": "repr", 19 | "repr": "True" 20 | }, 21 | "parent": { 22 | "type": "repr", 23 | "repr": "None" 24 | }, 25 | "dock_widget_title": { 26 | "type": "repr", 27 | "repr": "u'Form'" 28 | } 29 | }, 30 | "groups": {} 31 | } 32 | } 33 | }, 34 | "plugin__jsk_rqt_plugins__ServiceButtons__1": { 35 | "keys": {}, 36 | "groups": { 37 | "dock_widget__": { 38 | "keys": { 39 | "dockable": { 40 | "type": "repr", 41 | "repr": "True" 42 | }, 43 | "parent": { 44 | "type": "repr", 45 | "repr": "None" 46 | }, 47 | "dock_widget_title": { 48 | "type": "repr", 49 | "repr": "u''" 50 | } 51 | }, 52 | "groups": {} 53 | } 54 | } 55 | } 56 | } 57 | }, 58 | "mainwindow": { 59 | "keys": { 60 | "geometry": { 61 | "type": "repr(QByteArray.hex)", 62 | "repr(QByteArray.hex)": "QtCore.QByteArray('01d9d0cb00020000000003f1000000180000065000000437000003f100000034000006500000043700000000000000000780')", 63 | "pretty-print": " P 7 4 P 7 " 64 | }, 65 | "state": { 66 | "type": "repr(QByteArray.hex)", 67 | "repr(QByteArray.hex)": "QtCore.QByteArray('000000ff00000000fd00000003000000000000025a00000304fc0200000001fb00000030005f005f0044006f0063006b0057006900640067006500740043006f006e007400610069006e00650072005f005f003101000000000000030400000000000000000000000200000260000000f9fc0100000001fb000000620072006f0062006f0074005f0061007300730065006d0062006c00650072005f006700750069005f005f0041007300730065006d0062006c00650045006400690074006f0072005f005f0031005f005f005200410063006f006e00740072006f006c0100000000000002600000009c00ffffff0000000300000260000002effc0100000001fc00000000000002600000013300fffffffc0200000003fb00000042006a0073006b005f007200710074005f0070006c007500670069006e0073005f005f0053007400720069006e0067004c006100620065006c005f005f0031005f005f01000000000000003c0000000000000000fb00000048006a0073006b005f007200710074005f0070006c007500670069006e0073005f005f00530065007200760069006300650042007500740074006f006e0073005f005f0031005f005f01000000ff000002ef000002ef00fffffffb0000005c006a0073006b005f007200710074005f0070006c007500670069006e0073005f005f005900650073004e006f0042007500740074006f006e005f005f0031005f005f005900650073004e006f0042007500740074006f006e00550069010000034700000056000000000000000000000260fffffffa00000004000000040000000800000008fc00000001000000030000000100000036004d0069006e0069006d0069007a006500640044006f0063006b00570069006400670065007400730054006f006f006c0062006100720000000000ffffffff0000000000000000')", 68 | "pretty-print": " 0__DockWidgetContainer__1 brobot_assembler_gui__AssembleEditor__1__RAcontrol ` 3 < G V ` " 69 | } 70 | }, 71 | "groups": { 72 | "toolbar_areas": { 73 | "keys": { 74 | "MinimizedDockWidgetsToolbar": { 75 | "type": "repr", 76 | "repr": "8" 77 | } 78 | }, 79 | "groups": {} 80 | } 81 | } 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /meshes/foot-plate.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Assimp 6 | Assimp Collada Exporter 7 | 8 | 2020-04-21T04:52:55 9 | 2020-04-21T04:52:55 10 | 11 | Y_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 0.3 0.3 0.35 1 20 | 21 | 22 | 0.3 0.3 0.35 1 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 0.04 0.03 0 -0.04 -0.03 0 -0.04 0.03 0 -0.04 -0.03 0 0.04 0.03 0 0.04 -0.03 0 -0.04 0.03 0.004 0.04 -0.03 0.004 0.04 0.03 0.004 0.04 -0.03 0.004 -0.04 0.03 0.004 -0.04 -0.03 0.004 0.04 0.03 0 -0.04 0.03 0.004 0.04 0.03 0.004 -0.04 0.03 0.004 0.04 0.03 0 -0.04 0.03 0 0.04 -0.03 0 0.04 0.03 0.004 0.04 -0.03 0.004 0.04 0.03 0.004 0.04 -0.03 0 0.04 0.03 0 -0.04 -0.03 0 0.04 -0.03 0.004 -0.04 -0.03 0.004 0.04 -0.03 0.004 -0.04 -0.03 0 0.04 -0.03 0 -0.04 0.03 0 -0.04 -0.03 0.004 -0.04 0.03 0.004 -0.04 -0.03 0.004 -0.04 0.03 0 -0.04 -0.03 0 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 3 3 3 3 3 3 3 3 3 3 3 3 64 |

0 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

65 |
66 |
67 |
68 |
69 | 70 | 71 | 72 | 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
87 | -------------------------------------------------------------------------------- /sample/1st_assignment/47-206684TEST5.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :body-b) (:parts-name :body-b_1459_0)) 2 | ((:robot-parts-point :body-b_1459_0/dynamixel_side_port0) 3 | (:parts-name :xm430_1459_3) 4 | (:parts-type :xm430) 5 | (:parts-point :xm430_1459_3/both-side-tap-front) 6 | (:configuration :fixed)) 7 | ((:robot-parts-point :xm430_1459_3/horn) 8 | (:parts-name :fr12-h101_1459_5) 9 | (:parts-type :fr12-h101) 10 | (:parts-point :fr12-h101_1459_5/horn-attachment-aux) 11 | (:configuration :rotate-90)) 12 | ((:robot-parts-point :fr12-h101_1459_5/utility-holes) 13 | (:parts-name :fr12-h101_1327_0) 14 | (:parts-type :fr12-h101) 15 | (:parts-point :fr12-h101_1327_0/utility-holes) 16 | (:configuration :flip-x)) 17 | ((:robot-parts-point :fr12-h101_1327_0/horn-attachment) 18 | (:parts-name :xm430_1327_1) 19 | (:parts-type :xm430) 20 | (:parts-point :xm430_1327_1/horn) 21 | (:configuration :fixed)) 22 | ((:robot-parts-point :body-b_1459_0/dynamixel_side_port2) 23 | (:parts-name :xm430_1327_4) 24 | (:parts-type :xm430) 25 | (:parts-point :xm430_1327_4/both-side-tap-front) 26 | (:configuration :fixed)) 27 | ((:robot-parts-point :xm430_1327_4/horn) 28 | (:parts-name :fr12-h101_1327_6) 29 | (:parts-type :fr12-h101) 30 | (:parts-point :fr12-h101_1327_6/horn-attachment-aux) 31 | (:configuration :rotate90)) 32 | ((:robot-parts-point :fr12-h101_1327_6/utility-holes) 33 | (:parts-name :fr12-h101_1327_7) 34 | (:parts-type :fr12-h101) 35 | (:parts-point :fr12-h101_1327_7/utility-holes) 36 | (:configuration :flip-x)) 37 | ((:robot-parts-point :fr12-h101_1327_7/horn-attachment) 38 | (:parts-name :xm430_1327_8) 39 | (:parts-type :xm430) 40 | (:parts-point :xm430_1327_8/horn) 41 | (:configuration :fixed)) 42 | ((:robot-parts-point :body-b_1459_0/dynamixel_side_port1) 43 | (:parts-name :xm430_1327_9) 44 | (:parts-type :xm430) 45 | (:parts-point :xm430_1327_9/both-side-tap-front) 46 | (:configuration :fixed)) 47 | ((:robot-parts-point :xm430_1327_9/horn) 48 | (:parts-name :fr12-h101_1327_11) 49 | (:parts-type :fr12-h101) 50 | (:parts-point :fr12-h101_1327_11/horn-attachment-aux) 51 | (:configuration :rotate90)) 52 | ((:robot-parts-point :fr12-h101_1327_11/utility-holes) 53 | (:parts-name :fr12-h101_1327_12) 54 | (:parts-type :fr12-h101) 55 | (:parts-point :fr12-h101_1327_12/utility-holes) 56 | (:configuration :flip-x)) 57 | ((:robot-parts-point :fr12-h101_1327_12/horn-attachment) 58 | (:parts-name :xm430_1327_13) 59 | (:parts-type :xm430) 60 | (:parts-point :xm430_1327_13/horn) 61 | (:configuration :fixed)) 62 | ((:robot-parts-point :body-b_1459_0/dynamixel_side_port3) 63 | (:parts-name :xm430_1327_15) 64 | (:parts-type :xm430) 65 | (:parts-point :xm430_1327_15/both-side-tap-front) 66 | (:configuration :fixed)) 67 | ((:robot-parts-point :xm430_1327_15/horn) 68 | (:parts-name :fr12-h101_1327_16) 69 | (:parts-type :fr12-h101) 70 | (:parts-point :fr12-h101_1327_16/horn-attachment-aux) 71 | (:configuration :rotate-90)) 72 | ((:robot-parts-point :fr12-h101_1327_16/utility-holes) 73 | (:parts-name :fr12-h101_1327_17) 74 | (:parts-type :fr12-h101) 75 | (:parts-point :fr12-h101_1327_17/utility-holes) 76 | (:configuration :flip-x)) 77 | ((:robot-parts-point :fr12-h101_1327_17/horn-attachment) 78 | (:parts-name :xm430_1327_18) 79 | (:parts-type :xm430) 80 | (:parts-point :xm430_1327_18/horn) 81 | (:configuration :fixed)) 82 | ((:robot-parts-point :xm430_1327_1/bottom-tap) 83 | (:parts-name :fixedplate2_9782_0) 84 | (:parts-type :fixedplate2) 85 | (:parts-point :fixedplate2_9782_0/center) 86 | (:configuration :default)) 87 | ((:robot-parts-point :xm430_1327_8/bottom-tap) 88 | (:parts-name :fixedplate2_9782_1) 89 | (:parts-type :fixedplate2) 90 | (:parts-point :fixedplate2_9782_1/center) 91 | (:configuration :default)) 92 | ((:robot-parts-point :xm430_1327_13/bottom-tap) 93 | (:parts-name :fixedplate2_9782_2) 94 | (:parts-type :fixedplate2) 95 | (:parts-point :fixedplate2_9782_2/center) 96 | (:configuration :rotate-90)) 97 | ((:robot-parts-point :xm430_1327_18/bottom-tap) 98 | (:parts-name :fixedplate2_9782_3) 99 | (:parts-type :fixedplate2) 100 | (:parts-point :fixedplate2_9782_3/center) 101 | (:configuration :rotate-90))) 102 | -------------------------------------------------------------------------------- /gazebo/models/ra_table/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 18 | 19 | 0 0 0.205 0 0 0 20 | 21 | 0.25 0.50 0.01 22 | 23 | 24 | 25 | 0.105 0.23 0.1 0 0 0 26 | 27 | 28 | 0.015 29 | 0.2 30 | 31 | 32 | 33 | 34 | -0.105 0.23 0.1 0 0 0 35 | 36 | 37 | 0.015 38 | 0.2 39 | 40 | 41 | 42 | 43 | 0.105 -0.23 0.1 0 0 0 44 | 45 | 46 | 0.015 47 | 0.2 48 | 49 | 50 | 51 | 52 | -0.105 -0.23 0.1 0 0 0 53 | 54 | 55 | 0.015 56 | 0.2 57 | 58 | 59 | 60 | 65 | 66 | 0 0 0.205 0 0 0 67 | 68 | 0.25 0.50 0.01 69 | 70 | 71 | .55 .55 .6 1 72 | .7 .7 .7 1 73 | 0.1 0.1 0.1 1 74 | 75 | 76 | 77 | 0.105 0.23 0.1 0 0 0 78 | 79 | 80 | 0.015 81 | 0.2 82 | 83 | 84 | 85 | .55 .55 .6 1 86 | .7 .7 .7 1 87 | 0.1 0.1 0.1 1 88 | 89 | 90 | 91 | -0.105 0.23 0.1 0 0 0 92 | 93 | 94 | 0.015 95 | 0.2 96 | 97 | 98 | 99 | .55 .55 .6 1 100 | .7 .7 .7 1 101 | 0.1 0.1 0.1 1 102 | 103 | 104 | 105 | 0.105 -0.23 0.1 0 0 0 106 | 107 | 108 | 0.015 109 | 0.2 110 | 111 | 112 | 113 | .55 .55 .6 1 114 | .7 .7 .7 1 115 | 0.1 0.1 0.1 1 116 | 117 | 118 | 119 | -0.105 -0.23 0.1 0 0 0 120 | 121 | 122 | 0.015 123 | 0.2 124 | 125 | 126 | 127 | .55 .55 .6 1 128 | .7 .7 .7 1 129 | 0.1 0.1 0.1 1 130 | 131 | 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /sample/1st_assignment/37-196957.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) (:parts-type :body-a) (:parts-name :body-a_5263_0)) 2 | ((:robot-parts-point :body-a_5263_0/dynamixel_bottom_port1) 3 | (:parts-name :xm430_5263_3) 4 | (:parts-type :xm430) 5 | (:parts-point :xm430_5263_3/both-side-tap-front) 6 | (:configuration :fixed)) 7 | ((:robot-parts-point :xm430_5263_3/horn) 8 | (:parts-name :fr12-h101_5263_5) 9 | (:parts-type :fr12-h101) 10 | (:parts-point :fr12-h101_5263_5/utility-holes) 11 | (:configuration :rotate-90)) 12 | ((:robot-parts-point :fr12-h101_5263_5/horn-attachment) 13 | (:parts-name :xm430_5263_25) 14 | (:parts-type :xm430) 15 | (:parts-point :xm430_5263_25/horn) 16 | (:configuration :fixed)) 17 | ((:robot-parts-point :xm430_5263_25/bottom-cover-tap) 18 | (:parts-name :fr12-s102_5263_52) 19 | (:parts-type :fr12-s102) 20 | (:parts-point :fr12-s102_5263_52/to-actuator-front) 21 | (:configuration :fixed)) 22 | ((:robot-parts-point :fr12-s102_5263_52/utility-holes) 23 | (:parts-name :fr12-s102_5263_68) 24 | (:parts-type :fr12-s102) 25 | (:parts-point :fr12-s102_5263_68/utility-holes) 26 | (:configuration :flip-x)) 27 | ((:robot-parts-point :fr12-s102_5263_68/to-actuator-front) 28 | (:parts-name :xm430_5263_69) 29 | (:parts-type :xm430) 30 | (:parts-point :xm430_5263_69/bottom-cover-tap) 31 | (:configuration :fixed)) 32 | ((:robot-parts-point :xm430_5263_69/horn) 33 | (:parts-name :fr12-h101_5263_74) 34 | (:parts-type :fr12-h101) 35 | (:parts-point :fr12-h101_5263_74/horn-attachment) 36 | (:configuration :fixed)) 37 | ((:robot-parts-point :fr12-h101_5263_74/utility-holes) 38 | (:parts-name :fr12-h101_5263_76) 39 | (:parts-type :fr12-h101) 40 | (:parts-point :fr12-h101_5263_76/utility-holes) 41 | (:configuration :flip-x)) 42 | ((:robot-parts-point :fr12-h101_5263_76/horn-attachment) 43 | (:parts-name :xm430_5263_77) 44 | (:parts-type :xm430) 45 | (:parts-point :xm430_5263_77/horn) 46 | (:configuration :fixed)) 47 | ((:robot-parts-point :xm430_5263_77/bottom-tap) 48 | (:parts-name :fr12-s103b_5263_81) 49 | (:parts-type :fr12-s103b) 50 | (:parts-point :fr12-s103b_5263_81/utility-holes) 51 | (:configuration :rotate90)) 52 | ((:robot-parts-point :body-a_5263_0/dynamixel_bottom_port0) 53 | (:parts-name :xm430_5263_82) 54 | (:parts-type :xm430) 55 | (:parts-point :xm430_5263_82/both-side-tap-front) 56 | (:configuration :fixed)) 57 | ((:robot-parts-point :xm430_5263_82/horn) 58 | (:parts-name :fr12-h101_5263_83) 59 | (:parts-type :fr12-h101) 60 | (:parts-point :fr12-h101_5263_83/utility-holes) 61 | (:configuration :rotate-90)) 62 | ((:robot-parts-point :fr12-h101_5263_83/horn-attachment) 63 | (:parts-name :xm430_5263_84) 64 | (:parts-type :xm430) 65 | (:parts-point :xm430_5263_84/horn) 66 | (:configuration :fixed)) 67 | ((:robot-parts-point :xm430_5263_84/bottom-cover-tap) 68 | (:parts-name :fr12-s102_5263_85) 69 | (:parts-type :fr12-s102) 70 | (:parts-point :fr12-s102_5263_85/to-actuator-front) 71 | (:configuration :fixed)) 72 | ((:robot-parts-point :fr12-s102_5263_85/utility-holes) 73 | (:parts-name :fr12-s102_5263_86) 74 | (:parts-type :fr12-s102) 75 | (:parts-point :fr12-s102_5263_86/utility-holes) 76 | (:configuration :flip-x)) 77 | ((:robot-parts-point :fr12-s102_5263_86/to-actuator-front) 78 | (:parts-name :xm430_5263_87) 79 | (:parts-type :xm430) 80 | (:parts-point :xm430_5263_87/bottom-cover-tap) 81 | (:configuration :fixed)) 82 | ((:robot-parts-point :xm430_5263_87/horn) 83 | (:parts-name :fr12-h101_5263_89) 84 | (:parts-type :fr12-h101) 85 | (:parts-point :fr12-h101_5263_89/horn-attachment) 86 | (:configuration :fixed)) 87 | ((:robot-parts-point :fr12-h101_5263_89/utility-holes) 88 | (:parts-name :fr12-h101_5263_91) 89 | (:parts-type :fr12-h101) 90 | (:parts-point :fr12-h101_5263_91/utility-holes) 91 | (:configuration :flip-x)) 92 | ((:robot-parts-point :fr12-h101_5263_91/horn-attachment) 93 | (:parts-name :xm430_5263_93) 94 | (:parts-type :xm430) 95 | (:parts-point :xm430_5263_93/horn) 96 | (:configuration :fixed)) 97 | ((:robot-parts-point :xm430_5263_93/bottom-tap) 98 | (:parts-name :fr12-s103b_5263_95) 99 | (:parts-type :fr12-s103b) 100 | (:parts-point :fr12-s103b_5263_95/utility-holes) 101 | (:configuration :rotate90))) 102 | -------------------------------------------------------------------------------- /meshes/mesh_EUCLID-HEAD.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Assimp 6 | Assimp Collada Exporter 7 | 8 | 2021-06-17T16:25:50 9 | 2021-06-17T16:25:50 10 | 11 | Y_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 0.5 0.5 0.5 1 20 | 21 | 22 | 0.5 0.5 0.5 1 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 0.018 -0.062 0.033 -0.006 -0.062 0 0.018 -0.062 0 -0.006 -0.062 0 0.018 -0.062 0.033 -0.006 -0.062 0.033 0.018 0.062 0 -0.006 0.062 0.033 0.018 0.062 0.033 -0.006 0.062 0.033 0.018 0.062 0 -0.006 0.062 0 0.018 -0.062 0.033 0.018 0.062 0 0.018 0.062 0.033 0.018 0.062 0 0.018 -0.062 0.033 0.018 -0.062 0 -0.006 -0.062 0.033 0.018 0.062 0.033 -0.006 0.062 0.033 0.018 0.062 0.033 -0.006 -0.062 0.033 0.018 -0.062 0.033 -0.006 -0.062 0 -0.006 0.062 0.033 -0.006 0.062 0 -0.006 0.062 0.033 -0.006 -0.062 0 -0.006 -0.062 0.033 0.018 -0.062 0 -0.006 0.062 0 0.018 0.062 0 -0.006 0.062 0 0.018 -0.062 0 -0.006 -0.062 0 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 3 3 3 3 3 3 3 3 3 3 3 3 64 |

0 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

65 |
66 |
67 |
68 |
69 | 70 | 71 | 72 | 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
87 | -------------------------------------------------------------------------------- /sample/kxr_auv/larm.roboasm.l: -------------------------------------------------------------------------------- 1 | (((:initial-parts t) 2 | (:parts-name :upper-arm26_3776_3) 3 | (:parts-type :upper-arm26) 4 | (:parts-point :upper-arm26_3776_3/single-hole) 5 | (:configuration :fixed)) 6 | ((:robot-parts-point :upper-arm26_3776_3/horn-hole) 7 | (:parts-name :s3301_3776_4) 8 | (:parts-type :s3301) 9 | (:parts-point :s3301_3776_4/horn) 10 | (:configuration :fixed)) 11 | ((:robot-parts-point :s3301_3776_4/bottom-front-tap) 12 | (:parts-name :joint-frame-a_3776_5) 13 | (:parts-type :joint-frame-a) 14 | (:parts-point :joint-frame-a_3776_5/2-holes) 15 | (:configuration :fixed)) 16 | ((:robot-parts-point :joint-frame-a_3776_5/single-hole) 17 | (:parts-name :joint-base_3776_6) 18 | (:parts-type :joint-base) 19 | (:parts-point :joint-base_3776_6/side-hole0) 20 | (:configuration :fixed)) 21 | ((:robot-parts-point :joint-base_3776_6/bottom-4holes) 22 | (:parts-name :bottom-spacer_5121_1) 23 | (:parts-type :bottom-spacer) 24 | (:parts-point :bottom-spacer_5121_1/4holes) 25 | (:configuration :invert)) 26 | ((:robot-parts-point :bottom-spacer_5121_1/bottom-right-2holes) 27 | (:parts-name :s3301_5121_2) 28 | (:parts-type :s3301) 29 | (:parts-point :s3301_5121_2/right-side-back-tap) 30 | (:configuration :invert)) 31 | ((:robot-parts-point :s3301_5121_2/horn) 32 | (:parts-name :joint-base_5121_5) 33 | (:parts-type :joint-base) 34 | (:parts-point :joint-base_5121_5/horn-hole) 35 | (:configuration :fixed)) 36 | ((:robot-parts-point :joint-base_5121_5/side-hole0) 37 | (:parts-name :upper-arm26_5121_6) 38 | (:parts-type :upper-arm26) 39 | (:parts-point :upper-arm26_5121_6/single-hole) 40 | (:configuration :fixed)) 41 | ((:robot-parts-point :upper-arm26_5121_6/horn-hole) 42 | (:parts-name :s3301_5121_7) 43 | (:parts-type :s3301) 44 | (:parts-point :s3301_5121_7/horn) 45 | (:configuration :fixed)) 46 | ((:robot-parts-point :s3301_5121_7/bottom-back-tap) 47 | (:parts-name :joint-frame-a_5121_8) 48 | (:parts-type :joint-frame-a) 49 | (:parts-point :joint-frame-a_5121_8/2-holes) 50 | (:configuration :fixed)) 51 | ((:robot-parts-point :joint-frame-a_5121_8/single-hole) 52 | (:parts-name :joint-base_5121_9) 53 | (:parts-type :joint-base) 54 | (:parts-point :joint-base_5121_9/side-hole3) 55 | (:configuration :fixed)) 56 | ((:robot-parts-point :joint-base_5121_9/bottom-4holes) 57 | (:parts-name :joint-base_5121_11) 58 | (:parts-type :joint-base) 59 | (:parts-point :joint-base_5121_11/bottom-4holes) 60 | (:configuration :flip-x)) 61 | ((:robot-parts-point :joint-base_5121_11/side-hole1) 62 | (:parts-name :joint-frame-b-a_5121_12) 63 | (:parts-type :joint-frame-b-a) 64 | (:parts-point :joint-frame-b-a_5121_12/single-hole) 65 | (:configuration :fixed)) 66 | ((:robot-parts-point :joint-frame-b-a_5121_12/2-holes) 67 | (:parts-name :s3301_5121_13) 68 | (:parts-type :s3301) 69 | (:parts-point :s3301_5121_13/left-side-front-tap) 70 | (:configuration :fixed)) 71 | ((:robot-parts-point :s3301_5121_13/horn) 72 | (:parts-name :finger_5894_0) 73 | (:parts-type :finger) 74 | (:parts-point :finger_5894_0/aux-horn-hole) 75 | (:configuration :rotate-60)) 76 | ((:robot-parts-point :s3301_5121_13/horn-finger-l) 77 | (:parts-name :finger_5894_1) 78 | (:parts-type :finger) 79 | (:parts-point :finger_5894_1/horn-hole) 80 | (:configuration :rotate-60)) 81 | ((:robot-parts-point :s3301_5121_13/left-side-back-tap) 82 | (:parts-name :joint-frame-b-b_5894_2) 83 | (:parts-type :joint-frame-b-b) 84 | (:parts-point :joint-frame-b-b_5894_2/2-holes) 85 | (:configuration :fixed)) 86 | ((:robot-parts-point :s3301_5121_7/bottom-front-tap) 87 | (:parts-name :joint-frame-a_5894_3) 88 | (:parts-type :joint-frame-a) 89 | (:parts-point :joint-frame-a_5894_3/2-holes) 90 | (:configuration :fixed)) 91 | ((:robot-parts-point :joint-base_5121_5/side-hole1) 92 | (:parts-name :bottom-arm26_5894_4) 93 | (:parts-type :bottom-arm26) 94 | (:parts-point :bottom-arm26_5894_4/single-hole) 95 | (:configuration :fixed)) 96 | ((:robot-parts-point :joint-base_3776_6/side-hole1) 97 | (:parts-name :joint-frame-a_5894_6) 98 | (:parts-type :joint-frame-a) 99 | (:parts-point :joint-frame-a_5894_6/single-hole) 100 | (:configuration :fixed)) 101 | (:assemble-config 102 | (:actuator-name 103 | ((:s3301_5121_7/horn "larm-elbow-p") 104 | (:s3301_5121_13/horn "larm-gripper-r") 105 | (:s3301_3776_4/horn "larm-shoulder-r") 106 | (:s3301_5121_2/horn "larm-shoulder-y") 107 | (:s3301_5121_13/horn-finger-l "larm-gripper2-r"))))) 108 | --------------------------------------------------------------------------------