1#include "../include/hand.h"
17 bool type,
const Eigen::Vector3d& origin)
24 nlohmann::json json_file = nlohmann::json::parse(file);
38 std::vector<std::vector<Eigen::MatrixXd>> vertex_data;
42 viewer->data_list.size();
48 for (
size_t i = 0; i <
m_fingers.size(); i++)
54 mesh_idx = viewer->data_list.size();
73 igl::opengl::glfw::Viewer& viewer)
76 std::vector<std::vector<Eigen::MatrixXd>> vertex_data;
79 for (
size_t i = 0; i <
m_fingers.size(); i++)
82 std::vector<int> frame_ids =
m_fingers.at(i).get_frame_ids();
85 std::vector<dm::JointState> state_vec =
m_fingers.at(i).get_state();
87 for (
size_t j = 0; j < frame_ids.size(); j++)
89 state_vec.at(j).euler = euler_id.at(frame_ids.at(j));
96 std::vector<Eigen::MatrixXd> finger_i_vertices =
100 for (
size_t j = 0; j < finger_i_vertices.size(); j++)
104 finger_i_vertices.at(j).rows());
107 finger_i_vertices.at(j) = t_mat + (
m_hand_rot *
108 finger_i_vertices.at(j).transpose()).transpose();
112 vertex_data.push_back(finger_i_vertices);
116 m_vertex_data = concatenate_data<Eigen::MatrixXd>(vertex_data);
139 Eigen::MatrixXd t_mat = Eigen::MatrixXd(vert_num, offset.rows());
142 Eigen::VectorXd ones_vec = Eigen::VectorXd::Ones(vert_num);
144 for(
size_t i = 0; i < offset.rows(); i++)
146 t_mat.col(i) = offset(i) * ones_vec;
void update(const std::vector< Eigen::Vector3d > &euler_id, igl::opengl::glfw::Viewer &viewer)
It updates the hand vertices based on the euler angles for its skeleton joints. These are fed through...
std::string m_config_rel_path
std::filesystem::path m_config_abs_path
Absolute name of hand's configuration file.
int m_viewer_data_lower_idx
std::vector< std::string > m_hand_config
Hand configuration.
Eigen::MatrixXd translation_matrix(const Eigen::Vector3d &offset, size_t vert_num)
This function offset a set of vertices by a given offset.
void initialize(igl::opengl::glfw::Viewer *viewer, Exoskeleton *exo_handler, AnimatedHand *anim_hand, bool type, const Eigen::Vector3d &origin)
Initialize the hand.
std::vector< Finger > m_fingers
Vector of finger handles.
Eigen::Vector3d m_hand_origin
Hand origin with respect to the inertial frame of reference .
int m_viewer_data_upper_idx
Eigen::Matrix3d m_hand_rot
std::vector< Eigen::MatrixXd > m_vertex_data
Vertex data container.