Closed Czworldy closed 2 months ago
Hi, @jhwangbo I meet a problem when i use function contact.getImpulse(). here is gdb info, i dont kown why the pointer impulse_ is setted to 0x0, that's will cause seg fault.
contact.getImpulse()
impulse_
0x0
146 contactForceLF += contact.getImpulse().e() / dt; (gdb) l 141 // if (&contact.getImpulse() == nullptr) { 142 // std::cerr << ">>>>>>>>>>contact.getImpulse() == nullptr<<<<<<<<\n"; 143 // continue; 144 // } // 145 if (contact.getlocalBodyIndex() == robot.getBodyIdx("LF_SHANK")) { 146 contactForceLF += contact.getImpulse().e() / dt; 147 } if (contact.getlocalBodyIndex() == robot.getBodyIdx("LH_SHANK")) { 148 contactForceLH += contact.getImpulse().e() / dt; 149 } if (contact.getlocalBodyIndex() == robot.getBodyIdx("RF_SHANK")) { 150 contactForceRF += contact.getImpulse().e() / dt; (gdb) p contact $1 = (const raisim::Contact &) @0x555555f470f0: { frame_ = {<raisim::MatExpr<raisim::Mat<3, 3> >> = {<No data fields>}, { alignment_only = {<No data fields>}, v = {1, 0, 0, -0, 1, 2.2204460492503131e-16, 0, -2.2204460492503131e-16, 1}}}, position_ = {<raisim::MatExpr<raisim::Mat<3, 1> >> = {<No data fields>}, { alignment_only = {<No data fields>}, v = {0.27849376922992164, 0.19935138958786158, -0.00041639438321613558}}}, normal_ = {<raisim::MatExpr<raisim::Mat<3, 1> >> = {<No data fields>}, { alignment_only = {<No data fields>}, v = {0, 2.2204460492503131e-16, 1}}}, Minv_ = {<raisim::MatExpr<raisim::Mat<3, 3> >> = {<No data fields>}, { alignment_only = {<No data fields>}, v = {3.948209013710037, 0.00025260222756042313, 1.7667659368442636, 0.00025260222756032951, 2.4010417226149863, -0.049120674016925096, 1.7667659368442632, -0.049120674016925006, 2.6058906461885476}}}, impulse_ = 0x0, impactVel_ = 0.00012499515744865945, depth_ = -0.00041639438321675742, contactIndexInObject_ = 0, pairObjectIndex_ = 1, pairContactIndexInPairObject_ = 0, contactProblemIndex_ = 0, localBodyIndex_ = 3, isSelfCollision_ = false, skip_ = false, objectA_ = true, pairObjectBodyType_ = raisim::BodyType::STATIC, colA_ = 0x555555cc7370, colB_ = 0x555555d61800} (gdb) p contact.impulse_ $2 = (raisim::Vec *) 0x0
And i do NOTHING but update the raisim from 1.1.7 to 1.1.8.
libraisimd.so.1.1.8 => /usr/local/lib/libraisimd.so.1.1.8 (0x00007f0847d07000) libraisimPng.so => /usr/local/lib/libraisimPng.so (0x00007f0846b34000) libraisimODE.so.1.1.8 => /usr/local/lib/libraisimODE.so.1.1.8 (0x00007f0846a6f000) libraisimMine.so => /usr/local/lib/libraisimMine.so (0x00007f0846a58000) libraisimPngd.so => /usr/local/lib/libraisimPngd.so (0x00007f08467b1000) libraisimODEd.so.1.1.8 => /usr/local/lib/libraisimODEd.so.1.1.8 (0x00007f0846603000) libraisimMined.so => /usr/local/lib/libraisimMined.so (0x00007f08465c6000) libraisimZd.so => /usr/local/lib/libraisimZd.so (0x00007f08465a5000) libraisimZ.so => /usr/local/lib/libraisimZ.so (0x00007f0845ec6000)
I dont kown what happens inside the raisim, if you need more info. plz contact me. Thanks a lot!
Will world.integrate1() set the impulse_ to 0x0?
world.integrate1()
yes. Impulse_ is recreated every time step. There is no "same contact" in raisim. New contacts are created in every time step
Hi, @jhwangbo I meet a problem when i use function
contact.getImpulse()
. here is gdb info, i dont kown why the pointerimpulse_
is setted to0x0
, that's will cause seg fault.And i do NOTHING but update the raisim from 1.1.7 to 1.1.8.
I dont kown what happens inside the raisim, if you need more info. plz contact me. Thanks a lot!