// BEGIN_TUTORIAL // Here is the implementation of the TeleopPanel class. TeleopPanel // has these responsibilities: // // - Act as a container for GUI elements DriveWidget and QLineEdit. // - Publish command velocities 10 times per second (whether 0 or not). // - Saving and restoring internal state from a config file. // // We start with the constructor, doing the standard Qt thing of // passing the optional *parent* argument on to the superclass // constructor, and also zero-ing the velocities we will be // publishing. TeleopPanel::TeleopPanel( QWidget* parent ) : rviz::Panel( parent ) , linear_velocity_( 0 ) , angular_velocity_( 0 ) { // Next we lay out the "output topic" text entry field using a // QLabel and a QLineEdit in a QHBoxLayout. QHBoxLayout* topic_layout = new QHBoxLayout; topic_layout->addWidget( new QLabel( "Output Topic:" )); output_topic_editor_ = new QLineEdit; topic_layout->addWidget( output_topic_editor_ ); // Then create the control widget. drive_widget_ = new DriveWidget; // Lay out the topic field above the control widget. QVBoxLayout* layout = new QVBoxLayout; layout->addLayout( topic_layout ); layout->addWidget( drive_widget_ ); setLayout( layout ); // Create a timer for sending the output. Motor controllers want to // be reassured frequently that they are doing the right thing, so // we keep re-sending velocities even when they aren't changing. // // Here we take advantage of QObject's memory management behavior: // since "this" is passed to the new QTimer as its parent, the // QTimer is deleted by the QObject destructor when this TeleopPanel // object is destroyed. Therefore we don't need to keep a pointer // to the timer. QTimer* output_timer = new QTimer( this ); // Next we make signal/slot connections. connect( drive_widget_, SIGNAL( outputVelocity( float, float )), this, SLOT( setVel( float, float ))); connect( output_topic_editor_, SIGNAL( editingFinished() ), this, SLOT( updateTopic() )); connect( output_timer, SIGNAL( timeout() ), this, SLOT( sendVel() )); // Start the timer. output_timer->start( 100 ); // Make the control widget start disabled, since we don't start with an output topic. drive_widget_->setEnabled( false ); }
// only the first time void OverlayTextDisplay::onInitialize() { onEnable(); updateTopic(); updateOvertakePositionProperties(); updateOvertakeColorProperties(); updateTop(); updateLeft(); updateWidth(); updateHeight(); updateTextSize(); updateFGColor(); updateFGAlpha(); updateBGColor(); updateBGAlpha(); updateFont(); updateLineWidth(); require_update_texture_ = true; }
void GoalTool::onInitialize() { PoseTool::onInitialize(); setName( "2D Nav Goal" ); updateTopic(); }
OverlayTextDisplay::OverlayTextDisplay() : Display(), texture_width_(0), texture_height_(0), text_size_(14), line_width_(2), text_(""), font_(""), bg_color_(0, 0, 0, 0), fg_color_(255, 255, 255, 255.0), require_update_texture_(false) { update_topic_property_ = new rviz::RosTopicProperty( "Topic", "", ros::message_traits::datatype<jsk_rviz_plugins::OverlayText>(), "jsk_rviz_plugins::OverlayText topic to subscribe to.", this, SLOT( updateTopic() )); overtake_position_properties_property_ = new rviz::BoolProperty( "Overtake Position Properties", false, "overtake position properties specified by message such as left, top and font", this, SLOT(updateOvertakePositionProperties())); overtake_color_properties_property_ = new rviz::BoolProperty( "Overtake Color Properties", false, "overtake color properties specified by message such as left, top and font", this, SLOT(updateOvertakeColorProperties())); top_property_ = new rviz::IntProperty( "top", 0, "top position", this, SLOT(updateTop())); top_property_->setMin(0); left_property_ = new rviz::IntProperty( "left", 0, "left position", this, SLOT(updateLeft())); left_property_->setMin(0); width_property_ = new rviz::IntProperty( "width", 128, "width position", this, SLOT(updateWidth())); width_property_->setMin(0); height_property_ = new rviz::IntProperty( "height", 128, "height position", this, SLOT(updateHeight())); height_property_->setMin(0); text_size_property_ = new rviz::IntProperty( "text size", 12, "text size", this, SLOT(updateTextSize())); text_size_property_->setMin(0); line_width_property_ = new rviz::IntProperty( "line width", 2, "line width", this, SLOT(updateLineWidth())); line_width_property_->setMin(0); fg_color_property_ = new rviz::ColorProperty( "Foreground Color", QColor(25, 255, 240), "Foreground Color", this, SLOT(updateFGColor())); fg_alpha_property_ = new rviz::FloatProperty( "Foreground Alpha", 0.8, "Foreground Alpha", this, SLOT(updateFGAlpha())); fg_alpha_property_->setMin(0.0); fg_alpha_property_->setMax(1.0); bg_color_property_ = new rviz::ColorProperty( "Background Color", QColor(0, 0, 0), "Background Color", this, SLOT(updateBGColor())); bg_alpha_property_ = new rviz::FloatProperty( "Background Alpha", 0.8, "Background Alpha", this, SLOT(updateBGAlpha())); bg_alpha_property_->setMin(0.0); bg_alpha_property_->setMax(1.0); QFontDatabase database; font_families_ = database.families(); font_property_ = new rviz::EnumProperty( "font", "DejaVu Sans Mono", "font", this, SLOT(updateFont())); for (size_t i = 0; i < font_families_.size(); i++) { font_property_->addOption(font_families_[i], (int)i); } }
PieChartDisplay::PieChartDisplay() : rviz::Display() { update_topic_property_ = new rviz::RosTopicProperty( "Topic", "", ros::message_traits::datatype<std_msgs::Float32>(), "std_msgs::Float32 topic to subscribe to.", this, SLOT( updateTopic() )); size_property_ = new rviz::IntProperty("size", 128, "size of the plotter window", this, SLOT(updateSize())); left_property_ = new rviz::IntProperty("left", 128, "left of the plotter window", this, SLOT(updateLeft())); top_property_ = new rviz::IntProperty("top", 128, "top of the plotter window", this, SLOT(updateTop())); fg_color_property_ = new rviz::ColorProperty("foreground color", QColor(25, 255, 240), "color to draw line", this, SLOT(updateFGColor())); fg_alpha_property_ = new rviz::FloatProperty("foreground alpha", 0.7, "alpha belnding value for foreground", this, SLOT(updateFGAlpha())); fg_alpha2_property_ = new rviz::FloatProperty("foreground alpha 2", 0.4, "alpha belnding value for foreground for indicator", this, SLOT(updateFGAlpha2())); bg_color_property_ = new rviz::ColorProperty("background color", QColor(0, 0, 0), "background color", this, SLOT(updateBGColor())); bg_alpha_property_ = new rviz::FloatProperty("backround alpha", 0.0, "alpha belnding value for background", this, SLOT(updateBGAlpha())); text_color_property_ = new rviz::ColorProperty("text color", QColor(25, 255, 240), "text color", this, SLOT(updateTextColor())); text_alpha_property_ = new rviz::FloatProperty("text alpha", 1.0, "alpha belnding value for text", this, SLOT(updateTextAlpha())); text_size_property_ = new rviz::IntProperty("text size", 14, "text size", this, SLOT(updateTextSize())); show_caption_property_ = new rviz::BoolProperty("show caption", true, "show caption", this, SLOT(updateShowCaption())); max_value_property_ = new rviz::FloatProperty("max value", 1.0, "max value of pie chart", this, SLOT(updateMaxValue())); min_value_property_ = new rviz::FloatProperty("min value", 0.0, "min value of pie chart", this, SLOT(updateMinValue())); auto_color_change_property_ = new rviz::BoolProperty("auto color change", false, "change the color automatically", this, SLOT(updateAutoColorChange())); max_color_property_ = new rviz::ColorProperty("max color", QColor(255, 0, 0), "only used if auto color change is set to True.", this, SLOT(updateMaxColor())); }
void AerialMapDisplay::reset() { Display::reset(); // unsub,clear,resub updateTopic(); }
Plotter2DDisplay::Plotter2DDisplay() : rviz::Display(), min_value_(0.0), max_value_(0.0) { update_topic_property_ = new rviz::RosTopicProperty( "Topic", "", ros::message_traits::datatype<std_msgs::Float32>(), "std_msgs::Float32 topic to subscribe to.", this, SLOT(updateTopic())); show_value_property_ = new rviz::BoolProperty( "Show Value", true, "Show value on plotter", this, SLOT(updateShowValue())); buffer_length_property_ = new rviz::IntProperty( "Buffer length", 100, ros::message_traits::datatype<std_msgs::Float32>(), this, SLOT(updateBufferSize())); width_property_ = new rviz::IntProperty("width", 128, "width of the plotter window", this, SLOT(updateWidth())); width_property_->setMin(1); width_property_->setMax(2000); height_property_ = new rviz::IntProperty("height", 128, "height of the plotter window", this, SLOT(updateHeight())); height_property_->setMin(1); height_property_->setMax(2000); left_property_ = new rviz::IntProperty("left", 128, "left of the plotter window", this, SLOT(updateLeft())); left_property_->setMin(0); top_property_ = new rviz::IntProperty("top", 128, "top of the plotter window", this, SLOT(updateTop())); top_property_->setMin(0); auto_scale_property_ = new rviz::BoolProperty( "auto scale", true, "enable auto scale", this, SLOT(updateAutoScale())); max_value_property_ = new rviz::FloatProperty( "max value", 1.0, "max value, used only if auto scale is disabled", this, SLOT(updateMaxValue())); min_value_property_ = new rviz::FloatProperty( "min value", -1.0, "min value, used only if auto scale is disabled", this, SLOT(updateMinValue())); fg_color_property_ = new rviz::ColorProperty( "foreground color", QColor(25, 255, 240), "color to draw line", this, SLOT(updateFGColor())); fg_alpha_property_ = new rviz::FloatProperty( "foreground alpha", 0.7, "alpha belnding value for foreground", this, SLOT(updateFGAlpha())); fg_alpha_property_->setMin(0); fg_alpha_property_->setMax(1.0); bg_color_property_ = new rviz::ColorProperty( "background color", QColor(0, 0, 0), "background color", this, SLOT(updateBGColor())); bg_alpha_property_ = new rviz::FloatProperty( "backround alpha", 0.0, "alpha belnding value for background", this, SLOT(updateBGAlpha())); bg_alpha_property_->setMin(0); bg_alpha_property_->setMax(1.0); line_width_property_ = new rviz::IntProperty("linewidth", 1, "linewidth of the plot", this, SLOT(updateLineWidth())); line_width_property_->setMin(1); line_width_property_->setMax(1000); show_border_property_ = new rviz::BoolProperty( "border", true, "show border or not", this, SLOT(updateShowBorder())); text_size_property_ = new rviz::IntProperty("text size", 12, "text size of the caption", this, SLOT(updateTextSize())); text_size_property_->setMin(1); text_size_property_->setMax(1000); show_caption_property_ = new rviz::BoolProperty( "caption", true, "show caption or not", this, SLOT(updateShowCaption())); update_interval_property_ = new rviz::FloatProperty( "update interval", 0.04, "update interval of the plotter", this, SLOT(updateUpdateInterval())); update_interval_property_->setMin(0.0); update_interval_property_->setMax(100); auto_color_change_property_ = new rviz::BoolProperty("auto color change", false, "change the color automatically", this, SLOT(updateAutoColorChange())); max_color_property_ = new rviz::ColorProperty( "max color", QColor(255, 0, 0), "only used if auto color change is set to True.", this, SLOT(updateMaxColor())); }