Skip to content

Commit

Permalink
Merge pull request #308 from jhwangbo/master
Browse files Browse the repository at this point in the history
now updating collisiong pos updates col vis. but not vis obj
  • Loading branch information
jhwangbo authored Jun 3, 2022
2 parents 3b315b4 + 722c6eb commit 7f75e58
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 26 deletions.
63 changes: 38 additions & 25 deletions raisim/linux/include/raisim/RaisimServer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -954,31 +954,44 @@ class RaisimServer final {
data_ = set(data_, (uint64_t) (dynamic_cast<ArticulatedSystem *>(ob)->getVisOb().size() +
dynamic_cast<ArticulatedSystem *>(ob)->getVisColOb().size()));

for (uint64_t i = 0; i < 2; i++) {
std::vector<VisObject> *visOb;
if (i == 0)
visOb = &(dynamic_cast<ArticulatedSystem *>(ob)->getVisOb());
else
visOb = &(dynamic_cast<ArticulatedSystem *>(ob)->getVisColOb());

for (uint64_t k = 0; k < (*visOb).size(); k++) {
auto &vob = (*visOb)[k];
std::string name = std::to_string(ob->getIndexInWorld()) +
"/" + std::to_string(i) + "/" +
std::to_string(k);
data_ = set(data_, name);

Vec<3> pos, offsetInWorld;
Vec<4> quat;
Mat<3, 3> bodyRotation, rot;
ob->getPosition(vob.localIdx, pos);
ob->getOrientation(vob.localIdx, bodyRotation);
matvecmul(bodyRotation, vob.offset, offsetInWorld);
matmul(bodyRotation, vob.rot, rot);
raisim::rotMatToQuat(rot, quat);
pos = pos + offsetInWorld;
data_ = set(data_, pos, quat);
}
auto& visOb = dynamic_cast<ArticulatedSystem *>(ob)->getVisOb();
for (uint64_t k = 0; k < visOb.size(); k++) {
auto &vob = visOb[k];
std::string name = std::to_string(ob->getIndexInWorld()) +
"/" + std::to_string(0) + "/" +
std::to_string(k);
data_ = set(data_, name);

Vec<3> pos, offsetInWorld;
Vec<4> quat;
Mat<3, 3> bodyRotation, rot;
ob->getPosition(vob.localIdx, pos);
ob->getOrientation(vob.localIdx, bodyRotation);
matvecmul(bodyRotation, vob.offset, offsetInWorld);
matmul(bodyRotation, vob.rot, rot);
raisim::rotMatToQuat(rot, quat);
pos = pos + offsetInWorld;
data_ = set(data_, pos, quat);
}

auto& colOb = dynamic_cast<ArticulatedSystem *>(ob)->getCollisionBodies();
for (uint64_t k = 0; k < colOb.size(); k++) {
auto &vob = colOb[k];
std::string name = std::to_string(ob->getIndexInWorld()) +
"/" + std::to_string(1) + "/" +
std::to_string(k);
data_ = set(data_, name);

Vec<3> pos, offsetInWorld;
Vec<4> quat;
Mat<3, 3> bodyRotation, rot;
ob->getPosition(vob.localIdx, pos);
ob->getOrientation(vob.localIdx, bodyRotation);
matvecmul(bodyRotation, vob.posOffset, offsetInWorld);
matmul(bodyRotation, vob.rotOffset, rot);
raisim::rotMatToQuat(rot, quat);
pos = pos + offsetInWorld;
data_ = set(data_, pos, quat);
}
} else if (ob->getObjectType() == ObjectType::COMPOUND) {
auto *com = dynamic_cast<Compound *>(ob);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -905,7 +905,7 @@ class ArticulatedSystem : public Object {
const std::vector<raisim::Vec<3>> &getBodyCOM_B() const { return comPos_B; }

/**
* @return a reference to the position of the center of the mass of each body in the world frame.*/
* @return a reference to the position of the center of the mass of each body in the world frame.*/
std::vector<raisim::Vec<3>> &getBodyCOM_W() { return comPos_W; }
const std::vector<raisim::Vec<3>> &getBodyCOM_W() const { return comPos_W; }

Expand Down
Binary file modified raisim/linux/lib/raisim.mexa64
Binary file not shown.
Binary file modified raisim/linux/lib/raisimpy.cpython-35m-x86_64-linux-gnu.so
Binary file not shown.
Binary file modified raisim/linux/lib/raisimpy.cpython-36m-x86_64-linux-gnu.so
Binary file not shown.
Binary file modified raisim/linux/lib/raisimpy.cpython-37m-x86_64-linux-gnu.so
Binary file not shown.
Binary file modified raisim/linux/lib/raisimpy.cpython-38-x86_64-linux-gnu.so
Binary file not shown.
Binary file modified raisim/linux/lib/raisimpy.cpython-39-x86_64-linux-gnu.so
Binary file not shown.

0 comments on commit 7f75e58

Please sign in to comment.