Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BULLET] Making GetContactsFromLastStepFeature optional in Collision Features #690

Merged
merged 6 commits into from
Mar 19, 2021

Conversation

Lobotuerk
Copy link
Collaborator

@Lobotuerk Lobotuerk commented Mar 17, 2021

🎉 New feature

Makes GetContactFromLastStepFeture not a requirement for Collisions in IGN-Physics. Fixes gazebosim/gz-physics#208 (comment)

Summary

Test it

Checklist

  • Signed all commits for DCO
  • Added tests
  • Added example and/or tutorial
  • Updated documentation (as needed)
  • Updated migration guide (as needed)
  • codecheck passed (See contributing)
  • All tests passed (See test coverage)
  • While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

Signed-off-by: Tomas Lorente <[email protected]>
Signed-off-by: Tomas Lorente <[email protected]>
@Lobotuerk Lobotuerk requested a review from azeey March 17, 2021 18:24
@Lobotuerk Lobotuerk changed the title [BULLET[ Making GetContactsFromLastStepFeature optinal in Collision Features [BULLET] Making GetContactsFromLastStepFeature optinal in Collision Features Mar 17, 2021
@github-actions github-actions bot added the 🔮 dome Ignition Dome label Mar 17, 2021
@chapulina chapulina added enhancement New feature or request physics Involves Ignition Physics labels Mar 17, 2021
@azeey
Copy link
Contributor

azeey commented Mar 17, 2021

This is not compiling mainly because of https://github.com/ignitionrobotics/ign-gazebo/blob/f5a362cf579ef23d2cd9d5ec1cd2f856410db3c3/src/systems/physics/Physics.cc#L2202-L2203

The EntityFeatureMap::Get expects an EntityPtr with required/minimum FeatureList. In this snippet of code contact.collision1 has ContactFeatureList, which is not the required feature in EntityCollisionMap. Ideally, this should downcast cast to the entity with the required FeatureList, but there's an implicit conversion issue that causes an ambiguity in the compiler: the compiler is unable to decide whether to call EntityFeatureMap::Get(const Entity &) or EntityFeatureMap::Get(const RequiredEntityPtr &_physEntity). The temporary solution is to manually create an ShapePtr with the required features from contact.collision1 before calling EntityFeatureMap::Get.

diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc
index 9b419b8c..5ce52614 100644
--- a/src/systems/physics/Physics.cc
+++ b/src/systems/physics/Physics.cc
@@ -313,3 +313,3 @@ class ignition::gazebo::systems::PhysicsPrivate
   public: using ShapePtrType = ignition::physics::ShapePtr<
-            ignition::physics::FeaturePolicy3d, ContactFeatureList>;
+            ignition::physics::FeaturePolicy3d, CollisionFeatureList>;
 
@@ -432,2 +432,3 @@ class ignition::gazebo::systems::PhysicsPrivate
             CollisionFeatureList,
+            ContactFeatureList,
             CollisionMaskFeatureList,
@@ -2201,5 +2202,6 @@ void PhysicsPrivate::UpdateCollisions(EntityComponentManager &_ecm)
     const auto &contact = contactComposite.Get<WorldShapeType::ContactPoint>();
-    auto coll1Entity = this->entityCollisionMap.Get(contact.collision1);
-    auto coll2Entity = this->entityCollisionMap.Get(contact.collision2);
-
+    auto coll1Entity =
+        this->entityCollisionMap.Get(ShapePtrType(contact.collision1));
+    auto coll2Entity =
+        this->entityCollisionMap.Get(ShapePtrType(contact.collision2));

I'll continue to think about a way to fix the implicit conversion problem, but I don't think it's needed for this PR.

@Blast545 Blast545 changed the title [BULLET] Making GetContactsFromLastStepFeature optinal in Collision Features [BULLET] Making GetContactsFromLastStepFeature optional in Collision Features Mar 18, 2021
Signed-off-by: Tomas Lorente <[email protected]>
@codecov
Copy link

codecov bot commented Mar 18, 2021

Codecov Report

Merging #690 (0a38e38) into ign-gazebo4 (302f5ed) will decrease coverage by 11.90%.
The diff coverage is 68.87%.

❗ Current head 0a38e38 differs from pull request most recent head 7525bc4. Consider uploading reports for the commit 7525bc4 to get more accurate results
Impacted file tree graph

@@               Coverage Diff                @@
##           ign-gazebo4     #690       +/-   ##
================================================
- Coverage        77.37%   65.46%   -11.91%     
================================================
  Files              217      235       +18     
  Lines            12217    17019     +4802     
================================================
+ Hits              9453    11142     +1689     
- Misses            2764     5877     +3113     
Impacted Files Coverage Δ
include/ignition/gazebo/EntityComponentManager.hh 100.00% <ø> (ø)
include/ignition/gazebo/rendering/SceneManager.hh 100.00% <ø> (ø)
.../plugins/component_inspector/ComponentInspector.cc 7.29% <0.00%> (-1.32%) ⬇️
.../plugins/component_inspector/ComponentInspector.hh 28.57% <ø> (ø)
src/systems/diff_drive/DiffDrive.hh 100.00% <ø> (ø)
...rc/systems/performer_detector/PerformerDetector.hh 100.00% <ø> (ø)
src/systems/physics/Physics.hh 100.00% <ø> (ø)
src/systems/scene_broadcaster/SceneBroadcaster.hh 100.00% <ø> (ø)
src/systems/sensors/Sensors.cc 74.75% <0.00%> (ø)
src/rendering/SceneManager.cc 22.69% <8.08%> (ø)
... and 52 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 778ff85...7525bc4. Read the comment docs.

Copy link
Contributor

@azeey azeey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The failing test on Ubuntu is also failing on our ign-gazebo4 CI https://build.osrfoundation.org/job/ignition_gazebo-ci-ign-gazebo4-bionic-amd64/54/, so it's not caused by this PR.

src/systems/physics/Physics.cc Show resolved Hide resolved
Copy link
Contributor

@Blast545 Blast545 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Collaborator

@gonzodepedro gonzodepedro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Lobotuerk Lobotuerk merged commit a84ec51 into ign-gazebo4 Mar 19, 2021
@Lobotuerk Lobotuerk deleted the lobotuerk/contactFeature branch March 19, 2021 19:58
scpeters added a commit that referenced this pull request May 19, 2021
* 🎈 3.8.0 (#688)

Signed-off-by: Louise Poubel <[email protected]>

* Make it so joint state publisher is quieter (#696)

Signed-off-by: Michael Carroll <[email protected]>

* [BULLET] Making GetContactsFromLastStepFeature optional in Collision Features (#690)

* GetContactsFromLastStepFeature made optional

Signed-off-by: Tomas Lorente <[email protected]>

Co-authored-by: Addisu Z. Taddese <[email protected]>

* Add test for thermal object temperatures below 0 kelvin (#621)

Signed-off-by: Ashton Larkin <[email protected]>

* Scenebroadcaster sensors (#698)

* Add sensors to scene broadcaster

Signed-off-by: Nate Koenig <[email protected]>

* Update src/systems/scene_broadcaster/SceneBroadcaster.cc

Co-authored-by: Michael Carroll <[email protected]>

* Fix codecheck

Signed-off-by: Nate Koenig <[email protected]>

Co-authored-by: Nate Koenig <[email protected]>
Co-authored-by: Michael Carroll <[email protected]>

* Fix diffuse and ambient values for ackermann example (#707)

Signed-off-by: Ammaar Solkar <[email protected]>

* 🎈 5.0.0 (#731)

Signed-off-by: Louise Poubel <[email protected]>

* Support configuring particle scatter ratio in particle emitter system (#674)

* set particle scatter ratio through sdf

Signed-off-by: Ian Chen <[email protected]>

* address feedback

Signed-off-by: Ian Chen <[email protected]>

* add todo note about merging forward

Signed-off-by: Ian Chen <[email protected]>

Co-authored-by: Ashton Larkin <[email protected]>

* Update PlaybackScrubber description (#733)

Signed-off-by: Ammaar Solkar <[email protected]>

* Iterate through changed links only in UpdateSim (#678)

Signed-off-by: Ashton Larkin <[email protected]>

* Do not pass -Wno-unused-parameter to MSVC compiler (#716)

Signed-off-by: Silvio Traversaro <[email protected]>

* Use Protobuf_IMPORT_DIRS instead of PROTOBUF_IMPORT_DIRS for compatibility with Protobuf CMake config (#715)

Signed-off-by: Silvio Traversaro <[email protected]>

* Fix component inspector shutdown crash (#724)

Signed-off-by: Louise Poubel <[email protected]>

Co-authored-by: Alejandro Hernández Cordero <[email protected]>

* Validate step size and RTF parameters (#740)

Only set them if they are strictly positive.

Signed-off-by: Luca Della Vedova <[email protected]>

* Fix compute_rtfs arguments (#737)

Signed-off-by: Caio Amaral <[email protected]>

* Fixed collision visual bounding boxes (#746)

Signed-off-by: Jenn Nguyen <[email protected]>

* Fix CMakelists.txt merge

Signed-off-by: Nate Koenig <[email protected]>

* ECM's ChangedState gets message with modified components (#742)

* ecm's ChangedState to contain modified components

Signed-off-by: Jenn Nguyen <[email protected]>

* updated log_system test

Signed-off-by: Jenn Nguyen <[email protected]>

* removed unnecessary calls

Signed-off-by: Jenn Nguyen <[email protected]>

Co-authored-by: Ian Chen <[email protected]>

* fixed particle emitter forward playback (#745)

Signed-off-by: Jenn Nguyen <[email protected]>

* Merge pull request #730 from ignitionrobotics/particle_emitter

Particle emitter based on SDF

* 4 7 0 prep (#755)

* Prepare for 4.7.0

Signed-off-by: Nate Koenig <[email protected]>

* Added placeholder

Signed-off-by: Nate Koenig <[email protected]>

Co-authored-by: Nate Koenig <[email protected]>

* Fix 'invalid animation update data' msg for actors (#754)

Signed-off-by: Ashton Larkin <[email protected]>

* Update benchmark comparison instructions (#766) (#766)

Signed-off-by: Ashton Larkin <[email protected]>

* [DiffDrive] add enable/disable (#772)

* add enable/disable diffdrive

Signed-off-by: Guillaume Doisy <[email protected]>

* remove debug

Signed-off-by: Guillaume Doisy <[email protected]>

* do not subscribe to enable if topic is empty

Signed-off-by: Guillaume Doisy <[email protected]>

* add test

Signed-off-by: Guillaume Doisy <[email protected]>

* lint and style

Signed-off-by: Guillaume Doisy <[email protected]>

* change enable type to bool and renamed to enabled

Signed-off-by: Guillaume Doisy <[email protected]>

* Add odometry publisher system (#547)

* Create Initial Odometry Publisher system plugin

Add code for initial plugin that gets position from Pose component and
calculates velocities based on rolling mean from displacement data.

Signed-off-by: Maganty Rushyendra <[email protected]>

* Remove Linear and Angular Velocity components

Also renames frames in Odometry msg to include model name, and makes
various style changes.

Signed-off-by: Maganty Rushyendra <[email protected]>

* Get World pose instead of pose of robot base frame

Signed-off-by: Maganty Rushyendra <[email protected]>

* Add documentation for variables and functions

Includes minor stylistic changes.

Signed-off-by: Maganty Rushyendra <[email protected]>

* Check for valid odomTopic and update copyright year

Signed-off-by: Maganty Rushyendra <[email protected]>

* Add tests for OdometryPublisherSystem and fix velocity calculation bug

Swap X and Y linear velocities when calculating odometry velocities
relative to robotBaseFrame.

Signed-off-by: Maganty Rushyendra <[email protected]>

Co-authored-by: ahcorde <[email protected]>

* Patch particle emitter2 service (#777)

* Patch particle emitter2 service

Signed-off-by: Nate Koenig <[email protected]>

* Remove condition variable

Signed-off-by: Nate Koenig <[email protected]>

* Set emitter frame and relative pose

Signed-off-by: Nate Koenig <[email protected]>

Co-authored-by: Nate Koenig <[email protected]>

* Preparing for 4.8.0 release (#780)

Signed-off-by: Nate Koenig <[email protected]>

Co-authored-by: Nate Koenig <[email protected]>

* 👩‍🌾 Enable Focal CI (#646)

Signed-off-by: Louise Poubel <[email protected]>

Co-authored-by: Michael Carroll <[email protected]>

* [TPE] Support setting individual link velocity  (#427)

Signed-off-by: claireyywang <[email protected]>
Signed-off-by: Ian Chen <[email protected]>

Co-authored-by: Ian Chen <[email protected]>
Co-authored-by: Louise Poubel <[email protected]>

* Don't store duplicate ComponentTypeId in ECM (#751)

Signed-off-by: Louise Poubel <[email protected]>

* Feature/hydrodynamics (#749)

Implement hydrodynamics and thruster plugin.

Signed-off-by: Arjo Chakravarty <[email protected]>
Co-authored-by: Mabel Zhang <[email protected]>
Co-authored-by: Carlos Agüero <[email protected]>

* Fix macOS build: components::Name in benchmark (#784)

Signed-off-by: Louise Poubel <[email protected]>

Co-authored-by: Steve Peters <[email protected]>

* Fix ColladaExporter submesh index bug (#763)

Signed-off-by: Jorge Perez <[email protected]>

* 👩‍🌾 Fix Windows build and some warnings (#782)

Signed-off-by: Louise Poubel <[email protected]>

Co-authored-by: Alejandro Hernández Cordero <[email protected]>

* Prevent crash on Plotting plugin with mutex (#747)

Signed-off-by: Louise Poubel <[email protected]>

* Bump ign-physics version to 3.2 (#792)

Signed-off-by: Louise Poubel <[email protected]>

* Bump to ign-msgs 7.1 / sdformat 11.1, Windows fixes (#758)

Signed-off-by: Louise Poubel <[email protected]>

* Util: Use public API from libsdformat for detecting non-file source (#794)

Signed-off-by: Eric Cousineau <[email protected]>

* Fix included nested model expansion in SDF generation (#768)

* fixed included nested model expansion

Signed-off-by: Jenn Nguyen <[email protected]>

* added resource path to test

Signed-off-by: Jenn Nguyen <[email protected]>

* use orig URIs & support multi level nesting

Signed-off-by: Jenn Nguyen <[email protected]>

* save fuel version when enabled

Signed-off-by: Jenn Nguyen <[email protected]>

* retrieve uri from map

Signed-off-by: Jenn Nguyen <[email protected]>

* copy included element

Signed-off-by: Jenn Nguyen <[email protected]>

* clear attributes before copying include element

Signed-off-by: Jenn Nguyen <[email protected]>

* Map canonical links to their models (#736)

Signed-off-by: Ashton Larkin <[email protected]>

* ColladaExporter, export submesh selected (#802)

* Export only submesh if selected
* Add test case for the PR
* Attempting a unified solution

Signed-off-by: Jorge Perez <[email protected]>
Co-authored-by: Nate Koenig <[email protected]>

Co-authored-by: Michael Carroll <[email protected]>
Co-authored-by: Jose Tomas Lorente <[email protected]>
Co-authored-by: Addisu Z. Taddese <[email protected]>
Co-authored-by: Ashton Larkin <[email protected]>
Co-authored-by: Nate Koenig <[email protected]>
Co-authored-by: Nate Koenig <[email protected]>
Co-authored-by: Ammaar Solkar <[email protected]>
Co-authored-by: Ian Chen <[email protected]>
Co-authored-by: Ashton Larkin <[email protected]>
Co-authored-by: Silvio Traversaro <[email protected]>
Co-authored-by: Alejandro Hernández Cordero <[email protected]>
Co-authored-by: Luca Della Vedova <[email protected]>
Co-authored-by: Caio Amaral <[email protected]>
Co-authored-by: Jenn Nguyen <[email protected]>
Co-authored-by: G.Doisy <[email protected]>
Co-authored-by: Rushyendra Maganty <[email protected]>
Co-authored-by: Claire Wang <[email protected]>
Co-authored-by: Arjo Chakravarty <[email protected]>
Co-authored-by: Mabel Zhang <[email protected]>
Co-authored-by: Carlos Agüero <[email protected]>
Co-authored-by: Steve Peters <[email protected]>
Co-authored-by: Jorge Perez <[email protected]>
Co-authored-by: Eric Cousineau <[email protected]>
Co-authored-by: Jorge Perez <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔮 dome Ignition Dome enhancement New feature or request physics Involves Ignition Physics
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants