diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f7a049..ec00769 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,22 +1,45 @@ -cmake_minimum_required(VERSION 3.0.2) -project(floorplan-dsl-environments) +cmake_minimum_required(VERSION 3.8) +project(floorplan_models) ## Compile as C++11, supported in ROS Kinetic and newer # add_compile_options(-std=c++11) -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages -find_package(catkin REQUIRED gazebo_ros) +## Find colcon macros and libraries +## if COMPONENTS list like find_package(COLCON REQUIRED COMPONENTS xyz) +## is used, also find other colcon packages +#find_package(COLCON REQUIRED COMPONENTS +# gz_cmake_vendor +# gz-cmake3 +# gz_physics_vendor +# gz-physics +# gz_utils_vendor +# gz-utils +# gz_plugin_vendor +# gz-plugin +# Eigen3 +# gz_math_vendor +# gz-math +# gz_common_vendor +# gz-common +# # gz_msgs_vendor +# # gz-msgs +# gz_sim_vendor +# gz-sim +#) + +# Find Gazebo +find_package(ament_cmake REQUIRED) ## System dependencies are found with CMake's conventions # find_package(Boost REQUIRED COMPONENTS system) + + ## Uncomment this if the package has a setup.py. This macro ensures ## modules and global scripts declared therein get installed -## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html -# catkin_python_setup() +## See http://ros.org/doc/api/colcon/html/user_guide/setup_dot_py.html +# colcon_python_setup() ################################################ ## Declare ROS messages, services and actions ## @@ -34,9 +57,9 @@ find_package(catkin REQUIRED gazebo_ros) ## * add a exec_depend tag for "message_runtime" ## * In this file (CMakeLists.txt): ## * add "message_generation" and every package in MSG_DEP_SET to -## find_package(catkin REQUIRED COMPONENTS ...) +## find_package(COLCON REQUIRED COMPONENTS ...) ## * add "message_runtime" and every package in MSG_DEP_SET to -## catkin_package(CATKIN_DEPENDS ...) +## colcon_package(COLCON_DEPENDS ...) ## * uncomment the add_*_files sections below as needed ## and list every .msg/.srv/.action file to be processed ## * uncomment the generate_messages entry below @@ -79,7 +102,7 @@ find_package(catkin REQUIRED gazebo_ros) ## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" ## * In this file (CMakeLists.txt): ## * add "dynamic_reconfigure" to -## find_package(catkin REQUIRED COMPONENTS ...) +## find_package(COLCON REQUIRED COMPONENTS ...) ## * uncomment the "generate_dynamic_reconfigure_options" section below ## and list every .cfg file to be processed @@ -90,20 +113,20 @@ find_package(catkin REQUIRED gazebo_ros) # ) ################################### -## catkin specific configuration ## +## colcon specific configuration ## ################################### -## The catkin_package macro generates cmake config files for your package +## The colcon_package macro generates cmake config files for your package ## Declare things to be passed to dependent projects ## INCLUDE_DIRS: uncomment this if your package contains header files ## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need +## colcon_DEPENDS: colcon_packages dependent projects also need ## DEPENDS: system dependencies of this project that dependent projects also need -catkin_package( -# INCLUDE_DIRS include -# LIBRARIES floorplan-dsl-environments - CATKIN_DEPENDS gazebo_ros -# DEPENDS system_lib -) +#colcon_package( +## INCLUDE_DIRS include +## LIBRARIES floorplan_gazebo_plugins +## COLCON_DEPENDS gazebo_ros +## DEPENDS system_lib +#) ########### ## Build ## @@ -111,25 +134,27 @@ catkin_package( ## Specify additional locations of header files ## Your package locations should be listed before other locations -include_directories( -# include -# ${catkin_INCLUDE_DIRS} -) +#include_directories( +## include +# ${COLCON_INCLUDE_DIRS} +#) + + ## Declare a C++ library # add_library(${PROJECT_NAME} -# src/${PROJECT_NAME}/floorplan-dsl-environments.cpp +# src/${PROJECT_NAME}/floorplan_gazebo_plugins.cpp # ) ## Add cmake target dependencies of the library ## as an example, code may need to be generated before libraries ## either from message generation or dynamic reconfigure -# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) +# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${COLCON_EXPORTED_TARGETS}) ## Declare a C++ executable -## With catkin_make all packages are built within a single CMake context +## With colcon_make all packages are built within a single CMake context ## The recommended prefix ensures that target names across packages don't collide -# add_executable(${PROJECT_NAME}_node src/floorplan-dsl-environments_node.cpp) +# add_executable(${PROJECT_NAME}_node src/floorplan_gazebo_plugins_node.cpp) ## Rename C++ executable without prefix ## The above recommended prefix causes long target names, the following renames the @@ -139,44 +164,44 @@ include_directories( ## Add cmake target dependencies of the executable ## same as for the library above -# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) +# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${COLCON_EXPORTED_TARGETS}) ## Specify libraries to link a library or executable target against # target_link_libraries(${PROJECT_NAME}_node -# ${catkin_LIBRARIES} +# ${COLCON_LIBRARIES} # ) ############# ## Install ## ############# -# all install targets should use catkin DESTINATION variables -# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html +# all install targets should use colcon DESTINATION variables +# See http://ros.org/doc/api/colcon/html/adv_user_guide/variables.html ## Mark executable scripts (Python etc.) for installation ## in contrast to setup.py, you can choose the destination -catkin_install_python(PROGRAMS - scripts/simple_exsce_recorder - DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -) +# colcon_install_python(PROGRAMS +# scripts/my_python_script +# DESTINATION ${COLCON_PACKAGE_BIN_DESTINATION} +# ) ## Mark executables for installation -## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html +## See http://docs.ros.org/melodic/api/colcon/html/howto/format1/building_executables.html # install(TARGETS ${PROJECT_NAME}_node -# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +# RUNTIME DESTINATION ${COLCON_PACKAGE_BIN_DESTINATION} # ) ## Mark libraries for installation -## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html +## See http://docs.ros.org/melodic/api/colcon/html/howto/format1/building_libraries.html # install(TARGETS ${PROJECT_NAME} -# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} +# ARCHIVE DESTINATION ${COLCON_PACKAGE_LIB_DESTINATION} + # LIBRARY DESTINATION ${COLCON_PACKAGE_LIB_DESTINATION} +# RUNTIME DESTINATION ${COLCON_GLOBAL_BIN_DESTINATION} # ) ## Mark cpp header files for installation # install(DIRECTORY include/${PROJECT_NAME}/ -# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +# DESTINATION ${COLCON_PACKAGE_INCLUDE_DESTINATION} # FILES_MATCHING PATTERN "*.h" # PATTERN ".svn" EXCLUDE # ) @@ -185,7 +210,7 @@ catkin_install_python(PROGRAMS # install(FILES # # myfile1 # # myfile2 -# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +# DESTINATION ${COLCON_PACKAGE_SHARE_DESTINATION} # ) ############# @@ -193,10 +218,10 @@ catkin_install_python(PROGRAMS ############# ## Add gtest based cpp test target and link libraries -# catkin_add_gtest(${PROJECT_NAME}-test test/test_floorplan-dsl-environments.cpp) +# colcon_add_gtest(${PROJECT_NAME}-test test/test_floorplan_gazebo_plugins.cpp) # if(TARGET ${PROJECT_NAME}-test) # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) # endif() ## Add folders to be run by python nosetests -# catkin_add_nosetests(test) +# colcon_add_nosetests(test) diff --git a/frontiers_brsu_building_c/models/objects/adversarial-plugin-states.json b/frontiers_brsu_building_c/models/objects/adversarial-plugin-states.json new file mode 100644 index 0000000..08e6b2b --- /dev/null +++ b/frontiers_brsu_building_c/models/objects/adversarial-plugin-states.json @@ -0,0 +1,48 @@ +{ + "@context": [ + { + "pl": "https://secorolab.github.io/metamodels/plugin#", + "door": "https://secorolab.github.io/models/door#" + }, + "https://secorolab.github.io/metamodels/floor-plan/object.json", + "https://secorolab.github.io/metamodels/floor-plan/plugin.json" + ], + "@graph": [ + { + "@id": "pl:door-opened-to-closed-adversarial-plugin", + "@type": "PluginConfiguration", + "plugin-type": "adversarial", + "transition": "door:transition-from-door-fully-opened-to-door-fully-closed" + }, + { + "@id": "pl:door-closed-to-opened-adversarial-plugin", + "@type": "PluginConfiguration", + "plugin-type": "adversarial", + "transition": "door:transition-from-door-fully-closed-to-door-fully-opened" + }, + { + "@id": "pl:door-closed-to-partially-adversarial-plugin", + "@type": "PluginConfiguration", + "plugin-type": "adversarial", + "transition": "door:transition-from-door-fully-closed-to-door-partially-opened" + }, + { + "@id": "pl:door-partially-to-closed-adversarial-plugin", + "@type": "PluginConfiguration", + "plugin-type": "adversarial", + "transition": "door:transition-from-door-partially-opened-to-door-fully-closed" + }, + { + "@id": "pl:door-partially-to-opened-adversarial-plugin", + "@type": "PluginConfiguration", + "plugin-type": "adversarial", + "transition": "door:transition-from-door-partially-opened-to-door-fully-opened" + }, + { + "@id": "pl:door-opened-to-partially-adversarial-plugin", + "@type": "PluginConfiguration", + "plugin-type": "adversarial", + "transition": "door:transition-from-door-fully-opened-to-door-partially-opened" + } + ] +} diff --git a/frontiers_brsu_building_c/models/objects/dynamic-plugin-states.json b/frontiers_brsu_building_c/models/objects/dynamic-plugin-states.json new file mode 100644 index 0000000..262eb4f --- /dev/null +++ b/frontiers_brsu_building_c/models/objects/dynamic-plugin-states.json @@ -0,0 +1,17 @@ +{ + "@context": [ + { + "pl": "https://secorolab.github.io/metamodels/plugin#", + "door": "https://secorolab.github.io/models/door#" + }, + "https://secorolab.github.io/metamodels/floor-plan/object.json", + "https://secorolab.github.io/metamodels/floor-plan/plugin.json" + ], + "@graph": [ + { + "@id": "pl:door-dynamic-plugin", + "@type": "PluginConfiguration", + "plugin-type": "dynamic" + } + ] +} diff --git a/frontiers_brsu_building_c/models/objects/initial-state-plugin-states.json b/frontiers_brsu_building_c/models/objects/initial-state-plugin-states.json new file mode 100644 index 0000000..f1a202f --- /dev/null +++ b/frontiers_brsu_building_c/models/objects/initial-state-plugin-states.json @@ -0,0 +1,30 @@ +{ + "@context": [ + { + "pl": "https://secorolab.github.io/metamodels/plugin#", + "door": "https://secorolab.github.io/models/door#" + }, + "https://secorolab.github.io/metamodels/floor-plan/object.json", + "https://secorolab.github.io/metamodels/floor-plan/plugin.json" + ], + "@graph": [ + { + "@id": "pl:door-fully-opened-init-plugin", + "@type": "PluginConfiguration", + "plugin-type": "initial", + "state": "door:door-fully-opened" + }, + { + "@id": "pl:door-partially-opened-init-plugin", + "@type": "PluginConfiguration", + "plugin-type": "initial", + "state": "door:door-partially-opened" + }, + { + "@id": "pl:door-fully-closed-init-plugin", + "@type": "PluginConfiguration", + "plugin-type": "initial", + "state": "door:door-fully-opened" + } + ] +} diff --git a/frontiers_brsu_building_c/models/objects/object-door-instance-1.json b/frontiers_brsu_building_c/models/objects/object-door-instance-1.json index 9fc3c0d..47b4ccc 100644 --- a/frontiers_brsu_building_c/models/objects/object-door-instance-1.json +++ b/frontiers_brsu_building_c/models/objects/object-door-instance-1.json @@ -9,6 +9,7 @@ "https://comp-rob2b.github.io/metamodels/geometry/structural-entities.json", "https://comp-rob2b.github.io/metamodels/geometry/coordinates.json", "https://secorolab.github.io/metamodels/floor-plan/object.json", + "https://secorolab.github.io/metamodels/floor-plan/plugin.json", "https://secorolab.github.io/metamodels/geometry/polytope.json", "https://secorolab.github.io/metamodels/floor-plan/state.json", "https://comp-rob2b.github.io/metamodels/qudt.json", @@ -54,7 +55,19 @@ "frame": "geom:frame-location-door-1", "of-object": "door:door", "world": "floorplan:frontiers_brsu_building_c", - "start-state": "door:door-partially-opened" + "plugins": [ + { + "@id": "pl:door-opened-to-closed-adversarial-plugin", + "distance": "0.9" + }, + { + "@id": "pl:door-dynamic-plugin", + "uri": "testURI" + }, + { + "@id": "pl:door-partially-opened-init-plugin" + } + ] }, { "@id": "world-frame-tag", @@ -62,4 +75,4 @@ "frame": "geom:world-frame" } ] -} \ No newline at end of file +} diff --git a/frontiers_brsu_building_c/models/objects/object-door-states.json b/frontiers_brsu_building_c/models/objects/object-door-states.json new file mode 100644 index 0000000..a66a1b7 --- /dev/null +++ b/frontiers_brsu_building_c/models/objects/object-door-states.json @@ -0,0 +1,123 @@ +{ + "@context": [ + { + "door": "https://secorolab.github.io/models/door#" + }, + "https://comp-rob2b.github.io/metamodels/geometry/spatial-relations.json", + "https://comp-rob2b.github.io/metamodels/geometry/structural-entities.json", + "https://comp-rob2b.github.io/metamodels/geometry/coordinates.json", + "https://comp-rob2b.github.io/metamodels/kinematic-chain/structural-entities.json", + "https://secorolab.github.io/metamodels/floor-plan/object.json", + "https://secorolab.github.io/metamodels/geometry/polytope.json", + "https://secorolab.github.io/metamodels/floor-plan/state.json", + "https://comp-rob2b.github.io/metamodels/qudt.json", + "https://secorolab.github.io/metamodels/geometry/coordinate-extension.json" + ], + "@graph": [ + { + "@id": "door:door-fully-opened", + "@type": "State" + }, + { + "@id": "door:joint-pose-door-fully-opened", + "@type": [ "JointReference", "JointPosition", "RevoluteJointPosition", "RevoluteJointPositionCoordinate", "JointLowerLimit" ], + "of-joint": "door:joint-door-hinge", + "quantity-kind": "Angle", + "unit": "RAD", + "value": 1.6 + }, + { + "@id": "door:joint-state-door-fully-opened", + "@type": "JointState", + "joint": "door:joint-door-hinge", + "pose": "door:joint-pose-door-fully-opened", + "state": "door:door-fully-opened" + }, + { + "@id": "door:door-partially-opened", + "@type": "State" + }, + { + "@id": "door:joint-pose-door-partially-opened", + "@type": [ "JointReference", "JointPosition", "RevoluteJointPosition", "RevoluteJointPositionCoordinate", "JointLowerLimit" ], + "of-joint": "door:joint-door-hinge", + "quantity-kind": "Angle", + "unit": "RAD", + "value": 0.7 + }, + { + "@id": "door:joint-state-door-partially-opened", + "@type": "JointState", + "joint": "door:joint-door-hinge", + "pose": "door:joint-pose-door-partially-opened", + "state": "door:door-partially-opened" + }, + { + "@id": "door:door-fully-closed", + "@type": "State" + }, + { + "@id": "door:joint-pose-door-fully-closed", + "@type": [ "JointReference", "JointPosition", "RevoluteJointPosition", "RevoluteJointPositionCoordinate", "JointLowerLimit" ], + "of-joint": "door:joint-door-hinge", + "quantity-kind": "Angle", + "unit": "RAD", + "value": 0.0 + }, + { + "@id": "door:joint-state-door-fully-closed", + "@type": "JointState", + "joint": "door:joint-door-hinge", + "pose": "door:joint-pose-door-fully-closed", + "state": "door:door-fully-closed" + }, + { + "@id": "door:transition-from-door-fully-closed-to-door-fully-opened", + "@type": "Transition", + "start-state": "door:door-fully-closed", + "end-state": "door:door-fully-opened" + }, + { + "@id": "door:transition-from-door-fully-opened-to-door-fully-closed", + "@type": "Transition", + "start-state": "door:door-fully-opened", + "end-state": "door:door-fully-closed" + }, + { + "@id": "door:transition-from-door-fully-closed-to-door-partially-opened", + "@type": "Transition", + "start-state": "door:door-fully-closed", + "end-state": "door:door-partially-opened" + }, + { + "@id": "door:transition-from-door-partially-opened-to-door-fully-closed", + "@type": "Transition", + "start-state": "door:door-partially-opened", + "end-state": "door:door-fully-closed" + }, + { + "@id": "door:transition-from-door-partially-opened-to-door-fully-opened", + "@type": "Transition", + "start-state": "door:door-partially-opened", + "end-state": "door:door-fully-opened" + }, + { + "@id": "door:transition-from-door-fully-opened-to-door-partially-opened", + "@type": "Transition", + "start-state": "door:door-fully-opened", + "end-state": "door:door-partially-opened" + }, + { + "@id": "door:transition-table-door-object", + "@type": "TransitionTable", + "transitions": [ + "door:transition-from-door-fully-closed-to-door-fully-opened", + "door:transition-from-door-fully-opened-to-door-fully-closed", + "door:transition-from-door-fully-closed-to-door-partially-opened", + "door:transition-from-door-partially-opened-to-door-fully-closed", + "door:transition-from-door-partially-opened-to-door-fully-opened", + "door:transition-from-door-fully-opened-to-door-partially-opened" + ] + } + ] +} diff --git a/frontiers_brsu_building_c/models/objects/object-door.json b/frontiers_brsu_building_c/models/objects/object-door.json new file mode 100644 index 0000000..ad4f941 --- /dev/null +++ b/frontiers_brsu_building_c/models/objects/object-door.json @@ -0,0 +1,369 @@ +{ + "@context": [ + { + "door": "https://secorolab.github.io/models/door#" + }, + "https://comp-rob2b.github.io/metamodels/geometry/structural-entities.json", + "https://comp-rob2b.github.io/metamodels/geometry/spatial-relations.json", + "https://comp-rob2b.github.io/metamodels/geometry/coordinates.json", + "https://secorolab.github.io/metamodels/geometry/polytope.json", + "https://comp-rob2b.github.io/metamodels/kinematic-chain/structural-entities.json", + "https://comp-rob2b.github.io/metamodels/kinematic-chain/state.json", + "https://comp-rob2b.github.io/metamodels/qudt.json", + "https://comp-rob2b.github.io/metamodels/newtonian-rigid-body-dynamics.json", + "https://secorolab.github.io/metamodels/floor-plan/object.json", + "https://secorolab.github.io/metamodels/simulation/gazebo.json", + "https://secorolab.github.io/metamodels/geometry/coordinate-extension.json" + ], + "@graph": [ + { + "@id": "door:point-door-holder-origin", + "@type": [ "3D", "Euclidean", "Point" ] + }, + { + "@id": "door:point-joint-door-hinge-origin", + "@type": [ "3D", "Euclidean", "Point" ] + }, + { + "@id": "door:point-door-body-origin", + "@type": [ "3D", "Euclidean", "Point" ] + }, + { + "@id": "door:point-object-door-origin", + "@type": [ "3D", "Euclidean", "Point" ] + }, + { + "@id": "door:point-door-body-center-origin", + "@type": [ "3D", "Euclidean", "Point" ] + }, + { + "@id": "door:frame-object-door", + "@type": "Frame", + "origin": "door:point-object-door-origin" + }, + { + "@id": "door:frame-door-body-center", + "@type": "Frame", + "origin": "door:point-door-body-center-origin" + }, + { + "@id": "door:vector-joint-door-hinge-joint-x", + "@type": [ "3D", "Euclidean", "Vector", "BoundVector", "UnitLength" ], + "start": "door:point-door-hinge-origin" + }, + { + "@id": "door:vector-joint-door-hinge-joint-y", + "@type": [ "3D", "Euclidean", "Vector", "BoundVector", "UnitLength" ], + "start": "door:point-door-hinge-origin" + }, + { + "@id": "door:vector-joint-door-hinge-joint-z", + "@type": [ "3D", "Euclidean", "Vector", "BoundVector", "UnitLength" ], + "start": "door:point-door-hinge-origin" + }, + { + "@id": "door:vector-door-body-origin-x", + "@type": [ "3D", "Euclidean", "Vector", "BoundVector", "UnitLength" ], + "start": "door:point-door-body-origin" + }, + { + "@id": "door:vector-door-body-origin-y", + "@type": [ "3D", "Euclidean", "Vector", "BoundVector", "UnitLength" ], + "start": "door:point-door-body-origin" + }, + { + "@id": "door:vector-door-body-origin-z", + "@type": [ "3D", "Euclidean", "Vector", "BoundVector", "UnitLength" ], + "start": "door:point-door-body-origin" + }, + { + "@id": "door:frame-door-holder-origin", + "@type": [ "3D", "Euclidean", "Frame", "Orthonormal", "RigidBody", "RightHanded" ], + "origin": "door:point-door-holder-origin" + }, + { + "@id": "door:frame-joint-door-hinge", + "@type": ["3D", "Euclidean", "Frame", "Orthonormal", "RigidBody", "RightHanded", "OriginVectorsXYZ"], + "origin": "door:point-joint-door-hinge-origin", + "vector-x": "door:vector-joint-door-hinge-joint-x", + "vector-y": "door:vector-joint-door-hinge-joint-y", + "vector-z": "door:vector-joint-door-hinge-joint-z" + }, + { + "@id": "door:frame-door-body-hinge", + "@type": ["3D", "Euclidean", "Frame", "Orthonormal", "RigidBody", "RightHanded", "OriginVectorsXYZ"], + "origin": "door:point-door-body-origin", + "vector-x": "door:vector-door-body-origin-x", + "vector-y": "door:vector-door-body-origin-y", + "vector-z": "door:vector-door-body-origin-z" + }, + { + "@id": "door:door-hinge", + "@type": [ "SimplicialComplex", "RigidBody" ], + "simplices": [ + "door:frame-door-holder-origin", + "door:frame-joint-door-hinge", + "door:point-joint-door-hinge-origin", + "door:vector-joint-door-hinge-joint-x", + "door:vector-joint-door-hinge-joint-y", + "door:vector-joint-door-hinge-joint-z" + ] + }, + { + "@id": "door-body", + "@type": [ "SimplicialComplex", "RigidBody" ], + "simplices": [ + "door:frame-door-body-hinge", + "door:point-door-body-origin", + "door:vector-door-body-origin-x", + "door:vector-door-body-origin-y", + "door:vector-door-body-origin-z" + ] + }, + { + "@id": "door:pose-frame-door-holder-wrt-frame-object-door", + "@type": "Pose", + "of": "door:frame-door-holder-origin", + "with-respect-to": "door:frame-object-door" + }, + { + "@id": "door:pose-frame-joint-door-hinge-wrt-frame-door-holder-origin", + "@type": "Pose", + "of": "door:frame-joint-door-hinge", + "with-respect-to": "door:frame-door-holder-origin", + "quantity-kind": [ "Angle", "Length" ] + }, + { + "@id": "door:pose-frame-door-body-origin-wrt-frame-joint-door-hinge", + "@type": "Pose", + "of": "door:frame-door-body-hinge", + "with-respect-to": "door:frame-joint-door-hinge", + "quantity-kind": [ "Angle", "Length" ] + }, + { + "@id": "door:offset-frame-joint-door-hinge", + "@type": "Position", + "of": "door:point-door-body-origin", + "with-respect-to": "door:point-joint-door-hinge-origin", + "quantity-kind": "Length" + }, + { + "@id": "door:pose-frame-door-body-center-wrt-frame-door-body-origin", + "@type": "Pose", + "of": "door:frame-door-body-center", + "with-respect-to": "door:frame-door-body-hinge", + "quantity-kind": [ "Angle", "Length" ] + }, + { + "@id": "door:coord-pose-frame-door-holder-wrt-frame-object-door", + "@type": [ + "PoseReference", + "PoseCoordinate", + "VectorXYZ" + ], + "unit": ["M", "RAD"], + "of-pose": "door:pose-frame-door-holder-wrt-frame-object-door", + "as-seen-by": "door:frame-object-door", + "x": 0, + "y": 0, + "z": 0.995, + "theta": 0 + }, + { + "@id": "door:coord-pose-frame-joint-door-hinge-wrt-frame-door-holder-origin", + "@type": [ + "PoseReference", + "PoseCoordinate", + "VectorXYZ" + ], + "unit": ["M", "RAD"], + "of-pose": "door:pose-frame-joint-door-hinge-wrt-frame-door-holder-origin", + "as-seen-by": "door:frame-door-holder-origin", + "x": -0.025, + "y": 0.025, + "z": 0, + "theta": 0 + }, + { + "@id": "door:coord-pose-frame-door-body-origin-wrt-frame-joint-door-hinge", + "@type": [ + "PoseReference", + "PoseCoordinate", + "VectorXYZ" + ], + "unit": ["M", "RAD"], + "of-pose": "door:pose-frame-door-body-origin-wrt-frame-joint-door-hinge", + "as-seen-by": "door:frame-joint-door-hinge", + "x": 0, + "y": 0, + "z": 0, + "theta": 0 + }, + { + "@id": "door:coord-pose-frame-door-body-center-wrt-frame-door-body-origin", + "@type": [ + "PoseReference", + "PoseCoordinate", + "VectorXYZ" + ], + "unit": ["M", "RAD"], + "of-pose": "door:pose-frame-door-body-center-wrt-frame-door-body-origin", + "as-seen-by": "door:frame-door-body-hinge", + "x": 0.025, + "y": 0.465, + "z": 0.005, + "theta": 0 + }, + { + "@id": "door:common-axis-door-hinge", + "@type": "LineCollinearity", + "lines": ["door:vector-joint-door-hinge-joint-z", "door:vector-door-body-origin-z"] + }, + { + "@id": "door:joint-door-hinge", + "@type": [ "Joint", "RevoluteJoint", "RevoluteJointWithPolarity"], + "between-attachments": ["door:door-hinge", "door:door-body"], + "common-axis": "door:common-axis-door-hinge", + "origin-offset": "door:offset-frame-joint-door-hinge", + "positive-direction": "door:vector-door-body-origin-z", + "handedness": "RightHanded" + }, + { + "@id": "door:joint-door-hinge-tree", + "@type": "JointWithTree", + "joint-without-tree": "door:joint-door-hinge", + "parent": "door:door-hinge", + "children": ["door:door-body"] + }, + { + "@id": "door:kinematic-chain-door", + "@type": "KinematicChain", + "joints": ["door:joint-door-hinge"] + }, + { + "@id": "door:zero-configuration-joint-door-hinge", + "@type": [ "JointZeroConfiguration", "JointZeroConfigurationWithCoincidence" ], + "of-joint": "door:joint-door-hinge", + "coincidence-of": [ "door:vector-joint-door-hinge-joint-x", "door:vector-door-body-origin-x"] + }, + { + "@id": "door:joint-lower-limit-door-hinge", + "@type": [ "JointReference", "JointPosition", "RevoluteJointPosition", "RevoluteJointPositionCoordinate", "JointLowerLimit" ], + "of-joint": "door:joint-door-hinge", + "quantity-kind": "Angle", + "unit": "RAD", + "value": 0.0 + }, + { + "@id": "door:joint-upper-limit-door-hinge", + "@type": [ "JointReference", "JointPosition", "RevoluteJointPosition", "RevoluteJointPositionCoordinate", "JointUpperLimit" ], + "of-joint": "door:joint-door-hinge", + "quantity-kind": "Angle", + "unit": "RAD", + "value": 2.0 + }, + { + "@id": "door:polytope-door-body", + "@type": ["Polytope", "3DPolytope", "CuboidWithSize"], + "unit": "M", + "x-size": 0.05, + "y-size": 0.93, + "z-size": 1.98 + }, + { + "@id": "door:polytope-door-hinge", + "@type": ["Polytope", "3DPolytope", "CuboidWithSize"], + "unit": "M", + "x-size": 0.05, + "y-size": 0.05, + "z-size": 1.99 + }, + { + "@id": "door:inertia-door-body", + "@type": [ "RigidBodyInertia", "Mass", "RotationalInertia", "PrincipalMomentsOfInertiaXYZ" ], + "of-body": "door:door-body", + "reference-point": "door:point-door-body-origin", + "as-seen-by": "door:frame-door-body-hinge", + "quantity-kind": [ "MomentOfInertia", "Mass" ], + "unit": [ "KiloGM-M2", "KiloGM" ], + "xx": 0.4069, + "yy": 0.3322, + "zz": 0.0751, + "mass": 1.0 + }, + { + "@id": "door:inertia-door-hinge", + "@type": [ "RigidBodyInertia", "Mass", "RotationalInertia", "PrincipalMomentsOfInertiaXYZ" ], + "of-body": "door:door-hinge", + "reference-point": "door:point-door-holder-origin", + "as-seen-by": "door:frame-door-holder-origin", + "quantity-kind": [ "MomentOfInertia", "Mass" ], + "unit": [ "KiloGM-M2", "KiloGM" ], + "xx": 33.220, + "yy": 33.220, + "zz": 0.0415, + "mass": 100.0 + }, + { + "@id": "door:link-visual-door-body", + "link": "door:door-body", + "@type": ["LinkWithPolytope", "LinkVisualRepresentation"], + "polytope": "door:polytope-door-body" + }, + { + "@id": "door:link-physics-door-body", + "@type": ["LinkWithPolytope", "LinkPhysicsRepresentation"], + "link": "door:door-body", + "polytope": "door:polytope-door-body" + }, + { + "@id": "door:link-visual-door-hinge", + "@type": ["LinkWithPolytope", "LinkVisualRepresentation"], + "link": "door:door-hinge", + "polytope": "door:polytope-door-hinge" + }, + { + "@id": "door:link-physics-door-hinge", + "@type": ["LinkWithPolytope", "LinkPhysicsRepresentation"], + "link": "door:door-hinge", + "polytope": "door:polytope-door-hinge" + }, + { + "@id": "door:object-link-door-body", + "@type": "ObjectLink", + "link": "door:door-body", + "link-frame": "door:frame-door-body-center" + }, + { + "@id": "door:object-link-door-hinge", + "@type": "ObjectLink", + "link": "door:door-hinge", + "link-frame": "door:frame-door-holder-origin" + }, + { + "@id": "door:gazebo-link-door-body-representation", + "@type": "GazeboLinkRepresentation", + "visual": "door:link-visual-door-body", + "collision": "door:link-physics-door-body", + "inertia": "door:inertia-door-body", + "material": "DarkYellow", + "gz-link": "door:object-link-door-body" + }, + { + "@id": "door:gazebo-link-door-hinge-representation", + "@type": "GazeboLinkRepresentation", + "visual": "door:link-visual-door-hinge", + "collision": "door:link-physics-door-hinge", + "inertia": "door:inertia-door-hinge", + "material": "Yellow", + "gz-link": "door:object-link-door-hinge" + }, + { + "@id": "door:door", + "@type": ["Object", "ObjectWithKinematicChain"], + "kinematic-chain": "door:kinematic-chain-door", + "object-frame": "door:frame-object-door", + "object-links": ["door:object-link-door-body", "door:object-link-door-hinge"] + } + ] +}