[gazebo] 01/04: Fix merge conflicts
Jose Luis Rivero
jrivero-guest at moszumanska.debian.org
Mon Feb 2 16:45:42 UTC 2015
This is an automated email from the git hooks/post-receive script.
jrivero-guest pushed a commit to branch dfsg_clean
in repository gazebo.
commit 963b70ee0cb67d801f8b4246e19530ab72e901a0
Merge: b724815 4b24607
Author: Jose Luis Rivero <jrivero at osrfoundation.org>
Date: Mon Feb 2 17:22:13 2015 +0100
Fix merge conflicts
.hg_archival.txt | 8 +-
CMakeLists.txt | 96 +-
Changelog.md | 424 ++++-
LICENSE | 2 +-
Migration.md | 207 ++-
README | 25 +-
cmake/CodeCoverage.cmake | 53 +
cmake/DefaultCFlags.cmake | 46 +-
cmake/FindFreeimage.cmake | 6 +-
cmake/SearchForStuff.cmake | 112 +-
cmake/gazebo-config.cmake.in | 28 +-
cmake/gazebo_config.h.in | 13 +-
cmake/pkgconfig/gazebo.in | 6 +-
cmake/setup.sh.in | 1 +
deps/CMakeLists.txt | 2 +-
deps/opende/CMakeLists.txt | 2 +-
deps/opende/include/ode/objects.h | 16 +
deps/opende/include/ode/odecpp.h | 160 +-
deps/opende/src/joints/screw.cpp | 121 +-
deps/opende/src/quickstep.cpp | 549 +++---
deps/opende/src/util.h | 18 +-
doc/CMakeLists.txt | 6 -
doc/gazebo.in | 9 +-
doc/gazebo_messages.in | 2 +-
doc/header.html | 6 +-
doc/mainpage.html | 6 +-
examples/player/camera/camera.cfg | 15 +-
examples/player/camera/camera.world | 25 -
examples/player/camera/readme.txt | 18 +-
examples/player/laser/laser.cfg | 13 +-
examples/player/laser/laser.world | 25 -
examples/player/laser/readme.txt | 18 +-
examples/player/position2d/position2d.cfg | 2 +-
examples/player/position2d/position2d.world | 13 -
examples/player/position2d/readme.txt | 18 +-
examples/player/readme.txt | 2 +
examples/plugins/animate_joints/CMakeLists.txt | 14 +-
examples/plugins/animate_joints/animate_joints.cc | 2 +-
.../plugins/animate_joints/animate_joints.world | 113 +-
examples/plugins/animate_pose/CMakeLists.txt | 2 +-
examples/plugins/animate_pose/animate_pose.cc | 2 +-
examples/plugins/animate_pose/animate_pose.world | 62 +-
examples/plugins/camera/camera_dump.cc | 2 +-
examples/plugins/camera/camera_move.cc | 2 +-
.../plugins/custom_messages/custom_messages.cc | 2 +-
examples/plugins/factory/CMakeLists.txt | 2 -
examples/plugins/factory/factory.cc | 2 +-
.../gui_overlay_plugin_spawn/CMakeLists.txt | 31 +
.../GUIExampleSpawnWidget.cc | 112 ++
.../GUIExampleSpawnWidget.hh | 53 +
.../spawn_widget_example.world | 18 +
.../plugins/gui_overlay_plugin_time/CMakeLists.txt | 31 +
.../GUIExampleTimeWidget.cc | 117 ++
.../GUIExampleTimeWidget.hh | 62 +
examples/plugins/hello_world/CMakeLists.txt | 2 +-
examples/plugins/hello_world/hello_world.cc | 2 +-
examples/plugins/mainwindow_example/CMakeLists.txt | 31 +
.../mainwindow_example/MainWindowExampleWidget.cc | 131 ++
.../mainwindow_example/MainWindowExampleWidget.hh | 67 +
examples/plugins/model_push/CMakeLists.txt | 2 +-
examples/plugins/model_push/model_push.cc | 4 +-
examples/plugins/model_visuals/model_visuals.cc | 2 +-
examples/plugins/parameters/CMakeLists.txt | 11 +-
examples/plugins/parameters/parameters.cc | 2 +-
examples/plugins/pr2_pose_test.cc | 2 +-
examples/plugins/presentation.cc | 2 +-
examples/plugins/projector/CMakeLists.txt | 10 +-
examples/plugins/projector/projector.cc | 2 +-
examples/plugins/ray_test.cc | 2 +-
examples/plugins/system_gui_plugin/CMakeLists.txt | 19 +-
examples/plugins/system_gui_plugin/system_gui.cc | 25 +-
.../plugins/system_gui_plugin/system_gui.world | 44 -
examples/plugins/world_edit/CMakeLists.txt | 2 +-
examples/plugins/world_edit/world_edit.cc | 2 +-
examples/stand_alone/animated_box/CMakeLists.txt | 34 +
examples/stand_alone/animated_box/animated_box.cc | 84 +
.../stand_alone/animated_box/animated_box.world | 37 +
.../animated_box/independent_listener.cc | 72 +
.../stand_alone/animated_box/integrated_main.cc | 86 +
examples/stand_alone/arrange/CMakeLists.txt | 14 +
.../stand_alone/arrange/arrange_plugin_test.cc | 56 +
examples/stand_alone/arrange/arrange_test.world | 84 +
.../stand_alone/clone_simulation/CMakeLists.txt | 17 +
examples/stand_alone/clone_simulation/README | 25 +
examples/stand_alone/clone_simulation/cloner.cc | 101 ++
examples/stand_alone/custom_main/CMakeLists.txt | 3 +
examples/stand_alone/custom_main/custom_main.cc | 2 +-
.../stand_alone/custom_main/custom_main_vector.cc | 46 +
examples/stand_alone/listener/listener.cc | 2 +-
examples/stand_alone/publisher/publisher.cc | 2 +-
gazebo/CMakeLists.txt | 4 +-
gazebo/Master.cc | 2 +-
gazebo/Master.hh | 2 +-
gazebo/Server.cc | 92 +-
gazebo/Server.hh | 2 +-
gazebo/common/Animation.cc | 2 +-
gazebo/common/Animation.hh | 2 +-
gazebo/common/Animation_TEST.cc | 2 +-
gazebo/common/Assert.cc | 2 +-
gazebo/common/Assert.hh | 2 +-
gazebo/common/AudioDecoder.cc | 2 +-
gazebo/common/AudioDecoder.hh | 2 +-
gazebo/common/AudioDecoder_TEST.cc | 7 +-
gazebo/common/BVHLoader.cc | 2 +-
gazebo/common/BVHLoader.hh | 2 +-
gazebo/common/Base64.cc | 2 +-
gazebo/common/Base64.hh | 2 +-
gazebo/common/CMakeLists.txt | 15 +-
gazebo/common/ColladaExporter.cc | 634 +++++++
gazebo/common/ColladaExporter.hh | 112 ++
gazebo/common/ColladaExporterPrivate.hh | 58 +
gazebo/common/ColladaExporter_TEST.cc | 191 ++
gazebo/common/ColladaLoader.cc | 731 ++++++--
gazebo/common/ColladaLoader.hh | 64 +-
gazebo/common/ColladaLoaderPrivate.hh | 99 +
gazebo/common/ColladaLoader_TEST.cc | 93 +-
gazebo/common/Color.cc | 2 +-
gazebo/common/Color.hh | 2 +-
gazebo/common/Color_TEST.cc | 2 +-
gazebo/common/CommonIface.cc | 2 +-
gazebo/common/CommonIface.hh | 2 +-
gazebo/common/CommonIface_TEST.cc | 2 +-
gazebo/common/CommonTypes.hh | 4 +-
gazebo/common/Console.cc | 55 +-
gazebo/common/Console.hh | 33 +-
gazebo/common/Console_TEST.cc | 2 +-
gazebo/common/Dem.cc | 2 +-
gazebo/common/Dem.hh | 6 +-
gazebo/common/DemPrivate.hh | 2 +-
gazebo/common/Dem_TEST.cc | 2 +-
gazebo/common/Event.cc | 2 +-
gazebo/common/Event.hh | 2 +-
gazebo/common/Event_TEST.cc | 2 +-
gazebo/common/Events.cc | 3 +-
gazebo/common/Events.hh | 18 +-
gazebo/common/Exception.cc | 5 +-
gazebo/common/Exception.hh | 2 +-
gazebo/common/Exception_TEST.cc | 2 +-
gazebo/common/GTSMeshUtils.cc | 191 ++
gazebo/common/GTSMeshUtils.hh | 51 +
gazebo/common/HeightmapData.hh | 2 +-
gazebo/common/Image.cc | 2 +-
gazebo/common/Image.hh | 2 +-
gazebo/common/ImageHeightmap.cc | 2 +-
gazebo/common/ImageHeightmap.hh | 2 +-
gazebo/common/ImageHeightmap_TEST.cc | 2 +-
gazebo/common/Image_TEST.cc | 2 +-
gazebo/common/KeyEvent.hh | 25 +-
gazebo/common/KeyFrame.cc | 2 +-
gazebo/common/KeyFrame.hh | 2 +-
gazebo/common/Material.cc | 2 +-
gazebo/common/Material.hh | 2 +-
gazebo/common/Material_TEST.cc | 2 +-
gazebo/common/Mesh.cc | 14 +-
gazebo/common/Mesh.hh | 11 +-
gazebo/common/MeshCSG.cc | 2 +-
gazebo/common/MeshCSG.hh | 2 +-
gazebo/common/MeshExporter.cc | 30 +
gazebo/common/MeshExporter.hh | 53 +
gazebo/common/MeshLoader.cc | 2 +-
gazebo/common/MeshLoader.hh | 2 +-
gazebo/common/MeshManager.cc | 145 +-
gazebo/common/MeshManager.hh | 29 +-
gazebo/common/Mesh_TEST.cc | 2 +-
gazebo/common/ModelDatabase.cc | 12 +-
gazebo/common/ModelDatabase.hh | 2 +-
gazebo/common/ModelDatabasePrivate.hh | 5 +-
gazebo/common/MouseEvent.hh | 2 +-
gazebo/common/MovingWindowFilter.hh | 2 +-
gazebo/common/MovingWindowFilter_TEST.cc | 2 +-
gazebo/common/PID.cc | 2 +-
gazebo/common/PID.hh | 2 +-
gazebo/common/Plugin.cc | 2 +-
gazebo/common/Plugin.hh | 37 +-
gazebo/common/STLLoader.cc | 2 +-
gazebo/common/STLLoader.hh | 2 +-
gazebo/common/SingletonT.hh | 2 +-
gazebo/common/Skeleton.cc | 2 +-
gazebo/common/Skeleton.hh | 2 +-
gazebo/common/SkeletonAnimation.cc | 2 +-
gazebo/common/SkeletonAnimation.hh | 2 +-
gazebo/common/SphericalCoordinates.cc | 2 +-
gazebo/common/SphericalCoordinates.hh | 2 +-
gazebo/common/SphericalCoordinatesPrivate.hh | 2 +-
gazebo/common/SphericalCoordinates_TEST.cc | 2 +-
gazebo/common/SystemPaths.cc | 19 +-
gazebo/common/SystemPaths.hh | 18 +-
gazebo/common/SystemPaths_TEST.cc | 2 +-
gazebo/common/Time.cc | 2 +-
gazebo/common/Time.hh | 2 +-
gazebo/common/Time_TEST.cc | 2 +-
gazebo/common/Timer.cc | 20 +-
gazebo/common/Timer.hh | 14 +-
gazebo/common/UpdateInfo.hh | 2 +-
gazebo/common/Video.cc | 2 +-
gazebo/common/Video.hh | 2 +-
gazebo/common/ffmpeg_inc.h | 2 +-
gazebo/common/template_TEST.cc | 2 +-
gazebo/gazebo.1.ronn | 10 +-
gazebo/gazebo.cc | 188 +-
gazebo/gazebo.hh | 74 +-
gazebo/gazebo_core.hh | 2 +-
gazebo/gazebo_main.cc | 28 +-
gazebo/gui/Actions.cc | 25 +-
gazebo/gui/Actions.hh | 14 +-
gazebo/gui/AlignWidget.cc | 170 ++
gazebo/gui/AlignWidget.hh | 102 ++
gazebo/gui/AlignWidgetPrivate.hh | 47 +
gazebo/gui/BoxMaker.cc | 2 +-
gazebo/gui/BoxMaker.hh | 2 +-
gazebo/gui/BuildingEditor_TEST.cc | 85 +
gazebo/gui/BuildingEditor_TEST.hh | 32 +
gazebo/gui/CMakeLists.txt | 43 +-
gazebo/gui/CloneWindow.cc | 112 ++
gazebo/gui/CloneWindow.hh | 78 +
gazebo/gui/ConfigWidget.cc | 1884 ++++++++++++++++++++
gazebo/gui/ConfigWidget.hh | 434 +++++
gazebo/gui/ConfigWidget_TEST.cc | 521 ++++++
gazebo/gui/ConfigWidget_TEST.hh | 41 +
gazebo/gui/CylinderMaker.cc | 2 +-
gazebo/gui/CylinderMaker.hh | 2 +-
gazebo/gui/DataLogger.cc | 2 +-
gazebo/gui/DataLogger.hh | 2 +-
gazebo/gui/DataLogger_TEST.cc | 2 +-
gazebo/gui/DataLogger_TEST.hh | 2 +-
gazebo/gui/Diagnostics.cc | 2 +-
gazebo/gui/Diagnostics.hh | 2 +-
gazebo/gui/Editor.cc | 9 +-
gazebo/gui/Editor.hh | 7 +-
gazebo/gui/EntityMaker.cc | 2 +-
gazebo/gui/EntityMaker.hh | 2 +-
gazebo/gui/GLWidget.cc | 351 +++-
gazebo/gui/GLWidget.hh | 54 +-
gazebo/gui/GLWidget_TEST.cc | 93 +
gazebo/gui/GLWidget_TEST.hh | 32 +
gazebo/gui/GLWidget_TEST2.cc | 128 ++
gazebo/gui/GLWidget_TEST2.hh | 32 +
gazebo/gui/GuiEvents.cc | 7 +-
gazebo/gui/GuiEvents.hh | 114 +-
gazebo/gui/GuiIface.cc | 76 +-
gazebo/gui/GuiIface.hh | 23 +-
gazebo/gui/GuiIface_TEST.cc | 45 +-
gazebo/gui/GuiIface_TEST.hh | 5 +-
gazebo/gui/GuiPlugin.hh | 55 +
gazebo/gui/GuiTypes.hh | 2 +-
gazebo/gui/IncrementalPlot.cc | 2 +-
gazebo/gui/IncrementalPlot.hh | 2 +-
gazebo/gui/InsertModelWidget.cc | 127 +-
gazebo/gui/InsertModelWidget.hh | 23 +-
gazebo/gui/InsertModelWidgetPrivate.hh | 6 +-
gazebo/gui/JointControlWidget.cc | 44 +-
gazebo/gui/JointControlWidget.hh | 2 +-
gazebo/gui/KeyEventHandler.cc | 28 +-
gazebo/gui/KeyEventHandler.hh | 23 +-
gazebo/gui/LightMaker.cc | 73 +-
gazebo/gui/LightMaker.hh | 19 +-
gazebo/gui/MainWindow.cc | 497 +++++-
gazebo/gui/MainWindow.hh | 64 +-
gazebo/gui/MainWindow_TEST.cc | 278 ++-
gazebo/gui/MainWindow_TEST.hh | 8 +-
gazebo/gui/MeshMaker.cc | 2 +-
gazebo/gui/MeshMaker.hh | 2 +-
gazebo/gui/ModelAlign.cc | 292 +++
gazebo/gui/ModelAlign.hh | 87 +
gazebo/gui/ModelAlignPrivate.hh | 78 +
gazebo/gui/ModelAlign_TEST.cc | 793 ++++++++
gazebo/gui/ModelAlign_TEST.hh | 59 +
gazebo/gui/ModelBuilderWidget.cc | 2 +-
gazebo/gui/ModelBuilderWidget.hh | 2 +-
gazebo/gui/ModelEditWidget.cc | 2 +-
gazebo/gui/ModelEditWidget.hh | 2 +-
gazebo/gui/ModelListWidget.cc | 263 ++-
gazebo/gui/ModelListWidget.hh | 25 +-
gazebo/gui/ModelListWidget_TEST.cc | 12 +-
gazebo/gui/ModelListWidget_TEST.hh | 2 +-
gazebo/gui/ModelMaker.cc | 56 +-
gazebo/gui/ModelMaker.hh | 8 +-
gazebo/gui/ModelManipulator.cc | 26 +-
gazebo/gui/ModelManipulator.hh | 5 +-
gazebo/gui/ModelManipulatorPrivate.hh | 2 +-
gazebo/gui/ModelRightMenu.cc | 10 +-
gazebo/gui/ModelRightMenu.hh | 2 +-
gazebo/gui/ModelSnap.cc | 445 +++++
gazebo/gui/ModelSnap.hh | 109 ++
gazebo/gui/ModelSnapPrivate.hh | 100 ++
gazebo/gui/ModelSnap_TEST.cc | 167 ++
gazebo/gui/ModelSnap_TEST.hh | 32 +
gazebo/gui/MouseEventHandler.cc | 2 +-
gazebo/gui/MouseEventHandler.hh | 2 +-
gazebo/gui/OculusWindow.cc | 202 +++
gazebo/gui/OculusWindow.hh | 99 +
gazebo/gui/QTestFixture.cc | 32 +-
gazebo/gui/QTestFixture.hh | 8 +-
gazebo/gui/RenderWidget.cc | 139 +-
gazebo/gui/RenderWidget.hh | 24 +-
gazebo/gui/SaveDialog.cc | 2 +-
gazebo/gui/SaveDialog.hh | 2 +-
gazebo/gui/SpaceNav.cc | 189 ++
gazebo/gui/SpaceNav.hh | 80 +
gazebo/gui/SpaceNavPrivate.hh | 69 +
gazebo/gui/SphereMaker.cc | 2 +-
gazebo/gui/SphereMaker.hh | 2 +-
gazebo/gui/TimePanel.cc | 2 +-
gazebo/gui/TimePanel.hh | 2 +-
gazebo/gui/TimePanel_TEST.cc | 2 +-
gazebo/gui/TimePanel_TEST.hh | 2 +-
gazebo/gui/ToolsWidget.cc | 2 +-
gazebo/gui/ToolsWidget.hh | 2 +-
gazebo/gui/TopicSelector.cc | 2 +-
gazebo/gui/TopicSelector.hh | 2 +-
gazebo/gui/building/BuildingEditor.cc | 63 +-
gazebo/gui/building/BuildingEditor.hh | 14 +-
gazebo/gui/building/BuildingEditorEvents.cc | 23 +-
gazebo/gui/building/BuildingEditorEvents.hh | 254 ---
gazebo/gui/building/BuildingEditorPalette.cc | 406 +++--
gazebo/gui/building/BuildingEditorPalette.hh | 65 +-
.../gui/building/BuildingEditorPalettePrivate.hh | 58 +
gazebo/gui/building/BuildingEditorWidget.cc | 10 +-
gazebo/gui/building/BuildingEditorWidget.hh | 2 +-
gazebo/gui/building/BuildingItem.cc | 28 +-
gazebo/gui/building/BuildingItem.hh | 24 +-
gazebo/gui/building/BuildingMaker.cc | 1074 +++++++++--
gazebo/gui/building/BuildingMaker.hh | 150 +-
gazebo/gui/building/BuildingModelManip.cc | 139 +-
gazebo/gui/building/BuildingModelManip.hh | 93 +-
gazebo/gui/building/CMakeLists.txt | 16 +-
gazebo/gui/building/DoorItem.cc | 37 +-
gazebo/gui/building/DoorItem.hh | 7 +-
gazebo/gui/building/EditorItem.cc | 80 +-
gazebo/gui/building/EditorItem.hh | 98 +-
gazebo/gui/building/EditorView.cc | 1029 +++++++----
gazebo/gui/building/EditorView.hh | 102 +-
gazebo/gui/building/FinishBuildingDialog.cc | 151 +-
gazebo/gui/building/FinishBuildingDialog.hh | 39 +-
gazebo/gui/building/FloorItem.cc | 73 +-
gazebo/gui/building/FloorItem.hh | 14 +-
gazebo/gui/building/GrabberHandle.cc | 8 +-
gazebo/gui/building/GrabberHandle.hh | 6 +-
gazebo/gui/building/GridLines.cc | 2 +-
gazebo/gui/building/GridLines.hh | 2 +-
gazebo/gui/building/ImportImageDialog.cc | 251 +++
gazebo/gui/building/ImportImageDialog.hh | 109 ++
gazebo/gui/building/ImportImageView.cc | 292 +++
gazebo/gui/building/ImportImageView.hh | 139 ++
gazebo/gui/building/LevelInspectorDialog.cc | 120 +-
gazebo/gui/building/LevelInspectorDialog.hh | 35 +-
gazebo/gui/building/LevelWidget.cc | 106 +-
gazebo/gui/building/LevelWidget.hh | 33 +-
gazebo/gui/building/LineSegmentItem.cc | 238 ---
gazebo/gui/building/LineSegmentItem.hh | 168 --
gazebo/gui/building/MeasureItem.cc | 130 ++
gazebo/gui/building/MeasureItem.hh | 68 +
gazebo/gui/building/PolylineItem.cc | 552 ------
gazebo/gui/building/PolylineItem.hh | 219 ---
gazebo/gui/building/RectItem.cc | 212 ++-
gazebo/gui/building/RectItem.hh | 45 +-
gazebo/gui/building/RotateHandle.cc | 2 +-
gazebo/gui/building/RotateHandle.hh | 2 +-
gazebo/gui/building/ScaleWidget.cc | 4 +-
gazebo/gui/building/ScaleWidget.hh | 2 +-
gazebo/gui/building/SegmentItem.cc | 408 +++++
gazebo/gui/building/SegmentItem.hh | 191 ++
gazebo/gui/building/StairsInspectorDialog.cc | 100 +-
gazebo/gui/building/StairsInspectorDialog.hh | 31 +-
gazebo/gui/building/StairsItem.cc | 32 +-
gazebo/gui/building/StairsItem.hh | 7 +-
gazebo/gui/building/WallInspectorDialog.cc | 107 +-
gazebo/gui/building/WallInspectorDialog.hh | 36 +-
gazebo/gui/building/WallItem.cc | 438 -----
gazebo/gui/building/WallItem.hh | 128 --
gazebo/gui/building/WallSegmentItem.cc | 282 +++
gazebo/gui/building/WallSegmentItem.hh | 128 ++
gazebo/gui/building/WindowDoorInspectorDialog.cc | 4 +-
gazebo/gui/building/WindowDoorInspectorDialog.hh | 2 +-
gazebo/gui/building/WindowItem.cc | 34 +-
gazebo/gui/building/WindowItem.hh | 7 +-
gazebo/gui/gzclient.1.ronn | 2 +-
gazebo/gui/images/align.png | Bin 0 -> 577 bytes
gazebo/gui/images/copy_object.png | Bin 1165 -> 537 bytes
gazebo/gui/images/door.png | Bin 35190 -> 0 bytes
gazebo/gui/images/door.svg | 68 +
gazebo/gui/images/draw_link.svg | 82 +
gazebo/gui/images/magnet.png | Bin 0 -> 5898 bytes
gazebo/gui/images/paste_object.png | Bin 1588 -> 927 bytes
gazebo/gui/images/screenshot.png | Bin 1875 -> 1297 bytes
gazebo/gui/images/stairs.png | Bin 220657 -> 0 bytes
gazebo/gui/images/stairs.svg | 21 +
gazebo/gui/images/wall.png | Bin 580086 -> 0 bytes
gazebo/gui/images/wall.svg | 87 +
gazebo/gui/images/window.png | Bin 33657 -> 0 bytes
gazebo/gui/images/window.svg | 68 +
gazebo/gui/images/x_center.png | Bin 0 -> 2202 bytes
gazebo/gui/images/x_max.png | Bin 0 -> 3249 bytes
gazebo/gui/images/x_min.png | Bin 0 -> 3296 bytes
gazebo/gui/images/y_center.png | Bin 0 -> 731 bytes
gazebo/gui/images/y_max.png | Bin 0 -> 610 bytes
gazebo/gui/images/y_min.png | Bin 0 -> 602 bytes
gazebo/gui/images/z_center.png | Bin 0 -> 724 bytes
gazebo/gui/images/z_max.png | Bin 0 -> 598 bytes
gazebo/gui/images/z_min.png | Bin 0 -> 597 bytes
gazebo/gui/main.cc | 2 +-
gazebo/gui/model/CMakeLists.txt | 9 +
gazebo/gui/model/ImportDialog.cc | 4 +-
gazebo/gui/model/ImportDialog.hh | 2 +-
gazebo/gui/model/JointInspector.cc | 210 ++-
gazebo/gui/model/JointInspector.hh | 68 +-
gazebo/gui/model/JointMaker.cc | 533 ++++--
gazebo/gui/model/JointMaker.hh | 79 +-
gazebo/gui/model/JointMaker_TEST.cc | 140 ++
gazebo/gui/model/JointMaker_TEST.hh | 35 +
gazebo/gui/model/ModelCreator.cc | 599 +++++--
gazebo/gui/model/ModelCreator.hh | 146 +-
gazebo/gui/model/ModelData.hh | 62 +
gazebo/gui/model/ModelEditor.cc | 185 +-
gazebo/gui/model/ModelEditor.hh | 42 +-
gazebo/gui/model/ModelEditorEvents.cc | 2 +-
gazebo/gui/model/ModelEditorEvents.hh | 2 +-
gazebo/gui/model/ModelEditorPalette.cc | 299 ++--
gazebo/gui/model/ModelEditorPalette.hh | 43 +-
gazebo/gui/qt.h | 2 +-
gazebo/gui/qt_test.h | 2 +-
gazebo/gui/resources.qrc | 27 +-
gazebo/gui/style.qss | 18 +
gazebo/gui/terrain/TerrainEditor.cc | 2 +-
gazebo/gui/terrain/TerrainEditor.hh | 2 +-
gazebo/gui/terrain/TerrainEditorPalette.cc | 2 +-
gazebo/gui/terrain/TerrainEditorPalette.hh | 2 +-
gazebo/gui/viewers/ImageFrame.cc | 2 +-
gazebo/gui/viewers/ImageFrame.hh | 2 +-
gazebo/gui/viewers/ImageFramePrivate.hh | 2 +-
gazebo/gui/viewers/ImageView.cc | 2 +-
gazebo/gui/viewers/ImageView.hh | 2 +-
gazebo/gui/viewers/ImageViewPrivate.hh | 2 +-
gazebo/gui/viewers/ImagesView.cc | 2 +-
gazebo/gui/viewers/ImagesView.hh | 2 +-
gazebo/gui/viewers/ImagesViewPrivate.hh | 2 +-
gazebo/gui/viewers/ImagesView_TEST.cc | 2 +-
gazebo/gui/viewers/ImagesView_TEST.hh | 2 +-
gazebo/gui/viewers/LaserView.cc | 2 +-
gazebo/gui/viewers/LaserView.hh | 2 +-
gazebo/gui/viewers/TextView.cc | 2 +-
gazebo/gui/viewers/TextView.hh | 2 +-
gazebo/gui/viewers/TopicView.cc | 2 +-
gazebo/gui/viewers/TopicView.hh | 2 +-
gazebo/gui/viewers/ViewFactory.cc | 2 +-
gazebo/gui/viewers/ViewFactory.hh | 2 +-
gazebo/gzserver.1.ronn | 2 +-
gazebo/math/Angle.cc | 2 +-
gazebo/math/Angle.hh | 2 +-
gazebo/math/Angle_TEST.cc | 2 +-
gazebo/math/Box.cc | 15 +-
gazebo/math/Box.hh | 11 +-
gazebo/math/Box_TEST.cc | 12 +-
gazebo/math/CMakeLists.txt | 10 +
gazebo/math/Filter.hh | 248 +++
gazebo/math/Helpers.cc | 2 +-
gazebo/math/Helpers.hh | 2 +-
gazebo/math/Helpers_TEST.cc | 2 +-
gazebo/math/Kmeans.cc | 168 ++
gazebo/math/Kmeans.hh | 101 ++
gazebo/math/Kmeans_TEST.cc | 131 ++
gazebo/math/MathTypes.hh | 2 +-
gazebo/math/Matrix3.cc | 2 +-
gazebo/math/Matrix3.hh | 2 +-
gazebo/math/Matrix3_TEST.cc | 2 +-
gazebo/math/Matrix4.cc | 2 +-
gazebo/math/Matrix4.hh | 2 +-
gazebo/math/Plane.cc | 2 +-
gazebo/math/Plane.hh | 2 +-
gazebo/math/Plane_TEST.cc | 2 +-
gazebo/math/Pose.cc | 2 +-
gazebo/math/Pose.hh | 2 +-
gazebo/math/Pose_TEST.cc | 2 +-
gazebo/math/Quaternion.cc | 30 +-
gazebo/math/Quaternion.hh | 18 +-
gazebo/math/Quaternion_TEST.cc | 42 +-
gazebo/math/Rand.cc | 2 +-
gazebo/math/Rand.hh | 2 +-
gazebo/math/Rand_TEST.cc | 2 +-
gazebo/math/RotationSpline.cc | 2 +-
gazebo/math/RotationSpline.hh | 2 +-
gazebo/math/RotationSpline_TEST.cc | 2 +-
gazebo/math/SignalStats.cc | 240 +++
gazebo/math/SignalStats.hh | 179 ++
gazebo/math/SignalStatsPrivate.hh | 56 +
gazebo/math/SignalStats_TEST.cc | 340 ++++
gazebo/math/Spline.cc | 2 +-
gazebo/math/Spline.hh | 2 +-
gazebo/math/Spline_TEST.cc | 2 +-
gazebo/math/Vector2d.cc | 8 +-
gazebo/math/Vector2d.hh | 8 +-
gazebo/math/Vector2d_TEST.cc | 12 +-
gazebo/math/Vector2i.cc | 2 +-
gazebo/math/Vector2i.hh | 2 +-
gazebo/math/Vector2i_TEST.cc | 2 +-
gazebo/math/Vector3.cc | 2 +-
gazebo/math/Vector3.hh | 2 +-
gazebo/math/Vector3Stats.cc | 121 ++
gazebo/math/Vector3Stats.hh | 111 ++
gazebo/math/Vector3StatsPrivate.hh | 44 +
gazebo/math/Vector3Stats_TEST.cc | 183 ++
gazebo/math/Vector3_TEST.cc | 2 +-
gazebo/math/Vector4.cc | 2 +-
gazebo/math/Vector4.hh | 2 +-
gazebo/math/Vector4_TEST.cc | 2 +-
gazebo/msgs/CMakeLists.txt | 7 +-
gazebo/msgs/MessageTypes.hh.in | 5 +
gazebo/msgs/MsgFactory.cc | 2 +-
gazebo/msgs/MsgFactory.hh | 2 +-
gazebo/msgs/MsgFactory_TEST.cc | 2 +-
gazebo/msgs/axis.proto | 15 +-
gazebo/msgs/camera_cmd.proto | 2 -
gazebo/msgs/camerasensor.proto | 7 +-
gazebo/msgs/collision.proto | 1 -
gazebo/msgs/distortion.proto | 17 +
gazebo/msgs/factory.proto | 1 -
gazebo/msgs/fluid.proto | 17 +
gazebo/msgs/generator/GazeboGenerator.cc | 2 +-
gazebo/msgs/generator/GazeboGenerator.hh | 2 +-
gazebo/msgs/generator/gazebo_generator.cc | 2 +-
gazebo/msgs/geometry.proto | 5 +-
gazebo/msgs/gui.proto | 3 +-
gazebo/msgs/gui_overlay_config.proto | 13 -
gazebo/msgs/hydra.proto | 52 +
gazebo/msgs/joint.proto | 1 -
gazebo/msgs/joint_animation.proto | 1 -
gazebo/msgs/joint_cmd.proto | 3 -
gazebo/msgs/joystick.proto | 23 +
gazebo/msgs/light.proto | 1 -
gazebo/msgs/link.proto | 1 -
gazebo/msgs/msgs.cc | 698 +++++++-
gazebo/msgs/msgs.hh | 110 +-
gazebo/msgs/msgs_TEST.cc | 367 +++-
gazebo/msgs/physics.proto | 1 -
gazebo/msgs/plugin.proto | 3 -
gazebo/msgs/polylinegeom.proto | 13 +
gazebo/msgs/road.proto | 10 +-
gazebo/msgs/scene.proto | 4 -
gazebo/msgs/selection.proto | 4 -
gazebo/msgs/server_control.proto | 4 +-
gazebo/msgs/sim_event.proto | 15 +
gazebo/msgs/vector2d.proto | 2 -
gazebo/msgs/vector3d.proto | 2 -
gazebo/msgs/world_modify.proto | 2 +
gazebo/msgs/world_reset.proto | 2 -
gazebo/msgs/world_stats.proto | 1 -
gazebo/physics/Actor.cc | 37 +-
gazebo/physics/Actor.hh | 2 +-
gazebo/physics/BallJoint.hh | 2 +-
gazebo/physics/Base.cc | 19 +-
gazebo/physics/Base.hh | 14 +-
gazebo/physics/BoxShape.cc | 2 +-
gazebo/physics/BoxShape.hh | 2 +-
gazebo/physics/BoxShape_TEST.cc | 14 +-
gazebo/physics/CMakeLists.txt | 9 +-
gazebo/physics/Collision.cc | 48 +-
gazebo/physics/Collision.hh | 31 +-
gazebo/physics/CollisionState.cc | 2 +-
gazebo/physics/CollisionState.hh | 2 +-
gazebo/physics/Contact.cc | 2 +-
gazebo/physics/Contact.hh | 2 +-
gazebo/physics/ContactManager.cc | 2 +-
gazebo/physics/ContactManager.hh | 2 +-
gazebo/physics/ContactManager_TEST.cc | 2 +-
gazebo/physics/CylinderShape.cc | 2 +-
gazebo/physics/CylinderShape.hh | 2 +-
gazebo/physics/CylinderShape_TEST.cc | 14 +-
gazebo/physics/Entity.cc | 28 +-
gazebo/physics/Entity.hh | 44 +-
gazebo/physics/GearboxJoint.hh | 2 +-
gazebo/physics/Gripper.cc | 2 +-
gazebo/physics/Gripper.hh | 2 +-
gazebo/physics/HeightmapShape.cc | 3 +-
gazebo/physics/HeightmapShape.hh | 2 +-
gazebo/physics/Hinge2Joint.hh | 2 +-
gazebo/physics/HingeJoint.hh | 2 +-
gazebo/physics/Inertial.cc | 2 +-
gazebo/physics/Inertial.hh | 2 +-
gazebo/physics/Inertial_TEST.cc | 2 +-
gazebo/physics/Joint.cc | 550 +++++-
gazebo/physics/Joint.hh | 155 +-
gazebo/physics/JointController.cc | 345 +---
gazebo/physics/JointController.hh | 54 +-
gazebo/physics/JointControllerPrivate.hh | 2 +-
gazebo/physics/JointController_TEST.cc | 46 +-
gazebo/physics/JointState.cc | 2 +-
gazebo/physics/JointState.hh | 2 +-
gazebo/physics/JointWrench.hh | 2 +-
gazebo/physics/Link.cc | 206 ++-
gazebo/physics/Link.hh | 47 +-
gazebo/physics/LinkState.cc | 2 +-
gazebo/physics/LinkState.hh | 2 +-
gazebo/physics/MapShape.cc | 2 +-
gazebo/physics/MapShape.hh | 2 +-
gazebo/physics/MeshShape.cc | 6 +-
gazebo/physics/MeshShape.hh | 2 +-
gazebo/physics/Model.cc | 107 +-
gazebo/physics/Model.hh | 8 +-
gazebo/physics/ModelState.cc | 2 +-
gazebo/physics/ModelState.hh | 2 +-
gazebo/physics/MultiRayShape.cc | 2 +-
gazebo/physics/MultiRayShape.hh | 2 +-
gazebo/physics/PhysicsEngine.cc | 21 +-
gazebo/physics/PhysicsEngine.hh | 48 +-
gazebo/physics/PhysicsEngine_TEST.cc | 14 +-
gazebo/physics/PhysicsFactory.cc | 2 +-
gazebo/physics/PhysicsFactory.hh | 2 +-
gazebo/physics/PhysicsIface.cc | 2 +-
gazebo/physics/PhysicsIface.hh | 2 +-
gazebo/physics/PhysicsTypes.hh | 19 +-
gazebo/physics/PlaneShape.cc | 2 +-
gazebo/physics/PlaneShape.hh | 2 +-
gazebo/physics/PolylineShape.cc | 161 ++
gazebo/physics/PolylineShape.hh | 91 +
gazebo/physics/Population.cc | 551 ++++++
gazebo/physics/Population.hh | 246 +++
gazebo/physics/PopulationPrivate.hh | 40 +
gazebo/physics/RayShape.cc | 2 +-
gazebo/physics/RayShape.hh | 2 +-
gazebo/physics/Road.cc | 46 +-
gazebo/physics/Road.hh | 13 +-
gazebo/physics/Road_TEST.cc | 71 +
gazebo/physics/ScrewJoint.hh | 27 +-
gazebo/physics/Shape.cc | 2 +-
gazebo/physics/Shape.hh | 2 +-
gazebo/physics/SliderJoint.hh | 2 +-
gazebo/physics/SphereShape.cc | 2 +-
gazebo/physics/SphereShape.hh | 2 +-
gazebo/physics/SphereShape_TEST.cc | 14 +-
gazebo/physics/State.cc | 2 +-
gazebo/physics/State.hh | 2 +-
gazebo/physics/SurfaceParams.cc | 2 +-
gazebo/physics/SurfaceParams.hh | 2 +-
gazebo/physics/UniversalJoint.hh | 2 +-
gazebo/physics/World.cc | 1150 ++++++------
gazebo/physics/World.hh | 305 +---
gazebo/physics/WorldPrivate.hh | 292 +++
gazebo/physics/WorldState.cc | 2 +-
gazebo/physics/WorldState.hh | 2 +-
gazebo/physics/bullet/BulletBallJoint.cc | 2 +-
gazebo/physics/bullet/BulletBallJoint.hh | 2 +-
gazebo/physics/bullet/BulletBoxShape.hh | 2 +-
gazebo/physics/bullet/BulletCollision.cc | 20 +-
gazebo/physics/bullet/BulletCollision.hh | 2 +-
gazebo/physics/bullet/BulletCylinderShape.hh | 2 +-
gazebo/physics/bullet/BulletHeightmapShape.cc | 2 +-
gazebo/physics/bullet/BulletHeightmapShape.hh | 2 +-
gazebo/physics/bullet/BulletHinge2Joint.cc | 2 +-
gazebo/physics/bullet/BulletHinge2Joint.hh | 10 +-
gazebo/physics/bullet/BulletHingeJoint.cc | 101 +-
gazebo/physics/bullet/BulletHingeJoint.hh | 16 +-
gazebo/physics/bullet/BulletJoint.cc | 56 +-
gazebo/physics/bullet/BulletJoint.hh | 19 +-
gazebo/physics/bullet/BulletLink.cc | 2 +-
gazebo/physics/bullet/BulletLink.hh | 2 +-
gazebo/physics/bullet/BulletMesh.cc | 118 ++
gazebo/physics/bullet/BulletMesh.hh | 71 +
gazebo/physics/bullet/BulletMeshShape.cc | 112 --
gazebo/physics/bullet/BulletMeshShape.hh | 19 +-
gazebo/physics/bullet/BulletMotionState.cc | 22 +-
gazebo/physics/bullet/BulletMotionState.hh | 2 +-
gazebo/physics/bullet/BulletMultiRayShape.cc | 2 +-
gazebo/physics/bullet/BulletMultiRayShape.hh | 2 +-
gazebo/physics/bullet/BulletPhysics.cc | 120 +-
gazebo/physics/bullet/BulletPhysics.hh | 17 +-
gazebo/physics/bullet/BulletPhysics_TEST.cc | 6 +-
gazebo/physics/bullet/BulletPlaneShape.hh | 2 +-
gazebo/physics/bullet/BulletPolylineShape.cc | 60 +
gazebo/physics/bullet/BulletPolylineShape.hh | 50 +
gazebo/physics/bullet/BulletRaySensor.cc | 2 +-
gazebo/physics/bullet/BulletRaySensor.hh | 2 +-
gazebo/physics/bullet/BulletRayShape.cc | 2 +-
gazebo/physics/bullet/BulletRayShape.hh | 2 +-
gazebo/physics/bullet/BulletScrewJoint.cc | 9 +-
gazebo/physics/bullet/BulletScrewJoint.hh | 6 +-
gazebo/physics/bullet/BulletSliderJoint.cc | 122 +-
gazebo/physics/bullet/BulletSliderJoint.hh | 17 +-
gazebo/physics/bullet/BulletSphereShape.hh | 2 +-
gazebo/physics/bullet/BulletSurfaceParams.cc | 2 +-
gazebo/physics/bullet/BulletSurfaceParams.hh | 2 +-
gazebo/physics/bullet/BulletTypes.hh | 2 +-
gazebo/physics/bullet/BulletTypes_TEST.cc | 2 +-
gazebo/physics/bullet/BulletUniversalJoint.cc | 48 +-
gazebo/physics/bullet/BulletUniversalJoint.hh | 12 +-
gazebo/physics/bullet/CMakeLists.txt | 5 +
gazebo/physics/bullet/bullet_inc.h | 2 +-
gazebo/physics/bullet/bullet_math_inc.h | 2 +-
gazebo/physics/bullet/gzBtUniversalConstraint.cc | 2 +-
gazebo/physics/bullet/gzBtUniversalConstraint.hh | 2 +-
gazebo/physics/dart/CMakeLists.txt | 5 +
gazebo/physics/dart/DARTBallJoint.cc | 4 +-
gazebo/physics/dart/DARTBallJoint.hh | 2 +-
gazebo/physics/dart/DARTBoxShape.hh | 4 +-
gazebo/physics/dart/DARTCollision.cc | 17 +-
gazebo/physics/dart/DARTCollision.hh | 2 +-
gazebo/physics/dart/DARTCylinderShape.hh | 2 +-
gazebo/physics/dart/DARTHeightmapShape.cc | 2 +-
gazebo/physics/dart/DARTHeightmapShape.hh | 2 +-
gazebo/physics/dart/DARTHinge2Joint.cc | 50 +-
gazebo/physics/dart/DARTHinge2Joint.hh | 2 +-
gazebo/physics/dart/DARTHingeJoint.cc | 42 +-
gazebo/physics/dart/DARTHingeJoint.hh | 2 +-
gazebo/physics/dart/DARTJoint.cc | 105 +-
gazebo/physics/dart/DARTJoint.hh | 12 +-
gazebo/physics/dart/DARTLink.cc | 355 +++-
gazebo/physics/dart/DARTLink.hh | 7 +-
gazebo/physics/dart/DARTMesh.cc | 146 ++
gazebo/physics/dart/DARTMesh.hh | 71 +
gazebo/physics/dart/DARTMeshShape.cc | 30 +-
gazebo/physics/dart/DARTMeshShape.hh | 64 -
.../physics/dart/DARTMeshShape.hh~upstream_5.0.1 | 54 +
gazebo/physics/dart/DARTModel.cc | 23 +-
gazebo/physics/dart/DARTModel.hh | 2 +-
gazebo/physics/dart/DARTMultiRayShape.cc | 2 +-
gazebo/physics/dart/DARTMultiRayShape.hh | 2 +-
gazebo/physics/dart/DARTPhysics.cc | 69 +-
gazebo/physics/dart/DARTPhysics.hh | 9 +-
gazebo/physics/dart/DARTPlaneShape.hh | 2 +-
gazebo/physics/dart/DARTPolylineShape.cc | 60 +
gazebo/physics/dart/DARTPolylineShape.hh | 50 +
gazebo/physics/dart/DARTRayShape.cc | 2 +-
gazebo/physics/dart/DARTRayShape.hh | 2 +-
gazebo/physics/dart/DARTScrewJoint.cc | 100 +-
gazebo/physics/dart/DARTScrewJoint.hh | 16 +-
gazebo/physics/dart/DARTSliderJoint.cc | 41 +-
gazebo/physics/dart/DARTSliderJoint.hh | 2 +-
gazebo/physics/dart/DARTSphereShape.hh | 8 +-
gazebo/physics/dart/DARTTypes.hh | 2 +-
gazebo/physics/dart/DARTUniversalJoint.cc | 78 +-
gazebo/physics/dart/DARTUniversalJoint.hh | 2 +-
gazebo/physics/dart/dart_inc.h | 13 +-
gazebo/physics/ode/CMakeLists.txt | 7 +-
gazebo/physics/ode/ODEBallJoint.cc | 2 +-
gazebo/physics/ode/ODEBallJoint.hh | 2 +-
gazebo/physics/ode/ODEBoxShape.hh | 2 +-
gazebo/physics/ode/ODECollision.cc | 2 +-
gazebo/physics/ode/ODECollision.hh | 2 +-
gazebo/physics/ode/ODECylinderShape.hh | 2 +-
gazebo/physics/ode/ODEGearboxJoint.cc | 2 +-
gazebo/physics/ode/ODEGearboxJoint.hh | 2 +-
gazebo/physics/ode/ODEHeightmapShape.cc | 2 +-
gazebo/physics/ode/ODEHeightmapShape.hh | 2 +-
gazebo/physics/ode/ODEHinge2Joint.cc | 2 +-
gazebo/physics/ode/ODEHinge2Joint.hh | 2 +-
gazebo/physics/ode/ODEHingeJoint.cc | 8 +-
gazebo/physics/ode/ODEHingeJoint.hh | 2 +-
gazebo/physics/ode/ODEJoint.cc | 590 ++----
gazebo/physics/ode/ODEJoint.hh | 32 +-
gazebo/physics/ode/ODEJoint_TEST.cc | 23 +-
gazebo/physics/ode/ODELink.cc | 62 +-
gazebo/physics/ode/ODELink.hh | 8 +-
gazebo/physics/ode/ODEMesh.cc | 157 ++
gazebo/physics/ode/ODEMesh.hh | 85 +
gazebo/physics/ode/ODEMeshShape.cc | 107 +-
gazebo/physics/ode/ODEMeshShape.cc~upstream_5.0.1 | 72 +
gazebo/physics/ode/ODEMeshShape.hh | 24 +-
gazebo/physics/ode/ODEMultiRayShape.cc | 2 +-
gazebo/physics/ode/ODEMultiRayShape.hh | 2 +-
gazebo/physics/ode/ODEPhysics.cc | 149 +-
gazebo/physics/ode/ODEPhysics.hh | 29 +-
gazebo/physics/ode/ODEPhysics_TEST.cc | 6 +-
gazebo/physics/ode/ODEPlaneShape.hh | 2 +-
gazebo/physics/ode/ODEPolylineShape.cc | 66 +
gazebo/physics/ode/ODEPolylineShape.hh | 53 +
gazebo/physics/ode/ODERayShape.cc | 2 +-
gazebo/physics/ode/ODERayShape.hh | 2 +-
gazebo/physics/ode/ODEScrewJoint.cc | 33 +-
gazebo/physics/ode/ODEScrewJoint.hh | 17 +-
gazebo/physics/ode/ODESliderJoint.cc | 6 +-
gazebo/physics/ode/ODESliderJoint.hh | 2 +-
gazebo/physics/ode/ODESphereShape.hh | 2 +-
gazebo/physics/ode/ODESurfaceParams.cc | 2 +-
gazebo/physics/ode/ODESurfaceParams.hh | 2 +-
gazebo/physics/ode/ODETypes.hh | 2 +-
gazebo/physics/ode/ODEUniversalJoint.cc | 228 +--
gazebo/physics/ode/ODEUniversalJoint.hh | 24 +-
gazebo/physics/ode/ode_inc.h | 2 +-
gazebo/physics/simbody/CMakeLists.txt | 30 +-
gazebo/physics/simbody/SimbodyBallJoint.cc | 2 +-
gazebo/physics/simbody/SimbodyBallJoint.hh | 2 +-
gazebo/physics/simbody/SimbodyBoxShape.hh | 2 +-
gazebo/physics/simbody/SimbodyCollision.cc | 2 +-
gazebo/physics/simbody/SimbodyCollision.hh | 2 +-
gazebo/physics/simbody/SimbodyCylinderShape.hh | 2 +-
gazebo/physics/simbody/SimbodyHeightmapShape.cc | 2 +-
gazebo/physics/simbody/SimbodyHeightmapShape.hh | 2 +-
gazebo/physics/simbody/SimbodyHinge2Joint.cc | 2 +-
gazebo/physics/simbody/SimbodyHinge2Joint.hh | 2 +-
gazebo/physics/simbody/SimbodyHingeJoint.cc | 61 +-
gazebo/physics/simbody/SimbodyHingeJoint.hh | 2 +-
gazebo/physics/simbody/SimbodyJoint.cc | 92 +-
gazebo/physics/simbody/SimbodyJoint.hh | 16 +-
gazebo/physics/simbody/SimbodyLink.cc | 17 +-
gazebo/physics/simbody/SimbodyLink.hh | 2 +-
gazebo/physics/simbody/SimbodyMesh.cc | 61 +
gazebo/physics/simbody/SimbodyMesh.hh | 71 +
gazebo/physics/simbody/SimbodyMeshShape.cc | 20 +-
gazebo/physics/simbody/SimbodyMeshShape.hh | 7 +-
gazebo/physics/simbody/SimbodyModel.cc | 2 +-
gazebo/physics/simbody/SimbodyModel.hh | 2 +-
gazebo/physics/simbody/SimbodyMultiRayShape.cc | 2 +-
gazebo/physics/simbody/SimbodyMultiRayShape.hh | 2 +-
gazebo/physics/simbody/SimbodyPhysics.cc | 46 +-
gazebo/physics/simbody/SimbodyPhysics.hh | 2 +-
gazebo/physics/simbody/SimbodyPlaneShape.cc | 2 +-
gazebo/physics/simbody/SimbodyPlaneShape.hh | 2 +-
gazebo/physics/simbody/SimbodyPolylineShape.cc | 63 +
gazebo/physics/simbody/SimbodyPolylineShape.hh | 50 +
gazebo/physics/simbody/SimbodyRayShape.cc | 2 +-
gazebo/physics/simbody/SimbodyRayShape.hh | 2 +-
gazebo/physics/simbody/SimbodyScrewJoint.cc | 80 +-
gazebo/physics/simbody/SimbodyScrewJoint.hh | 12 +-
gazebo/physics/simbody/SimbodySliderJoint.cc | 60 +-
gazebo/physics/simbody/SimbodySliderJoint.hh | 2 +-
gazebo/physics/simbody/SimbodySphereShape.hh | 2 +-
gazebo/physics/simbody/SimbodyTypes.hh | 2 +-
gazebo/physics/simbody/SimbodyUniversalJoint.cc | 95 +-
gazebo/physics/simbody/SimbodyUniversalJoint.hh | 2 +-
gazebo/physics/simbody/simbody_inc.h | 2 +-
gazebo/rendering/ArrowVisual.cc | 73 +-
gazebo/rendering/ArrowVisual.hh | 15 +-
gazebo/rendering/ArrowVisualPrivate.hh | 2 +-
gazebo/rendering/AxisVisual.cc | 96 +-
gazebo/rendering/AxisVisual.hh | 23 +-
gazebo/rendering/AxisVisualPrivate.hh | 2 +-
gazebo/rendering/CMakeLists.txt | 30 +-
gazebo/rendering/COMVisual.cc | 2 +-
gazebo/rendering/COMVisual.hh | 2 +-
gazebo/rendering/COMVisualPrivate.hh | 2 +-
gazebo/rendering/Camera.cc | 103 +-
gazebo/rendering/Camera.hh | 54 +-
gazebo/rendering/CameraPrivate.hh | 5 +-
gazebo/rendering/CameraVisual.cc | 12 +-
gazebo/rendering/CameraVisual.hh | 7 +-
gazebo/rendering/CameraVisualPrivate.hh | 2 +-
gazebo/rendering/ContactVisual.cc | 2 +-
gazebo/rendering/ContactVisual.hh | 2 +-
gazebo/rendering/ContactVisualPrivate.hh | 2 +-
gazebo/rendering/Conversions.cc | 2 +-
gazebo/rendering/Conversions.hh | 2 +-
gazebo/rendering/DepthCamera.cc | 2 +-
gazebo/rendering/DepthCamera.hh | 2 +-
gazebo/rendering/Distortion.cc | 329 ++++
gazebo/rendering/Distortion.hh | 107 ++
gazebo/rendering/DistortionPrivate.hh | 67 +
gazebo/rendering/DynamicLines.cc | 2 +-
gazebo/rendering/DynamicLines.hh | 2 +-
gazebo/rendering/DynamicRenderable.cc | 2 +-
gazebo/rendering/DynamicRenderable.hh | 2 +-
gazebo/rendering/FPSViewController.cc | 81 +-
gazebo/rendering/FPSViewController.hh | 17 +-
gazebo/rendering/GUIOverlay.cc | 525 ------
gazebo/rendering/GUIOverlay.hh | 199 ---
gazebo/rendering/GpuLaser.cc | 11 +-
gazebo/rendering/GpuLaser.hh | 2 +-
gazebo/rendering/GpuLaser_TEST.cc | 2 +-
gazebo/rendering/Grid.cc | 4 +-
gazebo/rendering/Grid.hh | 2 +-
gazebo/rendering/Heightmap.cc | 2 +-
gazebo/rendering/Heightmap.hh | 2 +-
gazebo/rendering/Heightmap_TEST.cc | 34 +-
gazebo/rendering/JointVisual.cc | 157 +-
gazebo/rendering/JointVisual.hh | 23 +-
gazebo/rendering/JointVisualPrivate.hh | 5 +-
gazebo/rendering/JointVisual_TEST.cc | 95 +
gazebo/rendering/LaserVisual.cc | 2 +-
gazebo/rendering/LaserVisual.hh | 2 +-
gazebo/rendering/LaserVisualPrivate.hh | 2 +-
gazebo/rendering/Light.cc | 140 +-
gazebo/rendering/Light.hh | 18 +-
gazebo/rendering/Material.cc | 5 +-
gazebo/rendering/Material.hh | 2 +-
gazebo/rendering/MovableText.cc | 2 +-
gazebo/rendering/MovableText.hh | 2 +-
gazebo/rendering/OculusCamera.cc | 540 ++++++
gazebo/rendering/OculusCamera.hh | 212 +++
gazebo/rendering/OrbitViewController.cc | 2 +-
gazebo/rendering/OrbitViewController.hh | 2 +-
gazebo/rendering/Projector.cc | 2 +-
gazebo/rendering/Projector.hh | 2 +-
gazebo/rendering/RFIDTagVisual.cc | 2 +-
gazebo/rendering/RFIDTagVisual.hh | 2 +-
gazebo/rendering/RFIDTagVisualPrivate.hh | 2 +-
gazebo/rendering/RFIDVisual.cc | 2 +-
gazebo/rendering/RFIDVisual.hh | 2 +-
gazebo/rendering/RFIDVisualPrivate.hh | 2 +-
gazebo/rendering/RTShaderSystem.cc | 2 +-
gazebo/rendering/RTShaderSystem.hh | 2 +-
gazebo/rendering/RayQuery.cc | 137 ++
gazebo/rendering/RayQuery.hh | 73 +
gazebo/rendering/RayQueryPrivate.hh | 38 +
gazebo/rendering/RenderEngine.cc | 31 +-
gazebo/rendering/RenderEngine.hh | 2 +-
gazebo/rendering/RenderEvents.cc | 2 +-
gazebo/rendering/RenderEvents.hh | 2 +-
gazebo/rendering/RenderTypes.hh | 25 +-
gazebo/rendering/RenderingIface.cc | 2 +-
gazebo/rendering/RenderingIface.hh | 2 +-
gazebo/rendering/Road2d.cc | 28 +-
gazebo/rendering/Road2d.hh | 6 +-
gazebo/rendering/Scene.cc | 1139 ++++++------
gazebo/rendering/Scene.hh | 297 +--
gazebo/rendering/ScenePrivate.hh | 321 ++++
gazebo/rendering/SelectionObj.cc | 49 +-
gazebo/rendering/SelectionObj.hh | 2 +-
gazebo/rendering/SelectionObjPrivate.hh | 2 +-
gazebo/rendering/SonarVisual.cc | 40 +-
gazebo/rendering/SonarVisual.hh | 2 +-
gazebo/rendering/SonarVisualPrivate.hh | 2 +-
gazebo/rendering/SonarVisual_TEST.cc | 54 +
gazebo/rendering/TransmitterVisual.cc | 12 +-
gazebo/rendering/TransmitterVisual.hh | 2 +-
gazebo/rendering/TransmitterVisualPrivate.hh | 2 +-
gazebo/rendering/TransmitterVisual_TEST.cc | 54 +
gazebo/rendering/UserCamera.cc | 169 +-
gazebo/rendering/UserCamera.hh | 43 +-
gazebo/rendering/UserCameraPrivate.hh | 23 +-
gazebo/rendering/VideoVisual.cc | 2 +-
gazebo/rendering/VideoVisual.hh | 2 +-
gazebo/rendering/VideoVisualPrivate.hh | 2 +-
gazebo/rendering/ViewController.cc | 2 +-
gazebo/rendering/ViewController.hh | 2 +-
gazebo/rendering/Visual.cc | 217 ++-
gazebo/rendering/Visual.hh | 11 +-
gazebo/rendering/VisualPrivate.hh | 2 +-
gazebo/rendering/Visual_TEST.cc | 97 +
gazebo/rendering/WindowManager.cc | 2 +-
gazebo/rendering/WindowManager.hh | 2 +-
gazebo/rendering/WireBox.cc | 10 +-
gazebo/rendering/WireBox.hh | 2 +-
gazebo/rendering/WireBoxPrivate.hh | 6 +-
gazebo/rendering/WrenchVisual.cc | 2 +-
gazebo/rendering/WrenchVisual.hh | 2 +-
gazebo/rendering/WrenchVisualPrivate.hh | 2 +-
gazebo/rendering/cegui.h | 31 -
gazebo/rendering/deferred_shading/AmbientLight.hh | 2 +-
gazebo/rendering/deferred_shading/DeferredLight.cc | 2 +-
gazebo/rendering/deferred_shading/DeferredLight.hh | 2 +-
.../rendering/deferred_shading/DeferredLightCP.hh | 2 +-
.../deferred_shading/GBufferMaterialGenerator.cc | 2 +-
.../deferred_shading/GBufferMaterialGenerator.hh | 2 +-
.../deferred_shading/GBufferSchemeHandler.cc | 2 +-
.../deferred_shading/GBufferSchemeHandler.hh | 2 +-
gazebo/rendering/deferred_shading/GeomUtils.cc | 2 +-
gazebo/rendering/deferred_shading/GeomUtils.hh | 2 +-
.../deferred_shading/LightMaterialGenerator.hh | 2 +-
.../deferred_shading/ListenerFactoryLogic.hh | 2 +-
.../deferred_shading/MaterialGenerator.cc | 2 +-
.../deferred_shading/MaterialGenerator.hh | 2 +-
gazebo/rendering/deferred_shading/MergeCP.hh | 2 +-
.../deferred_shading/MergeMaterialGenerator.cc | 2 +-
.../deferred_shading/MergeMaterialGenerator.hh | 2 +-
.../deferred_shading/MergeSchemeHandler.cc | 2 +-
.../deferred_shading/MergeSchemeHandler.hh | 2 +-
.../deferred_shading/NullSchemeHandler.hh | 2 +-
gazebo/rendering/deferred_shading/SSAOLogic.cc | 2 +-
gazebo/rendering/deferred_shading/SSAOLogic.hh | 2 +-
.../deferred_shading/TechniqueDefinitions.hh | 2 +-
gazebo/rendering/ogre_gazebo.h | 2 +-
.../rendering/selection_buffer/MaterialSwitcher.cc | 2 +-
.../rendering/selection_buffer/MaterialSwitcher.hh | 2 +-
.../rendering/selection_buffer/SelectionBuffer.cc | 2 +-
.../rendering/selection_buffer/SelectionBuffer.hh | 2 +-
.../selection_buffer/SelectionRenderListener.cc | 2 +-
.../selection_buffer/SelectionRenderListener.hh | 2 +-
gazebo/rendering/skyx/CMakeLists.txt | 3 -
gazebo/rendering/skyx/include/Prerequisites.h | 6 +-
gazebo/sensors/CameraSensor.cc | 2 +-
gazebo/sensors/CameraSensor.hh | 2 +-
gazebo/sensors/ContactSensor.cc | 2 +-
gazebo/sensors/ContactSensor.hh | 2 +-
gazebo/sensors/DepthCameraSensor.cc | 2 +-
gazebo/sensors/DepthCameraSensor.hh | 2 +-
gazebo/sensors/ForceTorqueSensor.cc | 135 +-
gazebo/sensors/ForceTorqueSensor.hh | 26 +-
gazebo/sensors/ForceTorqueSensor_TEST.cc | 22 +-
gazebo/sensors/GaussianNoiseModel.cc | 2 +-
gazebo/sensors/GaussianNoiseModel.hh | 2 +-
gazebo/sensors/GpsSensor.cc | 2 +-
gazebo/sensors/GpsSensor.hh | 2 +-
gazebo/sensors/GpsSensor_TEST.cc | 2 +-
gazebo/sensors/GpuRaySensor.cc | 2 +-
gazebo/sensors/GpuRaySensor.hh | 2 +-
gazebo/sensors/GpuRaySensor_TEST.cc | 2 +-
gazebo/sensors/ImuSensor.cc | 2 +-
gazebo/sensors/ImuSensor.hh | 2 +-
gazebo/sensors/ImuSensor_TEST.cc | 57 +-
gazebo/sensors/MultiCameraSensor.cc | 2 +-
gazebo/sensors/MultiCameraSensor.hh | 2 +-
gazebo/sensors/Noise.cc | 2 +-
gazebo/sensors/Noise.hh | 2 +-
gazebo/sensors/Noise_TEST.cc | 6 +-
gazebo/sensors/RFIDSensor.cc | 2 +-
gazebo/sensors/RFIDSensor.hh | 2 +-
gazebo/sensors/RFIDTag.cc | 2 +-
gazebo/sensors/RFIDTag.hh | 2 +-
gazebo/sensors/RaySensor.cc | 2 +-
gazebo/sensors/RaySensor.hh | 2 +-
gazebo/sensors/RaySensor_TEST.cc | 2 +-
gazebo/sensors/Sensor.cc | 22 +-
gazebo/sensors/Sensor.hh | 12 +-
gazebo/sensors/SensorFactory.cc | 2 +-
gazebo/sensors/SensorFactory.hh | 2 +-
gazebo/sensors/SensorManager.cc | 18 +-
gazebo/sensors/SensorManager.hh | 8 +-
gazebo/sensors/SensorManager_TEST.cc | 2 +-
gazebo/sensors/SensorTypes.hh | 2 +-
gazebo/sensors/Sensor_TEST.cc | 2 +-
gazebo/sensors/SensorsIface.cc | 21 +-
gazebo/sensors/SensorsIface.hh | 2 +-
gazebo/sensors/SonarSensor.cc | 2 +-
gazebo/sensors/SonarSensor.hh | 2 +-
gazebo/sensors/SonarSensor_TEST.cc | 4 +-
gazebo/sensors/WirelessReceiver.cc | 2 +-
gazebo/sensors/WirelessReceiver.hh | 2 +-
gazebo/sensors/WirelessReceiver_TEST.cc | 2 +-
gazebo/sensors/WirelessTransceiver.cc | 2 +-
gazebo/sensors/WirelessTransceiver.hh | 2 +-
gazebo/sensors/WirelessTransmitter.cc | 2 +-
gazebo/sensors/WirelessTransmitter.hh | 2 +-
gazebo/sensors/WirelessTransmitter_TEST.cc | 2 +-
gazebo/server_main.cc | 5 +-
gazebo/transport/CallbackHelper.cc | 2 +-
gazebo/transport/CallbackHelper.hh | 2 +-
gazebo/transport/Connection.cc | 2 +-
gazebo/transport/Connection.hh | 2 +-
gazebo/transport/ConnectionManager.cc | 2 +-
gazebo/transport/ConnectionManager.hh | 2 +-
gazebo/transport/Connection_TEST.cc | 2 +-
gazebo/transport/IOManager.cc | 2 +-
gazebo/transport/IOManager.hh | 2 +-
gazebo/transport/Node.cc | 10 +-
gazebo/transport/Node.hh | 2 +-
gazebo/transport/Publication.cc | 2 +-
gazebo/transport/Publication.hh | 2 +-
gazebo/transport/PublicationTransport.cc | 2 +-
gazebo/transport/PublicationTransport.hh | 2 +-
gazebo/transport/Publisher.cc | 2 +-
gazebo/transport/Publisher.hh | 2 +-
gazebo/transport/SubscribeOptions.hh | 2 +-
gazebo/transport/Subscriber.cc | 2 +-
gazebo/transport/Subscriber.hh | 2 +-
gazebo/transport/SubscriptionTransport.cc | 2 +-
gazebo/transport/SubscriptionTransport.hh | 2 +-
gazebo/transport/TopicManager.cc | 15 +-
gazebo/transport/TopicManager.hh | 2 +-
gazebo/transport/TransportIface.cc | 18 +-
gazebo/transport/TransportIface.hh | 2 +-
gazebo/transport/TransportTypes.hh | 7 +-
gazebo/util/Diagnostics.cc | 2 +-
gazebo/util/Diagnostics.hh | 2 +-
gazebo/util/Diagnostics_TEST.cc | 2 +-
gazebo/util/LogPlay.cc | 2 +-
gazebo/util/LogPlay.hh | 2 +-
gazebo/util/LogRecord.cc | 2 +-
gazebo/util/LogRecord.hh | 2 +-
gazebo/util/LogRecord_TEST.cc | 2 +-
gazebo/util/OpenAL.cc | 2 +-
gazebo/util/OpenAL.hh | 2 +-
gazebo/util/OpenAL_TEST.cc | 6 +-
gazebo/util/UtilTypes.hh | 2 +-
gazebo/util/system.hh | 2 +-
interfaces/player/ActarrayInterface.cc | 2 +-
interfaces/player/ActarrayInterface.hh | 2 +-
interfaces/player/BumperInterface.cc | 2 +-
interfaces/player/BumperInterface.hh | 2 +-
interfaces/player/CMakeLists.txt | 5 +-
interfaces/player/CameraInterface.cc | 3 +-
interfaces/player/CameraInterface.hh | 2 +-
interfaces/player/FiducialInterface.cc | 2 +-
interfaces/player/FiducialInterface.hh | 2 +-
interfaces/player/GazeboClient.cc | 2 +-
interfaces/player/GazeboClient.hh | 2 +-
interfaces/player/GazeboDriver.cc | 6 +-
interfaces/player/GazeboDriver.hh | 7 +-
interfaces/player/GazeboInterface.cc | 2 +-
interfaces/player/GazeboInterface.hh | 2 +-
interfaces/player/GazeboTime.cc | 2 +-
interfaces/player/GazeboTime.hh | 2 +-
interfaces/player/GpsInterface.cc | 2 +-
interfaces/player/GpsInterface.hh | 2 +-
interfaces/player/Graphics3dInterface.cc | 2 +-
interfaces/player/Graphics3dInterface.hh | 2 +-
interfaces/player/GripperInterface.cc | 2 +-
interfaces/player/GripperInterface.hh | 2 +-
interfaces/player/IRInterface.cc | 2 +-
interfaces/player/IRInterface.hh | 2 +-
interfaces/player/LaserInterface.cc | 31 +-
interfaces/player/LaserInterface.hh | 4 +-
interfaces/player/OpaqueInterface.cc | 2 +-
interfaces/player/OpaqueInterface.hh | 2 +-
interfaces/player/PTZInterface.cc | 2 +-
interfaces/player/PTZInterface.hh | 2 +-
interfaces/player/Position2dInterface.cc | 26 +-
interfaces/player/Position2dInterface.hh | 4 +-
interfaces/player/Position3dInterface.cc | 2 +-
interfaces/player/Position3dInterface.hh | 2 +-
interfaces/player/PowerInterface.cc | 2 +-
interfaces/player/PowerInterface.hh | 2 +-
interfaces/player/SimulationInterface.cc | 2 +-
interfaces/player/SimulationInterface.hh | 2 +-
interfaces/player/SonarInterface.cc | 2 +-
interfaces/player/SonarInterface.hh | 2 +-
interfaces/player/player.h | 2 +-
interfaces/player/player_cfgs/CMakeLists.txt | 11 +-
interfaces/player/player_cfgs/epuck.cfg | 236 ---
interfaces/player/player_cfgs/epuck_single.cfg | 33 -
interfaces/player/player_cfgs/gazebo.cfg | 105 --
interfaces/player/player_cfgs/pioneer2dx.cfg | 17 +-
interfaces/player/player_cfgs/pioneerarm.cfg | 34 -
media/CMakeLists.txt | 7 +-
media/materials/programs/CMakeLists.txt | 8 +-
.../programs/camera_distortion_map_fs.glsl | 20 +
.../programs/camera_distortion_map_vs.glsl | 7 +
media/materials/programs/oculus.cg | 47 +
media/materials/programs/warp.vert | 9 +
media/materials/programs/warpWithChromeAb.frag | 40 +
media/materials/scripts/CMakeLists.txt | 4 +
media/materials/scripts/distortion.compositor | 26 +
media/materials/scripts/gazebo.material | 350 +++-
media/materials/scripts/glsl120.program | 20 +
media/materials/scripts/noise.compositor | 43 +-
media/materials/scripts/oculus.compositor | 43 +
media/materials/scripts/warp.material | 21 +
media/materials/textures/CMakeLists.txt | 9 +
media/materials/textures/bricks.png | Bin 0 -> 2816159 bytes
media/materials/textures/building_frame.png | Bin 0 -> 411 bytes
media/materials/textures/motorway.jpg | Bin 0 -> 955050 bytes
media/materials/textures/primary.jpg | Bin 0 -> 430769 bytes
media/materials/textures/residential.jpg | Bin 0 -> 22256 bytes
media/materials/textures/secondary.jpg | Bin 0 -> 23884 bytes
media/materials/textures/sidewalk.jpg | Bin 0 -> 33596 bytes
media/materials/textures/steps.jpeg | Bin 0 -> 39345 bytes
media/materials/textures/texture_information.txt | 1 +
media/materials/textures/trunk.jpg | Bin 0 -> 47018 bytes
media/models/CMakeLists.txt | 14 +
media/rtshaderlib150/CMakeLists.txt | 16 +
media/rtshaderlib150/FFPLib_Common.glsl | 253 +++
media/rtshaderlib150/FFPLib_Fog.glsl | 151 ++
media/rtshaderlib150/FFPLib_Lighting.glsl | 225 +++
media/rtshaderlib150/FFPLib_Texturing.glsl | 335 ++++
media/rtshaderlib150/FFPLib_Transform.glsl | 70 +
media/rtshaderlib150/SGXLib_IntegratedPSSM.glsl | 144 ++
media/rtshaderlib150/SGXLib_NormalMapLighting.glsl | 288 +++
media/rtshaderlib150/SGXLib_PerPixelLighting.glsl | 227 +++
media/rtshaderlib150/SampleLib_ReflectionMap.glsl | 64 +
media/rtshaderlib150/materials/CMakeLists.txt | 4 +
.../materials/RTShaderSystem.material | 220 +++
models/CMakeLists.txt | 12 +
models/ground_plane/model.config | 16 +
models/ground_plane/model.sdf | 39 +
models/sun/model.config | 16 +
models/sun/model.sdf | 16 +
plugins/ArrangePlugin.cc | 210 +++
plugins/ArrangePlugin.hh | 112 ++
plugins/BreakableJointPlugin.cc | 2 +-
plugins/BreakableJointPlugin.hh | 2 +-
plugins/CMakeLists.txt | 32 +-
plugins/CameraPlugin.cc | 2 +-
plugins/CameraPlugin.hh | 3 +-
plugins/CartDemoPlugin.cc | 2 +-
plugins/CartDemoPlugin.hh | 5 +-
plugins/ContactPlugin.cc | 2 +-
plugins/ContactPlugin.hh | 4 +-
plugins/DepthCameraPlugin.cc | 2 +-
plugins/DepthCameraPlugin.hh | 3 +-
plugins/DiffDrivePlugin.cc | 13 +-
plugins/DiffDrivePlugin.hh | 4 +-
plugins/ForceTorquePlugin.cc | 2 +-
plugins/ForceTorquePlugin.hh | 2 +-
plugins/GpuRayPlugin.cc | 2 +-
plugins/GpuRayPlugin.hh | 3 +-
plugins/HydraDemoPlugin.cc | 82 +
plugins/HydraDemoPlugin.hh | 71 +
plugins/HydraPlugin.cc | 376 ++++
plugins/HydraPlugin.hh | 108 ++
plugins/ImuSensorPlugin.cc | 69 +
plugins/ImuSensorPlugin.hh | 58 +
plugins/InitialVelocityPlugin.cc | 59 +
plugins/InitialVelocityPlugin.hh | 51 +
plugins/JointTrajectoryPlugin.cc | 4 +-
plugins/JointTrajectoryPlugin.hh | 2 +-
plugins/LiftDragPlugin.cc | 2 +-
plugins/LiftDragPlugin.hh | 5 +-
plugins/ModelPropShop.cc | 2 +-
plugins/ModelPropShop.hh | 4 +-
plugins/MudPlugin.cc | 2 +-
plugins/MudPlugin.hh | 5 +-
plugins/PressurePlugin.cc | 2 +-
plugins/PressurePlugin.hh | 4 +-
plugins/RayPlugin.cc | 2 +-
plugins/RayPlugin.hh | 3 +-
plugins/RaySensorNoisePlugin.cc | 2 +-
plugins/RaySensorNoisePlugin.hh | 2 +-
plugins/RubblePlugin.cc | 5 +-
plugins/RubblePlugin.hh | 4 +-
plugins/SkidSteerDrivePlugin.cc | 11 +-
plugins/SkidSteerDrivePlugin.hh | 5 +-
plugins/SonarPlugin.cc | 2 +-
plugins/SonarPlugin.hh | 3 +-
plugins/SphereAtlasDemoPlugin.cc | 2 +-
plugins/SphereAtlasDemoPlugin.hh | 5 +-
plugins/TimerGUIPlugin.cc | 210 +++
plugins/TimerGUIPlugin.hh | 96 +
plugins/VehiclePlugin.cc | 18 +-
plugins/VehiclePlugin.hh | 5 +-
plugins/events/CMakeLists.txt | 30 +
plugins/events/EventSource.cc | 84 +
plugins/events/EventSource.hh | 104 ++
plugins/events/ExistenceEventSource.cc | 65 +
plugins/events/ExistenceEventSource.hh | 56 +
plugins/events/InRegionEventSource.cc | 158 ++
plugins/events/InRegionEventSource.hh | 119 ++
plugins/events/SimEventsException.hh | 31 +
plugins/events/SimEventsPlugin.cc | 153 ++
plugins/events/SimEventsPlugin.hh | 83 +
plugins/events/SimStateEventSource.cc | 58 +
plugins/events/SimStateEventSource.hh | 54 +
test/CMakeLists.txt | 5 +-
test/ServerFixture.cc | 101 +-
test/ServerFixture.hh | 46 +-
test/cmake/CMakeLists.txt | 5 +-
test/cmake/config-cmake.cc | 5 +-
test/cmake/plugin/CMakeLists.txt | 4 +-
.../materials/textures/cordless_drill.png | Bin 0 -> 40661 bytes
test/data/cordless_drill/meshes/cordless_drill.dae | 138 ++
test/data/pr2_state_log_expected.h | 2 +-
test/data/zero_count.dae | 168 ++
test/examples/example_plugins.cc | 15 +-
test/gtest/src/gtest-all.cc | 2 +-
test/gtest/src/gtest-death-test.cc | 2 +-
test/gtest/src/gtest-filepath.cc | 2 +-
test/gtest/src/gtest-port.cc | 2 +-
test/gtest/src/gtest-printers.cc | 2 +-
test/gtest/src/gtest-test-part.cc | 2 +-
test/gtest/src/gtest-typed-test.cc | 2 +-
test/gtest/src/gtest.cc | 2 +-
test/gtest/src/gtest_main.cc | 2 +-
test/integration/CMakeLists.txt | 29 +-
test/integration/SimplePendulumIntegrator.hh | 2 +-
test/integration/aero_plugin.cc | 2 +-
test/integration/bandwidth.cc | 2 +-
test/integration/camera.cc | 22 +-
test/integration/camera_sensor.cc | 112 +-
test/integration/concave_mesh.cc | 2 +-
test/integration/contact_sensor.cc | 24 +-
test/integration/dem.cc | 2 +-
test/integration/factory.cc | 194 --
test/integration/file_handling.cc | 2 +-
test/integration/gpu_laser.cc | 83 +-
test/integration/gripper.cc | 22 +-
test/integration/gz_camera.cc | 8 +-
test/integration/gz_joint.cc | 20 +-
test/integration/gz_log.cc | 6 +-
test/integration/gz_model.cc | 14 +-
test/integration/gz_physics.cc | 18 +-
test/integration/gz_world.cc | 6 +-
test/integration/heightmap.cc | 14 +-
test/integration/heights_cmp.h | 2 +-
test/integration/helper_physics_generator.hh | 4 +-
test/integration/images_cmp.h | 2 +-
test/integration/imu.cc | 318 ----
test/integration/insert_model.cc | 142 ++
test/integration/insert_model.hh | 32 +
test/integration/joint_controller.cc | 4 +-
test/integration/joint_force_torque.cc | 2 +-
test/integration/joint_gearbox.cc | 2 +-
test/integration/joint_revolute.cc | 20 +-
test/integration/joint_screw.cc | 163 +-
test/integration/joint_set_position_test.cc | 593 ++++++
test/integration/joint_spawn.cc | 99 +-
test/integration/joint_test.cc | 96 +-
test/integration/joint_test.hh | 2 +-
test/integration/joint_universal.cc | 86 +-
test/integration/laser.cc | 6 +-
test/integration/manpages.cc | 2 +-
test/integration/model.cc | 62 +
test/integration/model_database.cc | 2 +-
test/integration/multicamera_sensor.cc | 248 ++-
test/integration/noise.cc | 2 +-
test/integration/nondefault_world.cc | 4 +-
test/integration/ogre_log.cc | 2 +-
test/integration/physics.cc | 44 +-
.../physics_basic_controller_response.cc | 151 ++
test/integration/physics_collision.cc | 80 +
test/integration/physics_friction.cc | 2 +-
test/integration/physics_inertia_ratio.cc | 97 +
test/integration/physics_link.cc | 28 +-
test/integration/physics_msgs.cc | 12 +-
test/integration/physics_thread_safe.cc | 2 +-
test/integration/pioneer2dx.cc | 2 +-
test/integration/player/CMakeLists.txt | 8 +-
test/integration/player/player.cc | 2 +-
test/integration/plugin.cc | 136 ++
test/integration/polyline.cc | 113 ++
test/integration/pr2.cc | 6 +-
test/integration/projector.cc | 2 +-
test/integration/rendering_sensor.cc | 2 +-
test/integration/road.cc | 67 +
test/integration/scans_cmp.h | 2 +-
test/integration/sdf.cc | 2 +-
test/integration/sensor.cc | 41 +
test/integration/server_fixture.cc | 2 +-
test/integration/set_joint.cc | 691 -------
test/integration/set_pose.cc | 635 -------
test/integration/set_pose_loop.cc | 835 ---------
test/integration/sim_events.cc | 228 +++
test/integration/speed.cc | 2 +-
test/integration/speed_pr2.cc | 2 +-
test/integration/state_log.cc | 2 +-
test/integration/stress_spawn_models.cc | 4 +-
test/integration/surface_properties.cc | 4 +-
test/integration/transceiver.cc | 18 +-
test/integration/transport.cc | 2 +-
test/integration/transport_stress_nodes.cc | 2 +-
test/integration/world.cc | 181 +-
test/integration/world_clone.cc | 219 +++
test/integration/world_entity_below_point.cc | 2 +-
test/integration/world_population.cc | 195 ++
test/integration/world_reset.cc | 2 +-
test/integration/worlds_installed.cc | 11 +-
test/performance/CMakeLists.txt | 4 +-
test/performance/RAMLibrary.hh | 2 +-
test/performance/RAMLibrary_TEST.cc | 2 +-
test/performance/factory_stress.cc | 2 +-
test/performance/gz_stress.cc | 2 +-
test/performance/image_convert_stress.cc | 70 +
test/performance/sensor_stress.cc | 2 +-
test/performance/set_world_pose.cc | 55 +
test/performance/transport_stress.cc | 2 +-
test/pkgconfig/config-pkgconfig.cc | 15 +-
test/plugins/CMakeLists.txt | 8 +-
test/plugins/ExceptionModelPluginConstructor.cc | 38 +
test/plugins/ExceptionModelPluginConstructor.hh | 39 +
test/plugins/ExceptionModelPluginInit.cc | 42 +
test/plugins/ExceptionModelPluginInit.hh | 42 +
test/plugins/ExceptionModelPluginLoad.cc | 37 +
test/plugins/ExceptionModelPluginLoad.hh | 39 +
test/plugins/ForceTorqueModelRemovalTestPlugin.cc | 2 +-
test/plugins/ForceTorqueModelRemovalTestPlugin.hh | 5 +-
test/plugins/Issue1208Plugin.cc | 17 +
test/plugins/Issue1208Plugin.hh | 45 +
test/plugins/ModelTrajectoryTestPlugin.cc | 2 +-
test/plugins/ModelTrajectoryTestPlugin.hh | 5 +-
test/plugins/SpringTestPlugin.cc | 2 +-
test/plugins/SpringTestPlugin.hh | 5 +-
test/regression/1082_pid_limits.cc | 2 +-
test/regression/1112_force_torque_model_removal.cc | 4 +-
test/regression/1124_collision_pose.cc | 124 ++
test/regression/1146_collision_bounding_box.cc | 10 +-
test/regression/1208_world_plugin_init.cc | 54 +
test/regression/1375_world_reset.cc | 58 +
test/regression/346_save_lights.cc | 93 +
test/regression/494_joint_axis_frame.cc | 93 +-
test/regression/624_collision_world_pose.cc | 2 +-
test/regression/846_typo_in_camera.cc | 2 +-
test/regression/876_random_number_generator.cc | 4 +-
test/regression/940_force_torque_sensor_frame.cc | 171 ++
test/regression/978_joint_anchor.cc | 2 +-
test/regression/CMakeLists.txt | 15 +-
test/testfiles/hello_world.cc | 2 +-
test/util.hh | 17 +-
test/worlds/align.world | 29 +
test/worlds/box_plane_gravity.world | 113 --
test/worlds/camera_rotation_test.world | 2 +-
test/worlds/empty_population.world | 80 +
.../exception_model_plugin_constructor_test.world | 28 +
test/worlds/exception_model_plugin_init_test.world | 28 +
test/worlds/exception_model_plugin_load_test.world | 28 +
test/worlds/force_torque_frame_test.world | 245 +++
test/worlds/force_torque_test2.world | 2 +-
test/worlds/imu_sensor_test.world | 326 ++++
test/worlds/inertia_ratio_pendulum.world | 126 ++
test/worlds/inertia_ratio_reduction_test.world | 336 ++++
test/worlds/inertia_ratio_reduction_test2.world | 308 ++++
test/worlds/issue_1208.world | 6 +
test/worlds/set_joint_position.world | 539 ++++++
test/worlds/sim_events.world | 119 ++
test/worlds/spring_damper_test.world | 102 ++
test/worlds/universal_joint_test.world | 8 +-
tools/CMakeLists.txt | 49 +-
tools/api_checker.bash | 2 +-
tools/bitbucket_pullrequests | 69 +-
tools/check_test_ran.py | 18 +
tools/code_check.sh | 15 +-
tools/cpplint_to_cppcheckxml.py | 4 +-
tools/gz.1.roff | 10 +-
tools/gz.cc | 29 +-
tools/gz.hh | 2 +-
tools/gz_TEST.cc | 59 +-
tools/gz_log.cc | 8 +-
tools/gz_log.hh | 2 +-
tools/gz_log_TEST.cc | 30 +-
tools/gz_roff.py | 2 +-
tools/gz_topic.cc | 2 +-
tools/gz_topic.hh | 2 +-
tools/gzfactory.cc | 239 ---
tools/gzlog.cc | 1084 -----------
tools/gzmodel_create | 27 -
tools/gzprop | 58 +-
tools/gzprop.1.ronn | 2 +-
tools/gzsdf.cc | 203 ---
tools/gzstats.cc | 189 --
tools/gztopic.cc | 568 ------
tools/sdf2pov.cc | 2 +-
tools/website/backup.rb | 2 +-
tools/website/gazebo_install.run | 4 +-
worlds/CMakeLists.txt | 11 +
worlds/actor.world | 159 ++
worlds/arat.world | 184 ++
worlds/deprecated_worlds/actor_circle.world | 6 +-
worlds/deprecated_worlds/actor_demo.world | 3 +-
worlds/deprecated_worlds/two_actors.world | 6 +-
worlds/hydra_demo.world | 44 +
worlds/initial_velocity.world | 60 +
worlds/joint_friction_demo.rworld | 227 +++
worlds/joint_friction_demo.world | 701 ++++++++
worlds/pioneer2dx_camera.world | 38 +
worlds/pioneer2dx_laser.world | 38 +
worlds/pioneer2dx_laser_camera.world | 56 +
worlds/polyline.world | 137 ++
worlds/population.world | 145 ++
worlds/road_textures.world | 164 ++
worlds/timer_gui.world | 22 +
1424 files changed, 51745 insertions(+), 17800 deletions(-)
diff --cc README
index 3839a7c,ed0392c..5a9d400
--- a/README
+++ b/README
@@@ -10,25 -10,32 +10,46 @@@ Installatio
------------
Instructions are located at
- http://gazebosim.org/documentation.html
+ http://gazebosim.org/install
+
+ Gazebo cmake parameters available at configuring time:
+
+ - USE_HOST_CFLAGS (bool) [default True]
+ Check the building machine for supported compiler optimizations and use
+ them to build the software.
+ - USE_UPSTREAM_CFLAGS (bool) [default True]
+ Use the recommend gazebo developers compiler optimizations flags
+ - ENABLE_TESTS_COMPILATION (bool) [default True]
+ Enabled or disable the test suite compilation.
+ - USE_LOW_MEMORY_TEST (bool) [default False]
+ Use reduced version of tests which need less quantity of RAM memory
+ available.
+ - FORCE_GRAPHIC_TESTS_COMPILATION (bool) [default False]
+ Ignore system checks to look for graphic and acceleration support and
+ compile all the test suite.
+ - ENABLE_SCREEN_TESTS (bool) [default True]
+ Enable or disable tests that need screen rendering to run properly.
+ Headless machines or machines with the screen turned off should set this to
+ False
+Gazebo cmake parameters available at configuring time:
+ - USE_LOW_MEMORY_TEST (bool) [default False]
+ Use reduced version of tests which need less quantity of RAM memory
+ available.
+ - FORCE_GRAPHIC_TESTS_COMPILATION (bool) [default False]
+ Ignore system checks to look for graphic and acceleration support and
+ compile all the test suite.
+ - ENABLE_TESTS_COMPILATION (bool) [default True]
+ Enabled or disable the test suite compilation.
+ - ENABLE_SCREEN_TESTS (bool) [default True]
+ Enable or disable tests that need screen rendering to run properly.
+ Headless machines or machines with the screen turned off should set this to
+ False
+
Uninstallation
--------------
- Read the installation instructions (http://gazebosim.org/documentation.html) in the online manual for generic instructions. For most people, the following sequence will suffice:
+ Read the uninstallation instructions (http://gazebosim.org/uninstall)
+ in the online manual for generic instructions. For most people, the following sequence will suffice:
$ make uninstall (inside the gazebo-trunk/build directory)
diff --cc gazebo/Server.cc
index 34cfed6,4c12d7a..2f31ecf
--- a/gazebo/Server.cc
+++ b/gazebo/Server.cc
@@@ -18,9 -18,10 +18,12 @@@
#include <signal.h>
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string.hpp>
+ #include <boost/filesystem.hpp>
+
+ #include <sdf/sdf.hh>
+#include <sdf/sdf.hh>
+
#include "gazebo/gazebo.hh"
#include "gazebo/transport/transport.hh"
diff --cc gazebo/gazebo.cc
index 37d669d,c6269a0..91f5c6c
--- a/gazebo/gazebo.cc
+++ b/gazebo/gazebo.cc
@@@ -88,14 -91,8 +91,14 @@@ void gazebo::printVersion(
}
/////////////////////////////////////////////////
- void gazebo::add_plugin(const std::string &_filename)
+ void gazebo::addPlugin(const std::string &_filename)
{
+ gazebo::addPlugin(_filename);
+}
+
+/////////////////////////////////////////////////
+void gazebo::addPlugin(const std::string &_filename)
+{
if (_filename.empty())
return;
gazebo::SystemPluginPtr plugin =
@@@ -153,109 -229,21 +235,167 @@@ bool gazebo::shutdown(
util::LogRecord::Instance()->Fini();
g_plugins.clear();
gazebo::transport::fini();
+
+ gazebo::physics::fini();
+
+ gazebo::sensors::fini();
+
+ delete g_master;
+ g_master = NULL;
+
+ // Cleanup model database.
+ common::ModelDatabase::Instance()->Fini();
+
+ return true;
+ }
+
+ /////////////////////////////////////////////////
++gazebo::physics::WorldPtr gazebo::loadWorld(const std::string &_worldFile)
++{
++ gazebo::physics::WorldPtr world;
++
++ // Load the world file
++ sdf::SDFPtr sdf(new sdf::SDF);
++ if (!sdf::init(sdf))
++ {
++ gzerr << "Unable to initialize sdf\n";
++ return world;
++ }
++
++ // Find the file.
++ std::string fullFile = gazebo::common::find_file(_worldFile);
++
++ if (fullFile.empty())
++ {
++ gzerr << "Unable to find file[" << _worldFile << "]\n";
++ return world;
++ }
++
++ if (!sdf::readFile(fullFile, sdf))
++ {
++ gzerr << "Unable to read sdf file[" << "empty.world" << "]\n";
++ return world;
++ }
++
++ world = gazebo::physics::create_world();
++ gazebo::physics::load_world(world, sdf->root->GetElement("world"));
++
++ gazebo::physics::init_world(world);
++
++ return world;
++}
++
++/////////////////////////////////////////////////
++void gazebo::runWorld(gazebo::physics::WorldPtr _world,
++ unsigned int _iterations)
++{
++ if (!_world)
++ gzerr << "World pointer is NULL\n";
++ else
++ _world->RunBlocking(_iterations);
+}
+
+/////////////////////////////////////////////////
+bool gazebo::setupServer(int _argc, char **_argv)
+{
+ std::string host = "";
+ unsigned int port = 0;
+
+ gazebo::transport::get_master_uri(host, port);
+
+ g_master = new gazebo::Master();
+ g_master->Init(port);
+ g_master->RunThread();
+
+ if (!setup(_argc, _argv))
+ {
+ gzerr << "Unable to setup Gazebo\n";
+ return false;
+ }
+
+ if (!sensors::load())
+ {
+ gzerr << "Unable to load sensors\n";
+ return false;
+ }
+
+ if (!gazebo::physics::load())
+ {
+ gzerr << "Unable to initialize physics.\n";
+ return false;
+ }
+
+ if (!sensors::init())
+ {
+ gzerr << "Unable to initialize sensors\n";
+ return false;
+ }
+
+ return true;
+}
+
+/////////////////////////////////////////////////
+bool gazebo::setupClient(int _argc, char **_argv)
+{
+ if (!setup(_argc, _argv))
+ {
+ gzerr << "Unable to setup Gazebo\n";
+ return false;
+ }
+
+ common::Time waitTime(1, 0);
+ int waitCount = 0;
+ int maxWaitCount = 10;
+
+ // Wait for namespaces.
+ while (!gazebo::transport::waitForNamespaces(waitTime) &&
+ (waitCount++) < maxWaitCount)
+ {
+ gzwarn << "Waited " << waitTime.Double() << "seconds for namespaces.\n";
+ }
+
+ if (waitCount >= maxWaitCount)
+ {
+ gzerr << "Waited " << (waitTime * waitCount).Double()
+ << " seconds for namespaces. Giving up.\n";
+ }
+
+ return true;
+}
+
+/////////////////////////////////////////////////
+bool gazebo::shutdown()
+{
+ gazebo::physics::stop_worlds();
+
+ gazebo::sensors::stop();
+
+ // Stop log recording
+ util::LogRecord::Instance()->Stop();
+
+ // Stop transport
+ gazebo::transport::stop();
+
+ // Make sure to shut everything down.
+ boost::mutex::scoped_lock lock(fini_mutex);
+ util::LogRecord::Instance()->Fini();
+ g_plugins.clear();
+ gazebo::transport::fini();
+
+ gazebo::physics::fini();
+
+ gazebo::sensors::fini();
+
+ delete g_master;
+ g_master = NULL;
+
+ // Cleanup model database.
+ common::ModelDatabase::Instance()->Fini();
+
+ return true;
+}
+
+/////////////////////////////////////////////////
gazebo::physics::WorldPtr gazebo::loadWorld(const std::string &_worldFile)
{
gazebo::physics::WorldPtr world;
diff --cc gazebo/gui/ModelListWidget.cc
index b194b37,c10c6bb..bd043a2
--- a/gazebo/gui/ModelListWidget.cc
+++ b/gazebo/gui/ModelListWidget.cc
@@@ -1564,15 -1558,12 +1558,16 @@@ void ModelListWidget::FillPropertyTree(
// Inertial
inertialItem = this->variantManager->addProperty(
QtVariantPropertyManager::groupTypeId(), tr("inertial"));
- if (_parent)
- _parent->addSubProperty(inertialItem);
- else
- this->propTreeBrowser->addProperty(inertialItem);
+ this->AddProperty(inertialItem, _parent);
+
+ // TODO: disable setting inertial properties until there are tests
+ // in place to verify the functionality
+ inertialItem->setEnabled(false);
+ // TODO: disable setting inertial properties until there are tests
+ // in place to verify the functionality
+ inertialItem->setEnabled(false);
+
// Inertial::Mass
item = this->variantManager->addProperty(QVariant::Double, tr("mass"));
if (_msg.inertial().has_mass())
diff --cc gazebo/gui/building/BuildingEditorEvents.hh
index eb058dc,0ba2977..0000000
deleted file mode 100644,100644
--- a/gazebo/gui/building/BuildingEditorEvents.hh
+++ /dev/null
@@@ -1,254 -1,394 +1,0 @@@
--/*
- * Copyright 2013 Open Source Robotics Foundation
- * Copyright (C) 2015 Open Source Robotics Foundation
-- *
-- * Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- *
-- * http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- *
--*/
--#ifndef _BUILDING_EDITOR_EVENTS_HH_
--#define _BUILDING_EDITOR_EVENTS_HH_
--
--#include <string>
-#include "gazebo/gui/qt.h"
--#include "gazebo/common/Event.hh"
--#include "gazebo/util/system.hh"
--
--namespace gazebo
--{
-- namespace gui
-- {
-- namespace editor
-- {
-- class GAZEBO_VISIBLE Events
-- {
- /// \brief Connect a boost::slot to the create editor item signal
- /// \brief Connect a Gazebo event to the toggle edit mode signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr
- ConnectToggleEditMode(T _subscriber)
- { return toggleEditMode.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the toggle edit mode signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectToggleEditMode(
- event::ConnectionPtr _subscriber)
- { toggleEditMode.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the create editor item signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
-- ConnectCreateBuildingEditorItem(T _subscriber)
-- { return createBuildingEditorItem.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the create editor item signal
- /// \brief Disconnect a Gazebo event from the create editor item signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectCreateBuildingEditorItem(
-- event::ConnectionPtr _subscriber)
-- { createBuildingEditorItem.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the save model signal
- /// \brief Connect a Gazebo event to the color selected signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr
- ConnectColorSelected(T _subscriber)
- { return colorSelected.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the color selected signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectColorSelected(
- event::ConnectionPtr _subscriber)
- { colorSelected.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the texture selected signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr
- ConnectTextureSelected(T _subscriber)
- { return textureSelected.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the texture selected signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectTextureSelected(
- event::ConnectionPtr _subscriber)
- { textureSelected.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the save model signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr ConnectSaveBuildingModel(T _subscriber)
-- { return saveBuildingModel.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the save model signal
- /// \brief Disconnect a Gazebo event from the save model signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectSaveBuildingModel(
-- event::ConnectionPtr _subscriber)
-- { saveBuildingModel.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the finish model signal
- /// \brief Connect a Gazebo event to the finish model signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
-- ConnectFinishBuildingModel(T _subscriber)
-- { return finishBuildingModel.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the finish model signal
- /// \brief Disconnect a Gazebo event from the finish model signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectFinishBuildingModel(
-- event::ConnectionPtr _subscriber)
-- { finishBuildingModel.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the discard model signal
- /// \brief Connect a Gazebo event to the new model signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
- ConnectDiscardBuildingModel(T _subscriber)
- { return discardBuildingModel.Connect(_subscriber); }
- ConnectNewBuildingModel(T _subscriber)
- { return newBuildingModel.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the discard model signal
- /// \brief Disconnect a Gazebo event from the new model signal
-- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectDiscardBuildingModel(
- public: static void DisconnectNewBuildingModel(
-- event::ConnectionPtr _subscriber)
- { discardBuildingModel.Disconnect(_subscriber); }
- { newBuildingModel.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the change model signal
- /// \brief Connect a Gazebo event to the change model signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
-- ConnectChangeBuildingLevel(T _subscriber)
-- { return changeBuildingLevel.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the change level signal
- /// \brief Disconnect a Gazebo event from the change level signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectChangeBuildingLevel(
-- event::ConnectionPtr _subscriber)
-- { changeBuildingLevel.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the add level signal
- /// \brief Connect a Gazebo event to the add level signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr ConnectAddBuildingLevel(T _subscriber)
-- { return addBuildingLevel.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the add level signal
- /// \brief Disconnect a Gazebo event from the add level signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectAddBuildingLevel(
-- event::ConnectionPtr _subscriber)
-- { addBuildingLevel.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the delete level signal
- /// \brief Connect a Gazebo event to the delete level signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
-- ConnectDeleteBuildingLevel(T _subscriber)
-- { return deleteBuildingLevel.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the delete level signal
- /// \brief Disconnect a Gazebo event from the delete level signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectDeleteBuildingLevel(
-- event::ConnectionPtr _subscriber)
-- { deleteBuildingLevel.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the change level name signal
- /// \brief Connect a Gazebo event to the show floorplan signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr ConnectShowFloorplan(T _subscriber)
- { return showFloorplan.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the show floorplan signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectShowFloorplan(
- event::ConnectionPtr _subscriber)
- { showFloorplan.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the trigger show floorplan
- /// signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
- ConnectChangeBuildingLevelName(T _subscriber)
- { return changeBuildingLevelName.Connect(_subscriber); }
- ConnectTriggerShowFloorplan(T _subscriber)
- { return triggerShowFloorplan.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the change level name signal
- /// \brief Disconnect a Gazebo event from the trigger show floorplan
- /// signal
-- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectChangeBuildingLevelName(
- public: static void DisconnectTriggerShowFloorplan(
-- event::ConnectionPtr _subscriber)
- { changeBuildingLevelName.Disconnect(_subscriber); }
- { triggerShowFloorplan.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the change zoom signal
- /// \brief Connect a Gazebo event to the show elements signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr ConnectShowElements(T _subscriber)
- { return showElements.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the show elements signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectShowElements(
- event::ConnectionPtr _subscriber)
- { showElements.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the trigger show elements
- /// signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr
- ConnectTriggerShowElements(T _subscriber)
- { return triggerShowElements.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the trigger show elements
- /// signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectTriggerShowElements(
- event::ConnectionPtr _subscriber)
- { triggerShowElements.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the update level widget signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr
- ConnectUpdateLevelWidget(T _subscriber)
- { return updateLevelWidget.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the update level widget signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectUpdateLevelWidget(
- event::ConnectionPtr _subscriber)
- { updateLevelWidget.Disconnect(_subscriber); }
-
- /// \brief Connect a Gazebo event to the change zoom signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
-- ConnectChangeBuildingEditorZoom(T _subscriber)
-- { return changeBuildingEditorZoom.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the change zoom level signal
- /// \brief Disconnect a Gazebo event from the change zoom level signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectChangeBuildingEditorZoom(
-- event::ConnectionPtr _subscriber)
-- { changeBuildingEditorZoom.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the save signal
- /// \brief Connect a Gazebo event to the save signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr ConnectSaveBuildingEditor(T _subscriber)
-- { return saveBuildingEditor.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the save signal
- /// \brief Connect a Gazebo event to the save signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr ConnectSaveAsBuildingEditor
- (T _subscriber)
- { return saveAsBuildingEditor.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the save signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectSaveBuildingEditor(
-- event::ConnectionPtr _subscriber)
-- { saveBuildingEditor.Disconnect(_subscriber); }
-
- /// \brief Connect a boost::slot to the done signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr ConnectDoneBuildingEditor(T _subscriber)
- { return doneBuildingEditor.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the done signal
- /// \brief Disconnect a Gazebo event from the save as signal
-- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectDoneBuildingEditor(
- event::ConnectionPtr _subscriber)
- { doneBuildingEditor.Disconnect(_subscriber); }
- public: static void DisconnectSaveAsBuildingEditor(
- event::ConnectionPtr _subscriber)
- { saveAsBuildingEditor.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the discard signal
- /// \brief Connect a Gazebo event to the new signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr
- ConnectDiscardBuildingEditor(T _subscriber)
- { return discardBuildingEditor.Connect(_subscriber); }
- ConnectNewBuildingEditor(T _subscriber)
- { return newBuildingEditor.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the discard signal
- /// \brief Disconnect a Gazebo event from the new signal
-- /// \param[in] _subscriber the subscriber to this event
- public: static void DisconnectDiscardBuildingEditor(
- public: static void DisconnectNewBuildingEditor(
-- event::ConnectionPtr _subscriber)
- { discardBuildingEditor.Disconnect(_subscriber); }
- { newBuildingEditor.Disconnect(_subscriber); }
--
- /// \brief Connect a boost::slot to the exit signal
- /// \brief Connect a Gazebo event to the exit signal
-- /// \param[in] _subscriber the subscriber to this event
-- /// \return a connection
-- public: template<typename T>
-- static event::ConnectionPtr ConnectExitBuildingEditor(T _subscriber)
-- { return exitBuildingEditor.Connect(_subscriber); }
--
- /// \brief Disconnect a boost::slot to the exit signal
- /// \brief Disconnect a Gazebo event from the exit signal
-- /// \param[in] _subscriber the subscriber to this event
-- public: static void DisconnectExitBuildingEditor(
-- event::ConnectionPtr _subscriber)
-- { exitBuildingEditor.Disconnect(_subscriber); }
-
- /// \brief Toggle if the edit mode was checked or not.
- public: static event::EventT<void (bool)> toggleEditMode;
-
- /// \brief Connect a Gazebo event to the name changed signal
- /// \param[in] _subscriber the subscriber to this event
- /// \return a connection
- public: template<typename T>
- static event::ConnectionPtr ConnectBuildingNameChanged
- (T _subscriber)
- { return buildingNameChanged.Connect(_subscriber); }
-
- /// \brief Disconnect a Gazebo event from the exit signal
- /// \param[in] _subscriber the subscriber to this event
- public: static void ConnectBuildingNameChanged(
- event::ConnectionPtr _subscriber)
- { buildingNameChanged.Disconnect(_subscriber); }
--
-- /// \brief An editor item is to be created
-- public: static event::EventT<void (std::string)>
-- createBuildingEditorItem;
-
- /// \brief A color has been selected.
- public: static event::EventT<void (QColor)> colorSelected;
-
- /// \brief A texture has been selected.
- public: static event::EventT<void (QString)> textureSelected;
--
-- /// \brief A model has been saved with a name and a location
-- public: static event::EventT<void (std::string, std::string)>
-- saveBuildingModel;
--
-- /// \brief A model has been completed and uploaded onto the server.
-- public: static event::EventT<void ()> finishBuildingModel;
--
- /// \brief A model has been discarded
- public: static event::EventT<void ()> discardBuildingModel;
- /// \brief A new model has been started
- public: static event::EventT<void ()> newBuildingModel;
--
-- /// \brief The current level has been changed
-- public: static event::EventT<void (int)> changeBuildingLevel;
--
-- /// \brief A new level has been added
-- public: static event::EventT<void ()> addBuildingLevel;
--
- /// \brief A new level has been deleted
- public: static event::EventT<void (int)> deleteBuildingLevel;
- /// \brief A level has been deleted
- public: static event::EventT<void ()> deleteBuildingLevel;
--
- /// \brief The current level name has been changed
- /// \brief Show or hide floorplan
- public: static event::EventT<void ()> showFloorplan;
-
- /// \brief Trigger show floorplan
- public: static event::EventT<void ()> triggerShowFloorplan;
-
- /// \brief Show or hide building elements
- public: static event::EventT<void ()> showElements;
-
- /// \brief Trigger show elements
- public: static event::EventT<void ()> triggerShowElements;
-
- /// \brief The levels have been changed
-- public: static event::EventT<void (int, std::string)>
- changeBuildingLevelName;
- updateLevelWidget;
--
-- /// \brief The current zoom level has been changed
-- public: static event::EventT<void (double)> changeBuildingEditorZoom;
--
-- /// \brief Save the model
- public: static event::EventT<void ()> saveBuildingEditor;
- public: static event::EventT<bool (std::string)> saveBuildingEditor;
--
- /// \brief Discard the model
- public: static event::EventT<void ()> discardBuildingEditor;
- /// \brief Save the model as
- public: static event::EventT<bool (std::string)> saveAsBuildingEditor;
--
- /// \brief Finish creating the model, save, and exit
- public: static event::EventT<void ()> doneBuildingEditor;
- /// \brief Make a new model
- public: static event::EventT<void ()> newBuildingEditor;
--
-- /// \brief Exit the editor mode with the option to save
-- public: static event::EventT<void ()> exitBuildingEditor;
-
- /// \brief Name was changed in the editor palette
- public: static event::EventT<void (std::string)> buildingNameChanged;
-- };
-- }
-- }
--}
--#endif
diff --cc gazebo/gui/building/BuildingEditorPalette.cc
index 1a79160,9143cb8..34f9a30
--- a/gazebo/gui/building/BuildingEditorPalette.cc
+++ b/gazebo/gui/building/BuildingEditorPalette.cc
@@@ -197,23 -329,71 +329,85 @@@ void BuildingEditorPalette::OnCreateEdi
}
/////////////////////////////////////////////////
- void BuildingEditorPalette::OnSaveModel(const std::string &_saveName,
- const std::string &/*_saveLocation*/)
+ void BuildingEditorPalette::OnBrush(int _buttonId)
+ {
+ if (_buttonId < static_cast<int>(this->dataPtr->colorList.size()))
+ {
+ this->OnColor(_buttonId);
+ }
+ else if (_buttonId < static_cast<int>(this->dataPtr->colorList.size()) +
+ static_cast<int>(this->dataPtr->textureList.size()))
+ {
+ this->OnTexture(_buttonId -
+ static_cast<int>(this->dataPtr->colorList.size()));
+ }
+ else
+ {
+ gzwarn << "Brushes other than color and texture are handled elsewhere."
+ << std::endl;
+ }
+ }
+
+ /////////////////////////////////////////////////
+ void BuildingEditorPalette::OnColor(int _buttonId)
+ {
+ std::ostringstream colorStr;
+ colorStr << "color_" << _buttonId;
+ QColor color = this->dataPtr->colorList[_buttonId];
+ if (this->dataPtr->currentMode != colorStr.str())
+ {
+ gui::editor::Events::colorSelected(color);
+ this->dataPtr->currentMode = colorStr.str();
+
+ QPixmap colorCursor(30, 30);
+ colorCursor.fill(color);
+ QApplication::setOverrideCursor(QCursor(colorCursor));
+ }
+ else
+ {
+ gui::editor::Events::createBuildingEditorItem(std::string());
+ }
+ }
+
+ /////////////////////////////////////////////////
+ void BuildingEditorPalette::OnTexture(int _buttonId)
+ {
+ std::ostringstream textureStr;
+ textureStr << "texture_" << _buttonId;
+ QString texture = this->dataPtr->textureList[_buttonId];
+ if (this->dataPtr->currentMode != textureStr.str())
+ {
+ gui::editor::Events::textureSelected(texture);
+ this->dataPtr->currentMode = textureStr.str();
+
+ QPixmap textureCursor(this->dataPtr->textureList[_buttonId]);
+ textureCursor = textureCursor.scaled(QSize(30, 30), Qt::IgnoreAspectRatio,
+ Qt::SmoothTransformation);
+ QApplication::setOverrideCursor(textureCursor);
+ }
+ else
+ {
+ gui::editor::Events::createBuildingEditorItem(std::string());
+ }
+ }
+
+ /////////////////////////////////////////////////
+ void BuildingEditorPalette::mousePressEvent(QMouseEvent * /*_event*/)
{
- this->saveButton->setText("Save");
- this->modelNameLabel->setText(tr(_saveName.c_str()));
+ // Cancel draw mode
+ gui::editor::Events::createBuildingEditorItem(std::string());
}
+
+/////////////////////////////////////////////////
+void BuildingEditorPalette::OnCreateEditorItem(const std::string &_type)
+{
+ if (_type.empty())
+ {
+ // Uncheck all the buttons
+ for (std::list<QPushButton *>::iterator iter = this->brushes.begin();
+ iter != this->brushes.end(); ++iter)
+ {
+ (*iter)->setChecked(false);
+ }
+ }
+}
diff --cc gazebo/physics/Actor.cc
index 138e6da,fa68b07..2a3fe01
--- a/gazebo/physics/Actor.cc
+++ b/gazebo/physics/Actor.cc
@@@ -109,16 -109,14 +109,16 @@@ void Actor::Load(sdf::ElementPtr _sdf
// this->AddSphereInertia(linkSdf, math::Pose(), 1.0, 0.01);
// this->AddSphereCollision(linkSdf, actorName + "_pose_col",
// math::Pose(), 0.02);
- this->AddBoxVisual(linkSdf, actorName + "_pose_vis", math::Pose(),
- math::Vector3(0.05, 0.05, 0.05), "Gazebo/White",
- Color::White);
+ // this->AddBoxVisual(linkSdf, actorName + "_pose_vis", math::Pose(),
+ // math::Vector3(0.05, 0.05, 0.05), "Gazebo/White",
+ // Color::White);
this->AddActorVisual(linkSdf, actorName + "_visual", math::Pose());
-
- this->visualName = actorName + "::" + actorName + "_pose::"
+ std::string actorLinkName = actorName + "::" + actorName + "_pose";
+ this->visualName = actorLinkName + "::"
+ actorName + "_visual";
+ this->visualId = gazebo::physics::getUniqueId();
+
for (NodeMapIter iter = nodes.begin(); iter != nodes.end(); ++iter)
{
SkeletonNode* bone = iter->second;
diff --cc gazebo/physics/Base.cc
index 44cb453,736bd82..10ed015
--- a/gazebo/physics/Base.cc
+++ b/gazebo/physics/Base.cc
@@@ -298,14 -292,17 +292,23 @@@ BasePtr Base::GetByName(const std::stri
}
//////////////////////////////////////////////////
- std::string Base::GetScopedName() const
+ std::string Base::GetScopedName(bool _prependWorldName) const
+ {
+ if (_prependWorldName)
+ return this->world->GetName() + "::" + this->scopedName;
+ else
+ return this->scopedName;
+ }
+
+ //////////////////////////////////////////////////
+ void Base::ComputeScopedName()
{
+ return this->scopedName;
+}
+
+//////////////////////////////////////////////////
+void Base::ComputeScopedName()
+{
BasePtr p = this->parent;
this->scopedName = this->GetName();
diff --cc gazebo/physics/Joint.cc
index 54723e3,7fe37b3..7439c9e
--- a/gazebo/physics/Joint.cc
+++ b/gazebo/physics/Joint.cc
@@@ -958,3 -1246,127 +1246,129 @@@ double Joint::GetWorldEnergyPotentialSp
this->springReferencePosition[_index];
return 0.5 * k * x * x;
}
+
+ //////////////////////////////////////////////////
+ void Joint::CacheForceTorque()
+ {
+ }
+
+ //////////////////////////////////////////////////
+ bool Joint::FindAllConnectedLinks(const LinkPtr &_originalParentLink,
+ Link_V &_connectedLinks)
+ {
+ // debug
+ // std::string pn;
+ // if (_originalParentLink) pn = _originalParentLink->GetName();
+ // gzerr << "first call to find connected links: "
+ // << " parent " << pn
+ // << " this joint " << this->GetName() << "\n";
+
+ // unlikely, but check anyways to make sure we don't have a 0-height tree
+ if (this->childLink.get() == _originalParentLink.get())
+ {
+ // if parent is a child
+ gzerr << "we have a zero length loop.\n";
+ _connectedLinks.clear();
+ return false;
+ }
- else
++
++ // Legacy support for specifying axis in parent model frame (#494)
++ if (this->axisParentModelFrame[_index])
+ {
+ // add this->childLink to the list of descendent child links (should be
+ // the very first one added).
+ _connectedLinks.push_back(this->childLink);
+
+ // START RECURSIVE SEARCH, start adding child links of this->childLink
+ // to the collection of _connectedLinks.
+ return this->childLink->FindAllConnectedLinksHelper(_originalParentLink,
+ _connectedLinks, true);
+ }
+ }
+
+ //////////////////////////////////////////////////
+ math::Pose Joint::ComputeChildLinkPose(unsigned int _index,
+ double _position)
+ {
+ // child link pose
+ math::Pose childLinkPose = this->childLink->GetWorldPose();
+
+ // default return to current pose
+ math::Pose newRelativePose;
+ math::Pose newWorldPose = childLinkPose;
+
+ // get anchor and axis of the joint
+ math::Vector3 anchor;
+ math::Vector3 axis;
+
+ if (this->model->IsStatic())
+ {
+ /// \TODO: we want to get axis in global frame, but GetGlobalAxis
+ /// not implemented for static models yet.
+ axis = childLinkPose.rot.RotateVector(this->GetLocalAxis(_index));
+ anchor = childLinkPose.pos;
+ }
+ else
+ {
+ anchor = this->GetAnchor(_index);
+ axis = this->GetGlobalAxis(_index);
+ }
+
+ // delta-position along an axis
+ double dposition = _position - this->GetAngle(_index).Radian();
+
+ if (this->HasType(Base::HINGE_JOINT) ||
+ this->HasType(Base::UNIVERSAL_JOINT))
+ {
+ // relative to anchor point
+ math::Pose relativePose(childLinkPose.pos - anchor,
+ childLinkPose.rot);
+
+ // take axis rotation and turn it into a quaternion
+ math::Quaternion rotation(axis, dposition);
+
+ // rotate relative pose by rotation
+
+ newRelativePose.pos = rotation.RotateVector(relativePose.pos);
+ newRelativePose.rot = rotation * relativePose.rot;
+
+ newWorldPose =
+ math::Pose(newRelativePose.pos + anchor, newRelativePose.rot);
+
+ // \TODO: ideally we want to set this according to
+ // Joint Trajectory velocity and use time step since last update.
+ /*
+ double dt =
+ this->dataPtr->model->GetWorld()->GetPhysicsEngine()->GetMaxStepTime();
+ this->ComputeAndSetLinkTwist(_link, newWorldPose, newWorldPose, dt);
+ */
+ }
+ else if (this->HasType(Base::SLIDER_JOINT))
+ {
+ // relative to anchor point
+ math::Pose relativePose(childLinkPose.pos - anchor,
+ childLinkPose.rot);
+
+ // slide relative pose by dposition along axis
+ newRelativePose.pos = relativePose.pos + axis * dposition;
+ newRelativePose.rot = relativePose.rot;
+
+ newWorldPose =
+ math::Pose(newRelativePose.pos + anchor, newRelativePose.rot);
+
+ /// \TODO: ideally we want to set this according to Joint Trajectory
+ /// velocity and use time step since last update.
+ /*
+ double dt =
+ this->dataPtr->model->GetWorld()->GetPhysicsEngine()->GetMaxStepTime();
+ this->ComputeAndSetLinkTwist(_link, newWorldPose, newWorldPose, dt);
+ */
+ }
+ else
+ {
+ gzerr << "Setting joint position is only supported for"
+ << " hinge, universal and slider joints right now.\n";
+ }
+
+ return newWorldPose;
+ }
diff --cc gazebo/physics/JointController.cc
index 48f6e3a,d676509..f9b6851
--- a/gazebo/physics/JointController.cc
+++ b/gazebo/physics/JointController.cc
@@@ -300,32 -298,29 +298,32 @@@ void JointController::SetJointPosition(
//////////////////////////////////////////////////
void JointController::SetJointPositions(
- const std::map<std::string, double> & /*_jointPositions*/)
+ const std::map<std::string, double> & _jointPositions)
{
+ gzwarn << "Setting joint positions is disabled, see issue #1138\n";
+ return;
+
// go through all joints in this model and update each one
// for each joint update, recursively update all children
- // std::map<std::string, JointPtr>::iterator iter;
- // std::map<std::string, double>::const_iterator jiter;
-
- // for (iter = this->dataPtr->joints.begin();
- // iter != this->dataPtr->joints.end(); ++iter)
- // {
- // // First try name without scope, i.e. joint_name
- // jiter = _jointPositions.find(iter->second->GetName());
-
- // if (jiter == _jointPositions.end())
- // {
- // // Second try name with scope, i.e. model_name::joint_name
- // jiter = _jointPositions.find(iter->second->GetScopedName());
- // if (jiter == _jointPositions.end())
- // continue;
- // }
-
- // this->SetJointPosition(iter->second, jiter->second);
- // }
+ std::map<std::string, JointPtr>::iterator iter;
+ std::map<std::string, double>::const_iterator jiter;
+
+ for (iter = this->dataPtr->joints.begin();
+ iter != this->dataPtr->joints.end(); ++iter)
+ {
+ // First try name without scope, i.e. joint_name
+ jiter = _jointPositions.find(iter->second->GetName());
+
+ if (jiter == _jointPositions.end())
+ {
+ // Second try name with scope, i.e. model_name::joint_name
+ jiter = _jointPositions.find(iter->second->GetScopedName());
+ if (jiter == _jointPositions.end())
+ continue;
+ }
+
+ this->SetJointPosition(iter->second, jiter->second);
+ }
}
//////////////////////////////////////////////////
diff --cc gazebo/physics/World.cc
index 3cf6c79,fd32e05..feca0ec
--- a/gazebo/physics/World.cc
+++ b/gazebo/physics/World.cc
@@@ -585,14 -630,8 +630,14 @@@ void World::Step(
}
//////////////////////////////////////////////////
- void World::StepWorld(int _steps)
+ void World::Step(unsigned int _steps)
{
+ this->Step(_steps);
+}
+
+//////////////////////////////////////////////////
+void World::Step(unsigned int _steps)
+{
if (!this->IsPaused())
{
gzwarn << "Calling World::Step(steps) while world is not paused\n";
@@@ -770,16 -822,10 +828,16 @@@ common::SphericalCoordinatesPtr World::
}
//////////////////////////////////////////////////
+common::SphericalCoordinatesPtr World::GetSphericalCoordinates() const
+{
+ return this->sphericalCoordinates;
+}
+
+//////////////////////////////////////////////////
BasePtr World::GetByName(const std::string &_name)
{
- if (this->rootElement)
- return this->rootElement->GetByName(_name);
+ if (this->dataPtr->rootElement)
+ return this->dataPtr->rootElement->GetByName(_name);
else
return BasePtr();
}
@@@ -959,61 -1006,26 +1018,29 @@@ void World::Reset(
this->SetPaused(true);
{
- boost::recursive_mutex::scoped_lock(*this->worldUpdateMutex);
+ boost::recursive_mutex::scoped_lock(*this->dataPtr->worldUpdateMutex);
+
+ math::Rand::SetSeed(math::Rand::GetSeed());
+ this->dataPtr->physicsEngine->SetSeed(math::Rand::GetSeed());
+ math::Rand::SetSeed(math::Rand::GetSeed());
+ this->physicsEngine->SetSeed(math::Rand::GetSeed());
+
this->ResetTime();
this->ResetEntities(Base::BASE);
- for (std::vector<WorldPluginPtr>::iterator iter = this->plugins.begin();
- iter != this->plugins.end(); ++iter)
+ for (std::vector<WorldPluginPtr>::iterator iter =
+ this->dataPtr->plugins.begin();
+ iter != this->dataPtr->plugins.end(); ++iter)
+ {
(*iter)->Reset();
- this->physicsEngine->Reset();
- }
-
- this->SetPaused(currently_paused);
- }
-
- //////////////////////////////////////////////////
- void World::OnStep()
- {
- this->stepInc = 1;
- }
-
- //////////////////////////////////////////////////
- void World::SetSelectedEntityCB(const std::string &_name)
- {
- msgs::Selection msg;
- BasePtr base = this->GetByName(_name);
- EntityPtr ent = boost::dynamic_pointer_cast<Entity>(base);
-
- // unselect selectedEntity
- if (this->selectedEntity)
- {
- msg.set_id(this->selectedEntity->GetId());
- msg.set_name(this->selectedEntity->GetScopedName());
- msg.set_selected(false);
- this->selectionPub->Publish(msg);
+ }
+ this->dataPtr->physicsEngine->Reset();
- this->selectedEntity->SetSelected(false);
+ // Signal a reset has occurred
+ event::Events::worldReset();
}
- // if a different entity is selected, show bounding box and SetSelected(true)
- if (ent && this->selectedEntity != ent)
- {
- // set selected entity to ent
- this->selectedEntity = ent;
- this->selectedEntity->SetSelected(true);
-
- msg.set_id(this->selectedEntity->GetId());
- msg.set_name(this->selectedEntity->GetScopedName());
- msg.set_selected(true);
-
- this->selectionPub->Publish(msg);
- }
- else
- this->selectedEntity.reset();
+ this->SetPaused(currentlyPaused);
}
//////////////////////////////////////////////////
@@@ -1452,22 -1446,22 +1461,31 @@@ void World::ProcessRequestMsgs(
}
else if ((*iter).request() == "scene_info")
{
- this->sceneMsg.clear_model();
- this->BuildSceneMsg(this->sceneMsg, this->rootElement);
+ this->dataPtr->sceneMsg.clear_model();
+ this->BuildSceneMsg(this->dataPtr->sceneMsg, this->dataPtr->rootElement);
std::string *serializedData = response.mutable_serialized_data();
- this->sceneMsg.SerializeToString(serializedData);
- response.set_type(sceneMsg.GetTypeName());
+ this->dataPtr->sceneMsg.SerializeToString(serializedData);
+ response.set_type(this->dataPtr->sceneMsg.GetTypeName());
+ }
+ else if ((*iter).request() == "spherical_coordinates_info")
+ {
+ msgs::SphericalCoordinates sphereCoordMsg;
+ msgs::Set(&sphereCoordMsg, *(this->dataPtr->sphericalCoordinates));
+
+ std::string *serializedData = response.mutable_serialized_data();
+ sphereCoordMsg.SerializeToString(serializedData);
+ response.set_type(sphereCoordMsg.GetTypeName());
}
+ else if ((*iter).request() == "spherical_coordinates_info")
+ {
+ msgs::SphericalCoordinates sphereCoordMsg;
+ msgs::Set(&sphereCoordMsg, *(this->sphericalCoordinates));
+
+ std::string *serializedData = response.mutable_serialized_data();
+ sphereCoordMsg.SerializeToString(serializedData);
+ response.set_type(sphereCoordMsg.GetTypeName());
+ }
else
send = false;
@@@ -2014,13 -2029,83 +2053,84 @@@ uint32_t World::GetIterations() cons
//////////////////////////////////////////////////
void World::RemoveModel(const std::string &_name)
{
- for (Model_V::iterator iter = this->models.begin();
- iter != this->models.end(); ++iter)
+ boost::mutex::scoped_lock flock(this->dataPtr->factoryDeleteMutex);
+
+ // Remove all the dirty poses from the delete entity.
{
- if ((*iter)->GetName() == _name || (*iter)->GetScopedName() == _name)
+ for (std::list<Entity*>::iterator iter2 = this->dataPtr->dirtyPoses.begin();
+ iter2 != this->dataPtr->dirtyPoses.end();)
{
- this->models.erase(iter);
- break;
+ if ((*iter2)->GetName() == _name ||
+ ((*iter2)->GetParent() && (*iter2)->GetParent()->GetName() == _name))
+ {
+ this->dataPtr->dirtyPoses.erase(iter2++);
+ }
+ else
+ ++iter2;
+ }
+ }
+
+ if (this->dataPtr->sdf->HasElement("model"))
+ {
+ sdf::ElementPtr childElem = this->dataPtr->sdf->GetElement("model");
+ while (childElem && childElem->Get<std::string>("name") != _name)
+ childElem = childElem->GetNextElement("model");
+ if (childElem)
+ this->dataPtr->sdf->RemoveChild(childElem);
+ }
+
+ if (this->dataPtr->sdf->HasElement("light"))
+ {
+ sdf::ElementPtr childElem = this->dataPtr->sdf->GetElement("light");
+ while (childElem && childElem->Get<std::string>("name") != _name)
+ childElem = childElem->GetNextElement("light");
+ if (childElem)
+ {
+ this->dataPtr->sdf->RemoveChild(childElem);
+ // Find the light by name in the scene msg, and remove it.
+ for (int i = 0; i < this->dataPtr->sceneMsg.light_size(); ++i)
+ {
+ if (this->dataPtr->sceneMsg.light(i).name() == _name)
+ {
+ this->dataPtr->sceneMsg.mutable_light()->SwapElements(i,
+ this->dataPtr->sceneMsg.light_size()-1);
+ this->dataPtr->sceneMsg.mutable_light()->RemoveLast();
+ break;
+ }
+ }
+ }
+ }
++}
+
+ {
+ boost::recursive_mutex::scoped_lock lock(
+ *this->GetPhysicsEngine()->GetPhysicsUpdateMutex());
+
+ this->dataPtr->rootElement->RemoveChild(_name);
+
+ for (Model_V::iterator iter = this->dataPtr->models.begin();
+ iter != this->dataPtr->models.end(); ++iter)
+ {
+ if ((*iter)->GetName() == _name || (*iter)->GetScopedName() == _name)
+ {
+ this->dataPtr->models.erase(iter);
+ break;
+ }
+ }
+ }
+
+ // Cleanup the publishModelPoses list.
+ {
+ boost::recursive_mutex::scoped_lock lock2(*this->dataPtr->receiveMutex);
+ for (std::set<ModelPtr>::iterator iter =
+ this->dataPtr->publishModelPoses.begin();
+ iter != this->dataPtr->publishModelPoses.end(); ++iter)
+ {
+ if ((*iter)->GetName() == _name || (*iter)->GetScopedName() == _name)
+ {
+ this->dataPtr->publishModelPoses.erase(iter);
+ break;
+ }
}
}
}
diff --cc gazebo/physics/bullet/BulletJoint.cc
index 16aac89,6ca150f..7192a4e
--- a/gazebo/physics/bullet/BulletJoint.cc
+++ b/gazebo/physics/bullet/BulletJoint.cc
@@@ -534,53 -526,47 +526,99 @@@ math::Vector3 BulletJoint::GetLinkTorqu
}
//////////////////////////////////////////////////
+ bool BulletJoint::SetParam(const std::string &/*_key*/,
+ unsigned int /*_index*/,
+ const boost::any &/*_value*/)
+ {
+ gzdbg << "Not implement in Bullet\n";
+ return false;
+ }
+
+ //////////////////////////////////////////////////
+ double BulletJoint::GetParam(const std::string &_key,
+ unsigned int _index)
+ {
+ if (_key == "hi_stop")
+ {
+ return this->GetHighStop(_index).Radian();
+ }
+ else if (_key == "lo_stop")
+ {
+ return this->GetLowStop(_index).Radian();
+ }
+ gzerr << "GetParam unrecognized parameter ["
+ << _key
+ << "]"
+ << std::endl;
+ return 0;
+ }
+
+ //////////////////////////////////////////////////
+ math::Angle BulletJoint::GetHighStop(unsigned int _index)
+ {
+ return this->GetUpperLimit(_index);
+ }
+
+ //////////////////////////////////////////////////
+ math::Angle BulletJoint::GetLowStop(unsigned int _index)
+ {
+ return this->GetLowerLimit(_index);
+ }
+
+ //////////////////////////////////////////////////
+ bool BulletJoint::SetPosition(unsigned int _index, double _position)
+ {
+ return Joint::SetPositionMaximal(_index, _position);
+ }
++
++//////////////////////////////////////////////////
+void BulletJoint::SetAttribute(Attribute, unsigned int /*_index*/,
+ double /*_value*/)
+{
+ gzdbg << "Not implement in Bullet\n";
+}
+
+//////////////////////////////////////////////////
+void BulletJoint::SetAttribute(const std::string &_key,
+ unsigned int _index,
+ const boost::any &_value)
+{
+ this->SetParam(_key, _index, _value);
+}
+
+//////////////////////////////////////////////////
+bool BulletJoint::SetParam(const std::string &/*_key*/,
+ unsigned int /*_index*/,
+ const boost::any &/*_value*/)
+{
+ gzdbg << "Not implement in Bullet\n";
+ return false;
+}
+
+//////////////////////////////////////////////////
+double BulletJoint::GetParam(const std::string &/*_key*/,
+ unsigned int /*_index*/)
+{
+ gzdbg << "Not implement in Bullet\n";
+ return 0;
+}
+
+//////////////////////////////////////////////////
+double BulletJoint::GetAttribute(const std::string &_key,
+ unsigned int _index)
+{
+ return this->GetParam(_key, _index);
+}
+
+//////////////////////////////////////////////////
+math::Angle BulletJoint::GetHighStop(unsigned int _index)
+{
+ return this->GetUpperLimit(_index);
+}
+
+//////////////////////////////////////////////////
+math::Angle BulletJoint::GetLowStop(unsigned int _index)
+{
+ return this->GetLowerLimit(_index);
+}
+
diff --cc gazebo/physics/dart/DARTMeshShape.hh~upstream_5.0.1
index 0000000,b555408..b555408
mode 000000,100644..100644
--- a/gazebo/physics/dart/DARTMeshShape.hh~upstream_5.0.1
+++ b/gazebo/physics/dart/DARTMeshShape.hh~upstream_5.0.1
diff --cc gazebo/physics/ode/ODEJoint.cc
index 5e264d6,a3b9521..11cc0ae
--- a/gazebo/physics/ode/ODEJoint.cc
+++ b/gazebo/physics/ode/ODEJoint.cc
@@@ -1120,20 -828,20 +834,32 @@@ JointWrench ODEJoint::GetForceTorque(un
}
//////////////////////////////////////////////////
- void ODEJoint::CFMDamping()
+ bool ODEJoint::UsesImplicitSpringDamper()
+ {
+ return this->useImplicitSpringDamper;
+ }
+
+ //////////////////////////////////////////////////
+ void ODEJoint::UseImplicitSpringDamper(const bool _implicit)
+ {
+ this->useImplicitSpringDamper = _implicit;
+ }
+
+ //////////////////////////////////////////////////
+ void ODEJoint::ApplyImplicitStiffnessDamping()
{
+ this->ApplyImplicitStiffnessDamping();
+}
+
+//////////////////////////////////////////////////
+bool ODEJoint::UsesImplicitSpringDamper()
+{
+ return this->useImplicitSpringDamper;
+}
+
+//////////////////////////////////////////////////
+void ODEJoint::ApplyImplicitStiffnessDamping()
+{
// check if we are violating joint limits
if (this->GetAngleCount() > 2)
{
diff --cc gazebo/physics/ode/ODEJoint_TEST.cc
index 93c93d9,e53953b..ba11d28
--- a/gazebo/physics/ode/ODEJoint_TEST.cc
+++ b/gazebo/physics/ode/ODEJoint_TEST.cc
@@@ -71,6 -71,19 +71,24 @@@ TEST_F(ODEJoint_TEST, ImplicitDamping
EXPECT_TRUE(boost::dynamic_pointer_cast<physics::ODEJoint>(joint_1)->
UsesImplicitSpringDamper());
+ // Test for UseImplicitSpringDamper setting method
+ // toggle flag to false then back to true
+ {
+ physics::ODEJointPtr joint =
+ boost::dynamic_pointer_cast<physics::ODEJoint>(joint_0);
+
+ joint->UseImplicitSpringDamper(false);
+ EXPECT_FALSE(joint->UsesImplicitSpringDamper());
+
+ joint->UseImplicitSpringDamper(true);
+ EXPECT_TRUE(joint->UsesImplicitSpringDamper());
+ }
+
++ EXPECT_TRUE(boost::dynamic_pointer_cast<physics::ODEJoint>(joint_0)->
++ UsesImplicitSpringDamper());
++ EXPECT_TRUE(boost::dynamic_pointer_cast<physics::ODEJoint>(joint_1)->
++ UsesImplicitSpringDamper());
++
gzdbg << "-------------------Test 1 (y)-------------------\n";
physics->SetGravity(math::Vector3(0, 10, 0));
world->Step(100);
diff --cc gazebo/physics/ode/ODEMeshShape.cc~upstream_5.0.1
index 0000000,88524c6..01cb50b
mode 000000,100644..100644
--- a/gazebo/physics/ode/ODEMeshShape.cc~upstream_5.0.1
+++ b/gazebo/physics/ode/ODEMeshShape.cc~upstream_5.0.1
@@@ -1,0 -1,66 +1,72 @@@
+ /*
+ * Copyright (C) 2012-2015 Open Source Robotics Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
-
+ #include "gazebo/common/Mesh.hh"
++#include "gazebo/common/Assert.hh"
++#include "gazebo/common/Console.hh"
+
-#include "gazebo/physics/bullet/BulletMesh.hh"
-#include "gazebo/physics/bullet/BulletTypes.hh"
-#include "gazebo/physics/bullet/BulletCollision.hh"
-#include "gazebo/physics/bullet/BulletPhysics.hh"
-#include "gazebo/physics/bullet/BulletMeshShape.hh"
++#include "gazebo/physics/ode/ODEMesh.hh"
++#include "gazebo/physics/ode/ODECollision.hh"
++#include "gazebo/physics/ode/ODEPhysics.hh"
++#include "gazebo/physics/ode/ODEMeshShape.hh"
+
+ using namespace gazebo;
+ using namespace physics;
+
+ //////////////////////////////////////////////////
-BulletMeshShape::BulletMeshShape(CollisionPtr _parent)
- : MeshShape(_parent)
++ODEMeshShape::ODEMeshShape(CollisionPtr _parent) : MeshShape(_parent)
++{
++ this->odeMesh = new ODEMesh();
++}
++
++//////////////////////////////////////////////////
++ODEMeshShape::~ODEMeshShape()
+ {
- this->bulletMesh = new BulletMesh();
++ delete this->odeMesh;
+ }
+
+ //////////////////////////////////////////////////
-BulletMeshShape::~BulletMeshShape()
++void ODEMeshShape::Update()
+ {
- delete this->bulletMesh;
++ this->odeMesh->Update();
+ }
+
+ //////////////////////////////////////////////////
-void BulletMeshShape::Load(sdf::ElementPtr _sdf)
++void ODEMeshShape::Load(sdf::ElementPtr _sdf)
+ {
+ MeshShape::Load(_sdf);
+ }
+
+ //////////////////////////////////////////////////
-void BulletMeshShape::Init()
++void ODEMeshShape::Init()
+ {
+ MeshShape::Init();
-
- BulletCollisionPtr bParent =
- boost::static_pointer_cast<BulletCollision>(this->collisionParent);
++ if (!this->mesh)
++ return;
+
+ if (this->submesh)
+ {
- this->bulletMesh->Init(this->submesh, bParent,
++ this->odeMesh->Init(this->submesh,
++ boost::static_pointer_cast<ODECollision>(this->collisionParent),
+ this->sdf->Get<math::Vector3>("scale"));
+ }
+ else
+ {
- this->bulletMesh->Init(this->mesh, bParent,
++ this->odeMesh->Init(this->mesh,
++ boost::static_pointer_cast<ODECollision>(this->collisionParent),
+ this->sdf->Get<math::Vector3>("scale"));
+ }
+ }
diff --cc gazebo/rendering/Camera.hh
index b23e33f,560ad6e..48f9837
--- a/gazebo/rendering/Camera.hh
+++ b/gazebo/rendering/Camera.hh
@@@ -107,17 -108,10 +108,17 @@@ namespace gazeb
/// \brief Render the camera.
/// Called after the pre-render signal. This function will generate
/// camera images.
- // \todo Deprecated in Gazebo 2.1. In Gazebo 3.0 remove this function,
- // and change Render(bool _force) to have a default value of false.
- public: void Render();
+ /// \param[in] _force Force camera to render. Ignore camera update
+ /// rate.
+ public: void Render(bool _force = false);
+ /// \brief Render the camera.
+ /// Called after the pre-render signal. This function will generate
+ /// camera images.
+ /// \param[in] _force Force camera to render. Ignore camera update
+ /// rate.
+ public: void Render(bool _force);
+
/// \brief Post render
///
/// Called afer the render signal.
diff --cc gazebo/rendering/JointVisual.cc
index 3c1ca7f,1509da6..6c541c5
--- a/gazebo/rendering/JointVisual.cc
+++ b/gazebo/rendering/JointVisual.cc
@@@ -65,15 -54,144 +54,145 @@@ void JointVisual::Load(ConstJointPtr &_
dPtr->axisVisual->Load();
this->SetPosition(msgs::Convert(_msg->pose().position()));
- this->SetRotation(msgs::Convert(_msg->pose().orientation()));
+ this->SetRotation(this->GetRotation() *
+ msgs::Convert(_msg->pose().orientation()));
- if (math::equal(_msg->axis1().xyz().x(), 1.0))
- dPtr->axisVisual->ShowRotation(0);
+ if (_msg->has_axis2())
+ {
+ // for hinge2 and universal joints:
+ // axis1 is attached to parent link and axis2 is attached to child link
+
+ // create extra joint visual for axis1
+ VisualPtr parentVis;
+ if (_msg->has_parent() && _msg->parent() == "world")
+ parentVis = this->GetScene()->GetWorldVisual();
+ else if (_msg->has_parent_id())
+ parentVis = this->GetScene()->GetVisual(_msg->parent_id());
+
+ JointVisualPtr jointVis;
+ jointVis.reset(new JointVisual(this->GetName() + "_parent_", parentVis));
+ jointVis->Load(_msg,
+ msgs::Convert(_msg->pose()) + this->GetParent()->GetWorldPose());
+
+ // attach axis2 to this visual
+ msgs::Axis axis2Msg = _msg->axis2();
+ this->CreateAxis(msgs::Convert(axis2Msg.xyz()),
+ axis2Msg.use_parent_model_frame(), _msg->type());
+
+ dPtr->parentAxisVis = jointVis;
+ }
+ else if (_msg->has_axis1())
+ {
+ // for all other joint types:
+ // axis1 is attached to child link
+ msgs::Axis axis1Msg = _msg->axis1();
+ this->CreateAxis(msgs::Convert(axis1Msg.xyz()),
+ axis1Msg.use_parent_model_frame(), _msg->type());
+ }
+
+ this->GetSceneNode()->setInheritScale(false);
+ this->SetVisibilityFlags(GZ_VISIBILITY_GUI);
+ }
+
+ /////////////////////////////////////////////////
+ void JointVisual::Load(ConstJointPtr &_msg, const math::Pose &_worldPose)
+ {
+ Visual::Load();
+
+ msgs::Axis axis1Msg = _msg->axis1();
+ this->CreateAxis(msgs::Convert(axis1Msg.xyz()),
+ axis1Msg.use_parent_model_frame(), _msg->type());
+
+ // joint pose is always relative to the child link so update axis pose
+ this->SetWorldPose(_worldPose);
+
+ this->GetSceneNode()->setInheritScale(false);
+ this->SetVisibilityFlags(GZ_VISIBILITY_GUI);
+ }
+
+ /////////////////////////////////////////////////
+ void JointVisual::CreateAxis(const math::Vector3 &_axis, bool _useParentFrame,
+ msgs::Joint::Type _type)
+ {
+ JointVisualPrivate *dPtr =
+ reinterpret_cast<JointVisualPrivate *>(this->dataPtr);
+
+ ArrowVisualPtr axis;
+
+ std::stringstream nameStr;
+ nameStr << this->GetName() << "_axis_" << this->GetChildCount() << "_AXIS";
+
+ axis.reset(new ArrowVisual(nameStr.str(), shared_from_this()));
+ axis->Load();
+ axis->SetMaterial("Gazebo/YellowTransparent");
+
+ // Get rotation to axis vector
+ math::Vector3 axisDir = _axis;
+ math::Vector3 u = axisDir.Normalize();
+ math::Vector3 v = math::Vector3::UnitZ;
+ double cosTheta = v.Dot(u);
+ double angle = acos(cosTheta);
+ math::Quaternion quat;
+ // check the parallel case
+ if (math::equal(angle, M_PI))
+ quat.SetFromAxis(u.GetPerpendicular(), angle);
+ else
+ quat.SetFromAxis((v.Cross(u)).Normalize(), angle);
+ axis->SetRotation(quat);
+
+ if (_useParentFrame)
+ {
+ // if set to use parent model frame
+ // rotate the arrow visual relative to the model
+ VisualPtr model = this->GetRootVisual();
+ math::Quaternion quatFromModel =
+ model->GetWorldPose().rot.GetInverse()*this->GetWorldPose().rot;
+ axis->SetRotation(quatFromModel.GetInverse()*axis->GetRotation());
+ }
+ if (_type == msgs::Joint::REVOLUTE || _type == msgs::Joint::REVOLUTE2
+ || _type == msgs::Joint::UNIVERSAL || _type == msgs::Joint::GEARBOX)
+ axis->ShowRotation(true);
+
+ math::Quaternion axisWorldRotation = axis->GetWorldPose().rot;
+ math::Quaternion jointWorldRotation = this->GetWorldPose().rot;
+
+ // hide the existing axis's arrow head if it overlaps with the one we are
+ // creating
+ math::Vector3 axisWorld = axisWorldRotation*math::Vector3::UnitZ;
+ if (axisWorld == jointWorldRotation*math::Vector3::UnitX)
+ {
+ if (dPtr->axisVisual)
+ {
+ dPtr->axisVisual->ShowAxisHead(0, false);
+ axis->ShowShaft(false);
+ }
+ }
+ else if (axisWorld == jointWorldRotation*math::Vector3::UnitY)
+ {
+ if (dPtr->axisVisual)
+ {
+ dPtr->axisVisual->ShowAxisHead(1, false);
+ axis->ShowShaft(false);
+ }
+ }
+ else if (axisWorld == jointWorldRotation*math::Vector3::UnitZ)
+ {
+ if (dPtr->axisVisual)
+ {
+ dPtr->axisVisual->ShowAxisHead(2, false);
+ axis->ShowShaft(false);
+ }
+ }
+ }
+
+ /////////////////////////////////////////////////
+ void JointVisual::SetVisible(bool _visible, bool _cascade)
+ {
+ JointVisualPrivate *dPtr =
+ reinterpret_cast<JointVisualPrivate *>(this->dataPtr);
- if (math::equal(_msg->axis1().xyz().y(), 1.0))
- dPtr->axisVisual->ShowRotation(1);
+ Visual::SetVisible(_visible, _cascade);
- if (math::equal(_msg->axis1().xyz().z(), 1.0))
- dPtr->axisVisual->ShowRotation(2);
+ if (dPtr->parentAxisVis)
+ dPtr->parentAxisVis->SetVisible(_visible, _cascade);
}
diff --cc gazebo/rendering/Scene.cc
index 9e5ba81,7a2d538..fae929b
--- a/gazebo/rendering/Scene.cc
+++ b/gazebo/rendering/Scene.cc
@@@ -1460,24 -1525,24 +1525,39 @@@ bool Scene::ProcessModelMsg(const msgs:
{
boost::shared_ptr<msgs::Visual> vm(new msgs::Visual(
_msg.visual(j)));
- this->visualMsgs.push_back(vm);
+ this->dataPtr->visualMsgs.push_back(vm);
+ }
+
+ // Set the scale of the model visual
+ if (_msg.has_scale())
+ {
+ // update scale using a visual msg
+ boost::shared_ptr<msgs::Visual> vm(new msgs::Visual);
+ if (_msg.has_id())
+ vm->set_id(_msg.id());
+ if (_msg.has_name())
+ vm->set_name(_msg.name());
+ vm->mutable_scale()->set_x(_msg.scale().x());
+ vm->mutable_scale()->set_y(_msg.scale().y());
+ vm->mutable_scale()->set_z(_msg.scale().z());
+ this->dataPtr->visualMsgs.push_back(vm);
}
+ // Set the scale of the model visual
+ if (_msg.has_scale())
+ {
+ // update scale using a visual msg
+ boost::shared_ptr<msgs::Visual> vm(new msgs::Visual);
+ if (_msg.has_id())
+ vm->set_id(_msg.id());
+ if (_msg.has_name())
+ vm->set_name(_msg.name());
+ vm->mutable_scale()->set_x(_msg.scale().x());
+ vm->mutable_scale()->set_y(_msg.scale().y());
+ vm->mutable_scale()->set_z(_msg.scale().z());
+ this->visualMsgs.push_back(vm);
+ }
+
for (int j = 0; j < _msg.joint_size(); j++)
{
boost::shared_ptr<msgs::Joint> jm(new msgs::Joint(
diff --cc gazebo/rendering/Scene.hh
index 8b3b963,9e700ad..0e68998
--- a/gazebo/rendering/Scene.hh
+++ b/gazebo/rendering/Scene.hh
@@@ -17,14 -18,10 +18,12 @@@
#ifndef _SCENE_HH_
#define _SCENE_HH_
- #include <vector>
- #include <map>
#include <string>
- #include <list>
+ #include <vector>
#include <boost/enable_shared_from_this.hpp>
#include <boost/shared_ptr.hpp>
+#include <boost/unordered/unordered_map.hpp>
+#include <boost/thread/recursive_mutex.hpp>
#include <sdf/sdf.hh>
diff --cc gazebo/rendering/Visual.cc
index f949571,e3e3bc3..0c9c753
--- a/gazebo/rendering/Visual.cc
+++ b/gazebo/rendering/Visual.cc
@@@ -1412,6 -1421,6 +1421,7 @@@ void Visual::SetHighlighted(bool _highl
{
this->dataPtr->boundingBox->SetVisible(false);
}
++ return false;
}
//////////////////////////////////////////////////
diff --cc gazebo/sensors/SensorsIface.cc
index c381202,470d31f..30b3508
--- a/gazebo/sensors/SensorsIface.cc
+++ b/gazebo/sensors/SensorsIface.cc
@@@ -100,7 -86,7 +86,10 @@@ std::string sensors::create_sensor(sdf:
}
/////////////////////////////////////////////////
--void sensors::remove_sensor(const std::string &_sensorName)
++std::string sensors::create_sensor(sdf::ElementPtr _elem,
++ const std::string &_worldName,
++ const std::string &_parentName,
++ uint32_t _parentId)
{
if (g_disable)
return;
diff --cc gazebo/transport/TopicManager.cc
index 0b229cb,f3ca8d4..090739a
--- a/gazebo/transport/TopicManager.cc
+++ b/gazebo/transport/TopicManager.cc
@@@ -180,17 -180,17 +180,18 @@@ void TopicManager::ProcessNodes(bool _o
if (!this->pauseIncoming && !_onlyOut)
{
+ int s = 0;
{
+ int s = 0;
boost::recursive_mutex::scoped_lock lock(this->nodeMutex);
s = this->nodes.size();
- }
- for (int i = 0; i < s; ++i)
- {
- this->nodes[i]->ProcessIncoming();
- if (this->pauseIncoming)
- break;
+ for (int i = 0; i < s; ++i)
+ {
+ this->nodes[i]->ProcessIncoming();
+ if (this->pauseIncoming)
+ break;
+ }
}
}
}
diff --cc test/integration/factory.cc
index afaff98,02bc637..0000000
deleted file mode 100644,100644
--- a/test/integration/factory.cc
+++ /dev/null
@@@ -1,194 -1,314 +1,0 @@@
--/*
- * Copyright (C) 2012-2014 Open Source Robotics Foundation
- * Copyright (C) 2012-2015 Open Source Robotics Foundation
-- *
-- * Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- *
-- * http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- *
--*/
--#include <string.h>
--#include "gazebo/math/Helpers.hh"
--#include "gazebo/transport/TransportTypes.hh"
--#include "gazebo/transport/Node.hh"
--
--#include "gazebo/rendering/RenderEngine.hh"
--#include "gazebo/rendering/Camera.hh"
--#include "gazebo/sensors/SensorsIface.hh"
--#include "gazebo/sensors/CameraSensor.hh"
--#include "ServerFixture.hh"
--#include "images_cmp.h"
--#include "helper_physics_generator.hh"
--
--using namespace gazebo;
--class FactoryTest : public ServerFixture,
-- public testing::WithParamInterface<const char*>
--{
-- public: void BoxSdf(const std::string &_physicsEngine);
-- public: void Box(const std::string &_physicsEngine);
-- public: void Sphere(const std::string &_physicsEngine);
-- public: void Cylinder(const std::string &_physicsEngine);
- public: void Clone(const std::string &_physicsEngine);
--};
--
--///////////////////////////////////////////////////
--// Verify that sdf is retained by entities spawned
--// via factory messages. A change between 1.6, 1.7
--// caused entities to lose their sdf data
--// (see issue #651)
--void FactoryTest::BoxSdf(const std::string &_physicsEngine)
--{
-- math::Pose setPose, testPose;
-- Load("worlds/empty.world", true, _physicsEngine);
-- physics::WorldPtr world = physics::get_world("default");
-- ASSERT_TRUE(world != NULL);
--
-- unsigned int entityCount = 6;
--
-- for (unsigned int i = 0; i < entityCount; ++i)
-- {
-- std::ostringstream name;
-- name << "test_box_" << i;
-- setPose.Set(math::Vector3(0, 0, i+0.5), math::Quaternion(0, 0, 0));
-- SpawnBox(name.str(), math::Vector3(1, 1, 1), setPose.pos,
-- setPose.rot.GetAsEuler());
-- }
--
-- // This loop must be separate from the previous loop to cause
-- // the failure.
-- for (unsigned int i = 0; i < entityCount; ++i)
-- {
-- std::ostringstream name;
-- name << "test_box_" << i;
--
-- physics::ModelPtr model = world->GetModel(name.str());
-- ASSERT_TRUE(model != NULL);
-- msgs::Model msg;
-- model->FillMsg(msg);
-- EXPECT_TRUE(msg.has_pose());
-- // gzerr << msg.DebugString() << '\n';
-- }
--}
--
-/////////////////////////////////////////////////
--TEST_P(FactoryTest, BoxSdf)
--{
-- BoxSdf(GetParam());
--}
--
-/////////////////////////////////////////////////
--void FactoryTest::Box(const std::string &_physicsEngine)
--{
-- math::Pose setPose, testPose;
-- Load("worlds/empty.world", true, _physicsEngine);
--
-- for (unsigned int i = 0; i < 100; i++)
-- {
-- std::ostringstream name;
-- name << "test_box_" << i;
-- setPose.Set(math::Vector3(0, 0, i+0.5), math::Quaternion(0, 0, 0));
-- SpawnBox(name.str(), math::Vector3(1, 1, 1), setPose.pos,
-- setPose.rot.GetAsEuler());
-- testPose = GetEntityPose(name.str());
-- EXPECT_TRUE(math::equal(testPose.pos.x, setPose.pos.x, 0.1));
-- EXPECT_TRUE(math::equal(testPose.pos.y, setPose.pos.y, 0.1));
-- EXPECT_TRUE(math::equal(testPose.pos.z, setPose.pos.z, 0.1));
-- }
--}
--
-/////////////////////////////////////////////////
--TEST_P(FactoryTest, Box)
--{
-- Box(GetParam());
--}
--
-/////////////////////////////////////////////////
--void FactoryTest::Sphere(const std::string &_physicsEngine)
--{
-- math::Pose setPose, testPose;
-- Load("worlds/empty.world", true, _physicsEngine);
--
-- for (unsigned int i = 0; i < 100; i++)
-- {
-- std::ostringstream name;
-- name << "test_sphere_" << i;
-- setPose.Set(math::Vector3(0, 0, i+0.5), math::Quaternion(0, 0, 0));
-- SpawnSphere(name.str(), setPose.pos, setPose.rot.GetAsEuler());
-- testPose = GetEntityPose(name.str());
-- EXPECT_TRUE(math::equal(testPose.pos.x, setPose.pos.x, 0.1));
-- EXPECT_TRUE(math::equal(testPose.pos.y, setPose.pos.y, 0.1));
-- EXPECT_TRUE(math::equal(testPose.pos.z, setPose.pos.z, 0.1));
-- }
--}
--
-/////////////////////////////////////////////////
--TEST_P(FactoryTest, Sphere)
--{
-- Sphere(GetParam());
--}
--
-/////////////////////////////////////////////////
--void FactoryTest::Cylinder(const std::string &_physicsEngine)
--{
-- math::Pose setPose, testPose;
-- Load("worlds/empty.world", true, _physicsEngine);
--
-- for (unsigned int i = 0; i < 100; i++)
-- {
-- std::ostringstream name;
-- name << "test_cylinder_" << i;
-- setPose.Set(math::Vector3(0, 0, i+0.5), math::Quaternion(0, 0, 0));
-- SpawnCylinder(name.str(), setPose.pos, setPose.rot.GetAsEuler());
-- testPose = GetEntityPose(name.str());
-- EXPECT_TRUE(math::equal(testPose.pos.x, setPose.pos.x, 0.1));
-- EXPECT_TRUE(math::equal(testPose.pos.y, setPose.pos.y, 0.1));
-- EXPECT_TRUE(math::equal(testPose.pos.z, setPose.pos.z, 0.1));
-- }
--}
--
-/////////////////////////////////////////////////
--TEST_P(FactoryTest, Cylinder)
--{
-- Cylinder(GetParam());
-}
-
-/////////////////////////////////////////////////
-void FactoryTest::Clone(const std::string &_physicsEngine)
-{
- math::Pose setPose, testPose;
- Load("worlds/pr2.world", true, _physicsEngine);
-
- // clone the pr2
- std::string name = "pr2";
- msgs::Factory msg;
- math::Pose clonePose;
- clonePose.Set(math::Vector3(2, 3, 0.5), math::Quaternion(0, 0, 0));
- msgs::Set(msg.mutable_pose(), clonePose);
- msg.set_clone_model_name(name);
- this->factoryPub->Publish(msg);
-
- // Wait for the pr2 clone to spawn
- std::string cloneName = name + "_clone";
- this->WaitUntilEntitySpawn(cloneName, 100, 100);
-
- EXPECT_TRUE(this->HasEntity(cloneName));
- testPose = GetEntityPose(cloneName);
- EXPECT_TRUE(math::equal(testPose.pos.x, clonePose.pos.x, 0.1));
- EXPECT_TRUE(math::equal(testPose.pos.y, clonePose.pos.y, 0.1));
- EXPECT_TRUE(math::equal(testPose.pos.z, clonePose.pos.z, 0.1));
-
- // Verify properties of the pr2 clone with the original model.
- physics::WorldPtr world = physics::get_world("default");
- ASSERT_TRUE(world != NULL);
-
- // Check model
- physics::ModelPtr model = world->GetModel(name);
- ASSERT_TRUE(model != NULL);
- physics::ModelPtr modelClone = world->GetModel(cloneName);
- ASSERT_TRUE(modelClone != NULL);
- EXPECT_EQ(model->GetJointCount(), modelClone->GetJointCount());
- EXPECT_EQ(model->GetLinks().size(), modelClone->GetLinks().size());
- EXPECT_EQ(model->GetSensorCount(), modelClone->GetSensorCount());
- EXPECT_EQ(model->GetPluginCount(), modelClone->GetPluginCount());
- EXPECT_EQ(model->GetAutoDisable(), modelClone->GetAutoDisable());
-
- // Check links
- physics::Link_V links = model->GetLinks();
- physics::Link_V linkClones = modelClone->GetLinks();
- for (unsigned int i = 0; i < links.size(); ++i)
- {
- physics::LinkPtr link = links[i];
- physics::LinkPtr linkClone = linkClones[i];
-
- EXPECT_EQ(link->GetSensorCount(), linkClone->GetSensorCount());
- EXPECT_EQ(link->GetKinematic(), linkClone->GetKinematic());
-
- // Check collisions
- physics::Collision_V collisions = link->GetCollisions();
- physics::Collision_V collisionClones = linkClone->GetCollisions();
- EXPECT_EQ(collisions.size(), collisionClones.size());
- for (unsigned int j = 0; j < collisions.size(); ++j)
- {
- physics::CollisionPtr collision = collisions[j];
- physics::CollisionPtr collisionClone = collisionClones[j];
- EXPECT_EQ(collision->GetShapeType(), collisionClone->GetShapeType());
- EXPECT_EQ(collision->GetMaxContacts(), collisionClone->GetMaxContacts());
-
- // Check surface
- physics::SurfaceParamsPtr surface = collision->GetSurface();
- physics::SurfaceParamsPtr cloneSurface = collisionClone->GetSurface();
- EXPECT_EQ(surface->collideWithoutContact,
- cloneSurface->collideWithoutContact);
- EXPECT_EQ(surface->collideWithoutContactBitmask,
- cloneSurface->collideWithoutContactBitmask);
- }
-
- // Check inertial
- physics::InertialPtr inertial = link->GetInertial();
- physics::InertialPtr inertialClone = linkClone->GetInertial();
- EXPECT_EQ(inertial->GetMass(), inertialClone->GetMass());
- EXPECT_EQ(inertial->GetCoG(), inertialClone->GetCoG());
- EXPECT_EQ(inertial->GetPrincipalMoments(),
- inertialClone->GetPrincipalMoments());
- EXPECT_EQ(inertial->GetProductsofInertia(),
- inertialClone->GetProductsofInertia());
- }
-
- // Check joints
- physics::Joint_V joints = model->GetJoints();
- physics::Joint_V jointClones = modelClone->GetJoints();
- for (unsigned int i = 0; i < joints.size(); ++i)
- {
- physics::JointPtr joint = joints[i];
- physics::JointPtr jointClone = jointClones[i];
- EXPECT_EQ(joint->GetAngleCount(), jointClone->GetAngleCount());
- for (unsigned j = 0; j < joint->GetAngleCount(); ++j)
- {
- EXPECT_EQ(joint->GetUpperLimit(j), jointClone->GetUpperLimit(j));
- EXPECT_EQ(joint->GetLowerLimit(j), jointClone->GetLowerLimit(j));
- EXPECT_EQ(joint->GetEffortLimit(j), jointClone->GetEffortLimit(j));
- EXPECT_EQ(joint->GetVelocityLimit(j), jointClone->GetVelocityLimit(j));
- EXPECT_EQ(joint->GetStopStiffness(j), jointClone->GetStopStiffness(j));
- EXPECT_EQ(joint->GetStopDissipation(j),
- jointClone->GetStopDissipation(j));
- EXPECT_EQ(joint->GetLocalAxis(j), jointClone->GetLocalAxis(j));
- EXPECT_EQ(joint->GetDamping(j), jointClone->GetDamping(j));
- }
- }
-}
-
-/////////////////////////////////////////////////
-TEST_P(FactoryTest, Clone)
-{
- Clone(GetParam());
--}
--
--// Disabling this test for now. Different machines return different
--// camera images. Need a better way to evaluate rendered content.
--// TEST_F(FactoryTest, Camera)
--// {
--/*
-- if (rendering::RenderEngine::Instance()->GetRenderPathType() ==
-- rendering::RenderEngine::NONE)
-- return;
--
-- math::Pose setPose, testPose;
-- Load("worlds/empty.world");
-- setPose.Set(math::Vector3(-5, 0, 5), math::Quaternion(0, GZ_DTOR(15), 0));
-- SpawnCamera("camera_model", "camera_sensor2", setPose.pos,
-- setPose.rot.GetAsEuler());
--
-- unsigned char *img = NULL;
-- unsigned int width;
-- unsigned int height;
-- GetFrame("camera_sensor2", &img, width, height);
-- ASSERT_EQ(width, static_cast<unsigned int>(320));
-- ASSERT_EQ(height, static_cast<unsigned int>(240));
--
-- unsigned int diffMax = 0;
-- unsigned int diffSum = 0;
-- double diffAvg = 0;
-- ImageCompare(&img, &empty_world_camera1,
-- width, height, 3, diffMax, diffSum, diffAvg);
-- // PrintImage("empty_world_camera1", &img, width, height, 3);
-- ASSERT_LT(diffSum, static_cast<unsigned int>(100));
-- ASSERT_EQ(static_cast<unsigned int>(0), diffMax);
-- ASSERT_EQ(0.0, diffAvg);
-- */
--// }
--
--INSTANTIATE_TEST_CASE_P(PhysicsEngines, FactoryTest, PHYSICS_ENGINE_VALUES);
--
-/////////////////////////////////////////////////
--int main(int argc, char **argv)
--{
-- ::testing::InitGoogleTest(&argc, argv);
-- return RUN_ALL_TESTS();
--}
diff --cc test/integration/imu.cc
index d3ea933,d8620ae..0000000
deleted file mode 100644,100644
--- a/test/integration/imu.cc
+++ /dev/null
@@@ -1,318 -1,581 +1,0 @@@
--/*
- * Copyright (C) 2012-2014 Open Source Robotics Foundation
- * Copyright (C) 2012-2015 Open Source Robotics Foundation
-- *
-- * Licensed under the Apache License, Version 2.0 (the "License");
-- * you may not use this file except in compliance with the License.
-- * You may obtain a copy of the License at
-- *
-- * http://www.apache.org/licenses/LICENSE-2.0
-- *
-- * Unless required by applicable law or agreed to in writing, software
-- * distributed under the License is distributed on an "AS IS" BASIS,
-- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- * See the License for the specific language governing permissions and
-- * limitations under the License.
-- *
--*/
--
--#include "ServerFixture.hh"
--#include "gazebo/sensors/sensors.hh"
--#include "gazebo/common/common.hh"
--#include "helper_physics_generator.hh"
--
--// How tightly to compare for deterministic values
--#define IMU_TOL 1e-5
--
--using namespace gazebo;
--class ImuTest : public ServerFixture,
-- public testing::WithParamInterface<const char*>
--{
- /// \brief start imu_sensor_test.world, which contains a pendulum,
- /// a sphere with frictional contact, a sphere with frictionless
- /// contact and a ramp. Each model has an IMU attached.
- /// This test check results to make sure the readings adhere to
- /// each simple model under gravity.
- public: void ImuSensorTestWorld(const std::string &_physicsEngine);
-
- /// \brief Spawn a static model with an ImuSensor attached
- /// in the empty world. Test basic IMU outputs.
-- public: void Stationary_EmptyWorld(const std::string &_physicsEngine);
-
- /// \brief Spawn a static model with an ImuSensor attached
- /// in the empty world. Test basic IMU outputs with noise enabled.
-- public: void Stationary_EmptyWorld_Noise(const std::string &_physicsEngine);
-
- /// \brief Spawn a static model with an ImuSensor attached
- /// in the empty world. Test basic IMU outputs with bias enabled.
-- public: void Stationary_EmptyWorld_Bias(const std::string &_physicsEngine);
-
- /// \breif Return gravity rotated by some orientation
- /// \param[in] _rot User specified rotation
- /// \param[out] _g gravity in user specified orientation
-- private: void GetGravity(const math::Quaternion& _rot, math::Vector3 &_g);
-
- /// \breif Collect a number of samples and return the average
- /// rate and accel values
- /// \param[in] _imu Pointer to sensor
- /// \param[in] _cnt number of samples to tak
- /// \param[out] _rateMean average angular rates over samples
- /// \param[out] _accelMean average accelerations over samples
- /// \param[out] _orientation orientation of the imu at the end of sample
- /// period
-- private: void GetImuData(sensors::ImuSensorPtr _imu, unsigned int _cnt,
-- math::Vector3 &_rateMean,
-- math::Vector3 &_accelMean,
-- math::Quaternion &_orientation);
--};
--
--void ImuTest::GetGravity(const math::Quaternion &_rot, math::Vector3 &_g)
--{
-- physics::WorldPtr world = physics::get_world("default");
- ASSERT_TRUE(world);
- ASSERT_TRUE(world != NULL);
-- physics::PhysicsEnginePtr physics = world->GetPhysicsEngine();
- ASSERT_TRUE(physics);
- ASSERT_TRUE(physics != NULL);
-- // Rotate into IMU's frame
-- _g = _rot.GetInverse().RotateVector(physics->GetGravity());
--}
--
--void ImuTest::GetImuData(sensors::ImuSensorPtr _imu,
-- unsigned int _cnt,
-- math::Vector3 &_rateMean,
-- math::Vector3 &_accelMean,
-- math::Quaternion& _orientation)
--{
-- physics::WorldPtr world = physics::get_world("default");
- ASSERT_TRUE(world);
- ASSERT_TRUE(world != NULL);
-- // Collect a number of samples and return the average rate and accel values
-- math::Vector3 rateSum, accelSum;
-- for (unsigned int i = 0; i < _cnt; ++i)
-- {
-- world->Step(1);
--
-- int j = 0;
-- while (_imu->GetLastMeasurementTime() == gazebo::common::Time::Zero &&
-- j < 100)
-- {
-- _imu->Update(true);
-- gazebo::common::Time::MSleep(100);
-- ++j;
-- }
--
-- EXPECT_LT(j, 100);
--
-- rateSum += _imu->GetAngularVelocity();
-- accelSum += _imu->GetLinearAcceleration();
-- }
-- _rateMean = rateSum / _cnt;
-- _accelMean = accelSum / _cnt;
-- _orientation = _imu->GetOrientation();
-}
-
-void ImuTest::ImuSensorTestWorld(const std::string &_physicsEngine)
-{
- if (_physicsEngine != "ode")
- {
- gzerr << "not working yet for anything other than ode. see issue #9999.\n";
- return;
- }
-
- Load("worlds/imu_sensor_test.world", true, _physicsEngine);
-
- // get world
- physics::WorldPtr world = physics::get_world("default");
- ASSERT_TRUE(world != NULL);
-
- // get physics engine
- physics::PhysicsEnginePtr physics = world->GetPhysicsEngine();
- ASSERT_TRUE(physics != NULL);
-
- // get pendulum
- std::string pendulumName = "model_pendulum";
- physics::ModelPtr pendulumModel = world->GetModel(pendulumName);
- ASSERT_TRUE(pendulumModel != NULL);
-
- std::string pendulumSensorName = "pendulum_imu_sensor";
- sensors::ImuSensorPtr pendulumImu =
- boost::static_pointer_cast<sensors::ImuSensor>(
- sensors::SensorManager::Instance()->GetSensor(pendulumSensorName));
- ASSERT_TRUE(pendulumImu != NULL);
- pendulumImu->Init();
-
- // get friction ball
- std::string ballFrictionName = "model_ball";
- physics::ModelPtr ballFrictionModel = world->GetModel(ballFrictionName);
- ASSERT_TRUE(ballFrictionModel != NULL);
-
- std::string ballFrictionSensorName = "ball_imu_sensor";
- sensors::ImuSensorPtr ballFrictionImu =
- boost::static_pointer_cast<sensors::ImuSensor>(
- sensors::SensorManager::Instance()->GetSensor(ballFrictionSensorName));
- ASSERT_TRUE(ballFrictionImu != NULL);
- ballFrictionImu->Init();
-
- // get frictionless ball
- std::string ballNoFrictionName = "model_ball_no_friction";
- physics::ModelPtr ballNoFrictionModel = world->GetModel(ballNoFrictionName);
- ASSERT_TRUE(ballNoFrictionModel != NULL);
-
- std::string ballNoFrictionSensorName = "ball_no_friction_imu_sensor";
- sensors::ImuSensorPtr ballNoFrictionImu =
- boost::static_pointer_cast<sensors::ImuSensor>(
- sensors::SensorManager::Instance()->GetSensor(ballNoFrictionSensorName));
- ASSERT_TRUE(ballNoFrictionImu != NULL);
- ballNoFrictionImu->Init();
-
- // get gravity
- math::Vector3 g = physics->GetGravity();
-
- // run for 1900 steps (Step(1) each time), or 1.9 seconds, enough
- // to capture what we need from this experiment.
- for (unsigned n = 0; n < 1900; ++n)
- {
- world->Step(1);
- // gzdbg << "time: " << world->GetSimTime().Double() << "\n";
-
- // pendulum
- // on startup
- // sensor linear accel [0 0 0]
- // Link::GetRelativeLinearAccel() [0 0 -9.81]
- // Link::GetWorldLinearAccel() [0 0 -9.81]
- // @T=1.872 sec, at max lowest position
- // sensor linear accel [-0 -0.041216 29.4258]
- // Link::GetRelativeLinearAccel() [-0 -0.008923 19.6159]
- // Link::GetWorldLinearAccel() [-0 0.055649 19.6158]
- {
- // get states from imu sensor
- math::Vector3 imuLinearAccel = pendulumImu->GetLinearAcceleration();
- // get states from link
- math::Vector3 relativeLinearAccel =
- pendulumModel->GetRelativeLinearAccel();
- math::Vector3 worldLinearAccel =
- pendulumModel->GetWorldLinearAccel();
-
- if (world->GetSimTime().Double() == 1.872)
- {
- // initial values
- EXPECT_NEAR(imuLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(imuLinearAccel.y, -0.041216, IMU_TOL);
- EXPECT_NEAR(imuLinearAccel.z, 29.42581726, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.y, -0.036397, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.z, 19.6158848, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.y, -0.0267709, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.z, 19.6159003, IMU_TOL);
- }
- else
- {
- // initial values
- EXPECT_LE(imuLinearAccel.z, 29.4259);
- EXPECT_LE(relativeLinearAccel.z, 19.616);
- EXPECT_LE(worldLinearAccel.z, 19.616);
- }
- }
-
- // friction ball
- // before contact
- // sensor linear accel [0 0 0]
- // Link::GetRelativeLinearAccel() [0 0 -9.81]
- // Link::GetWorldLinearAccel() [0 0 -9.81]
- //
- // @T=1.2 sec, on ramp - varies, e.g.
- // sensor linear accel [-7.81558 0 3.71003]
- // Link::GetRelativeLinearAccel() [1.98569 0 3.29613]
- // Link::GetWorldLinearAccel() [3.37698 0 -1.84485]
- //
- // @T=1.849 sec, on ground - sensor vector rotates
- // sensor linear accel [-2.93844 0 9.35958]
- // Link::GetRelativeLinearAccel() [0 0 0]
- // Link::GetWorldLinearAccel() [0 0 0]
- {
- // get states from imu sensor
- math::Vector3 imuLinearAccel = ballFrictionImu->GetLinearAcceleration();
- // get states from link
- math::Vector3 relativeLinearAccel =
- ballFrictionModel->GetRelativeLinearAccel();
- math::Vector3 worldLinearAccel =
- ballFrictionModel->GetWorldLinearAccel();
-
- if (world->GetSimTime().Double() <= 1.0)
- {
- // freefall
- EXPECT_NEAR(imuLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(imuLinearAccel.y, 0, IMU_TOL);
- EXPECT_NEAR(imuLinearAccel.z, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.x, g.x, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.y, g.y, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.z, g.z, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.x, g.x, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.y, g.y, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.z, g.z, IMU_TOL);
- }
- // should use contact detector for these timing stuff
- else if (world->GetSimTime().Double() >= 1.2 &&
- world->GetSimTime().Double() <= 1.84)
- {
- // on ramp
- // ...hm, not much can be said in simple terms, leave out for now.
- }
- else if (world->GetSimTime().Double() >= 1.85)
- {
- // on the ground
- double imuMag = imuLinearAccel.GetLength();
- double gMag = g.GetLength();
- EXPECT_NEAR(imuMag, gMag, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.y, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.z, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.y, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.z, 0, IMU_TOL);
- }
- }
-
- // frictionless ball
- // before contact
- // sensor linear accel [0 0 0]
- // Link::GetRelativeLinearAccel() [0 0 -9.81]
- // Link::GetWorldLinearAccel() [0 0 -9.81]
- // @T=1.2 sec, on ramp - constant
- // sensor linear accel [4.12742 0 7.55518]
- // Link::GetRelativeLinearAccel() [4.12742 0 -2.25482]
- // Link::GetWorldLinearAccel() [4.12742 0 -2.25482]
- // @T=1.8 sec, on ground - constant
- // sensor linear accel [0 0 9.81]
- // Link::GetRelativeLinearAccel() [0 0 0]
- // Link::GetWorldLinearAccel() [0 0 0]
- {
- // get states from imu sensor
- math::Vector3 imuLinearAccel =
- ballNoFrictionImu->GetLinearAcceleration();
- // get states from link
- math::Vector3 relativeLinearAccel =
- ballNoFrictionModel->GetRelativeLinearAccel();
- math::Vector3 worldLinearAccel =
- ballNoFrictionModel->GetWorldLinearAccel();
-
- if (world->GetSimTime().Double() <= 1.0)
- {
- // freefall
- EXPECT_NEAR(imuLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(imuLinearAccel.y, 0, IMU_TOL);
- EXPECT_NEAR(imuLinearAccel.z, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.x, g.x, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.y, g.y, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.z, g.z, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.x, g.x, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.y, g.y, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.z, g.z, IMU_TOL);
- }
- else if (world->GetSimTime().Double() >= 1.3 &&
- world->GetSimTime().Double() <= 1.751)
- {
- // on the ramp
- const double rampAngle = 0.5;
- double gMag = g.GetLength();
- double imuMag = imuLinearAccel.GetLength();
- EXPECT_NEAR(imuMag, gMag*cos(rampAngle), IMU_TOL);
-
- double relMag = relativeLinearAccel.GetLength();
- EXPECT_NEAR(relMag, gMag*sin(rampAngle), IMU_TOL);
- double worMag = worldLinearAccel.GetLength();
- EXPECT_NEAR(worMag, gMag*sin(rampAngle), IMU_TOL);
- }
- else if (world->GetSimTime().Double() >= 1.8)
- {
- // on the ground
- double imuMag = imuLinearAccel.GetLength();
- double gMag = g.GetLength();
- EXPECT_NEAR(imuMag, gMag, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.y, 0, IMU_TOL);
- EXPECT_NEAR(relativeLinearAccel.z, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.x, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.y, 0, IMU_TOL);
- EXPECT_NEAR(worldLinearAccel.z, 0, IMU_TOL);
- }
- }
- }
-}
-
-TEST_P(ImuTest, ImuSensorTestWorld)
-{
- ImuSensorTestWorld(GetParam());
--}
--
--void ImuTest::Stationary_EmptyWorld(const std::string &_physicsEngine)
--{
-- // static models not fully working in simbody yet
-- if (_physicsEngine == "simbody")
-- {
-- gzerr << "Aborting test for Simbody, see issue #860.\n";
-- return;
-- }
--
-- Load("worlds/empty.world", true, _physicsEngine);
--
-- std::string modelName = "imu_model";
-- std::string imuSensorName = "imu_sensor";
-- math::Pose testPose(math::Vector3(0, 0, 0.05),
-- math::Quaternion(0.5, -1.0, 0.2));
--
-- SpawnImuSensor(modelName, imuSensorName, testPose.pos,
-- testPose.rot.GetAsEuler());
--
-- sensors::ImuSensorPtr imu =
-- boost::static_pointer_cast<sensors::ImuSensor>(
-- sensors::SensorManager::Instance()->GetSensor(imuSensorName));
--
- ASSERT_TRUE(imu);
- ASSERT_TRUE(imu != NULL);
-- imu->Init();
-- math::Vector3 rateMean, accelMean;
-- math::Quaternion orientation;
-- this->GetImuData(imu, 1, rateMean, accelMean, orientation);
--
-- EXPECT_NEAR(rateMean.x, 0.0, IMU_TOL);
-- EXPECT_NEAR(rateMean.y, 0.0, IMU_TOL);
-- EXPECT_NEAR(rateMean.z, 0.0, IMU_TOL);
--
-- math::Vector3 g;
-- this->GetGravity(testPose.rot, g);
-- EXPECT_NEAR(accelMean.x, -g.x, IMU_TOL);
-- EXPECT_NEAR(accelMean.y, -g.y, IMU_TOL);
-- EXPECT_NEAR(accelMean.z, -g.z, IMU_TOL);
--
-- // Orientation should be identity, since it is reported relative
-- // to reference pose.
-- EXPECT_NEAR(orientation.x, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.y, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.z, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.w, 1, IMU_TOL);
--}
--
--TEST_P(ImuTest, EmptyWorld)
--{
-- Stationary_EmptyWorld(GetParam());
--}
--
--void ImuTest::Stationary_EmptyWorld_Noise(const std::string &_physicsEngine)
--{
-- // static models not fully working in simbody yet
-- if (_physicsEngine == "simbody")
-- {
-- gzerr << "Aborting test for Simbody, see issue #860.\n";
-- return;
-- }
--
-- Load("worlds/empty.world", true, _physicsEngine);
--
-- std::string modelName = "imu_model";
-- std::string imuSensorName = "imu_sensor";
-- math::Pose testPose(math::Vector3(0, 0, 0.05),
-- math::Quaternion(0.3, -1.4, 2.0));
--
-- double rateNoiseMean = 1.0;
-- double rateNoiseStddev = 0.1;
-- double rateBiasMean = 0.0;
-- double rateBiasStddev = 0.0;
-- double accelNoiseMean = -10.0;
-- double accelNoiseStddev = 0.1;
-- double accelBiasMean = 0.0;
-- double accelBiasStddev = 0.0;
-- SpawnImuSensor(modelName, imuSensorName, testPose.pos,
-- testPose.rot.GetAsEuler(), "gaussian",
-- rateNoiseMean, rateNoiseStddev,
-- rateBiasMean, rateBiasStddev,
-- accelNoiseMean, accelNoiseStddev,
-- accelBiasMean, accelBiasStddev);
--
-- sensors::ImuSensorPtr imu =
-- boost::static_pointer_cast<sensors::ImuSensor>(
-- sensors::SensorManager::Instance()->GetSensor(imuSensorName));
--
- ASSERT_TRUE(imu);
- ASSERT_TRUE(imu != NULL);
-- imu->Init();
-- math::Vector3 rateMean, accelMean;
-- math::Quaternion orientation;
-- this->GetImuData(imu, 1000, rateMean, accelMean, orientation);
--
-- double d1, d2;
-- // Have to account for the fact that the bias might be sampled as positive
-- // or negative
-- d1 = fabs(rateMean.x - (rateNoiseMean + rateBiasMean));
-- d2 = fabs(rateMean.x - (rateNoiseMean - rateBiasMean));
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*rateNoiseStddev + 3*rateBiasStddev);
-- d1 = fabs(rateMean.y - (rateNoiseMean + rateBiasMean));
-- d2 = fabs(rateMean.y - (rateNoiseMean - rateBiasMean));
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*rateNoiseStddev + 3*rateBiasStddev);
-- d1 = fabs(rateMean.z - (rateNoiseMean + rateBiasMean));
-- d2 = fabs(rateMean.z - (rateNoiseMean - rateBiasMean));
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*rateNoiseStddev + 3*rateBiasStddev);
--
-- math::Vector3 g;
-- this->GetGravity(testPose.rot, g);
-- // Have to account for the fact that the bias might be sampled as positive
-- // or negative
-- d1 = fabs(accelMean.x - (accelNoiseMean + accelBiasMean) + g.x);
-- d2 = fabs(accelMean.x - (accelNoiseMean - accelBiasMean) + g.x);
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*accelNoiseStddev + 3*accelBiasStddev);
-- d1 = fabs(accelMean.y - (accelNoiseMean + accelBiasMean) + g.y);
-- d2 = fabs(accelMean.y - (accelNoiseMean - accelBiasMean) + g.y);
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*accelNoiseStddev + 3*accelBiasStddev);
-- d1 = fabs(accelMean.z - (accelNoiseMean + accelBiasMean) + g.z);
-- d2 = fabs(accelMean.z - (accelNoiseMean - accelBiasMean) + g.z);
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*accelNoiseStddev + 3*accelBiasStddev);
--
-- // Orientation should be identity, since it is reported relative
-- // to reference pose.
-- EXPECT_NEAR(orientation.x, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.y, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.z, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.w, 1, IMU_TOL);
--}
--
--TEST_P(ImuTest, EmptyWorldNoise)
--{
-- Stationary_EmptyWorld_Noise(GetParam());
--}
--
--void ImuTest::Stationary_EmptyWorld_Bias(const std::string &_physicsEngine)
--{
-- // static models not fully working in simbody yet
-- if (_physicsEngine == "simbody")
-- {
-- gzerr << "Aborting test for Simbody, see issue #860.\n";
-- return;
-- }
--
-- Load("worlds/empty.world", true, _physicsEngine);
--
-- std::string modelName = "imu_model";
-- std::string imuSensorName = "imu_sensor";
-- math::Pose testPose(math::Vector3(0, 0, 0.05),
-- math::Quaternion(-0.3, 0.5, 1.0));
--
-- double rateNoiseMean = 0.0;
-- double rateNoiseStddev = 0.0;
-- double rateBiasMean = 1.0;
-- double rateBiasStddev = 0.1;
-- double accelNoiseMean = 0.0;
-- double accelNoiseStddev = 0.0;
-- double accelBiasMean = 5.0;
-- double accelBiasStddev = 0.1;
-- SpawnImuSensor(modelName, imuSensorName, testPose.pos,
-- testPose.rot.GetAsEuler(), "gaussian",
-- rateNoiseMean, rateNoiseStddev,
-- rateBiasMean, rateBiasStddev,
-- accelNoiseMean, accelNoiseStddev,
-- accelBiasMean, accelBiasStddev);
--
-- sensors::ImuSensorPtr imu =
-- boost::static_pointer_cast<sensors::ImuSensor>(
-- sensors::SensorManager::Instance()->GetSensor(imuSensorName));
--
- ASSERT_TRUE(imu);
- ASSERT_TRUE(imu != NULL);
-- imu->Init();
-- math::Vector3 rateMean, accelMean;
-- math::Quaternion orientation;
-- this->GetImuData(imu, 1000, rateMean, accelMean, orientation);
--
-- double d1, d2;
-- // Have to account for the fact that the bias might be sampled as positive
-- // or negative
-- d1 = fabs(rateMean.x - (rateNoiseMean + rateBiasMean));
-- d2 = fabs(rateMean.x - (rateNoiseMean - rateBiasMean));
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*rateNoiseStddev + 3*rateBiasStddev);
-- d1 = fabs(rateMean.y - (rateNoiseMean + rateBiasMean));
-- d2 = fabs(rateMean.y - (rateNoiseMean - rateBiasMean));
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*rateNoiseStddev + 3*rateBiasStddev);
-- d1 = fabs(rateMean.z - (rateNoiseMean + rateBiasMean));
-- d2 = fabs(rateMean.z - (rateNoiseMean - rateBiasMean));
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*rateNoiseStddev + 3*rateBiasStddev);
--
-- math::Vector3 g;
-- this->GetGravity(testPose.rot, g);
-- // Have to account for the fact that the bias might be sampled as positive
-- // or negative
-- d1 = fabs(accelMean.x - (accelNoiseMean + accelBiasMean) + g.x);
-- d2 = fabs(accelMean.x - (accelNoiseMean - accelBiasMean) + g.x);
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*accelNoiseStddev + 3*accelBiasStddev);
-- d1 = fabs(accelMean.y - (accelNoiseMean + accelBiasMean) + g.y);
-- d2 = fabs(accelMean.y - (accelNoiseMean - accelBiasMean) + g.y);
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*accelNoiseStddev + 3*accelBiasStddev);
-- d1 = fabs(accelMean.z - (accelNoiseMean + accelBiasMean) + g.z);
-- d2 = fabs(accelMean.z - (accelNoiseMean - accelBiasMean) + g.z);
-- EXPECT_NEAR(0.0, std::min(d1, d2),
-- 3*accelNoiseStddev + 3*accelBiasStddev);
--
-- // Orientation should be identity, since it is reported relative
-- // to reference pose.
-- EXPECT_NEAR(orientation.x, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.y, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.z, 0, IMU_TOL);
-- EXPECT_NEAR(orientation.w, 1, IMU_TOL);
--}
--
--TEST_P(ImuTest, EmptyWorldBias)
--{
-- Stationary_EmptyWorld_Bias(GetParam());
--}
--
--INSTANTIATE_TEST_CASE_P(PhysicsEngines, ImuTest, PHYSICS_ENGINE_VALUES);
--
--int main(int argc, char **argv)
--{
-- // Set a specific seed to avoid occasional test failures due to
-- // statistically unlikely, but possible results.
-- math::Rand::SetSeed(42);
-- ::testing::InitGoogleTest(&argc, argv);
-- return RUN_ALL_TESTS();
--}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/gazebo.git
More information about the debian-science-commits
mailing list