<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://pybullet.org/Bullet/phpBB3/app.php/feed/topic/8719" />

	<title>Real-Time Physics Simulation Forum</title>
	
	<link href="https://pybullet.org/Bullet/phpBB3/index.php" />
	<updated>2013-01-02T21:02:36+00:00</updated>

	<author><name><![CDATA[Real-Time Physics Simulation Forum]]></name></author>
	<id>https://pybullet.org/Bullet/phpBB3/app.php/feed/topic/8719</id>

		<entry>
		<author><name><![CDATA[lgchemer]]></name></author>
		<updated>2013-01-02T21:02:36+00:00</updated>

		<published>2013-01-02T21:02:36+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=29586#p29586</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=29586#p29586"/>
		<title type="html"><![CDATA[Impulse accumulation issue]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=29586#p29586"><![CDATA[
Hello.<br>I have a quick question on a simple contact simulation using the impulse based simulation method for rigid bodies (using the sequential impulse method).<br>This may look like a soft contact, but I don't expect any robust or accurate result on the deformation, but just would like to see if the correct impulse could be calculated.<br><br>For example, I'd like to simulate a very simple yet interesting problem as follows:<br>There are two cubic boxes vertically stacked on the ground ('T'op one and 'B'ottom one as shown below):<br>__<br>|T|<br>----<br>|B|<br>----------- Ground<br><br>After stacked them, a compression test is performed by moving down the 'T' box by a "constant" vertical velocity, say 1mm/min.<br>This implies the change of the relative velocity between the boxes will be kept constant throughout the simulation (because they are in contact).<br>At the beginning of each time step, the vertical velocity of 'T' and 'B' will be the same as 1mm/min (after some simulation time has elapsed with a full contact between them), but the first contact resolution between 'B' and Ground will make the the velocity of 'B' to ~0, so the relative collision velocity between 'T' and 'B' will be ~1mm/min, which will generate an impulse (to make the velocity of 'B' to 1mm/min again), to wit,<br>Impulse (calculated at every time step) = collision mass x (change of the relative velocity)<br><br>Therefore, an exactly same amount of Impulse will be accumulated at every time step, and the total (accumulated) impulse at contact points will linearly increase.<br><br>However, I recently found a sequential impulse solver (such as BOX2D, and also in Bullet Erin Catto had implemented for) doesn't give a consistent impulse value, which looks depending on the time step size chosen.<br><br>First, I choose a time step, say 1/1000 sec.<br>For every time step, the code calculates the impulse at frequency of 1000, and will accumulate the impulse at the contact points as such.<br><br>For another simulation, I chose a time step, 10 times larger than 1/1000 sec, i.e., 1/100 sec.<br>In this case, the code will accumulate the impulse much slower (by 1/10), the total (accumulated) impulse will be smaller than the first simulation after a same time elapsed. <br><br>For those simulations, the impulse calculated at each time step is the same, but the total impulse accumulated will be simply different due to the sampling rate.<br><br>I know this question might be absurd, but just wonder if this is inherent limitation, or if there is any solution for a reasonably correct value independent of time step chosen.<br><br>Thanks much ahead!!<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=9034">lgchemer</a> — Wed Jan 02, 2013 9:02 pm</p><hr />
]]></content>
	</entry>
	</feed>
