00001
00002
00003
00004
00005
00006
00007 #ifndef _RNE_ALGO_H
00008 #define _RNE_ALGO_H
00009
00010 #include <Physsim/RCArticulatedBodyInvDynAlgo.h>
00011
00012 namespace Physsim {
00013
00015
00018 class RNEAlgorithm : public RCArticulatedBodyInvDynAlgo
00019 {
00020 public:
00021 std::map<JointPtr, VectorN> calc_inv_dyn(RCArticulatedBodyPtr body, const std::map<RigidBodyPtr, RCArticulatedBodyInvDynData>& inv_dyn_data);
00022
00023 private:
00024 std::map<JointPtr, VectorN> calc_inv_dyn_fixed_base(RCArticulatedBodyPtr body, const std::map<RigidBodyPtr, RCArticulatedBodyInvDynData>& inv_dyn_data);
00025 std::map<JointPtr, VectorN> calc_inv_dyn_floating_base(RCArticulatedBodyPtr body, const std::map<RigidBodyPtr, RCArticulatedBodyInvDynData>& inv_dyn_data);
00026 void set_spatial_iso_inertias(RCArticulatedBodyPtr body, ReferenceFrameType rftype);
00027 std::vector<SMatrix6> _Iiso;
00028 };
00029 }
00030
00031 #endif
00032