From: Steve B. <sb...@cs...> - 2008-06-09 16:56:54
|
Hi Joe, You have raised some very good questions. I'll do my best to answer them. 1) Right now dvc has no notion of a spring or damper. If you wish to attach a spring-damper to a body, the only way is through the forceController class. What this means is that you the user will be forced to compute the spring-damper forces as a function of the body's state. This is actually how the mouse interaction works. We attach one end of a virtual spring-damper to the body and the other to the mouse pointer. This spring force is then added to the timestepper code through the applied force vector. 2) Pat is right, we currently do not support joint dissipation directly through the xml file (we should and if I have time I'll try to hack that in). I don't know of a way to add Coulomb friction to a joint if the joint is abstracted as a bilateral constraint. Viscous friction, however, is possible. The way you can do it is by attaching a forceController to the body with the joint, and computing the damping force. Here is what I would do for revolute joint damping. a) attach a forceController to the body with a revolute joint b) In the GetForce function of the ForceController i) get the angular velocity of the body attached to the revolute joint (vel[2]) ii) set outForce[2] = -C*vel[2] where C is your damping coefficient. Force is a bad name for this function, it really should be called getWrench since the 3 dimensional value you are returning is the force and moment. For dry friction in a joint, I think you would have to model the joint geometrically and drop the bilateral representation. If you know of a way to add dry friction into the bilateral joint representation I would love to hear it, because (to the best of my knowledge) this would be something that no one else is doing. 3) This is something that Pat and I have talked about in the past without an ideal solution. The best idea we currently have (un-implemented of course) is to keep the global value (like the current set up), but to allow the user to specify a specific value at a per-body-pair level. If no value is specified by the user, then the global value is used. If this would be sufficient for what you need let us know, because that shouldn't be very hard to do. If you can think of a better solution, also please let me know. I hope this answers all of your questions, feel free to email me back if anything is unclear or if you have more questions. I have also copied this message to the dvc-devel mailing list so a public copy is archived. Thanks, --Steve Joe Hays wrote: > Steve, > > I've learned quite a bit in the last two weeks or so about DVC. With > Pat's help I've successfully made a double pendulum, added a feedback > controller to it and observed closed-loop behavior (even though my > current controller design sucks... I know the loop is closed and > that's what was important to me.) > > The following questions are outstanding in my mind. (Pat has indicated > that you're the right person to elaborate on these topics. If you have > any light you can shed on these topics I'd appreciate it.) > > *How to make the classic "mass-spring-damper" model?* > From what I've seen so far DVC's unique strength is in solving the > Coulomb Friction and Impact dynamics for a rigid-body-system. However, > I've not seen how to create some of the classical models to be > simulated (e.g. the "mass-spring-damper"). Is there a way I can define > general elements such as a spring, with either linear or nonlinear > constitutive law, as well as a damper (such as a viscous damper which > is either linear or non-linear)? > > *How to add dissipation (i.e. viscous and/or Coulomb friction, > preferably both) to joints?* > Pat indicated I need to 'hack' this in as their is no direct facility > for this. Can you give me some guidance on this? > > *Unique friction and restitution coefficients?* > From what I've learned so far both the friction and collision > restitution coefficients are global for the scene. Do you have plans, > back door entry points, or hacks, to allow these to be defined for > each body combination pair? (This is less important for now but will > become important to me in the future...) > > I'm enjoying learning your system. Congratulations on the progress > you've made thus far with DVC, and, thanks for the support. > > Joe > > > |
From: Joe H. <hay...@gm...> - 2008-06-09 20:45:02
|
Thanks Steve. I appreciate the support. *"Right now dvc has no notion of a spring or damper." * Not that I'm sufficiently familiar with the code nor have I looked into the feasibility of this, but, it seems if one were to add a new body type, say 'energetic', along with 'dynamical', 'kinematic', and 'obstacle' one could define elements such as a spring and/or damper such that their wretches on the system are implicitly handled by the solver... Since we're dreaming... it would be good if this was a plug-in interface such that new body types could be added to the system in such a manner that they were implicitly handled by the solver. I'm sure this falls into the long list of 'wouldn't it be nice if...". Anyway, you've told me what I needed to know and will hopefully play with it a bit to try it out. *"If no value is specified by the user, then the global value is used."* Seems like a reasonable solution. This gives the ability to specifically define the coeffs. for specific contacts of interest and the ease of assuming a global setting for the rest. Joe On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard <sb...@cs...> wrote: > Hi Joe, > You have raised some very good questions. I'll do my best to answer them. > > 1) Right now dvc has no notion of a spring or damper. If you wish to > attach a spring-damper to a body, the only way is through the > forceController class. What this means is that you the user will be forced > to compute the spring-damper forces as a function of the body's state. This > is actually how the mouse interaction works. We attach one end of a virtual > spring-damper to the body and the other to the mouse pointer. This spring > force is then added to the timestepper code through the applied force > vector. > > > 2) Pat is right, we currently do not support joint dissipation directly > through the xml file (we should and if I have time I'll try to hack that > in). I don't know of a way to add Coulomb friction to a joint if the joint > is abstracted as a bilateral constraint. Viscous friction, however, is > possible. The way you can do it is by attaching a forceController to the > body with the joint, and computing the damping force. Here is what I would > do for revolute joint damping. > a) attach a forceController to the body with a revolute joint > b) In the GetForce function of the ForceController > i) get the angular velocity of the body attached to the revolute joint > (vel[2]) > ii) set outForce[2] = -C*vel[2] > where C is your damping coefficient. > Force is a bad name for this function, it really should be called getWrench > since the 3 dimensional value you are returning is the force and moment. > > For dry friction in a joint, I think you would have to model the joint > geometrically and drop the bilateral representation. If you know of a way > to add dry friction into the bilateral joint representation I would love to > hear it, because (to the best of my knowledge) this would be something that > no one else is doing. > > 3) This is something that Pat and I have talked about in the past without > an ideal solution. The best idea we currently have (un-implemented of > course) is to keep the global value (like the current set up), but to allow > the user to specify a specific value at a per-body-pair level. If no value > is specified by the user, then the global value is used. If this would be > sufficient for what you need let us know, because that shouldn't be very > hard to do. If you can think of a better solution, also please let me know. > > I hope this answers all of your questions, feel free to email me back if > anything is unclear or if you have more questions. I have also copied this > message to the dvc-devel mailing list so a public copy is archived. > > Thanks, > > --Steve > > > > Joe Hays wrote: > >> Steve, >> >> I've learned quite a bit in the last two weeks or so about DVC. With Pat's >> help I've successfully made a double pendulum, added a feedback controller >> to it and observed closed-loop behavior (even though my current controller >> design sucks... I know the loop is closed and that's what was important to >> me.) >> >> The following questions are outstanding in my mind. (Pat has indicated >> that you're the right person to elaborate on these topics. If you have any >> light you can shed on these topics I'd appreciate it.) >> >> *How to make the classic "mass-spring-damper" model?* >> From what I've seen so far DVC's unique strength is in solving the Coulomb >> Friction and Impact dynamics for a rigid-body-system. However, I've not seen >> how to create some of the classical models to be simulated (e.g. the >> "mass-spring-damper"). Is there a way I can define general elements such as >> a spring, with either linear or nonlinear constitutive law, as well as a >> damper (such as a viscous damper which is either linear or non-linear)? >> >> *How to add dissipation (i.e. viscous and/or Coulomb friction, preferably >> both) to joints?* >> Pat indicated I need to 'hack' this in as their is no direct facility for >> this. Can you give me some guidance on this? >> >> *Unique friction and restitution coefficients?* >> From what I've learned so far both the friction and collision restitution >> coefficients are global for the scene. Do you have plans, back door entry >> points, or hacks, to allow these to be defined for each body combination >> pair? (This is less important for now but will become important to me in the >> future...) >> >> I'm enjoying learning your system. Congratulations on the progress you've >> made thus far with DVC, and, thanks for the support. >> >> Joe >> >> >> >> |
From: Steve B. <sb...@cs...> - 2008-06-09 23:33:24
|
Joe, To follow up the first email, damping of the joints was not as easy to do as I initially thought it would have been because of some technical issues. I spent the time to add the damping terms to the bilateral constraints directly, so this should hopefully be easy to use now. I just committed the changes and you can see the pendulum examples Pat committed earlier for an example of how to add damping to joints. It should be as simple as now adding <pref name='dampingCoef' type='double' value='10'/> inside the joint description in the xml file. I like the sound of adding a new "energetic" body type. Feel free to do this and we'll commit it to the code :) --Steve Joe Hays wrote: > Thanks Steve. I appreciate the support. > > *"Right now dvc has no notion of a spring or damper." * > Not that I'm sufficiently familiar with the code nor have I looked > into the feasibility of this, but, it seems if one were to add a new > body type, say 'energetic', along with 'dynamical', 'kinematic', and > 'obstacle' one could define elements such as a spring and/or damper > such that their wretches on the system are implicitly handled by the > solver... Since we're dreaming... it would be good if this was a > plug-in interface such that new body types could be added to the > system in such a manner that they were implicitly handled by the > solver. I'm sure this falls into the long list of 'wouldn't it be nice > if...". Anyway, you've told me what I needed to know and will > hopefully play with it a bit to try it out. > > *"If no value is specified by the user, then the global value is used."* > Seems like a reasonable solution. This gives the ability to > specifically define the coeffs. for specific contacts of interest and > the ease of assuming a global setting for the rest. > > Joe > > > On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard <sb...@cs... > <mailto:sb...@cs...>> wrote: > > Hi Joe, > You have raised some very good questions. I'll do my best to > answer them. > > 1) Right now dvc has no notion of a spring or damper. If you wish > to attach a spring-damper to a body, the only way is through the > forceController class. What this means is that you the user will > be forced to compute the spring-damper forces as a function of the > body's state. This is actually how the mouse interaction works. > We attach one end of a virtual spring-damper to the body and the > other to the mouse pointer. This spring force is then added to > the timestepper code through the applied force vector. > > > 2) Pat is right, we currently do not support joint dissipation > directly through the xml file (we should and if I have time I'll > try to hack that in). I don't know of a way to add Coulomb > friction to a joint if the joint is abstracted as a bilateral > constraint. Viscous friction, however, is possible. The way you > can do it is by attaching a forceController to the body with the > joint, and computing the damping force. Here is what I would do > for revolute joint damping. > a) attach a forceController to the body with a revolute joint > b) In the GetForce function of the ForceController > i) get the angular velocity of the body attached to the > revolute joint (vel[2]) > ii) set outForce[2] = -C*vel[2] > where C is your damping coefficient. > Force is a bad name for this function, it really should be called > getWrench since the 3 dimensional value you are returning is the > force and moment. > > For dry friction in a joint, I think you would have to model the > joint geometrically and drop the bilateral representation. If you > know of a way to add dry friction into the bilateral joint > representation I would love to hear it, because (to the best of my > knowledge) this would be something that no one else is doing. > > 3) This is something that Pat and I have talked about in the past > without an ideal solution. The best idea we currently have > (un-implemented of course) is to keep the global value (like the > current set up), but to allow the user to specify a specific value > at a per-body-pair level. If no value is specified by the user, > then the global value is used. If this would be sufficient for > what you need let us know, because that shouldn't be very hard to > do. If you can think of a better solution, also please let me know. > > I hope this answers all of your questions, feel free to email me > back if anything is unclear or if you have more questions. I have > also copied this message to the dvc-devel mailing list so a public > copy is archived. > > Thanks, > > --Steve > > > > Joe Hays wrote: > > Steve, > > I've learned quite a bit in the last two weeks or so about > DVC. With Pat's help I've successfully made a double pendulum, > added a feedback controller to it and observed closed-loop > behavior (even though my current controller design sucks... I > know the loop is closed and that's what was important to me.) > > The following questions are outstanding in my mind. (Pat has > indicated that you're the right person to elaborate on these > topics. If you have any light you can shed on these topics I'd > appreciate it.) > > *How to make the classic "mass-spring-damper" model?* > From what I've seen so far DVC's unique strength is in solving > the Coulomb Friction and Impact dynamics for a > rigid-body-system. However, I've not seen how to create some > of the classical models to be simulated (e.g. the > "mass-spring-damper"). Is there a way I can define general > elements such as a spring, with either linear or nonlinear > constitutive law, as well as a damper (such as a viscous > damper which is either linear or non-linear)? > > *How to add dissipation (i.e. viscous and/or Coulomb friction, > preferably both) to joints?* > Pat indicated I need to 'hack' this in as their is no direct > facility for this. Can you give me some guidance on this? > > *Unique friction and restitution coefficients?* > From what I've learned so far both the friction and collision > restitution coefficients are global for the scene. Do you have > plans, back door entry points, or hacks, to allow these to be > defined for each body combination pair? (This is less > important for now but will become important to me in the > future...) > > I'm enjoying learning your system. Congratulations on the > progress you've made thus far with DVC, and, thanks for the > support. > > Joe > > > > |
From: Joe H. <hay...@gm...> - 2008-06-10 11:31:02
|
Steve, Sounds great. I appreciate your help! I'll play around with the new damping support in the next couple days. I'm also not apposed to investigating how to add the new 'energetic' bodies but that may not come until later in the summer as I'm quite sure this is a more involved task. I'll be in touch. Joe On Mon, Jun 9, 2008 at 7:33 PM, Steve Berard <sb...@cs...> wrote: > Joe, > To follow up the first email, damping of the joints was not as easy to do > as I initially thought it would have been because of some technical issues. > I spent the time to add the damping terms to the bilateral constraints > directly, so this should hopefully be easy to use now. I just committed the > changes and you can see the pendulum examples Pat committed earlier for an > example of how to add damping to joints. It should be as simple as now > adding > <pref name='dampingCoef' type='double' value='10'/> > inside the joint description in the xml file. > > I like the sound of adding a new "energetic" body type. Feel free to do > this and we'll commit it to the code :) > > --Steve > > Joe Hays wrote: > >> Thanks Steve. I appreciate the support. >> >> *"Right now dvc has no notion of a spring or damper." * >> Not that I'm sufficiently familiar with the code nor have I looked into >> the feasibility of this, but, it seems if one were to add a new body type, >> say 'energetic', along with 'dynamical', 'kinematic', and 'obstacle' one >> could define elements such as a spring and/or damper such that their >> wretches on the system are implicitly handled by the solver... Since we're >> dreaming... it would be good if this was a plug-in interface such that new >> body types could be added to the system in such a manner that they were >> implicitly handled by the solver. I'm sure this falls into the long list of >> 'wouldn't it be nice if...". Anyway, you've told me what I needed to know >> and will hopefully play with it a bit to try it out. >> >> *"If no value is specified by the user, then the global value is used."* >> Seems like a reasonable solution. This gives the ability to specifically >> define the coeffs. for specific contacts of interest and the ease of >> assuming a global setting for the rest. >> >> Joe >> >> >> On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard <sb...@cs...<mailto: >> sb...@cs...>> wrote: >> >> Hi Joe, >> You have raised some very good questions. I'll do my best to >> answer them. >> >> 1) Right now dvc has no notion of a spring or damper. If you wish >> to attach a spring-damper to a body, the only way is through the >> forceController class. What this means is that you the user will >> be forced to compute the spring-damper forces as a function of the >> body's state. This is actually how the mouse interaction works. >> We attach one end of a virtual spring-damper to the body and the >> other to the mouse pointer. This spring force is then added to >> the timestepper code through the applied force vector. >> >> >> 2) Pat is right, we currently do not support joint dissipation >> directly through the xml file (we should and if I have time I'll >> try to hack that in). I don't know of a way to add Coulomb >> friction to a joint if the joint is abstracted as a bilateral >> constraint. Viscous friction, however, is possible. The way you >> can do it is by attaching a forceController to the body with the >> joint, and computing the damping force. Here is what I would do >> for revolute joint damping. >> a) attach a forceController to the body with a revolute joint >> b) In the GetForce function of the ForceController >> i) get the angular velocity of the body attached to the >> revolute joint (vel[2]) >> ii) set outForce[2] = -C*vel[2] >> where C is your damping coefficient. >> Force is a bad name for this function, it really should be called >> getWrench since the 3 dimensional value you are returning is the >> force and moment. >> >> For dry friction in a joint, I think you would have to model the >> joint geometrically and drop the bilateral representation. If you >> know of a way to add dry friction into the bilateral joint >> representation I would love to hear it, because (to the best of my >> knowledge) this would be something that no one else is doing. >> >> 3) This is something that Pat and I have talked about in the past >> without an ideal solution. The best idea we currently have >> (un-implemented of course) is to keep the global value (like the >> current set up), but to allow the user to specify a specific value >> at a per-body-pair level. If no value is specified by the user, >> then the global value is used. If this would be sufficient for >> what you need let us know, because that shouldn't be very hard to >> do. If you can think of a better solution, also please let me know. >> >> I hope this answers all of your questions, feel free to email me >> back if anything is unclear or if you have more questions. I have >> also copied this message to the dvc-devel mailing list so a public >> copy is archived. >> >> Thanks, >> >> --Steve >> >> >> >> Joe Hays wrote: >> >> Steve, >> >> I've learned quite a bit in the last two weeks or so about >> DVC. With Pat's help I've successfully made a double pendulum, >> added a feedback controller to it and observed closed-loop >> behavior (even though my current controller design sucks... I >> know the loop is closed and that's what was important to me.) >> >> The following questions are outstanding in my mind. (Pat has >> indicated that you're the right person to elaborate on these >> topics. If you have any light you can shed on these topics I'd >> appreciate it.) >> >> *How to make the classic "mass-spring-damper" model?* >> From what I've seen so far DVC's unique strength is in solving >> the Coulomb Friction and Impact dynamics for a >> rigid-body-system. However, I've not seen how to create some >> of the classical models to be simulated (e.g. the >> "mass-spring-damper"). Is there a way I can define general >> elements such as a spring, with either linear or nonlinear >> constitutive law, as well as a damper (such as a viscous >> damper which is either linear or non-linear)? >> >> *How to add dissipation (i.e. viscous and/or Coulomb friction, >> preferably both) to joints?* >> Pat indicated I need to 'hack' this in as their is no direct >> facility for this. Can you give me some guidance on this? >> >> *Unique friction and restitution coefficients?* >> From what I've learned so far both the friction and collision >> restitution coefficients are global for the scene. Do you have >> plans, back door entry points, or hacks, to allow these to be >> defined for each body combination pair? (This is less >> important for now but will become important to me in the >> future...) >> >> I'm enjoying learning your system. Congratulations on the >> progress you've made thus far with DVC, and, thanks for the >> support. >> >> Joe >> >> >> >> >> |
From: Joe H. <hay...@gm...> - 2008-06-24 02:44:14
|
Another quick question. It appears that there is not 'fixed' joint. Am I correct? I'd like to make a 'dumbell' like body that has 'point' masses at the extremes of a massless rod. I can join the 'kinematic' rod to the 'point' masses on the ends with a revolute joint but I'd actually like to remove the degree of freedom. Its not the end of the world if there's not solution... I can formulate this differently but if you have any suggestions of how to 'fix' a dynamic body to a kinematic body somehow I'd appreciate the advice. Thx. Joe On Tue, Jun 10, 2008 at 7:30 AM, Joe Hays <hay...@gm...> wrote: > Steve, > > Sounds great. I appreciate your help! I'll play around with the new damping > support in the next couple days. I'm also not apposed to investigating how > to add the new 'energetic' bodies but that may not come until later in the > summer as I'm quite sure this is a more involved task. > > I'll be in touch. > > Joe > > > On Mon, Jun 9, 2008 at 7:33 PM, Steve Berard <sb...@cs...> wrote: > >> Joe, >> To follow up the first email, damping of the joints was not as easy to do >> as I initially thought it would have been because of some technical issues. >> I spent the time to add the damping terms to the bilateral constraints >> directly, so this should hopefully be easy to use now. I just committed the >> changes and you can see the pendulum examples Pat committed earlier for an >> example of how to add damping to joints. It should be as simple as now >> adding >> <pref name='dampingCoef' type='double' value='10'/> >> inside the joint description in the xml file. >> >> I like the sound of adding a new "energetic" body type. Feel free to do >> this and we'll commit it to the code :) >> >> --Steve >> >> Joe Hays wrote: >> >>> Thanks Steve. I appreciate the support. >>> >>> *"Right now dvc has no notion of a spring or damper." * >>> Not that I'm sufficiently familiar with the code nor have I looked into >>> the feasibility of this, but, it seems if one were to add a new body type, >>> say 'energetic', along with 'dynamical', 'kinematic', and 'obstacle' one >>> could define elements such as a spring and/or damper such that their >>> wretches on the system are implicitly handled by the solver... Since we're >>> dreaming... it would be good if this was a plug-in interface such that new >>> body types could be added to the system in such a manner that they were >>> implicitly handled by the solver. I'm sure this falls into the long list of >>> 'wouldn't it be nice if...". Anyway, you've told me what I needed to know >>> and will hopefully play with it a bit to try it out. >>> >>> *"If no value is specified by the user, then the global value is used."* >>> Seems like a reasonable solution. This gives the ability to specifically >>> define the coeffs. for specific contacts of interest and the ease of >>> assuming a global setting for the rest. >>> >>> Joe >>> >>> >>> On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard <sb...@cs...<mailto: >>> sb...@cs...>> wrote: >>> >>> Hi Joe, >>> You have raised some very good questions. I'll do my best to >>> answer them. >>> >>> 1) Right now dvc has no notion of a spring or damper. If you wish >>> to attach a spring-damper to a body, the only way is through the >>> forceController class. What this means is that you the user will >>> be forced to compute the spring-damper forces as a function of the >>> body's state. This is actually how the mouse interaction works. >>> We attach one end of a virtual spring-damper to the body and the >>> other to the mouse pointer. This spring force is then added to >>> the timestepper code through the applied force vector. >>> >>> >>> 2) Pat is right, we currently do not support joint dissipation >>> directly through the xml file (we should and if I have time I'll >>> try to hack that in). I don't know of a way to add Coulomb >>> friction to a joint if the joint is abstracted as a bilateral >>> constraint. Viscous friction, however, is possible. The way you >>> can do it is by attaching a forceController to the body with the >>> joint, and computing the damping force. Here is what I would do >>> for revolute joint damping. >>> a) attach a forceController to the body with a revolute joint >>> b) In the GetForce function of the ForceController >>> i) get the angular velocity of the body attached to the >>> revolute joint (vel[2]) >>> ii) set outForce[2] = -C*vel[2] >>> where C is your damping coefficient. >>> Force is a bad name for this function, it really should be called >>> getWrench since the 3 dimensional value you are returning is the >>> force and moment. >>> >>> For dry friction in a joint, I think you would have to model the >>> joint geometrically and drop the bilateral representation. If you >>> know of a way to add dry friction into the bilateral joint >>> representation I would love to hear it, because (to the best of my >>> knowledge) this would be something that no one else is doing. >>> >>> 3) This is something that Pat and I have talked about in the past >>> without an ideal solution. The best idea we currently have >>> (un-implemented of course) is to keep the global value (like the >>> current set up), but to allow the user to specify a specific value >>> at a per-body-pair level. If no value is specified by the user, >>> then the global value is used. If this would be sufficient for >>> what you need let us know, because that shouldn't be very hard to >>> do. If you can think of a better solution, also please let me know. >>> >>> I hope this answers all of your questions, feel free to email me >>> back if anything is unclear or if you have more questions. I have >>> also copied this message to the dvc-devel mailing list so a public >>> copy is archived. >>> >>> Thanks, >>> >>> --Steve >>> >>> >>> >>> Joe Hays wrote: >>> >>> Steve, >>> >>> I've learned quite a bit in the last two weeks or so about >>> DVC. With Pat's help I've successfully made a double pendulum, >>> added a feedback controller to it and observed closed-loop >>> behavior (even though my current controller design sucks... I >>> know the loop is closed and that's what was important to me.) >>> >>> The following questions are outstanding in my mind. (Pat has >>> indicated that you're the right person to elaborate on these >>> topics. If you have any light you can shed on these topics I'd >>> appreciate it.) >>> >>> *How to make the classic "mass-spring-damper" model?* >>> From what I've seen so far DVC's unique strength is in solving >>> the Coulomb Friction and Impact dynamics for a >>> rigid-body-system. However, I've not seen how to create some >>> of the classical models to be simulated (e.g. the >>> "mass-spring-damper"). Is there a way I can define general >>> elements such as a spring, with either linear or nonlinear >>> constitutive law, as well as a damper (such as a viscous >>> damper which is either linear or non-linear)? >>> >>> *How to add dissipation (i.e. viscous and/or Coulomb friction, >>> preferably both) to joints?* >>> Pat indicated I need to 'hack' this in as their is no direct >>> facility for this. Can you give me some guidance on this? >>> >>> *Unique friction and restitution coefficients?* >>> From what I've learned so far both the friction and collision >>> restitution coefficients are global for the scene. Do you have >>> plans, back door entry points, or hacks, to allow these to be >>> defined for each body combination pair? (This is less >>> important for now but will become important to me in the >>> future...) >>> >>> I'm enjoying learning your system. Congratulations on the >>> progress you've made thus far with DVC, and, thanks for the >>> support. >>> >>> Joe >>> >>> >>> >>> >>> > |
From: Steve B. <sb...@cs...> - 2008-06-24 14:20:14
|
Joe, Depending on what you are asking, we might be able to do this. Given two bodies, body1 and body2 and two points on the bodies, p1 and p2 respectively: 1) Constrain the points p1 and p2 to lie on top of each other and constrain the angular velocity of body2 to zero. 2) Constrain the points p1 and p2 to lie on top of each other and constrain the angular velocities of body1 and body2 to be equal. If you want case one, we can currently do this. If case 2, we do not have a joint that will do this, however, it would be very easy to write. For 1), you can use the DegreeOfFreedom constraint to remove the theta degree of freedom from the body. There is an example of this in examples/ropeExample For 2), we would have to write a new bilateral constraint very similar to the Revolute Joint. The difference would be that the new constraint would also constrain the angular velocities, and the extra terms in the Jacobian matrices would be m_Jacobians[0](2,2) = 1.0; m_Jacobians[1](2,2) = -1.0; The stabilization term would be the difference in the original angle between the bodies, to the current angle. Let me know if this helps and what case you are interested in. Thanks, --Steve Joe Hays wrote: > Another quick question. > > It appears that there is not 'fixed' joint. Am I correct? I'd like to > make a 'dumbell' like body that has 'point' masses at the extremes of > a massless rod. I can join the 'kinematic' rod to the 'point' masses > on the ends with a revolute joint but I'd actually like to remove the > degree of freedom. Its not the end of the world if there's not > solution... I can formulate this differently but if you have any > suggestions of how to 'fix' a dynamic body to a kinematic body somehow > I'd appreciate the advice. > > Thx. > > Joe > > On Tue, Jun 10, 2008 at 7:30 AM, Joe Hays <hay...@gm... > <mailto:hay...@gm...>> wrote: > > Steve, > > Sounds great. I appreciate your help! I'll play around with the > new damping support in the next couple days. I'm also not apposed > to investigating how to add the new 'energetic' bodies but that > may not come until later in the summer as I'm quite sure this is a > more involved task. > > I'll be in touch. > > Joe > > > On Mon, Jun 9, 2008 at 7:33 PM, Steve Berard <sb...@cs... > <mailto:sb...@cs...>> wrote: > > Joe, > To follow up the first email, damping of the joints was not as > easy to do as I initially thought it would have been because > of some technical issues. I spent the time to add the damping > terms to the bilateral constraints directly, so this should > hopefully be easy to use now. I just committed the changes > and you can see the pendulum examples Pat committed earlier > for an example of how to add damping to joints. It should be > as simple as now adding > <pref name='dampingCoef' type='double' value='10'/> > inside the joint description in the xml file. > > I like the sound of adding a new "energetic" body type. Feel > free to do this and we'll commit it to the code :) > > --Steve > > Joe Hays wrote: > > Thanks Steve. I appreciate the support. > > *"Right now dvc has no notion of a spring or damper." * > Not that I'm sufficiently familiar with the code nor have > I looked into the feasibility of this, but, it seems if > one were to add a new body type, say 'energetic', along > with 'dynamical', 'kinematic', and 'obstacle' one could > define elements such as a spring and/or damper such that > their wretches on the system are implicitly handled by the > solver... Since we're dreaming... it would be good if this > was a plug-in interface such that new body types could be > added to the system in such a manner that they were > implicitly handled by the solver. I'm sure this falls into > the long list of 'wouldn't it be nice if...". Anyway, > you've told me what I needed to know and will hopefully > play with it a bit to try it out. > > *"If no value is specified by the user, then the global > value is used."* > Seems like a reasonable solution. This gives the ability > to specifically define the coeffs. for specific contacts > of interest and the ease of assuming a global setting for > the rest. > > Joe > > > On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard > <sb...@cs... <mailto:sb...@cs...> > <mailto:sb...@cs... <mailto:sb...@cs...>>> > wrote: > > Hi Joe, > You have raised some very good questions. I'll do my > best to > answer them. > > 1) Right now dvc has no notion of a spring or damper. > If you wish > to attach a spring-damper to a body, the only way is > through the > forceController class. What this means is that you the > user will > be forced to compute the spring-damper forces as a > function of the > body's state. This is actually how the mouse > interaction works. > We attach one end of a virtual spring-damper to the > body and the > other to the mouse pointer. This spring force is then > added to > the timestepper code through the applied force vector. > > > 2) Pat is right, we currently do not support joint > dissipation > directly through the xml file (we should and if I have > time I'll > try to hack that in). I don't know of a way to add Coulomb > friction to a joint if the joint is abstracted as a > bilateral > constraint. Viscous friction, however, is possible. > The way you > can do it is by attaching a forceController to the body > with the > joint, and computing the damping force. Here is what I > would do > for revolute joint damping. > a) attach a forceController to the body with a > revolute joint > b) In the GetForce function of the ForceController > i) get the angular velocity of the body attached to the > revolute joint (vel[2]) > ii) set outForce[2] = -C*vel[2] > where C is your damping coefficient. > Force is a bad name for this function, it really should > be called > getWrench since the 3 dimensional value you are > returning is the > force and moment. > > For dry friction in a joint, I think you would have to > model the > joint geometrically and drop the bilateral > representation. If you > know of a way to add dry friction into the bilateral joint > representation I would love to hear it, because (to the > best of my > knowledge) this would be something that no one else is > doing. > > 3) This is something that Pat and I have talked about > in the past > without an ideal solution. The best idea we currently have > (un-implemented of course) is to keep the global value > (like the > current set up), but to allow the user to specify a > specific value > at a per-body-pair level. If no value is specified by > the user, > then the global value is used. If this would be > sufficient for > what you need let us know, because that shouldn't be > very hard to > do. If you can think of a better solution, also please > let me know. > > I hope this answers all of your questions, feel free to > email me > back if anything is unclear or if you have more > questions. I have > also copied this message to the dvc-devel mailing list > so a public > copy is archived. > > Thanks, > > --Steve > > > > Joe Hays wrote: > > Steve, > > I've learned quite a bit in the last two weeks or > so about > DVC. With Pat's help I've successfully made a > double pendulum, > added a feedback controller to it and observed > closed-loop > behavior (even though my current controller design > sucks... I > know the loop is closed and that's what was > important to me.) > > The following questions are outstanding in my mind. > (Pat has > indicated that you're the right person to elaborate > on these > topics. If you have any light you can shed on these > topics I'd > appreciate it.) > > *How to make the classic "mass-spring-damper" model?* > From what I've seen so far DVC's unique strength is > in solving > the Coulomb Friction and Impact dynamics for a > rigid-body-system. However, I've not seen how to > create some > of the classical models to be simulated (e.g. the > "mass-spring-damper"). Is there a way I can define > general > elements such as a spring, with either linear or > nonlinear > constitutive law, as well as a damper (such as a > viscous > damper which is either linear or non-linear)? > > *How to add dissipation (i.e. viscous and/or > Coulomb friction, > preferably both) to joints?* > Pat indicated I need to 'hack' this in as their is > no direct > facility for this. Can you give me some guidance on > this? > > *Unique friction and restitution coefficients?* > From what I've learned so far both the friction and > collision > restitution coefficients are global for the scene. > Do you have > plans, back door entry points, or hacks, to allow > these to be > defined for each body combination pair? (This is less > important for now but will become important to me > in the > future...) > > I'm enjoying learning your system. Congratulations > on the > progress you've made thus far with DVC, and, thanks > for the > support. > > Joe > > > > > > |
From: Joe H. <hay...@gm...> - 2008-06-24 14:42:11
|
Thanks Steve, This does help. Case #2 is what I'm looking for. I've not yet looked into the joint code. Looks like its time... I appreciate your support. Joe On Tue, Jun 24, 2008 at 10:19 AM, Steve Berard <sb...@cs...> wrote: > Joe, > Depending on what you are asking, we might be able to do this. > > Given two bodies, body1 and body2 and two points on the bodies, p1 and p2 > respectively: > > 1) Constrain the points p1 and p2 to lie on top of each other and constrain > the angular velocity of body2 to zero. > > 2) Constrain the points p1 and p2 to lie on top of each other and constrain > the angular velocities of body1 and body2 to be equal. > > If you want case one, we can currently do this. If case 2, we do not have > a joint that will do this, however, it would be very easy to write. > > For 1), you can use the DegreeOfFreedom constraint to remove the theta > degree of freedom from the body. There is an example of this in > examples/ropeExample > > For 2), we would have to write a new bilateral constraint very similar to > the Revolute Joint. The difference would be that the new constraint would > also constrain the angular velocities, and the extra terms in the Jacobian > matrices would be > m_Jacobians[0](2,2) = 1.0; > m_Jacobians[1](2,2) = -1.0; > The stabilization term would be the difference in the original angle > between the bodies, to the current angle. > > Let me know if this helps and what case you are interested in. > > Thanks, > > --Steve > > Joe Hays wrote: > >> Another quick question. >> >> It appears that there is not 'fixed' joint. Am I correct? I'd like to make >> a 'dumbell' like body that has 'point' masses at the extremes of a massless >> rod. I can join the 'kinematic' rod to the 'point' masses on the ends with a >> revolute joint but I'd actually like to remove the degree of freedom. Its >> not the end of the world if there's not solution... I can formulate this >> differently but if you have any suggestions of how to 'fix' a dynamic body >> to a kinematic body somehow I'd appreciate the advice. >> >> Thx. >> >> Joe >> >> On Tue, Jun 10, 2008 at 7:30 AM, Joe Hays <hay...@gm... <mailto: >> hay...@gm...>> wrote: >> >> Steve, >> >> Sounds great. I appreciate your help! I'll play around with the >> new damping support in the next couple days. I'm also not apposed >> to investigating how to add the new 'energetic' bodies but that >> may not come until later in the summer as I'm quite sure this is a >> more involved task. >> >> I'll be in touch. >> >> Joe >> >> >> On Mon, Jun 9, 2008 at 7:33 PM, Steve Berard <sb...@cs... >> <mailto:sb...@cs...>> wrote: >> >> Joe, >> To follow up the first email, damping of the joints was not as >> easy to do as I initially thought it would have been because >> of some technical issues. I spent the time to add the damping >> terms to the bilateral constraints directly, so this should >> hopefully be easy to use now. I just committed the changes >> and you can see the pendulum examples Pat committed earlier >> for an example of how to add damping to joints. It should be >> as simple as now adding >> <pref name='dampingCoef' type='double' value='10'/> >> inside the joint description in the xml file. >> >> I like the sound of adding a new "energetic" body type. Feel >> free to do this and we'll commit it to the code :) >> >> --Steve >> >> Joe Hays wrote: >> >> Thanks Steve. I appreciate the support. >> >> *"Right now dvc has no notion of a spring or damper." * >> Not that I'm sufficiently familiar with the code nor have >> I looked into the feasibility of this, but, it seems if >> one were to add a new body type, say 'energetic', along >> with 'dynamical', 'kinematic', and 'obstacle' one could >> define elements such as a spring and/or damper such that >> their wretches on the system are implicitly handled by the >> solver... Since we're dreaming... it would be good if this >> was a plug-in interface such that new body types could be >> added to the system in such a manner that they were >> implicitly handled by the solver. I'm sure this falls into >> the long list of 'wouldn't it be nice if...". Anyway, >> you've told me what I needed to know and will hopefully >> play with it a bit to try it out. >> >> *"If no value is specified by the user, then the global >> value is used."* >> Seems like a reasonable solution. This gives the ability >> to specifically define the coeffs. for specific contacts >> of interest and the ease of assuming a global setting for >> the rest. >> >> Joe >> >> >> On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard >> <sb...@cs... <mailto:sb...@cs...> >> <mailto:sb...@cs... <mailto:sb...@cs...>>> >> >> wrote: >> >> Hi Joe, >> You have raised some very good questions. I'll do my >> best to >> answer them. >> >> 1) Right now dvc has no notion of a spring or damper. >> If you wish >> to attach a spring-damper to a body, the only way is >> through the >> forceController class. What this means is that you the >> user will >> be forced to compute the spring-damper forces as a >> function of the >> body's state. This is actually how the mouse >> interaction works. >> We attach one end of a virtual spring-damper to the >> body and the >> other to the mouse pointer. This spring force is then >> added to >> the timestepper code through the applied force vector. >> >> >> 2) Pat is right, we currently do not support joint >> dissipation >> directly through the xml file (we should and if I have >> time I'll >> try to hack that in). I don't know of a way to add Coulomb >> friction to a joint if the joint is abstracted as a >> bilateral >> constraint. Viscous friction, however, is possible. >> The way you >> can do it is by attaching a forceController to the body >> with the >> joint, and computing the damping force. Here is what I >> would do >> for revolute joint damping. >> a) attach a forceController to the body with a >> revolute joint >> b) In the GetForce function of the ForceController >> i) get the angular velocity of the body attached to the >> revolute joint (vel[2]) >> ii) set outForce[2] = -C*vel[2] >> where C is your damping coefficient. >> Force is a bad name for this function, it really should >> be called >> getWrench since the 3 dimensional value you are >> returning is the >> force and moment. >> >> For dry friction in a joint, I think you would have to >> model the >> joint geometrically and drop the bilateral >> representation. If you >> know of a way to add dry friction into the bilateral joint >> representation I would love to hear it, because (to the >> best of my >> knowledge) this would be something that no one else is >> doing. >> >> 3) This is something that Pat and I have talked about >> in the past >> without an ideal solution. The best idea we currently have >> (un-implemented of course) is to keep the global value >> (like the >> current set up), but to allow the user to specify a >> specific value >> at a per-body-pair level. If no value is specified by >> the user, >> then the global value is used. If this would be >> sufficient for >> what you need let us know, because that shouldn't be >> very hard to >> do. If you can think of a better solution, also please >> let me know. >> >> I hope this answers all of your questions, feel free to >> email me >> back if anything is unclear or if you have more >> questions. I have >> also copied this message to the dvc-devel mailing list >> so a public >> copy is archived. >> >> Thanks, >> >> --Steve >> >> >> >> Joe Hays wrote: >> >> Steve, >> >> I've learned quite a bit in the last two weeks or >> so about >> DVC. With Pat's help I've successfully made a >> double pendulum, >> added a feedback controller to it and observed >> closed-loop >> behavior (even though my current controller design >> sucks... I >> know the loop is closed and that's what was >> important to me.) >> >> The following questions are outstanding in my mind. >> (Pat has >> indicated that you're the right person to elaborate >> on these >> topics. If you have any light you can shed on these >> topics I'd >> appreciate it.) >> >> *How to make the classic "mass-spring-damper" model?* >> From what I've seen so far DVC's unique strength is >> in solving >> the Coulomb Friction and Impact dynamics for a >> rigid-body-system. However, I've not seen how to >> create some >> of the classical models to be simulated (e.g. the >> "mass-spring-damper"). Is there a way I can define >> general >> elements such as a spring, with either linear or >> nonlinear >> constitutive law, as well as a damper (such as a >> viscous >> damper which is either linear or non-linear)? >> >> *How to add dissipation (i.e. viscous and/or >> Coulomb friction, >> preferably both) to joints?* >> Pat indicated I need to 'hack' this in as their is >> no direct >> facility for this. Can you give me some guidance on >> this? >> >> *Unique friction and restitution coefficients?* >> From what I've learned so far both the friction and >> collision >> restitution coefficients are global for the scene. >> Do you have >> plans, back door entry points, or hacks, to allow >> these to be >> defined for each body combination pair? (This is less >> important for now but will become important to me >> in the >> future...) >> >> I'm enjoying learning your system. Congratulations >> on the >> progress you've made thus far with DVC, and, thanks >> for the >> support. >> >> Joe >> >> >> >> >> >> >> |
From: Steve B. <sb...@cs...> - 2008-06-24 18:01:52
|
Sending again, since SF rejected first time.. I realize that there is no documentation on how to write a joint, so I'll try to explain in this email. The bilateral constraints are specified at the velocity level, with a stabilization term to correct the drift in the position. The velocity level constraints are specified by using the m_Jacobians matrices in the BilateralConstraint base class. There is one Jacobian matrix for each body that needs to be constrained. The Jacobians will always be 3 columns, and the number of rows will be equal to the number of degrees of freedom removed. In the timesteppers, the matrices are used in the following equation 0 = Jacobian1 * nu1 + Jacobian2 * nu2 + .. JacobianN * nuN where nu_i is the velocity twist [vx vy w]^T of body i. Looking at the RevoluteJoint example, the velocity of a point p1 attached to body1 is: vel1 + w1*r1_perp where vel1 is the velocity of body at at its center of gravity, w1 is the angular velocity, r1 is the vector from the cg to the point, r1 = p1 - [x1 y1]^T, and perp indicates the perp operater ( u_perp = [-u_2, u_1]^T ). The revolute joint constraint is thus (in matrix form) 0 = vel1 + w1*r1_perp + (-vel2 - w2*r2_perp) (The two scalar equations are) 0 = v1_x + (w1*-r1_y) - v2_x - (w2*-r2_y) 0 = v1_y + (w1*r1_x) - v2_y - (w2*r2_x) Therefore the Jacobian matrices become (remember it is 0 = Jac1*nu1 + Jac2*nu2): Jac1: 1 0 -r1_y 0 1 r1_x Jac2: -1 0 r2_y 0 -1 -r2_x Which is what the code does. Extending this to what you need, the 3rd scalar equation is: 0 = w1 - w2 and the two Jacobians would be: Jac1: 1 0 -r1_y 0 1 r1_x 0 0 1 Jac2: -1 0 r2_y 0 -1 -r2_x 0 0 -1 The last part that bilateral constraints must do is provide the error information on how much drift has occurred at the position level. This is accomplished by the member variable stabilizationTerm, which will have a size of number of degrees constrained. For the revolute joint, the position level drift is simply the difference between P1 and P2 (as is done in the code). For your joint, which constrains 3 degrees now, the extra constraint will be the change in original theta difference. This means you will have to compute the original theta difference on construction of the joint, and store this value as a member of the class, say origThetaDiff. Then your stabilization term would simply be: origThetaDiff - (theta2 - theta1); Hope this helps, let me know if anything is unclear, --Steve Joe Hays wrote: > Thanks Steve, > > This does help. Case #2 is what I'm looking for. I've not yet looked > into the joint code. Looks like its time... > > I appreciate your support. > > Joe > > On Tue, Jun 24, 2008 at 10:19 AM, Steve Berard <sb...@cs... > <mailto:sb...@cs...>> wrote: > > Joe, > Depending on what you are asking, we might be able to do this. > > Given two bodies, body1 and body2 and two points on the bodies, p1 > and p2 respectively: > > 1) Constrain the points p1 and p2 to lie on top of each other and > constrain the angular velocity of body2 to zero. > > 2) Constrain the points p1 and p2 to lie on top of each other and > constrain the angular velocities of body1 and body2 to be equal. > > If you want case one, we can currently do this. If case 2, we do > not have a joint that will do this, however, it would be very easy > to write. > > For 1), you can use the DegreeOfFreedom constraint to remove the > theta degree of freedom from the body. There is an example of > this in examples/ropeExample > > For 2), we would have to write a new bilateral constraint very > similar to the Revolute Joint. The difference would be that the > new constraint would also constrain the angular velocities, and > the extra terms in the Jacobian matrices would be > m_Jacobians[0](2,2) = 1.0; > m_Jacobians[1](2,2) = -1.0; > The stabilization term would be the difference in the original > angle between the bodies, to the current angle. > > Let me know if this helps and what case you are interested in. > > > Thanks, > > --Steve > > Joe Hays wrote: > > Another quick question. > > It appears that there is not 'fixed' joint. Am I correct? I'd > like to make a 'dumbell' like body that has 'point' masses at > the extremes of a massless rod. I can join the 'kinematic' rod > to the 'point' masses on the ends with a revolute joint but > I'd actually like to remove the degree of freedom. Its not the > end of the world if there's not solution... I can formulate > this differently but if you have any suggestions of how to > 'fix' a dynamic body to a kinematic body somehow I'd > appreciate the advice. > > Thx. > > Joe > > On Tue, Jun 10, 2008 at 7:30 AM, Joe Hays <hay...@gm... > <mailto:hay...@gm...> <mailto:hay...@gm... > <mailto:hay...@gm...>>> wrote: > > Steve, > > Sounds great. I appreciate your help! I'll play around with the > new damping support in the next couple days. I'm also not > apposed > to investigating how to add the new 'energetic' bodies but that > may not come until later in the summer as I'm quite sure > this is a > more involved task. > > I'll be in touch. > > Joe > > > On Mon, Jun 9, 2008 at 7:33 PM, Steve Berard > <sb...@cs... <mailto:sb...@cs...> > <mailto:sb...@cs... <mailto:sb...@cs...>>> wrote: > > Joe, > To follow up the first email, damping of the joints was > not as > easy to do as I initially thought it would have been > because > of some technical issues. I spent the time to add the > damping > terms to the bilateral constraints directly, so this should > hopefully be easy to use now. I just committed the changes > and you can see the pendulum examples Pat committed earlier > for an example of how to add damping to joints. It > should be > as simple as now adding > <pref name='dampingCoef' type='double' value='10'/> > inside the joint description in the xml file. > > I like the sound of adding a new "energetic" body type. > Feel > free to do this and we'll commit it to the code :) > > --Steve > > Joe Hays wrote: > > Thanks Steve. I appreciate the support. > > *"Right now dvc has no notion of a spring or damper." * > Not that I'm sufficiently familiar with the code > nor have > I looked into the feasibility of this, but, it seems if > one were to add a new body type, say 'energetic', along > with 'dynamical', 'kinematic', and 'obstacle' one could > define elements such as a spring and/or damper such > that > their wretches on the system are implicitly handled > by the > solver... Since we're dreaming... it would be good > if this > was a plug-in interface such that new body types > could be > added to the system in such a manner that they were > implicitly handled by the solver. I'm sure this > falls into > the long list of 'wouldn't it be nice if...". Anyway, > you've told me what I needed to know and will hopefully > play with it a bit to try it out. > > *"If no value is specified by the user, then the global > value is used."* > Seems like a reasonable solution. This gives the > ability > to specifically define the coeffs. for specific > contacts > of interest and the ease of assuming a global > setting for > the rest. > > Joe > > > On Mon, Jun 9, 2008 at 12:56 PM, Steve Berard > <sb...@cs... <mailto:sb...@cs...> > <mailto:sb...@cs... <mailto:sb...@cs...>> > <mailto:sb...@cs... > <mailto:sb...@cs...> <mailto:sb...@cs... > <mailto:sb...@cs...>>>> > > wrote: > > Hi Joe, > You have raised some very good questions. I'll > do my > best to > answer them. > > 1) Right now dvc has no notion of a spring or > damper. > If you wish > to attach a spring-damper to a body, the only way is > through the > forceController class. What this means is that > you the > user will > be forced to compute the spring-damper forces as a > function of the > body's state. This is actually how the mouse > interaction works. > We attach one end of a virtual spring-damper to the > body and the > other to the mouse pointer. This spring force > is then > added to > the timestepper code through the applied force > vector. > > > 2) Pat is right, we currently do not support joint > dissipation > directly through the xml file (we should and if > I have > time I'll > try to hack that in). I don't know of a way to > add Coulomb > friction to a joint if the joint is abstracted as a > bilateral > constraint. Viscous friction, however, is possible. > The way you > can do it is by attaching a forceController to > the body > with the > joint, and computing the damping force. Here is > what I > would do > for revolute joint damping. > a) attach a forceController to the body with a > revolute joint > b) In the GetForce function of the ForceController > i) get the angular velocity of the body > attached to the > revolute joint (vel[2]) > ii) set outForce[2] = -C*vel[2] > where C is your damping coefficient. > Force is a bad name for this function, it really > should > be called > getWrench since the 3 dimensional value you are > returning is the > force and moment. > > For dry friction in a joint, I think you would > have to > model the > joint geometrically and drop the bilateral > representation. If you > know of a way to add dry friction into the > bilateral joint > representation I would love to hear it, because > (to the > best of my > knowledge) this would be something that no one > else is > doing. > > 3) This is something that Pat and I have talked > about > in the past > without an ideal solution. The best idea we > currently have > (un-implemented of course) is to keep the global > value > (like the > current set up), but to allow the user to specify a > specific value > at a per-body-pair level. If no value is > specified by > the user, > then the global value is used. If this would be > sufficient for > what you need let us know, because that shouldn't be > very hard to > do. If you can think of a better solution, also > please > let me know. > > I hope this answers all of your questions, feel > free to > email me > back if anything is unclear or if you have more > questions. I have > also copied this message to the dvc-devel > mailing list > so a public > copy is archived. > > Thanks, > > --Steve > > > > Joe Hays wrote: > > Steve, > > I've learned quite a bit in the last two > weeks or > so about > DVC. With Pat's help I've successfully made a > double pendulum, > added a feedback controller to it and observed > closed-loop > behavior (even though my current controller > design > sucks... I > know the loop is closed and that's what was > important to me.) > > The following questions are outstanding in > my mind. > (Pat has > indicated that you're the right person to > elaborate > on these > topics. If you have any light you can shed > on these > topics I'd > appreciate it.) > > *How to make the classic > "mass-spring-damper" model?* > From what I've seen so far DVC's unique > strength is > in solving > the Coulomb Friction and Impact dynamics for a > rigid-body-system. However, I've not seen how to > create some > of the classical models to be simulated > (e.g. the > "mass-spring-damper"). Is there a way I can > define > general > elements such as a spring, with either linear or > nonlinear > constitutive law, as well as a damper (such as a > viscous > damper which is either linear or non-linear)? > > *How to add dissipation (i.e. viscous and/or > Coulomb friction, > preferably both) to joints?* > Pat indicated I need to 'hack' this in as > their is > no direct > facility for this. Can you give me some > guidance on > this? > > *Unique friction and restitution coefficients?* > From what I've learned so far both the > friction and > collision > restitution coefficients are global for the > scene. > Do you have > plans, back door entry points, or hacks, to > allow > these to be > defined for each body combination pair? > (This is less > important for now but will become important > to me > in the > future...) > > I'm enjoying learning your system. > Congratulations > on the > progress you've made thus far with DVC, and, > thanks > for the > support. > > Joe > > > > > > > |