Program Listing for File robot_poses_widget.hpp
↰ Return to documentation for file (include/moveit_setup_srdf_plugins/robot_poses_widget.hpp
)
/*********************************************************************
* Software License Agreement (BSD License)
*
* Copyright (c) 2012, Willow Garage, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of Willow Garage nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
/* Author: Dave Coleman */
#pragma once
// Qt
#include <QComboBox>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QScrollArea>
#include <QSlider>
#include <QStackedWidget>
#include <QTableWidget>
#include <QVBoxLayout>
// SA
#include <moveit_setup_framework/qt/setup_step_widget.hpp>
#include <moveit_setup_srdf_plugins/robot_poses.hpp>
namespace moveit_setup
{
namespace srdf_setup
{
class RobotPosesWidget : public SetupStepWidget
{
Q_OBJECT
public:
// ******************************************************************************************
// Public Functions
// ******************************************************************************************
void onInit() override;
void focusGiven() override;
SetupStep& getSetupStep() override
{
return setup_step_;
}
// ******************************************************************************************
// Qt Components
// ******************************************************************************************
QTableWidget* data_table_;
QPushButton* btn_edit_;
QPushButton* btn_delete_;
QPushButton* btn_save_;
QPushButton* btn_cancel_;
QStackedWidget* stacked_widget_;
QScrollArea* scroll_area_;
QVBoxLayout* column2_;
QLineEdit* pose_name_field_;
QComboBox* group_name_field_;
QWidget* joint_list_widget_;
QVBoxLayout* joint_list_layout_;
QWidget* pose_list_widget_;
QWidget* pose_edit_widget_;
QLabel* collision_warning_;
private Q_SLOTS:
// ******************************************************************************************
// Slot Event Functions
// ******************************************************************************************
void showNewScreen();
void editSelected();
void editDoubleClicked(int row, int column);
void previewClicked(int row, int column, int previous_row, int previous_column);
void deleteSelected();
void doneEditing();
void cancelEditing();
void loadJointSliders(const QString& selected);
void showDefaultPose();
void playPoses();
void updateRobotModel(const std::string& name, double value);
private:
// ******************************************************************************************
// Variables
// ******************************************************************************************
RobotPoses setup_step_;
srdf::Model::GroupState* current_edit_pose_;
// ******************************************************************************************
// Private Functions
// ******************************************************************************************
QWidget* createContentsWidget();
QWidget* createEditWidget();
void loadDataTable();
void loadGroupsComboBox();
void edit(int row);
void showPose(const srdf::Model::GroupState& pose);
void updateStateAndCollision(const moveit::core::RobotState& robot_state);
};
// ******************************************************************************************
// ******************************************************************************************
// Slider Widget
// ******************************************************************************************
// ******************************************************************************************
class SliderWidget : public QWidget
{
Q_OBJECT
public:
// ******************************************************************************************
// Public Functions
// ******************************************************************************************
SliderWidget(QWidget* parent, const moveit::core::JointModel* joint_model, double init_value);
~SliderWidget() override;
// ******************************************************************************************
// Qt Components
// ******************************************************************************************
QLabel* joint_label_;
QSlider* joint_slider_;
QLineEdit* joint_value_;
private Q_SLOTS:
// ******************************************************************************************
// Slot Event Functions
// ******************************************************************************************
void changeJointValue(int value);
void changeJointSlider();
Q_SIGNALS:
// ******************************************************************************************
// Emitted Signal Functions
// ******************************************************************************************
void jointValueChanged(const std::string& name, double value);
private:
// ******************************************************************************************
// Variables
// ******************************************************************************************
// Ptr to the joint's data
const moveit::core::JointModel* joint_model_;
// Max & min position
double max_position_;
double min_position_;
// ******************************************************************************************
// Private Functions
// ******************************************************************************************
};
} // namespace srdf_setup
} // namespace moveit_setup
// Declare std::string as metatype so we can use it in a signal
Q_DECLARE_METATYPE(std::string)