gazebosim / gazebo-classic

Gazebo classic. For the latest version, see https://github.com/gazebosim/gz-sim
http://classic.gazebosim.org/
Other
1.16k stars 476 forks source link

DART joint springs are partially working. #975

Open osrf-migration opened 10 years ago

osrf-migration commented 10 years ago

Original report (archived issue) by Jeongseok Lee (Bitbucket: jlee02, GitHub: jslee02).


I've enabled parts of the joint spring test in 3b120333e993db3686f8b3e654819e6244096568. Joint limit stiffness is not yet working, and the joint energy conservation has lower accuracy than ODE and simbody.

osrf-migration commented 10 years ago

Original comment by Jeongseok Lee (Bitbucket: jlee02, GitHub: jslee02).


Implemented by https://bitbucket.org/jlee02/gazebo_dart/commits/ff68bbb52e6428d13486b6ddbbd3c59b95892154.

osrf-migration commented 10 years ago

Original comment by Jeongseok Lee (Bitbucket: jlee02, GitHub: jslee02).


osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


Requires unreleased dart code

osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


The commit you mentioned above depends on one other

osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


@jslee02 Can you merge the latest from osrf/gazebo branch gazebo_dart back to your fork? I tried testing your code, but it's not compiling. I think @hsu made some changes after you made the initial fix for the joint springs.

Also, we have to make sure that adding support for the springs does not cause compilation problems for people using older versions of dart.

osrf-migration commented 10 years ago

Original comment by Jeongseok Lee (Bitbucket: jlee02, GitHub: jslee02).


I merged branch gazebo_dart (it is closed now) back to my fork gazebo_3.0_dart_4.0 branch. It is compiling with dart inverse_kinematics branch. It will be merged back to master branch soon.

Also I split gazebo_dart branch into gazebo_2.2_dart_3.0 and gazebo_3.0_dart_4.0 to keep supporting DART 3.0 for Gazebo 2.2.

osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


I've enabled parts of the joint spring test in 3b120333e993db3686f8b3e654819e6244096568. Joint limit stiffness is not yet working, and the joint energy conservation has lower accuracy than ODE and simbody.

osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


osrf-migration commented 10 years ago

Original comment by John Hsu (Bitbucket: hsu, GitHub: hsu).


@jslee02 Do you know why the accuracy is lower? Is it the underlying method? Thanks.

osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


Somehow the SpringDamperTest is broken again with dart 4.1. The energy checks at joint_test.cc:352 are failing and eventually nan's are generated, which causes the test to proceed very slowly. The following patch prevents the nan's but doesn't fix the energy problem:

diff -r ea922e4bc7730589ac07fa2663d9828c2641ac3a test/worlds/spring_damper_test.world
--- a/test/worlds/spring_damper_test.world  Mon Jul 14 16:20:34 2014 -0700
+++ b/test/worlds/spring_damper_test.world  Mon Jul 14 16:58:52 2014 -0700
@@ -625,7 +625,7 @@
         <pose>0.0 0.0 0.0 0.0 0.0 0.0</pose>
         <axis>
           <limit>
-            <lower>-1.0</lower>
+            <lower>-0.1</lower>
             <upper>1.0</upper>
           </limit>
           <xyz>0.0 0.0 1.0</xyz>

It was tricky to notice this because INTEGRATION_joint_test requires the latest sdformat version (try building on trusty with libsdformat2-dev-prerelease installed). Then run the test as follows:

$ test/integration/INTEGRATION_joint_test --gtest_filter="*/3"

If there's not an easy fix for this, I'll have to disable the test again.

UPDATE:

By further disabling the energy check, I see that the only other test failure is on line 384:

diff -r ea922e4bc7730589ac07fa2663d9828c2641ac3a test/integration/joint_test.cc
--- a/test/integration/joint_test.cc    Mon Jul 14 16:20:34 2014 -0700
+++ b/test/integration/joint_test.cc    Mon Jul 14 17:02:50 2014 -0700
@@ -349,7 +349,7 @@
               << ", see #975"
               << std::endl;
       }
-      EXPECT_NEAR(energy / energyPluginImplicit0, 1.0, 2e-2);
+      //EXPECT_NEAR(energy / energyPluginImplicit0, 1.0, 2e-2);
     }
     else
     {
[ RUN      ] PhysicsEngines/JointTest.SpringDamperTest/3
[Dbg] [joint_test.hh:59] Params: (0x473c00 pointing to "dart", 0x4766e1 pointing to "")
[Msg] Waiting for master.
[Msg] Connected to gazebo master @ http://127.0.0.1:11345
[Msg] Publicized address: 192.168.1.182
[Wrn] [Publisher.cc:131] Queue limit reached for topic /gazebo/default/pose/local/info, deleting message. This warning is printed only once.
[Dbg] [ServerFixture.cc:144] ServerFixture load in 0.8 seconds, timeout after 600 seconds
[Err] [joint_test.cc:347] dart has reduced accuracy for spring energy conservation, see #975
[Err] [joint_test.cc:373] dart doesn't support joint limit stiffness, see #975
gazebo/test/integration/joint_test.cc:384: Failure
Value of: 17
Expected: cyclesPluginImplicit
Which is: 1
[Dbg] [ServerFixture.cc:95] ServerFixture::Unload
[  FAILED  ] PhysicsEngines/JointTest.SpringDamperTest/3, where GetParam() = (0x473c00 pointing to "dart", 0x4766e1 pointing to "") (6317 ms)
osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


@jslee02 let me know if you have any ideas about how to fix this part of the test.

osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


I also see the following message several times:

ODE Message 3: LCP internal error, s <= 0 (s=0.0000e+00)
osrf-migration commented 10 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


@karenliu @jslee02

Earlier in this thread I wrote that this test was working with dart 4.0. I just tested today, and it looks like the test is never worked with dart 4.0. I was confused because the spring test changed with gazebo pull request #1117. I thought that pull request had been carefully tested with dart 4.0, but I was mistaken (the test was failing in Jenkins due to using the wrong version of sdformat).

At any rate, the test is partially working, so I think it won't be too hard to fix. Several joints with implicit stiffness/damping defined in sdf tags are working, while the failing joint has its stiffness set by a plugin. Perhaps there is a timing issue with when the plugin sets the stiffness?

osrf-migration commented 7 years ago

Original comment by Nate Koenig (Bitbucket: Nathan Koenig).