24 #include <QMessageBox> 26 #include "../include/thormang3_demo/main_window.hpp" 42 : QMainWindow(parent),
43 qnode_thor3_(argc, argv),
52 std::string args_code(argv[1]);
53 if (args_code ==
"debug")
58 if (args_code ==
"demo")
65 QObject::connect(
ui_.actionAbout_Qt, SIGNAL(triggered(
bool)), qApp, SLOT(aboutQt()));
68 setWindowIcon(QIcon(
":/images/icon.png"));
70 ui_.tab_manager->setCurrentIndex(0);
71 QObject::connect(&
qnode_thor3_, SIGNAL(rosShutdown()),
this, SLOT(close()));
73 qRegisterMetaType<std::vector<int> >(
"std::vector<int>");
74 QObject::connect(&
qnode_thor3_, SIGNAL(updatePresentJointControlModules(std::vector<int>)),
this,
83 QObject::connect(&
qnode_thor3_, SIGNAL(updateCurrPos(
double ,
double ,
double)),
this,
85 QObject::connect(&
qnode_thor3_, SIGNAL(updateCurrOri(
double ,
double ,
double,
double)),
this,
88 QObject::connect(
ui_.tabWidget_control, SIGNAL(currentChanged(
int)), &
qnode_thor3_, SLOT(setCurrentControlUI(
int)));
90 qRegisterMetaType<geometry_msgs::Point>(
"geometry_msgs::Point");
91 qRegisterMetaType<geometry_msgs::Pose>(
"geometry_msgs::Pose");
92 connect(&
qnode_thor3_, SIGNAL(updateDemoPoint(geometry_msgs::Point)),
this,
156 std::string tab_name =
ui_.tabWidget_control->tabText(
ui_.tabWidget_control->currentIndex()).toStdString();
157 if (tab_name !=
"Demo")
158 ui_.tabWidget_control->currentWidget()->setEnabled(
false);
164 std_msgs::String msg;
165 msg.data =
"ini_pose";
177 thormang3_manipulation_module_msgs::JointPose msg;
179 msg.name =
ui_.joint_combobox->currentText().toStdString();
180 msg.value = deg2rad<double>(
ui_.joint_spinbox->value());
187 double z_offset = 0.723;
190 ui_.dSpinBox_marker_pos_z->value() + z_offset);
193 ui_.dSpinBox_marker_ori_y->value());
203 thormang3_manipulation_module_msgs::KinematicsPose msg;
205 msg.name =
ui_.group_combobox->currentText().toStdString();
207 msg.pose.position.x =
ui_.pos_x_spinbox->value();
208 msg.pose.position.y =
ui_.pos_y_spinbox->value();
209 msg.pose.position.z =
ui_.pos_z_spinbox->value();
212 double roll = deg2rad<double>(
ui_.ori_roll_spinbox->value());
213 double pitch = deg2rad<double>(
ui_.ori_pitch_spinbox->value());
214 double yaw = deg2rad<double>(
ui_.ori_yaw_spinbox->value());
216 Eigen::Quaterniond orientation =
rpy2quaternion(roll, pitch, yaw);
218 msg.pose.orientation.x = orientation.x();
219 msg.pose.orientation.y = orientation.y();
220 msg.pose.orientation.z = orientation.z();
221 msg.pose.orientation.w = orientation.w();
296 geometry_msgs::Pose target_pose;
297 target_pose.position.x =
ui_.dSpinBox_marker_pos_x->value();
298 target_pose.position.y =
ui_.dSpinBox_marker_pos_y->value();
299 target_pose.position.z =
ui_.dSpinBox_marker_pos_z->value();
301 double roll = deg2rad<double>(
ui_.dSpinBox_marker_ori_r->value());
302 double pitch = deg2rad<double>(
ui_.dSpinBox_marker_ori_p->value());
303 double yaw = deg2rad<double>(
ui_.dSpinBox_marker_ori_y->value());
305 Eigen::Quaterniond orientation =
rpy2quaternion(roll, pitch, yaw);
307 target_pose.orientation.x = orientation.x();
308 target_pose.orientation.y = orientation.y();
309 target_pose.orientation.z = orientation.z();
310 target_pose.orientation.w = orientation.w();
315 ui_.A1_button_clear_step->setEnabled(
true);
316 ui_.A2_button_go_walking->setEnabled(
true);
323 ui_.A1_button_clear_step->setEnabled(
false);
324 ui_.A2_button_go_walking->setEnabled(
false);
331 ui_.A1_button_clear_step->setEnabled(
false);
332 ui_.A2_button_go_walking->setEnabled(
false);
418 geometry_msgs::Pose current_pose;
422 if (current_pose.position.x == 0 && current_pose.position.y == 0 && current_pose.position.z == 0)
424 current_pose.position.x = 0.305;
425 current_pose.position.y = (
ui_.comboBox_arm_group->currentText().toStdString() ==
"Right Arm") ? -0.3 : 0.3;
426 current_pose.position.z = 0.108;
437 thormang3_manipulation_module_msgs::KinematicsPose msg;
438 double z_offset = 0.723;
441 std::string selected_arm =
ui_.comboBox_arm_group->currentText().toStdString();
442 std::string arm_group = (selected_arm ==
"Right Arm") ?
"right_arm_with_torso" :
"left_arm_with_torso";
443 msg.name = arm_group;
445 msg.pose.position.x =
ui_.dSpinBox_marker_pos_x->value() +
ui_.dSpinBox_offset_x->value();
446 msg.pose.position.y =
ui_.dSpinBox_marker_pos_y->value() +
ui_.dSpinBox_offset_y->value();
447 msg.pose.position.z =
ui_.dSpinBox_marker_pos_z->value() +
ui_.dSpinBox_offset_z->value() + z_offset;
449 double roll = deg2rad<double>(
ui_.dSpinBox_marker_ori_r->value());
450 double pitch = deg2rad<double>(
ui_.dSpinBox_marker_ori_p->value());
451 double yaw = deg2rad<double>(
ui_.dSpinBox_marker_ori_y->value());
453 Eigen::Quaterniond orientation =
rpy2quaternion(roll, pitch, yaw);
455 msg.pose.orientation.x = orientation.x();
456 msg.pose.orientation.y = orientation.y();
457 msg.pose.orientation.z = orientation.z();
458 msg.pose.orientation.w = orientation.w();
470 std::string arm_group =
471 (
ui_.comboBox_arm_group->currentText().toStdString() ==
"Right Arm") ?
"r_arm_grip" :
"l_arm_grip";
478 std::string arm_group =
479 (
ui_.comboBox_arm_group->currentText().toStdString() ==
"Right Arm") ?
"r_arm_grip" :
"l_arm_grip";
524 double y_offset = (
ui_.comboBox_kick_foot->currentText().toStdString() ==
"Right Foot") ? 0.093 : -0.093;
526 geometry_msgs::Pose target_pose;
527 target_pose.position.x =
ui_.dSpinBox_marker_pos_x->value();
528 target_pose.position.y =
ui_.dSpinBox_marker_pos_y->value() + y_offset;
529 target_pose.position.z =
ui_.dSpinBox_marker_pos_z->value();
531 double roll = deg2rad<double>(
ui_.dSpinBox_marker_ori_r->value());
532 double pitch = deg2rad<double>(
ui_.dSpinBox_marker_ori_p->value());
533 double yaw = deg2rad<double>(
ui_.dSpinBox_marker_ori_y->value());
535 Eigen::Quaterniond orientation =
rpy2quaternion(roll, pitch, yaw);
537 target_pose.orientation.x = orientation.x();
538 target_pose.orientation.y = orientation.y();
539 target_pose.orientation.z = orientation.z();
540 target_pose.orientation.w = orientation.w();
571 std::string kick_command =
572 (
ui_.comboBox_kick_foot->currentText().toStdString() ==
"Right Foot") ?
"right kick" :
"left kick";
597 ui_.view_logging->scrollToBottom();
604 QSignalMapper *sig_map =
new QSignalMapper(
this);
607 QShortcut *short_tab1 =
new QShortcut(QKeySequence(
"F1"),
this);
608 connect(short_tab1, SIGNAL(activated()), sig_map, SLOT(map()));
609 sig_map->setMapping(short_tab1, 0);
612 QShortcut *short_tab2 =
new QShortcut(QKeySequence(
"F2"),
this);
613 connect(short_tab2, SIGNAL(activated()), sig_map, SLOT(map()));
614 sig_map->setMapping(short_tab2, 1);
617 QShortcut *short_tab3 =
new QShortcut(QKeySequence(
"F3"),
this);
618 connect(short_tab3, SIGNAL(activated()), sig_map, SLOT(map()));
619 sig_map->setMapping(short_tab3, 2);
622 QShortcut *short_tab4 =
new QShortcut(QKeySequence(
"F4"),
this);
623 connect(short_tab4, SIGNAL(activated()), sig_map, SLOT(map()));
624 sig_map->setMapping(short_tab4, 3);
627 QShortcut *short_tab5 =
new QShortcut(QKeySequence(
"F5"),
this);
628 connect(short_tab5, SIGNAL(activated()), sig_map, SLOT(map()));
629 sig_map->setMapping(short_tab5, 4);
632 QShortcut *short_tab6 =
new QShortcut(QKeySequence(
"F6"),
this);
633 connect(short_tab6, SIGNAL(activated()), sig_map, SLOT(map()));
634 sig_map->setMapping(short_tab6, 5);
637 connect(sig_map, SIGNAL(mapped(
int)),
ui_.tabWidget_control, SLOT(setCurrentIndex(
int)));
642 QList<QComboBox *> combo_children =
ui_.widget_mode->findChildren<QComboBox *>();
644 for (
int ix = 0; ix < combo_children.length(); ix++)
646 int control_index = mode.at(ix);
647 combo_children.at(ix)->setCurrentIndex(control_index);
651 std::stringstream log_stream;
652 std::string joint_name;
655 std::string control_mode = combo_children.at(ix)->currentText().toStdString();
659 log_stream <<
"[" << (
id < 10 ?
"0" :
"") <<
id <<
"] " << joint_name <<
" : " << control_mode;
661 log_stream <<
"id " << ix <<
" : " << control_mode;
682 std::map<std::string, QList<QWidget *> >::iterator module_iter =
module_ui_table_.find(mode);
686 QList<QWidget *> list = module_iter->second;
687 for (
int ix = 0; ix < list.size(); ix++)
690 list.at(ix)->setEnabled(is_enable);
698 if (
ui_.head_pan_slider->underMouse() ==
true)
700 if (
ui_.head_pan_spinbox->underMouse() ==
true)
702 if (
ui_.head_tilt_slider->underMouse() ==
true)
704 if (
ui_.head_tilt_spinbox->underMouse() ==
true)
709 ui_.head_pan_slider->setValue(rad2deg<double>(pan));
710 ui_.head_tilt_slider->setValue(rad2deg<double>(tilt));
720 deg2rad<double>(
ui_.head_tilt_slider->value()));
730 bool to_action_script =
ui_.checkBox_action_script->isChecked();
738 ui_.joint_spinbox->setValue(rad2deg<double>(value));
743 ui_.pos_x_spinbox->setValue(x);
744 ui_.pos_y_spinbox->setValue(y);
745 ui_.pos_z_spinbox->setValue(z);
750 Eigen::Quaterniond orientation(w, x, y, z);
751 Eigen::Vector3d euler = rad2deg<Eigen::Vector3d>(
quaternion2rpy(orientation));
753 ui_.ori_roll_spinbox->setValue(euler[0]);
754 ui_.ori_pitch_spinbox->setValue(euler[1]);
755 ui_.ori_yaw_spinbox->setValue(euler[2]);
760 ui_.ori_roll_spinbox->setValue(r);
761 ui_.ori_pitch_spinbox->setValue(p);
762 ui_.ori_yaw_spinbox->setValue(y);
767 sensor_msgs::JointState gripper_joint;
768 gripper_joint.name.push_back(arm_type);
769 gripper_joint.position.push_back(deg2rad<double>(angle_deg));
770 gripper_joint.effort.push_back(torque_limit);
778 thormang3_foot_step_generator::FootStepCommand msg;
780 msg.command = command;
781 msg.step_num =
ui_.A1_spinbox_step_num->value();
782 msg.step_time =
ui_.AB1_spinbox_step_time->value();
783 msg.step_length =
ui_.B1_spinbox_f_step_length->value();
784 msg.side_step_length =
ui_.C1_spinbox_s_step_length->value();
785 msg.step_angle_rad = deg2rad<double>(
ui_.D1_spinbox_r_angle->value());
815 current.position.x =
ui_.dSpinBox_marker_pos_x->value();
816 current.position.y =
ui_.dSpinBox_marker_pos_y->value();
817 current.position.z =
ui_.dSpinBox_marker_pos_z->value();
820 Eigen::Vector3d euler(
ui_.dSpinBox_marker_ori_r->value(),
ui_.dSpinBox_marker_ori_p->value(),
821 ui_.dSpinBox_marker_ori_y->value());
822 Eigen::Quaterniond orientation =
rpy2quaternion(deg2rad<Eigen::Vector3d>(euler));
830 ui_.dSpinBox_marker_pos_x->setValue(current.position.x);
831 ui_.dSpinBox_marker_pos_y->setValue(current.position.y);
832 ui_.dSpinBox_marker_pos_z->setValue(current.position.z);
835 Eigen::Vector3d euler = rad2deg<Eigen::Vector3d>(
quaternion2rpy(current.orientation));
837 ui_.dSpinBox_marker_ori_r->setValue(euler[0]);
838 ui_.dSpinBox_marker_ori_p->setValue(euler[1]);
839 ui_.dSpinBox_marker_ori_y->setValue(euler[2]);
845 current.x =
ui_.dSpinBox_marker_pos_x->value();
846 current.y =
ui_.dSpinBox_marker_pos_y->value();
847 current.z =
ui_.dSpinBox_marker_pos_z->value();
853 ui_.dSpinBox_marker_pos_x->setValue(current.x);
854 ui_.dSpinBox_marker_pos_y->setValue(current.y);
855 ui_.dSpinBox_marker_pos_z->setValue(current.z);
858 ui_.dSpinBox_marker_ori_r->setValue(0.0);
859 ui_.dSpinBox_marker_ori_p->setValue(0.0);
860 ui_.dSpinBox_marker_ori_y->setValue(0.0);
866 geometry_msgs::Pose current_pose;
878 geometry_msgs::Pose current_pose;
886 geometry_msgs::Pose init_pose;
900 QMessageBox::about(
this, tr(
"About ..."), tr(
"<h2>THORMANG3 Demo</h2><p>Copyright Robotis</p>"));
912 QHBoxLayout *preset_layout =
new QHBoxLayout;
913 QSignalMapper *signalMapper =
new QSignalMapper(
this);
919 std::string preset_name = iter->second;
920 QPushButton *preset_button =
new QPushButton(tr(preset_name.c_str()));
922 std::cout <<
"name : " << preset_name << std::endl;
924 preset_layout->addWidget(preset_button);
926 signalMapper->setMapping(preset_button, preset_button->text());
927 QObject::connect(preset_button, SIGNAL(clicked()), signalMapper, SLOT(map()));
930 QObject::connect(signalMapper, SIGNAL(mapped(QString)),
this, SLOT(
enableModule(QString)));
932 ui_.widget_mode_preset->setLayout(preset_layout);
935 QGridLayout *grid_mod =
new QGridLayout;
936 for (
int ix = 0; ix < number_joint; ix++)
938 std::stringstream stream;
948 stream <<
"[" << (
id < 10 ?
"0" :
"") <<
id <<
"] " << joint;
949 QLabel *label =
new QLabel(tr(stream.str().c_str()));
956 list << mode.c_str();
959 QComboBox *combo =
new QComboBox();
960 combo->setObjectName(tr(joint.c_str()));
961 combo->addItems(list);
962 combo->setEnabled(
false);
963 int row = ix / 2 + 1;
964 int col = (ix % 2) * 3;
965 grid_mod->addWidget(label, row, col, 1, 1);
966 grid_mod->addWidget(combo, row, col + 1, 1, 2);
970 QPushButton *get_mode_button =
new QPushButton(tr(
"Get Mode"));
971 grid_mod->addWidget(get_mode_button, (number_joint / 2) + 2, 0, 1, 3);
972 QObject::connect(get_mode_button, SIGNAL(clicked(
bool)), &
qnode_thor3_, SLOT(getJointControlModule()));
974 ui_.widget_mode->setLayout(grid_mod);
982 std::string mode_reg =
"*" + mode;
984 QRegExp rx(QRegExp(tr(mode_reg.c_str())));
985 rx.setPatternSyntax(QRegExp::Wildcard);
987 QList<QWidget *> list =
ui_.centralwidget->findChildren<QWidget *>(rx);
991 std::cout <<
"Module widget : " << mode <<
" [" << list.size() <<
"]" << std::endl;
1002 QGridLayout *motion_layout =
new QGridLayout;
1003 QGridLayout *demo_motion_layout =
new QGridLayout;
1004 QSignalMapper *signalMapper =
new QSignalMapper(
this);
1005 QSignalMapper *demo_signalMapper =
new QSignalMapper(
this);
1012 int motion_index = iter->first;
1013 std::string motion_name = iter->second;
1014 QString q_motion_name = QString::fromStdString(motion_name);
1015 QPushButton *motion_button =
new QPushButton(q_motion_name);
1016 QPushButton *demo_motion_button =
new QPushButton(q_motion_name);
1018 int size = (motion_index < 0) ? 2 : 1;
1019 int row = index / 4;
1020 int col = index % 4;
1021 motion_layout->addWidget(motion_button, row, col, 1, size);
1022 demo_motion_layout->addWidget(demo_motion_button, row, col, 1, size);
1024 signalMapper->setMapping(motion_button, motion_index);
1025 QObject::connect(motion_button, SIGNAL(clicked()), signalMapper, SLOT(map()));
1026 demo_signalMapper->setMapping(demo_motion_button, motion_index);
1027 QObject::connect(demo_motion_button, SIGNAL(clicked()), demo_signalMapper, SLOT(map()));
1032 int row = index / 4;
1033 row = (index % 4 == 0) ? row : row + 1;
1034 QSpacerItem *verticalSpacer =
new QSpacerItem(20, 400, QSizePolicy::Minimum, QSizePolicy::Expanding);
1035 motion_layout->addItem(verticalSpacer, row, 0, 1, 4);
1036 QSpacerItem *demo_verticalSpacer =
new QSpacerItem(20, 400, QSizePolicy::Minimum, QSizePolicy::Expanding);
1037 demo_motion_layout->addItem(demo_verticalSpacer, row, 0, 1, 4);
1039 QObject::connect(signalMapper, SIGNAL(mapped(
int)),
this, SLOT(
playMotion(
int)));
1040 QObject::connect(demo_signalMapper, SIGNAL(mapped(
int)),
this, SLOT(
playMotion(
int)));
1042 ui_.scroll_widget_motion->setLayout(motion_layout);
1043 ui_.scroll_widget_demo_motion->setLayout(demo_motion_layout);
1053 QSettings settings(
"Qt-Ros Package",
"thormang3_demo");
1054 restoreGeometry(settings.value(
"geometry").toByteArray());
1055 restoreState(settings.value(
"windowState").toByteArray());
1060 QSettings settings(
"Qt-Ros Package",
"thormang3_demo");
1061 settings.setValue(
"geometry", saveGeometry());
1062 settings.setValue(
"windowState", saveState());
1068 QMainWindow::closeEvent(event);
1077 Eigen::Vector3d rpy;
1079 rpy[0] =
atan2(rotation.coeff(2, 1), rotation.coeff(2, 2));
1080 rpy[1] =
atan2(-rotation.coeff(2, 0),
sqrt(
pow(rotation.coeff(2, 1), 2) +
pow(rotation.coeff(2, 2), 2)));
1081 rpy[2] =
atan2(rotation.coeff(1, 0), rotation.coeff(0, 0));
1100 Eigen::MatrixXd rotation =
rpy2rotation(roll, pitch, yaw);
1102 Eigen::Matrix3d rotation3d;
1103 rotation3d = rotation.block(0, 0, 3, 3);
1105 Eigen::Quaterniond quaternion;
1107 quaternion = rotation3d;
1114 Eigen::Matrix3d rotation3d;
1116 rotation3d = rotation.block(0, 0, 3, 3);
1118 Eigen::Quaterniond quaternion;
1119 quaternion = rotation3d;
1126 Eigen::Vector3d rpy =
rotation2rpy(quaternion.toRotationMatrix());
1133 Eigen::Quaterniond eigen_quaternion;
1136 Eigen::Vector3d rpy =
rotation2rpy(eigen_quaternion.toRotationMatrix());
1143 Eigen::MatrixXd rotation = quaternion.toRotationMatrix();
1150 Eigen::MatrixXd rotation(3, 3);
1152 rotation << 1.0, 0.0, 0.0, 0.0,
cos(angle), -
sin(angle), 0.0,
sin(angle),
cos(angle);
1159 Eigen::MatrixXd rotation(3, 3);
1161 rotation <<
cos(angle), 0.0,
sin(angle), 0.0, 1.0, 0.0, -
sin(angle), 0.0,
cos(angle);
1168 Eigen::MatrixXd rotation(3, 3);
1170 rotation <<
cos(angle), -
sin(angle), 0.0,
sin(angle),
cos(angle), 0.0, 0.0, 0.0, 1.0;
void on_button_walking_demo_1_clicked(bool check)
bool getIDJointNameFromIndex(const int &index, int &id, std::string &joint_name)
void on_C2_button_br_clicked(bool check)
Eigen::Vector3d quaternion2rpy(const Eigen::Quaterniond &quaternion)
void on_dSpinBox_marker_ori_y_valueChanged(double value)
void sendInitPoseMsg(std_msgs::String msg)
void on_dSpinBox_marker_ori_p_valueChanged(double value)
void clearInteractiveMarker()
void on_button_balance_off_clicked(bool check)
void on_button_grip_on_clicked(bool check)
void on_button_ft_calc_clicked(bool check)
Eigen::MatrixXd rpy2rotation(const double &roll, const double &pitch, const double &yaw)
void on_despos_button_clicked(bool check)
Eigen::MatrixXd rotationX(const double &angle)
void on_button_manipulation_demo_7_clicked(bool check)
void setGripper(const double angle_deg, const double torque_limit, const std::string &arm_type)
Eigen::Quaterniond rotation2quaternion(const Eigen::MatrixXd &rotation)
void quaternionEigenToMsg(const Eigen::Quaterniond &e, geometry_msgs::Quaternion &m)
std::map< std::string, QList< QWidget * > > module_ui_table_
void sendDestJointMsg(thormang3_manipulation_module_msgs::JointPose msg)
void updatePointPanel(const geometry_msgs::Point point)
void on_A1_button_f_clicked(bool check)
void on_button_feedback_gain_apply_clicked(bool check)
void on_button_manipulation_demo_6_clicked(bool check)
void updatePresentJointModule(std::vector< int > mode)
void on_A2_button_go_walking_clicked(bool check)
void on_A2_button_fr_clicked(bool check)
void on_button_clear_log_clicked(bool check)
static const double GRIPPER_TORQUE_LIMIT
bool isUsingModule(const std::string &module_name)
void on_button_marker_set_clicked()
void updateCurrOriSpinbox(double x, double y, double z, double w)
void on_button_assemble_lidar_clicked(bool check)
void getKinematicsPose(std::string group_name)
void on_B2_button_r_clicked(bool check)
void setWalkingFootsteps()
Eigen::MatrixXd rotationY(const double &angle)
void closeEvent(QCloseEvent *event)
void on_button_walking_demo_6_clicked(bool check)
void enableControlModule(const std::string &mode)
void on_button_ft_save_clicked(bool check)
void on_dSpinBox_marker_ori_r_valueChanged(double value)
void on_A0_button_fl_clicked(bool check)
void setWalkingBalance(bool on_command)
void updateCurrJointSpinbox(double value)
void on_currpos_button_clicked(bool check)
void on_button_manipulation_demo_2_clicked(bool check)
void kickDemo(const std::string &kick_foot)
void on_button_motion_demo_1_clicked(bool check)
void makeInteractiveMarker()
void playMotion(int motion_index, bool to_action_script=true)
void on_dSpinBox_marker_pos_y_valueChanged(double value)
void sendGripperPosition(sensor_msgs::JointState msg)
void on_currjoint_button_clicked(bool check)
void updateInteractiveMarker()
void enableModule(QString mode_name)
void sendWalkingCommand(const std::string &command)
void on_button_manipulation_demo_0_clicked(bool check)
static const double GRIPPER_OFF_ANGLE
void on_button_walking_demo_0_clicked(bool check)
void getPointFromMarkerPanel(geometry_msgs::Point ¤t)
void on_button_manipulation_demo_5_clicked(bool check)
void on_B1_button_stop_clicked(bool check)
void on_button_manipulation_demo_3_clicked(bool check)
void on_C1_button_b_clicked(bool check)
void on_A1_button_clear_step_clicked(bool check)
void makeFootstepUsingPlanner()
void on_button_walking_demo_2_clicked(bool check)
void on_button_walking_demo_3_clicked(bool check)
void on_button_init_pose_clicked(bool check)
void playMotion(int motion_index)
void on_get_despos_button_clicked(bool check)
void setPointToMarkerPanel(const geometry_msgs::Point ¤t)
void getPoseFromMarkerPanel(geometry_msgs::Pose ¤t)
void on_button_walking_demo_4_clicked(bool check)
void updatePosePanel(const geometry_msgs::Pose pose)
void on_button_manipulation_demo_1_clicked(bool check)
INLINE Rall1d< T, V, S > sqrt(const Rall1d< T, V, S > &arg)
Eigen::Vector3d rotation2rpy(const Eigen::MatrixXd &rotation)
void on_B0_button_l_clicked(bool check)
void on_inipose_button_clicked(bool check)
void log(const LogLevel &level, const std::string &msg, std::string sender="Demo")
void getJointPose(std::string joint_name)
void setHeadJointsAngle()
void setWalkingCommand(thormang3_foot_step_generator::FootStepCommand msg)
MainWindow(int argc, char **argv, QWidget *parent=0)
INLINE Rall1d< T, V, S > pow(const Rall1d< T, V, S > &arg, double m)
void on_actionAbout_triggered()
void on_button_ft_air_clicked(bool check)
void on_dSpinBox_marker_pos_x_valueChanged(double value)
std::map< int, std::string > module_table_
void on_A0_button_get_step_clicked(bool check)
static const double GRIPPER_ON_ANGLE
void on_button_balance_on_clicked(bool check)
std::string getModuleName(const int &index)
void on_button_walking_demo_7_clicked(bool check)
void on_button_walking_demo_5_clicked(bool check)
std::map< int, std::string > motion_table_
void on_button_grip_off_clicked(bool check)
void on_button_marker_clear_clicked()
void initFTCommand(std::string command)
INLINE Rall1d< T, V, S > atan2(const Rall1d< T, V, S > &y, const Rall1d< T, V, S > &x)
void updateHeadJointsAngle(double pan, double tilt)
void on_head_center_button_clicked(bool check)
void quaternionMsgToEigen(const geometry_msgs::Quaternion &m, Eigen::Quaterniond &e)
void on_desjoint_button_clicked(bool check)
void on_C0_button_bl_clicked(bool check)
void sendIkMsg(thormang3_manipulation_module_msgs::KinematicsPose msg)
void on_button_manipulation_demo_4_clicked(bool check)
INLINE Rall1d< T, V, S > cos(const Rall1d< T, V, S > &arg)
void updateCurrPosSpinbox(double x, double y, double z)
int getModuleIndex(const std::string &mode_name)
void on_button_ft_gnd_clicked(bool check)
void on_tabWidget_control_currentChanged(int index)
void makeInteractiveMarker(const geometry_msgs::Pose &marker_pose)
Eigen::Quaterniond rpy2quaternion(const Eigen::Vector3d &euler)
QStringListModel * loggingModel()
Eigen::MatrixXd rotationZ(const double &angle)
INLINE Rall1d< T, V, S > sin(const Rall1d< T, V, S > &arg)
Eigen::MatrixXd quaternion2rotation(const Eigen::Quaterniond &quaternion)
void on_dSpinBox_marker_pos_z_valueChanged(double value)
void on_button_motion_demo_0_clicked(bool check)
void updateInteractiveMarker(const geometry_msgs::Pose &pose)
void setPoseToMarkerPanel(const geometry_msgs::Pose ¤t)
void setHeadJoint(double pan, double tilt)