#  teleop_panel.cpp  Â¶

The full text of teleop_panel.cpp is here: [ src/teleop_panel.cpp
](https://github.com/ros-visualization/visualization_tutorials/tree/groovy-
devel/rviz_plugin_tutorials/src/teleop_panel.cpp)

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.


* ` <maintainer> ` \- The name of the person(s) that is/are maintaining the package


  *[
              2020-03-25 10:03:13 -0500
             ]: 2020-03-25 10:03:13 -0500
  *[
              2020-03-25 10:56:52 -0500
             ]: 2020-03-25 10:56:52 -0500
  *[
             2020-03-25 10:31:35 -0500
            ]: 2020-03-25 10:31:35 -0500
  *[
             2020-03-25 10:34:34 -0500
            ]: 2020-03-25 10:34:34 -0500
  *[
             2020-03-25 10:57:04 -0500
            ]: 2020-03-25 10:57:04 -0500
  *[
              2020-03-25 11:14:23 -0500
             ]: 2020-03-25 11:14:23 -0500
  *[
        2020-03-25 10:03:13 -0500
       ]: 2020-03-25 10:03:13 -0500
  *[
        2024-04-18 17:53:56 -0500
       ]: 2024-04-18 17:53:56 -0500


###  Further Notes


  * This custom layout does not handle height for width.
  * We ignore [ QLayoutItem::isEmpty ](qlayoutitem.html#isEmpty) (); this means that the layout will treat hidden widgets as visible.
  * For complex layouts, speed can be greatly increased by caching calculated values. In that case, implement [ QLayoutItem::invalidate ](qlayoutitem.html#invalidate) () to mark the cached data is dirty.
  * Calling [ QLayoutItem::sizeHint ](qlayoutitem.html#sizeHint) (), etc. may be expensive. So, you should store the value in a local variable if you need it again later within in the same function.
  * You should not call [ QLayoutItem::setGeometry ](qlayoutitem.html#setGeometry) () twice on the same item in the same function. This call can be very expensive if the item has several child widgets, because the layout manager must do a complete layout every time. Instead, calculate the geometry and then set it. (This does not only apply to layouts, you should do the same if you implement your own resizeEvent(), for example.)


#  drive_widget.cpp  Â¶

The full text of drive_widget.cpp is here: [ src/drive_widget.cpp
](https://github.com/ros-visualization/visualization_tutorials/tree/groovy-
devel/rviz_plugin_tutorials/src/drive_widget.cpp)

The DriveWidget constructor does the normal Qt thing of passing the parent
widget to the superclass constructor, then initializing the member variables.

    DriveWidget::DriveWidget( QWidget* parent )
      : QWidget( parent )
      , linear_velocity_( 0 )
      , angular_velocity_( 0 )
      , linear_scale_( 10 )
      , angular_scale_( 2 )
    {
    }

This paintEvent() is complex because of the drawing of the two arc-arrows
representing wheel motion. It is not particularly relevant to learning how to
make an RViz plugin, so I will kind of skim it.

    void DriveWidget::paintEvent( QPaintEvent* event )
    {

The background color and crosshair lines are drawn differently depending on
whether this widget is enabled or not. This gives a nice visual indication of
whether the control is “live”.

    QColor background;
    QColor crosshair;
    if( isEnabled() )


These four types of dependencies are specified using the following respective
tags:


Lays out widgets in a grid

[ QGroupBox ](qgroupbox.html)


#  Layout Management


    cmake_minimum_required(VERSION 2.8.3)
    project(<PACKAGE_NAME>)
    find_package(catkin REQUIRED)
    catkin_metapackage()


The following code creates a [ QHBoxLayout ](qhboxlayout.html) that manages
the geometry of five [ QPushButtons ](qpushbutton.html) , as shown on the
first screenshot above:


##  Question Tools


[ QFormLayout ](qformlayout.html) will add two widgets on a row, commonly a [
QLabel ](qlabel.html) and a [ QLineEdit ](qlineedit.html) to create forms.
Adding a [ QLabel ](qlabel.html) and a [ QLineEdit ](qlineedit.html) on the
same row will set the [ QLineEdit ](qlineedit.html) as the [ QLabel
](qlabel.html) 's buddy. The following code will use the [ QFormLayout
](qformlayout.html) to place three [ QPushButtons ](qpushbutton.html) and a
corresponding [ QLineEdit ](qlineedit.html) on a row.


#  Page


You can nest layouts using ` addLayout() ` on a layout; the inner layout then
becomes a child of the layout it is inserted into.


Blank space in a layout

[ QStackedLayout ](qstackedlayout.html)


[ edit ](/s/answers/347531/edit/) flag offensive  delete  [ link
](/question/347516/difference-in-build_depend-in-package-format-3-vs-package-
format-2/?answer=347531#post-id-347531 "permanent link") more


![Horizontal box with five child widgets](qhbox-m.png)


Difference in build_depend in package format 3 vs. package format 2


The code for [ QVBoxLayout ](qvboxlayout.html) is identical, except the line
where the layout is created. The code for [ QGridLayout ](qgridlayout.html) is
a bit different, because we need to specify the row and column position of the
child widget:


The disadvantage of hand-written layout code is that it isn't very convenient
when you're experimenting with the design of a form and you have to go through
the compile, link and run cycle for each change. Our solution is [ Qt Designer
](designer-manual.html) , a GUI visual design tool which makes it fast and
easy to experiment with layouts and which generates the C++ layout code for
you.


  * [ QWidget::sizeHint ](qwidget.html#sizeHint) () returns the preferred size of the widget.
  * [ QWidget::minimumSizeHint ](qwidget.html#minimumSizeHint) () returns the smallest size the widget can have.
  * [ QWidget::sizePolicy ](qwidget.html#sizePolicy) () returns a [ QSizePolicy ](qsizepolicy.html) ; a value describing the space requirements of the widget.


    output_timer->start( 100 );

Make the control widget start disabled, since we don’t start with an output
topic.

      drive_widget_->setEnabled( false );
    }

setVel() is connected to the DriveWidget’s output, which is sent whenever it
changes due to a mouse event. This just records the values it is given. The
data doesn’t actually get sent until the next timer callback.

    void TeleopPanel::setVel( float lin, float ang )
    {
      linear_velocity_ = lin;
      angular_velocity_ = ang;
    }

Read the topic name from the QLineEdit and call setTopic() with the results.
This is connected to QLineEdit::editingFinished() which fires when the user
presses Enter or Tab or otherwise moves focus away.

    void TeleopPanel::updateTopic()
    {
      setTopic( output_topic_editor_->text() );
    }

Set the topic name we are publishing to.


  * [ Distributions ](/Distributions)
  * [ ROS/Installation ](/ROS/Installation)
  * [ ROS/Tutorials ](/ROS/Tutorials)
  * [ RecentChanges ](/RecentChanges)
  * [ catkin/package.xml ](/catkin/package.xml)


In most cases, you will also implement [ minimumSize()
](qlayout.html#minimumSize) .


Digia, Qt and their respective logos are trademarks of Digia Plc in Finland
and/or other countries worldwide. All other trademarks are property of their
respective owners. [ Privacy Policy ](http://en.gitorious.org/privacy_policy/
"Privacy Policy")


This particular tutorial was added in [ ros2/ros2_documentation#366
](https://github.com/ros2/ros2_documentation/pull/366) and a comment about
this was added ( [ here
](https://github.com/ros2/ros2_documentation/pull/366/files#r339288128) ).


![](images/qgridlayout-with-5-children.png)


Stack of widgets where only one widget is visible at a time

[ QVBoxLayout ](qvboxlayout.html)


The documentation provided herein is licensed under the terms of the [ GNU
Free Documentation License version 1.3 ](http://www.gnu.org/licenses/fdl.html)
as published by the Free Software Foundation.


Now we declare overrides of rviz::Panel functions for saving and loading data
from the config file. Here the data is the topic name.

    virtual void load( const rviz::Config& config );
    virtual void save( rviz::Config config ) const;

Next come a couple of public Qt slots.

    public Q_SLOTS:

The control area, DriveWidget, sends its output to a Qt signal for ease of re-
use, so here we declare a Qt slot to receive it.

    void setVel( float linear_velocity_, float angular_velocity_ );

In this example setTopic() does not get connected to any signal (it is called
directly), but it is easy to define it as a public slot instead of a private
function in case it would be useful to some other user.

    void setTopic( const QString& topic );

Here we declare some internal slots.

    protected Q_SLOTS:


Even if you implement [ QWidget::heightForWidth ](qwidget.html#heightForWidth)
(), it is still a good idea to provide a reasonable sizeHint().


Even if you implement heightForWidth(), it is still necessary to provide a
good sizeHint(). The sizeHint() provides the preferred width of the widget,
and it is used by [ QLayout ](qlayout.html) subclasses that do not support
heightForWidth() (both [ QGridLayout ](qgridlayout.html) and [ QBoxLayout
](qboxlayout.html) support it).


##  Qt's Layout Classes


     [QSize](qsize.html) CardLayout::sizeHint() const
     {
         [QSize](qsize.html) s(0,0);
         int n = list.count();
         if (n > 0)
             s = [QSize](qsize.html)(100,70); //start with a nice default size
         int i = 0;
         while (i < n) {
             [QLayoutItem](qlayoutitem.html) *o = list.at(i);
             s = s.expandedTo(o->sizeHint());
             ++i;
         }
         return s + n*[QSize](qsize.html)(spacing(), spacing());
     }

     [QSize](qsize.html) CardLayout::minimumSize() const
     {
         [QSize](qsize.html) s(0,0);
         int n = list.count();
         int i = 0;
         while (i < n) {
             [QLayoutItem](qlayoutitem.html) *o = list.at(i);
             s = s.expandedTo(o->minimumSize());
             ++i;
         }
         return s + n*[QSize](qsize.html)(spacing(), spacing());
     }


[ none ](/questions/scope:all/sort:activity-desc/tags:none/page:1/) ×


Documentation sources may be obtained from [ www.qt-project.org
](http://www.qt-project.org) .


Represents an anchor between two items in a QGraphicsAnchorLayout

[ QGraphicsAnchorLayout ](qgraphicsanchorlayout.html)


  * Positioning of child widgets.
  * Sensible default sizes for top-level widgets.
  * Sensible minimum sizes for top-level widgets.
  * Resize handling.
  * Automatic update when contents change:
    * Font size, text or other contents of subwidgets.
    * Hiding or showing a subwidget.
    * Removal of subwidget.


Each package.xml file has the ` <package> ` tag as the root tag in the
document.


It is often convenient to group multiple packages as a single logical package.
This can be accomplished through **metapackages** . A metapackage is a normal
package with the following export tag in the package.xml:


The **package manifest** is an XML file called **package.xml** that must be
included with any catkin-compliant package's root folder. This file defines
properties about the package such as the package name, version numbers,
authors, maintainers, and dependencies on other catkin packages. Note the
concept is similar to the _manifest.xml_ file used in the legacy [ rosbuild
](/rosbuild) build system.


When you use a layout, you do not need to pass a parent when constructing the
child widgets. The layout will automatically reparent the widgets (using [
QWidget::setParent ](qwidget.html#setParent) ()) so that they are children of
the widget on which the layout is installed.


###  Build, Run, and Test Dependencies


An alternative to manual layout is to write your own layout manager by
subclassing [ QLayout ](qlayout.html) . The [ Border Layout ](layouts-
borderlayout.html) and [ Flow Layout ](layouts-flowlayout.html) examples show
how to do this.


panel name get saved.

    void TeleopPanel::save( rviz::Config config ) const
    {
      rviz::Panel::save( config );
      config.mapSetValue( "Topic", output_topic_ );
    }

Load all configuration data for this panel from the given Config object.

    void TeleopPanel::load( const rviz::Config& config )
    {
      rviz::Panel::load( config );
      QString topic;
      if( config.mapGetString( "Topic", &topic ))
      {
        output_topic_editor_->setText( topic );
        updateTopic();
      }
    }

    } // end namespace rviz_plugin_tutorials

Tell pluginlib about this class. Every class which should be loadable by
pluginlib::ClassLoader must have these two lines compiled in its .cpp file,
outside of any namespace scope.

    #include <pluginlib/class_list_macros.h>
    PLUGINLIB_EXPORT_CLASS(rviz_plugin_tutorials::TeleopPanel,rviz::Panel )


[ ![ROS Answers logo](/m/ros/media/images/logoros.png?v=28) ](/questions/)


[ edit ](/questions/347516/edit/) [ retag ](/s/questions/347516/retag/) flag
offensive  [ close ](/questions/347516/close/) merge  delete


##  Manual Layout


     [QLayoutItem](qlayoutitem.html) *CardLayout::count() const
     {
             // QList::size() returns the number of QLayoutItems in the list
         return list.size();
     }


For further guidance when implementing these functions, see their
implementations in existing Qt classes that have similar layout requirements
to your new widget.


[ ROS2 Run __params not affecting node ](/question/335016/ros2-run-__params-
not-affecting-node/)


Your system package dependencies are declared in ` package.xml ` . If they are
missing or incorrect, you may be able to build from source and run tests on
your own machine, but your package will not work correctly when released to
the ROS community. Others depend on this information to install the software
they need for using your package (excepted from [ task-oriented doc for catkin
at U-Texas
](http://farnsworth.csres.utexas.edu/docs/catkin/html/howto/system_library_dependencies.html)
).


I don't believe anything has changed wrt ` build_depend ` (at least not in the
context you are asking about).


on the top-level rviz::VisualizationFrame, which causes a little asterisk
(“*”) to show in the window’s title bar indicating unsaved changes.

      Q_EMIT configChanged();
    }

Gray out the control widget when the output topic is empty.

      drive_widget_->setEnabled( output_topic_ != "" );
    }

Publish the control velocities if ROS is not shutting down and the publisher
is ready with a valid topic name.

    void TeleopPanel::sendVel()
    {
      if( ros::ok() && velocity_publisher_ )
      {
        geometry_msgs::Twist msg;
        msg.linear.x = linear_velocity_;
        msg.linear.y = 0;
        msg.linear.z = 0;
        msg.angular.x = 0;
        msg.angular.y = 0;
        msg.angular.z = angular_velocity_;
        velocity_publisher_.publish( msg );
      }
    }

Save all configuration data from this panel to the given Config object. It is
important here that you call save() on the parent class so the class id and


Manages forms of input widgets and their associated labels

[ QGraphicsAnchor ](qgraphicsanchor.html)


  * [ Qt HOME ](http://qt.digia.com/)
  * [ DEV ](http://qt-project.org/)
  * [ DOC ](http://qt-project.org/doc/)
  * [ BLOG ](http://blog.qt.digia.com/)


Other than a required ` <buildtool_depends> ` dependency on ` catkin ` ,
metapackages can only have execution dependencies on packages of which they
group.


  * API Lookup
    * [ Class index ](classes.html)
    * [ Function index ](functions.html)
    * [ Modules ](modules.html)
    * [ Namespaces ](namespaces.html)
    * [ Global Declarations ](qtglobal.html)
    * [ QML elements ](qdeclarativeelements.html)
  * Qt Topics
    * [ Programming with Qt ](qt-basic-concepts.html)
    * [ Device UIs & Qt Quick ](qtquick.html)
    * [ UI Design with Qt ](qt-gui-concepts.html)
    * [ Supported Platforms ](supported-platforms.html)
    * [ Qt and Key Technologies ](technology-apis.html)
    * [ How-To's and Best Practices ](best-practices.html)
  * Examples
    * [ Examples ](all-examples.html)
    * [ Tutorials ](tutorials.html)
    * [ Demos ](demos.html)
    * [ QML Examples ](qdeclarativeexamples.html)


###  Required Tags


![Two-column grid with five child widgets](qgrid-m.png)


If we apply stretch factors to each widget, they will be laid out in
proportion (but never less than their minimum size hint), e.g.


##  Introduction


  * [ Home ](index.html)
  * Layout Management


First we define ` count() ` to fetch the number of items in the list.


* ` <name> ` \- The name of the package


The third [ QPushButton ](qpushbutton.html) spans 2 columns. This is possible
by specifying 2 as the fifth argument to [ QGridLayout::addWidget
](qgridlayout.html#addWidget) ().


##  Examples


        [QWidget](qwidget.html) *main = new [QWidget](qwidget.html);
        [QLineEdit](qlineedit.html) *field = new [QLineEdit](qlineedit.html)( main );
        [QPushButton](qpushbutton.html) *ok = new [QPushButton](qpushbutton.html)( "OK", main );
        [QPushButton](qpushbutton.html) *cancel = new [QPushButton](qpushbutton.html)( "Cancel", main );
        [QLabel](qlabel.html) *label = new [QLabel](qlabel.html)( "Write once, compile everywhere.", main );

        // a layout on a widget
        [QVBoxLayout](qvboxlayout.html) *vbox = new [QVBoxLayout](qvboxlayout.html)( main );
        vbox->[addWidget](qboxlayout.html#addWidget)( label );
        vbox->[addWidget](qboxlayout.html#addWidget)( field );

        // a layout inside a layout
        [QHBoxLayout](qhboxlayout.html) *buttons = new [QHBoxLayout](qhboxlayout.html)( vbox );
        buttons->[addWidget](qboxlayout.html#addWidget)( ok );
        buttons->[addWidget](qboxlayout.html#addWidget)( cancel );


    <package>
      <name>foo_core</name>
      <version>1.2.4</version>
      <description>
      This package provides foo capability.
      </description>
      <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
      <license>BSD</license>
    </package>


###  Stretch Factors


So now the package.xml files for metapackages are installed, but the
requirement that other packages should not depend on metapackages is still
enforced by requiring the users do not deviate from the suggested boilerplate
CMakeLists.txt code.


* ` <version> ` \- The version number of the package (required to be 3 dot-separated integers)


Here we present an example in detail. The ` CardLayout ` class is inspired by
the Java layout manager of the same name. It lays out the items (widgets or
nested layouts) on top of each other, each item offset by [ QLayout::spacing
](qlayout.html#spacing-prop) ().


If you need more control over the layout, use a [ QLayout ](qlayout.html)
subclass. The layout classes included in Qt are [ QGridLayout
](qgridlayout.html) and [ QBoxLayout ](qboxlayout.html) . ( [ QHBoxLayout
](qhboxlayout.html) and [ QVBoxLayout ](qvboxlayout.html) are trivial
subclasses of [ QBoxLayout ](qboxlayout.html) , that are simpler to use and
make the code easier to read.)


All packages have at least one dependency, a build tool dependency on catkin
as the following example shows.


Search index:


* ` <license> ` \- The software license(s) (e.g. GPL, BSD, ASL) under which the code is released.


  Overview  Â¶

This tutorial shows how to write a simple Panel plugin for RViz.

A _panel_ in RViz is a GUI widget which can be docked in the main window or
floating. It does not show properties in the “Displays” panel like a _Display_
, but it could show things in the 3D scene.

A panel can be a useful place to put a bunch of application-specific GUI
elements. You could put start and stop buttons for your robot, or other
command or control inputs.

RViz has a built-in tool to send a goal pose to a path planner, but it does
not have a native way to send velocity commands directly to a robot base
controller. That is what this tutorial shows, a subclass of rviz::Panel which
lets you send velocity commands right to your robot.

The source code for this tutorial is in the rviz_plugin_tutorials package. You
can check out the source directly or (if you use Ubuntu) you can just apt-get
install the pre-compiled Debian package like so:

    sudo apt-get install ros-hydro-visualization-tutorials

Here is what RViz looks like with the new “Teleop” panel showing on the left:

![_images/teleop_in_rviz.png](_images/teleop_in_rviz.png)


#  Quick search

Enter search terms or a module, class or function name.

©2012, Willow Garage, Inc. | Powered by [ Sphinx 1.3.6 ](http://sphinx-
doc.org/) & [ Alabaster 0.7.7 ](https://github.com/bitprophet/alabaster) | [
Page source ](_sources/panel_plugin_tutorial.txt)


![Three widgets with different stretch factors in a row](images/layout2.png)


    <package format="2">
      <name>foo_core</name>
      <version>1.2.4</version>
      <description>
        This package provides foo capability.
      </description>
      <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
      <license>BSD</license>

      <url>http://ros.org/wiki/foo_core</url>
      <author>Ivana Bildbotz</author>

      <buildtool_depend>catkin</buildtool_depend>

      <depend>roscpp</depend>
      <depend>std_msgs</depend>

      <build_depend>message_generation</build_depend>

      <exec_depend>message_runtime</exec_depend>
      <exec_depend>rospy</exec_depend>

      <test_depend>python-mock</test_depend>

      <doc_depend>doxygen</doc_depend>
    </package>


[ Create Dockerfile for ros2 package : ament_cmake error
](/question/319610/create-dockerfile-for-ros2-package-ament_cmake-error/)


* ` <test_depend> `


#  teleop_panel.h  Â¶

The full text of teleop_panel.h is here: [ src/teleop_panel.h
](https://github.com/ros-visualization/visualization_tutorials/tree/groovy-
devel/rviz_plugin_tutorials/src/teleop_panel.h)

Here we declare our new subclass of rviz::Panel. Every panel which can be
added via the Panels/Add_New_Panel menu is a subclass of rviz::Panel.

TeleopPanel will show a text-entry field to set the output topic and a 2D
control area. The 2D control area is implemented by the DriveWidget class, and
is described there.

    class TeleopPanel: public rviz::Panel
    {

This class uses Qt slots and is a subclass of QObject, so it needs the
Q_OBJECT macro.

    Q_OBJECT
    public:

QWidget subclass constructors usually take a parent widget parameter (which
usually defaults to 0). At the same time, pluginlib::ClassLoader creates
instances by calling the default constructor (with no arguments). Taking the
parameter and giving a default of 0 lets the default constructor work and also
lets someone using the class for something else to pass in a parent widget as
they normally would with Qt.

    TeleopPanel( QWidget* parent = 0 );


Older catkin pakages use format 1. If the ` <package> ` tag has no ` format `
attribute, it is a format 1 package. Use format 2 for new packages.


###  Tips for Using Layouts


There are a minimal set of tags that need to be nested within the ` <package>
` tag to make the package manifest complete.


is shown in the class-chooser dialog and in the Displays panel help area. This
section can contain HTML, including hyperlinks, but the markup must be escaped
to avoid being interpreted as XML markup. For example a link tag might look
like: ` <a  href="my-web-page.html">  ` .

Display plugins can have multiple _message_type_ tags, which are used by RViz
when you add a Display by selecting it’s topic first.


#  Wiki


###  Additional Tags


* ` <author> ` \- The author(s) of the package


Note: replace ` <PACKAGE_NAME> ` with the name of the metapackage.


Other than a required ` <buildtool_depends> ` dependency on ` catkin ` ,
metapackages can only have run dependencies on packages of which they group.


If the widget is enabled and the velocities are not zero, draw some sweet
green arrows showing possible paths that the wheels of a diff-drive robot
would take if it stayed at these velocities.

    if( isEnabled() && (angular_velocity_ != 0 || linear_velocity_ != 0 ))
    {
      QPen arrow;
      arrow.setWidth( size/20 );
      arrow.setColor( Qt::green );
      arrow.setCapStyle( Qt::RoundCap );
      arrow.setJoinStyle( Qt::RoundJoin );
      painter.setPen( arrow );

This code steps along a central arc defined by the linear and angular
velocites. At each step, it computes where the left and right wheels would be
and collects the resulting points in the left_track and right_track arrays.

    const int step_count = 100;
    QPointF left_track[ step_count ];
    QPointF right_track[ step_count ];

    float half_track_width = size/4.0;

    float cx = w/2;
    float cy = h/2;
    left_track[ 0 ].setX( cx - half_track_width );
    left_track[ 0 ].setY( cy );
    right_track[ 0 ].setX( cx + half_track_width );
    right_track[ 0 ].setY( cy );
    float angle = M_PI/2;
    float delta_angle = angular_velocity_ / step_count;
    float step_dist = linear_velocity_ * size/2 / linear_scale_ / step_count;
    for( int step = 1; step < step_count; step++ )


> build_depend: Declares a rosdep key or ROS package name that this package
> requires at build-time.


Widgets are normally created without any stretch factor set. When they are
laid out in a layout the widgets are given a share of space in accordance with
their [ QWidget::sizePolicy ](qwidget.html#sizePolicy-prop) () or their
minimum size hint whichever is the greater. Stretch factors are used to change
how much space widgets are given in proportion to one another.


      Q_EMIT outputVelocity( linear_velocity_, angular_velocity_ );
      update();
    }


#  TeleopPanel  Â¶


As suggested the comments, I submitted a PR to update the tutorial
documentation: [ https://github.com/ros2/ros2_document...
](https://github.com/ros2/ros2_documentation/pull/574)


    QString output_topic_;

The ROS publisher for the command velocity.

    ros::Publisher velocity_publisher_;

The ROS node handle.

    ros::NodeHandle nh_;

The latest velocity values from the drive widget.

    float linear_velocity_;
    float angular_velocity_;


Qt version 3.1.2

---|---|---


    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.


##  Format 1 (Legacy)


* **Test Dependencies** specify only _additional_ dependencies for unit tests. They should never duplicate any dependencies already mentioned as build or run dependencies.


#  drive_widget.h  Â¶

The full text of drive_widget.h is here: [ src/drive_widget.h
](https://github.com/ros-visualization/visualization_tutorials/tree/groovy-
devel/rviz_plugin_tutorials/src/drive_widget.h)

DriveWidget implements a control which translates mouse Y values into linear
velocities and mouse X values into angular velocities.

For maximum reusability, this class is only responsible for user interaction
and display inside its widget. It does not make any ROS or RViz calls. It
communicates its data to the outside just via Qt signals.

    class DriveWidget: public QWidget
    {
    Q_OBJECT
    public:

This class is not instantiated by pluginlib::ClassLoader, so the constructor
has no restrictions.

    DriveWidget( QWidget* parent = 0 );

We override QWidget::paintEvent() to do custom painting.

    virtual void paintEvent( QPaintEvent* event );

We override the mouse events and leaveEvent() to keep track of what the mouse
is doing.


     [QLayoutItem](qlayoutitem.html) *CardLayout::itemAt(int idx) const
     {
         // QList::value() performs index checking, and returns 0 if we are
         // outside the valid range
         return list.value(idx);
     }

     [QLayoutItem](qlayoutitem.html) *CardLayout::takeAt(int idx)
     {
         // QList::take does not do index checking
         return idx >= 0 && idx < list.size() ? list.takeAt(idx) : 0;
     }


##  Layout Issues


![3 stretch factored widgets in a row](layout2.png)


* **Build Export Dependencies** specify which packages are needed to build libraries against this package. This is the case when you transitively include their headers in public headers in this package (especially when these packages are declared as (CATKIN_)DEPENDS in _catkin_package()_ in CMake).


When you make your own widget class, you should also communicate its layout
properties. If the widget has a [ QLayout ](qlayout.html) , this is already
taken care of. If the widget does not have any child widgets, or uses manual
layout, you should reimplement the following [ QWidget ](qwidget.html) member
functions:


* ` <description> ` \- A description of the package contents


[ Hi there! Please sign in
](/account/signin/?next=/question/347516/difference-in-build_depend-in-
package-format-3-vs-package-format-2/) [ help ](/help/ "help")


* ` <exec_depend> `


Contents


In some cases, it is relevant when a layout is added to a widget. When you set
the widget of a [ QDockWidget ](qdockwidget.html) or a [ QScrollArea
](qscrollarea.html) (with [ QDockWidget::setWidget
](qdockwidget.html#setWidget) () and [ QScrollArea::setWidget
](qscrollarea.html#setWidget) ()), the layout must already have been set on
the widget. If not, the widget will not be visible.


* **Build Dependencies** specify which packages are needed to build this package. This is the case when any file from these packages is required at build time. This can be including headers from these packages at compilation time, linking against libraries from these packages or requiring any other resource at build time (especially when these packages are _find_package()_ -ed in CMake). In a cross-compilation scenario build dependencies are for the targeted architecture.


The widget will get an event of type [ QEvent::LayoutRequest
](qevent.html#Type-enum) when the layout needs to be recalculated. Reimplement
[ QWidget::event ](qwidget.html#event) () to handle [ QEvent::LayoutRequest
](qevent.html#Type-enum) events.


     CardLayout::~CardLayout()
     {
          [QLayoutItem](qlayoutitem.html) *item;
          while ((item = takeAt(0)))
              delete item;
     }


[ ![ros.org](/custom/images/ros_org.png) ](/) |  [ About
](http://www.ros.org/about-ros) | [ Support ](/Support) | [ Discussion Forum
](http://discourse.ros.org/) | [ Index ](http://index.ros.org/) | [ Service
Status ](http://status.ros.org/) | [ ros @ Robotics Stack Exchange
](https://robotics.stackexchange.com/questions/tagged/ros)
---|---
![](/custom/images/menu_left.png) [
![Documentation](/custom/images/menu_documentation.png) ](/)
![](/custom/images/menu_spacer.png) [ ![Browse
Software](/custom/images/menu_browse_software.png)
](https://index.ros.org/packages) ![](/custom/images/menu_spacer.png) [
![News](/custom/images/menu_news.png) ](https://discourse.ros.org/c/general)
![](/custom/images/menu_spacer.png) [
![Download](/custom/images/menu_download.png) ](/ROS/Installation)
![](/custom/images/menu_right.png)

  * [ catkin ](/catkin)
  * [ package.xml ](/catkin/package.xml)


The layout takes over responsibility of the items added. Since [ QLayoutItem
](qlayoutitem.html) does not inherit [ QObject ](qobject.html) , we must
delete the items manually. In the destructor, we remove each item from the
list using ` takeAt() ` , and then delete it.


Qt's layout classes were designed for hand-written C++ code, so they're easy
to understand and use.


##  Related questions


Then we define two functions that iterate over the layout: ` itemAt() ` and `
takeAt() ` . These functions are used internally by the layout system to
handle deletion of widgets. They are also available for application
programmers.


The tutorial can be edited via PR on github (there's an "edit on github"
button at the top of the page)


* ` <author> ` \- The author(s) of the package


* [ ros2 ](/questions/scope:all/sort:activity-desc/tags:ros2/page:1/)


[ **asked 2020-03-25 10:03:13 -0500  ** ](/questions/347516/revisions/)


Wiki: catkin/package.xml (last edited 2019-07-24 22:49:57 by  [ MaryaBelanger
](/MaryaBelanger "MaryaBelanger @
2001:16a2:55ca:7400:95a1:c2b7:f6f5:b478\[2001:16a2:55ca:7400:95a1:c2b7:f6f5:b478\]")
)


If you are not satisfied with the default placement, you can create the layout
without a parent and then insert it with addLayout().


You can adjust the layout to some extent by calling [ QWidget::setMinimumSize
](qwidget.html#setMinimumSize) () or [ QWidget::setFixedSize
](qwidget.html#setFixedSize) () on the child widgets.


Lines up widgets horizontally

[ QLayout ](qlayout.html)


* ` <buildtool_depend> `


  * Immutable Page
  * Comments
  * [ Info ](/action/info/catkin/package.xml?action=info)
  * [ Attachments ](/action/AttachFile/catkin/package.xml?action=AttachFile)
  * More Actions:  Raw Text  Print View  Render as Docbook  Delete Cache  \------------------------  Check Spelling  Like Pages  Local Site Map  \------------------------  Rename Page  Copy Page  Delete Page  \------------------------  My Pages  Subscribe User  \------------------------  Remove Spam  Revert to this revision  Package Pages  Sync Pages  \------------------------  CreatePdfDocument  Load  RawFile  Save  SlideShow


    <package format="2">
      <name>foo_core</name>
      <version>1.2.4</version>
      <description>
      This package provides foo capability.
      </description>
      <maintainer email="ivana@osrf.org">Ivana Bildbotz</maintainer>
      <license>BSD</license>
    </package>


By specifying the logical layout once, you get the following benefits:


results:


[ Jeffrey Kane Johnson ](/users/2517/jeffrey-kane-johnson/)
452  ●  28  ●  40  ●  51  [ https://mapless.ai ](https://mapless.ai "Jeffrey
Kane Johnson's website is https://mapless.ai")


     void CardLayout::setGeometry(const [QRect](qrect.html) &r)
     {
         [QLayout](qlayout.html)::setGeometry(r);

         if (list.size() == 0)
             return;

         int w = r.width() - (list.count() - 1) * spacing();
         int h = r.height() - (list.count() - 1) * spacing();
         int i = 0;
         while (i < list.size()) {
             [QLayoutItem](qlayoutitem.html) *o = list.at(i);
             [QRect](qrect.html) geom(r.x() + i * spacing(), r.y() + i * spacing(), w, h);
             o->setGeometry(geom);
             ++i;
         }
     }


But shouldn't these also have the ` build_depend ` tag? From my reading of [
package format 3 ](https://www.ros.org/reps/rep-0149.html) , it seems like
they should also be build dependencies:


         [QWidget](qwidget.html) *window = new [QWidget](qwidget.html);
         [QPushButton](qpushbutton.html) *button1 = new [QPushButton](qpushbutton.html)("One");
         [QPushButton](qpushbutton.html) *button2 = new [QPushButton](qpushbutton.html)("Two");
         [QPushButton](qpushbutton.html) *button3 = new [QPushButton](qpushbutton.html)("Three");
         [QPushButton](qpushbutton.html) *button4 = new [QPushButton](qpushbutton.html)("Four");
         [QPushButton](qpushbutton.html) *button5 = new [QPushButton](qpushbutton.html)("Five");

         [QHBoxLayout](qhboxlayout.html) *layout = new [QHBoxLayout](qhboxlayout.html);
         layout->addWidget(button1);
         layout->addWidget(button2);
         layout->addWidget(button3);
         layout->addWidget(button4);
         layout->addWidget(button5);

         window->setLayout(layout);
         window->show();


  * Positioning of child widgets.
  * Sensible default sizes for windows.
  * Sensible minimum sizes for windows.
  * Resize handling.
  * Automatic updates when contents change:
    * Font size, text or other contents of child widgets.
    * Hiding or showing a child widget.
    * Removal of child widgets.


##  How to Write A Custom Layout Manager


    virtual void mouseMoveEvent( QMouseEvent* event );
    virtual void mousePressEvent( QMouseEvent* event );
    virtual void mouseReleaseEvent( QMouseEvent* event );
    virtual void leaveEvent( QEvent* event );

Override sizeHint() to give the layout managers some idea of a good size for
this.

    virtual QSize sizeHint() const { return QSize( 150, 150 ); }

We emit outputVelocity() whenever it changes.

    Q_SIGNALS:
      void outputVelocity( float linear, float angular );

mouseMoveEvent() and mousePressEvent() need the same math to figure the
velocities, so I put that in here.

    protected:
      void sendVelocitiesFromMouse( int x, int y, int width, int height );

A function to emit zero velocity.

    void stop();

Finally the member variables:


##  Qt Topics


* ` <url> ` \- A URL for information on the package, typically a wiki page on ros.org.


Additionally a metapackage has a required, boilerplate CMakeLists.txt file:


* ` <run_depend> `


Qt includes a set of layout management classes that are used to describe how
widgets are laid out in an application's user interface. These layouts
automatically position and resize widgets when the amount of space available
for them changes, ensuring that they are consistently arranged and that the
user interface as a whole remains usable.


[ ![Jeffrey Kane Johnson gravatar
image](/upfiles/avatars/Jeffrey%20Kane%20Johnson/resized/32/headshot-200x200.jpg)
](/users/2517/jeffrey-kane-johnson/)


  * [ Examples ](all-examples.html)
  * [ Tutorials ](tutorials.html)
  * [ Demos ](demos.html)
  * [ QML Examples ](qdeclarativeexamples.html)


For more info see [ http://ros.org/reps/rep-0127.html
](http://ros.org/reps/rep-0127.html)


###  Dependencies


Layout item that represents a widget

##  Horizontal, Vertical, Grid, and Form Layouts


` itemAt() ` returns the item at the given index. ` takeAt() ` removes the
item at the given index, and returns it. In this case we use the list index as
the layout index. In other cases where we have a more complex data structure,
we may have to spend more effort defining a linear order for the items.


##  Custom Widgets in Layouts


![Three widgets in a row](images/layout1.png)


* A [ QFormLayout ](qformlayout.html) lays out widgets in a 2-column descriptive label- field style.


###  Metapackages


* ` <depend> ` specifies that a dependency is a build, export, and execution dependency. This is the most commonly used dependency tag.


##  Manual Layout


If we have three widgets laid out using a [ QHBoxLayout ](qhboxlayout.html)
with no stretch factors set we will get a layout like this:


Container to organize groups of button widgets

[ QFormLayout ](qformlayout.html)


     <export>
       <metapackage />
     </export>


[ ROS2 nodes launched with systemd aren't discovered
](/question/389577/ros2-nodes-launched-with-systemd-arent-discovered/)


[ ![cc-by-sa](/m/default/media/images/cc-by-sa.png?v=28)
](http://creativecommons.org/licenses/by-sa/3.0/legalcode) ROS Answers is
licensed under Creative Commons Attribution 3.0 Content on this site is
licensed under a [ Creative Commons Attribution Share Alike 3.0
](http://creativecommons.org/licenses/by-sa/3.0/legalcode) license.


  * A data structure to store the items handled by the layout. Each item is a [ QLayoutItem ](qlayoutitem.html) . We will use a [ QList ](qlist.html) in this example.
  * [ addItem() ](qlayout.html#addItem) , how to add items to the layout.
  * [ setGeometry() ](qlayout.html#setGeometry) , how to perform the layout.
  * [ sizeHint() ](qlayoutitem.html#sizeHint) , the preferred size of the layout.
  * [ itemAt() ](qlayout.html#itemAt) , how to iterate over the layout.
  * [ takeAt() ](qlayout.html#takeAt) , how to remove items from the layout.


[ Composable LifeCycle Node ](/question/333498/composable-lifecycle-node/)


The ROS Wiki is for ROS 1. Are you using ROS 2 ( [ Humble
](http://docs.ros.org/en/humble/) , [ Iron ](http://docs.ros.org/en/iron/) ,
or [ Rolling ](http://docs.ros.org/en/rolling/) )?
[ Check out the ROS 2 Project Documentation ](http://docs.ros.org)
Package specific documentation can be found on [ index.ros.org
](https://index.ros.org)


` sizeHint() ` and ` minimumSize() ` are normally very similar in
implementation. The sizes returned by both functions should include `
spacing() ` , but not ` margin() ` .


|  [ Ask Your Question ](/questions/ask/)
---|---|---|---

0


###  The Implementation File ( ` card.cpp ` )


You are right, the tutorial is incomplete, these dependencies are needed both
at build-time and execution-time so the ` package.xml ` should list both `
build_depend ` and ` exec_depend ` , or simply ` depend ` if it also export
headers with symbols for these packages.
An example a simple C++ publisher ` package.xml ` can be found [ here
](https://github.com/ros2/examples/blob/24dcb339e7f7041217c05e1eb7dca019238e495e/rclcpp/minimal_publisher/package.xml)


Either email addresses are anonymous for this group or you need the view
member email addresses permission to view the original message


Sign in to reply to author


Report message


unread,


[0m[ INFO] [1539720445.908746217]: Forward kinematics took 0.050239594 [0m
[0m[ INFO] [1539720445.962911012]: Forward kinematics took 0.052945001 [0m
[0mBuild timed out (after 120 minutes). Marking the build as failed.


#  MoveIt Motion Planning and HEBI Actuator Setup and Integration


Copy link


Reply to author


Delete


###  ROS Buildfarm


Search


![ROS Buildfarm's profile photo](https://lh3.googleusercontent.com/a/default-
user=s40-c)


You do not have permission to delete messages in this group


\-- Configuring done
\-- Generating done


Aug 31, 2018, 3:07:23 AM  8/31/18


\-- system
\-- filesystem
\-- date_time
\-- program_options
\-- chrono
\-- atomic


Jul 12, 2018, 6:49:45 PM  7/12/18


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/258/display/redirect?page=changes
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/258/display/redirect?page=changes)
>


\-- Boost version: 1.58.0
\-- Found the following Boost libraries:
\-- filesystem


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/246/display/redirect
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/246/display/redirect)
>


    * Embed  Embed this gist in your website.
    * Share  Copy sharable link for this gist.
    * Clone via HTTPS  Clone using the web URL.
    *     * [ Learn more about clone URLs  ](https://docs.github.com/articles/which-remote-url-should-i-use)


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/254/display/redirect
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/254/display/redirect)
>


Sign in to reply to author


Sign in to report message


Sep 11, 2018, 1:17:23 PM  9/11/18


Copy link


==> Processing catkin package: 'moveit_core'
==> Building with env:
'/tmp/catkin_workspace/devel_isolated/moveit_commander/env.sh'
Makefile exists, skipping explicit cmake invocation...
==> make cmake_check_build_system in
'/tmp/catkin_workspace/build_isolated/moveit_core'
==> make -j1 tests in '/tmp/catkin_workspace/build_isolated/moveit_core'
[ 0%] Built target sensor_msgs_generate_messages_cpp
[ 0%] Built target octomap_msgs_generate_messages_py
[ 0%] Built target octomap_msgs_generate_messages_lisp
[ 0%] Built target object_recognition_msgs_generate_messages_nodejs
[ 0%] Built target object_recognition_msgs_generate_messages_eus
[ 0%] Built target octomap_msgs_generate_messages_eus
[ 0%] Built target object_recognition_msgs_generate_messages_cpp
[ 0%] Built target trajectory_msgs_generate_messages_py
[ 0%] Built target trajectory_msgs_generate_messages_nodejs
[ 0%] Built target trajectory_msgs_generate_messages_lisp
[ 0%] Built target trajectory_msgs_generate_messages_eus
[ 0%] Built target sensor_msgs_generate_messages_py
[ 0%] Built target sensor_msgs_generate_messages_nodejs
[ 0%] Built target shape_msgs_generate_messages_py
[ 0%] Built target geometry_msgs_generate_messages_nodejs
[ 0%] Built target visualization_msgs_generate_messages_py
[ 0%] Built target shape_msgs_generate_messages_nodejs
[ 0%] Built target std_msgs_generate_messages_eus
[ 0%] Built target roscpp_generate_messages_lisp
[ 0%] Built target octomap_msgs_generate_messages_cpp
[ 0%] Built target actionlib_msgs_generate_messages_eus
[ 0%] Built target visualization_msgs_generate_messages_eus
[ 0%] Built target actionlib_msgs_generate_messages_lisp
[ 0%] Built target std_msgs_generate_messages_lisp


Setting up notification-daemon (3.18.2-1) ...
Setting up ros-lunar-opencv3 (3.3.1-2xenial-20180808-130608-0800) ...
Setting up ros-lunar-cv-bridge (1.12.8-0xenial-20180906-203842-0800) ...
Setting up libgtk-3-bin (3.18.9-1ubuntu3.3) ...
Setting up adwaita-icon-theme (3.18.0-2ubuntu3.1) ...
update-alternatives: using /usr/share/icons/Adwaita/cursor.theme to provide
/usr/share/icons/default/index.theme (x-cursor-theme) in auto mode
Setting up odbcinst (2.3.1-4.1) ...
Setting up humanity-icon-theme (0.6.10.1) ...
Setting up ubuntu-mono (14.04+16.04.20180326-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Processing triggers for systemd (229-4ubuntu21.4) ...
Processing triggers for ca-certificates (20170717~16.04.1) ...
Updating certificates in /etc/ssl/certs...
148 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.32.2-1ubuntu1.5) ...
Processing triggers for dbus (1.10.6-1ubuntu3.3) ...
Invoking 'apt-get clean'


Reply to author


###  ROS Buildfarm


Report message


\-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
\-- Configuring done
\-- Generating done


[xUnit] [INFO] - [GoogleTest-1.6] - 31 test report file(s) were found with the
pattern 'catkin_workspace/test_results/**/*.xml' relative to '< [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/ws/
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/ws/) '> for the
testing framework 'GoogleTest-1.6'.
[xUnit] [ERROR] - The result file '< [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/ws/catkin_workspace/test_results/moveit_planners_chomp/rostest-
test_chomp_moveit.xml
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/ws/catkin_workspace/test_results/moveit_planners_chomp/rostest-
test_chomp_moveit.xml) '> for the metric 'GoogleTest' is empty. The result
file has been skipped.


\-- thread


**Console output after ros2-control package install check**


Forward


Sign in to forward


Jul 17, 2018, 4:52:52 PM  7/17/18


Either email addresses are anonymous for this group or you need the view
member email addresses permission to view the original message


For robotics projects that require a lot of these capabilities, using MoveIt
within the ROS framework is a common occurrence and there are a plethora of
ways to go about integrating MoveIt with a robotic system. The purpose of this
article is to outline the basic setup and configuration of a robot model
within MoveIt as well as an example integration of MoveIt with a series
manipulator arm that has four HEBI X-series series elastic actuators. This
particular integration method was done by Team C from the 2022 MRSD class at
Carnegie Mellon University. The system architecture may not adhere to the
common architectures of MoveIt but serves as a potential design method for
future projects. In addition, these steps adhere particularly to MoveIt 1.0 on
Ubuntu 18.04 systems running the ROS Melodic framework.


* * *
Documentation Version
You're reading the documentation for a stable version of MoveIt that is not
being developed further. For information on the recommended version, please
have a look at [ Main
](../../../../main/doc/examples/setup_assistant/setup_assistant_tutorial.html)
.
#  MoveIt Setup Assistant  
[
![../../../_images/MoveIt_setup_assistant_launch.png](../../../_images/MoveIt_setup_assistant_launch.png)
](../../../_images/MoveIt_setup_assistant_launch.png)
##  Overview  
The MoveIt Setup Assistant is a graphical user interface for configuring any
robot for use with MoveIt. Its primary function is generating a Semantic Robot
Description Format (SRDF) file for your robot. Additionally, it generates
other necessary configuration files for use with the MoveIt pipeline. To learn
more about the SRDF, you can go through the [ URDF/SRDF Overview
](../urdf_srdf/urdf_srdf_tutorial.html) page.
##  Getting Started  
MoveIt and ROS
  * Follow the instructions for [ installing MoveIt ](http://moveit.ros.org/install/) first if you have not already done that.
  * If you haven’t already done so, make sure you have the [ Franka description package ](https://github.com/frankaemika/franka_ros) for Noetic:

        sudo apt install ros-noetic-franka-description

  * If you have the ` panda_moveit_config  ` package already git-cloned from the _Getting Started_ page, be sure to delete that now since this tutorial will teach you how to create it from scratch:

        cd ~/ws_moveit/src
    rm -rf panda_moveit_config
    catkin clean panda_moveit_config

##  Step 1: Start  
  * To start the MoveIt Setup Assistant:

        roslaunch moveit_setup_assistant setup_assistant.launch

  * This will bring up the start screen with two choices: _Create New MoveIt Configuration Package_ or _Edit Existing MoveIt Configuration Package_ .
  * Click on the _Create New MoveIt Configuration Package_ button to bring up the following screen:
![../../../_images/setup_assistant_start.png](../../../_images/setup_assistant_start.png)
  * Click on the browse button and navigate to the _panda_arm_hand.urdf.xacro_ file installed when you installed the Franka package above. (This file gets installed in /opt/ros/noetic/share/franka_description/robots/panda_arm_hand.urdf.xacro on Ubuntu with ROS Noetic.) Choose that file and then click _Load Files_ . The Setup Assistant will load the files (this might take a few seconds) and present you with this screen:


unread,


planning scene world geometry [0m
[33m[ WARN] [1539720433.071801769]: Resolution not specified for Octomap.
Assuming resolution = 0.1 instead [0m
[0m[ INFO] [1539720433.130933049]: Listening to '/attached_collision_object'
for attached collision objects [0m
[96mContext monitors started.
[0m [0m[ INFO] [1539720433.134749996]: Multiple planning plugins available.
You should specify the '~planning_plugin' parameter. Using
'chomp_interface/CHOMPPlanner' for now. [0m
[0m[ INFO] [1539720433.147914013]: Following groups exist: [0m
[0m[ INFO] [1539720433.148016984]: arm [0m
[0m[ INFO] [1539720433.197581407]: Configuring New Planning Scene. [0m
[0m[ INFO] [1539720433.668664935]: Using planning interface 'CHOMP' [0m
[0m[ INFO] [1539720433.694713576]: Trajectory execution is not managing
controllers [0m


You do not have permission to delete messages in this group


This file contains bidirectional Unicode text that may be interpreted or
compiled differently than what appears below. To review, open the file in an
editor that reveals hidden Unicode characters. [ Learn more about
bidirectional Unicode characters ](https://github.co/hiddenchars)


to mikael+b...@osrfoundation.org, ros-build...@googlegroups.com,
13...@2000.jukuin.keio.ac.jp, ch...@live.in, da...@dav.ee,
g.a.van...@tudelft.nl, gm1...@gmail.com, imcma...@gmail.com,
jon.b...@gmail.com, jorge...@swri.org, mathias...@ipa.fraunhofer.de,
m...@v4hn.de, mfer...@fetchrobotics.com, moveit_r...@googlegroups.com,
rhas...@techfak.uni-bielefeld.de


![ROS Buildfarm's profile photo](https://lh3.googleusercontent.com/a/default-
user=s40-c)


\-- Build files have been written to:
/tmp/catkin_workspace/build_isolated/moveit_fake_controller_manager
==> make -j1 in
'/tmp/catkin_workspace/build_isolated/moveit_fake_controller_manager'
Scanning dependencies of target moveit_fake_controller_manager
[ 33%] Building CXX object
CMakeFiles/moveit_fake_controller_manager.dir/src/moveit_fake_controller_manager.cpp.o
[ 66%] Building CXX object
CMakeFiles/moveit_fake_controller_manager.dir/src/moveit_fake_controllers.cpp.o
[100%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_fake_controller_manager/lib/libmoveit_fake_controller_manager.so
[100%] Built target moveit_fake_controller_manager
<== Finished processing package [12 of 26]: 'moveit_fake_controller_manager'

==> Processing catkin package: 'moveit_kinematics'
==> Building with env:
'/tmp/catkin_workspace/devel_isolated/moveit_fake_controller_manager/env.sh'
==> cmake /tmp/catkin_workspace/src/moveit/moveit_kinematics
-DCATKIN_DEVEL_PREFIX=/tmp/catkin_workspace/devel_isolated/moveit_kinematics
-DCMAKE_INSTALL_PREFIX=/tmp/catkin_workspace/install_isolated
-DCATKIN_ENABLE_TESTING=1 -DCATKIN_SKIP_TESTING=0
-DCATKIN_TEST_RESULTS_DIR=/tmp/catkin_workspace/test_results -G Unix Makefiles
in '/tmp/catkin_workspace/build_isolated/moveit_kinematics'
\-- Boost version: 1.58.0
\-- Using CATKIN_DEVEL_PREFIX:
/tmp/catkin_workspace/devel_isolated/moveit_kinematics
\-- Using CMAKE_PREFIX_PATH:
/tmp/catkin_workspace/devel_isolated/moveit_fake_controller_manager;/tmp/catkin_workspace/devel_isolated/moveit_ros_planning;/tmp/catkin_workspace/devel_isolated/moveit_ros_perception;/tmp/catkin_workspace/devel_isolated/moveit_ros;/tmp/catkin_workspace/devel_isolated/moveit_plugins;/tmp/catkin_workspace/devel_isolated/moveit_planners;/tmp/catkin_workspace/devel_isolated/chomp_motion_planner;/tmp/catkin_workspace/devel_isolated/moveit_experimental;/tmp/catkin_workspace/devel_isolated/moveit_controller_manager_example;/tmp/catkin_workspace/devel_isolated/moveit_core;/tmp/catkin_workspace/devel_isolated/moveit_commander;/tmp/catkin_workspace/devel_isolated/moveit;/opt/ros/lunar
\-- This workspace overlays:
/tmp/catkin_workspace/devel_isolated/moveit_fake_controller_manager;/tmp/catkin_workspace/devel_isolated/moveit_ros_planning;/tmp/catkin_workspace/devel_isolated/moveit_ros_perception;/tmp/catkin_workspace/devel_isolated/moveit_ros;/tmp/catkin_workspace/devel_isolated/moveit_plugins;/tmp/catkin_workspace/devel_isolated/moveit_planners;/tmp/catkin_workspace/devel_isolated/chomp_motion_planner;/tmp/catkin_workspace/devel_isolated/moveit_experimental;/tmp/catkin_workspace/devel_isolated/moveit_controller_manager_example;/tmp/catkin_workspace/devel_isolated/moveit_core;/tmp/catkin_workspace/devel_isolated/moveit_commander;/tmp/catkin_workspace/devel_isolated/moveit;/opt/ros/lunar


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/252/display/redirect?page=changes
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/252/display/redirect?page=changes)
>


|  [rviz2-1] [INFO] [1630341485.327029070]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[BFMTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327032209]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[BKPIECEkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327034932]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[BiESTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327037679]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[BiTRRTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327040379]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[ESTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327042973]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[FMTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327045535]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[KPIECEkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327047993]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[LBKPIECEkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327050439]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[LBTRRTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327053065]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[LazyPRMkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327091708]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[LazyPRMstarkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327094992]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[PDSTkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327109341]
[moveit_ros_visualization.motion_planning_frame_planning]: planner id:
hand[PRMkConfigDefault]
|  [rviz2-1] [INFO] [1630341485.327113932]


Setting up libxcb-glx0-dev:amd64 (1.11.1-1ubuntu1) ...


###  ROS Buildfarm


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/259/display/redirect?page=changes
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/259/display/redirect?page=changes)
>


gnu/libboost_system.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-
gnu/libpthread.so;general;/usr/lib/x86_64-linux-
gnu/libconsole_bridge.so;general;yaml-cpp;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so; //Value Computed by CMake
camera_calibration_parsers_SOURCE_DIR:STATIC=/home/robuter/catkin_ws/src/image_common/camera_calibration_parsers
//Dependencies for the target
camera_calibration_parsers_wrapper_LIB_DEPENDS:STATIC=general;camera_calibration_parsers;general;/opt/ros/kinetic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-
gnu/libboost_signals.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/opt/ros/kinetic/lib/librosconsole.so;general;/opt/ros/kinetic/lib/librosconsole_log4cxx.so;general;/opt/ros/kinetic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-
gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-
gnu/libboost_regex.so;general;/opt/ros/kinetic/lib/libxmlrpcpp.so;general;/opt/ros/kinetic/lib/libroscpp_serialization.so;general;/opt/ros/kinetic/lib/librostime.so;general;/opt/ros/kinetic/lib/libcpp_common.so;general;/usr/lib/x86_64-linux-
gnu/libboost_system.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-
gnu/libpthread.so;general;/usr/lib/x86_64-linux-
gnu/libconsole_bridge.so;general;/usr/lib/x86_64-linux-
gnu/libboost_python.so;general;/usr/lib/x86_64-linux-gnu/libpython2.7.so;
//Value Computed by CMake
camera_info_manager_BINARY_DIR:STATIC=/home/robuter/catkin_ws/build/image_common/camera_info_manager
//Dependencies for the target
camera_info_manager_LIB_DEPENDS:STATIC=general;camera_calibration_parsers;general;image_transport;general;/opt/ros/kinetic/lib/libmessage_filters.so;general;/opt/ros/kinetic/lib/libclass_loader.so;general;/usr/lib/libPocoFoundation.so;general;/usr/lib/x86_64-linux-
gnu/libdl.so;general;/opt/ros/kinetic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-
gnu/libboost_signals.so;general;/opt/ros/kinetic/lib/librosconsole.so;general;/opt/ros/kinetic/lib/librosconsole_log4cxx.so;general;/opt/ros/kinetic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-
gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-
gnu/libboost_regex.so;general;/opt/ros/kinetic/lib/libroscpp_serialization.so;general;/opt/ros/kinetic/lib/librostime.so;general;/opt/ros/kinetic/lib/libxmlrpcpp.so;general;/opt/ros/kinetic/lib/libcpp_common.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-
gnu/libpthread.so;general;/usr/lib/x86_64-linux-
gnu/libconsole_bridge.so;general;/opt/ros/kinetic/lib/libroslib.so;general;/opt/ros/kinetic/lib/librospack.so;general;/usr/lib/x86_64-linux-
gnu/libpython2.7.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/usr/lib/x86_64-linux-
gnu/libboost_program_options.so;general;/usr/lib/x86_64-linux-


Aug 14, 2018, 5:14:00 PM  8/14/18


Copy link


Delete


Show original message


Sign in to forward


Forward


sudo apt install ros-melodic-hebi-cpp-api


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/250/display/redirect
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/250/display/redirect)
>


configuration file for tf_conversions.
tf_conversions_DIR:PATH=/opt/ros/kinetic/share/tf_conversions/cmake //Value
Computed by CMake
timestamp_tools_BINARY_DIR:STATIC=/home/robuter/catkin_ws/build/driver_common/timestamp_tools
//Value Computed by CMake
timestamp_tools_SOURCE_DIR:STATIC=/home/robuter/catkin_ws/src/driver_common/timestamp_tools
//The directory containing a CMake configuration file for topic_tools.
topic_tools_DIR:PATH=/opt/ros/kinetic/share/topic_tools/cmake //The directory
containing a CMake configuration file for trajectory_msgs.
trajectory_msgs_DIR:PATH=/opt/ros/kinetic/share/trajectory_msgs/cmake //The
directory containing a CMake configuration file for urdf.
urdf_DIR:PATH=/opt/ros/kinetic/share/urdf/cmake //The directory containing a
CMake configuration file for urdfdom.
urdfdom_DIR:PATH=/usr/share/urdfdom/cmake //The directory containing a CMake
configuration file for urdfdom_headers.
urdfdom_headers_DIR:PATH=/usr/share/urdfdom_headers/cmake //The directory
containing a CMake configuration file for urdfdom_py.
urdfdom_py_DIR:PATH=/opt/ros/kinetic/share/urdfdom_py/cmake //The directory
containing a CMake configuration file for visualization_msgs.
visualization_msgs_DIR:PATH=/opt/ros/kinetic/share/visualization_msgs/cmake
//The directory containing a CMake configuration file for warehouse_ros.
warehouse_ros_DIR:PATH=/opt/ros/kinetic/share/warehouse_ros/cmake //The
directory containing a CMake configuration file for xmlrpcpp.
xmlrpcpp_DIR:PATH=/opt/ros/kinetic/share/xmlrpcpp/cmake
######################## # INTERNAL cache entries ########################
//ADVANCED property for variable: BLAS_Accelerate_LIBRARY
BLAS_Accelerate_LIBRARY-ADVANCED:INTERNAL=1 //ADVANCED property for variable:
BLAS_acml_LIBRARY BLAS_acml_LIBRARY-ADVANCED:INTERNAL=1 //ADVANCED property
for variable: BLAS_acml_mp_LIBRARY BLAS_acml_mp_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: BLAS_blas_LIBRARY BLAS_blas_LIBRARY-
ADVANCED:INTERNAL=1 //ADVANCED property for variable: BLAS_blas_WORKS
BLAS_blas_WORKS-ADVANCED:INTERNAL=1 //Have function sgemm_
BLAS_blas_WORKS:INTERNAL=1 //ADVANCED property for variable:
BLAS_complib.sgimath_LIBRARY BLAS_complib.sgimath_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: BLAS_cxml_LIBRARY BLAS_cxml_LIBRARY-
ADVANCED:INTERNAL=1 //ADVANCED property for variable: BLAS_dxml_LIBRARY
BLAS_dxml_LIBRARY-ADVANCED:INTERNAL=1 //ADVANCED property for variable:
BLAS_essl_LIBRARY BLAS_essl_LIBRARY-ADVANCED:INTERNAL=1 //ADVANCED property
for variable: BLAS_f77blas_LIBRARY BLAS_f77blas_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: BLAS_goto2_LIBRARY BLAS_goto2_LIBRARY-


|  [move_group-4] Loading 'move_group/ClearOctomapService'...
|  [move_group-4] Loading 'move_group/MoveGroupCartesianPathService'...
|  [move_group-4] Loading 'move_group/MoveGroupExecuteTrajectoryAction'...
|  [move_group-4] Loading 'move_group/MoveGroupGetPlanningSceneService'...
|  [move_group-4] Loading 'move_group/MoveGroupKinematicsService'...
|  [move_group-4] Loading 'move_group/MoveGroupMoveAction'...
|  [move_group-4] Loading 'move_group/MoveGroupPlanService'...
|  [move_group-4] Loading 'move_group/MoveGroupQueryPlannersService'...
|  [move_group-4] Loading 'move_group/MoveGroupStateValidationService'...
|  [move_group-4]
|  [move_group-4] You can start planning now!
|  [move_group-4]
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.430-0400 I STORAGE
[initandlisten] WiredTiger message [1630341478:430521][1725:0x7f82ad37bf40],
txn-recover: Recovering log 7 through 7
|  [INFO] [ros2 run controller_manager spawner.py panda_arm_controller-7]:
process has finished cleanly [pid 1638]
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.460-0400 I STORAGE
[initandlisten] WiredTiger message [1630341478:460957][1725:0x7f82ad37bf40],
txn-recover: Set global recovery timestamp: 0
|  [ros2 run controller_manager spawner.py joint_state_controller-9] [INFO]
[1630341478.481877669] [spawner_joint_state_controller]: Configured and
started joint_state_controller
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten]
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten] ** WARNING: Access control is not enabled for the database.
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten] ** Read and write access to data and configuration is
unrestricted.
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten]
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten] ** WARNING: This server is bound to localhost.
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten] ** Remote systems will be unable to connect to this server.
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL
[initandlisten] ** Start the server with --bind_ip <address> to specify which
IP
|  [mongo_wrapper_ros.py-6] 2021-08-30T12:37:58.498-0400 I CONTROL


Sign in to report message


  * Skip to primary navigation
  * Skip to content
  * Skip to footer


unread,


[ About  ](./g/ros-buildfarm-lunar/about)


\-- Using Debian Python package layout
\-- Using empy: /usr/bin/empy
\-- Using CATKIN_ENABLE_TESTING: 1
\-- Call enable_testing()
\-- Using CATKIN_TEST_RESULTS_DIR: /tmp/catkin_workspace/test_results
\-- Found gmock sources under '/usr/src/gmock': gmock will be built
\-- Found gtest sources under '/usr/src/gmock': gtests will be built
\-- Using Python nosetests: /usr/bin/nosetests-2.7
\-- catkin 0.7.14
\-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
\-- Configuring done
\-- Generating done


Either email addresses are anonymous for this group or you need the view
member email addresses permission to view the original message


Reply to author


Jul 25, 2018, 11:24:05 PM  7/25/18


[0m[ INFO] [1539720444.101064956]: Forward kinematics took 0.042323419 [0m
[0m[ INFO] [1539720444.102127938]: iteration: 30 [0m
[0m[ INFO] [1539720444.146504993]: Forward kinematics took 0.043263266 [0m
[0m[ INFO] [1539720444.193526226]: Forward kinematics took 0.046143309 [0m
[0m[ INFO] [1539720444.241395613]: Forward kinematics took 0.046579995 [0m
[0m[ INFO] [1539720444.304796502]: Forward kinematics took 0.062135538 [0m
[0m[ INFO] [1539720444.416196591]: Forward kinematics took 0.088585063 [0m
[0m[ INFO] [1539720444.484005722]: Forward kinematics took 0.066575813 [0m
[0m[ INFO] [1539720444.531873243]: Forward kinematics took 0.047081702 [0m
[0m[ INFO] [1539720444.574986427]: Forward kinematics took 0.042018353 [0m
[0m[ INFO] [1539720444.626492606]: Forward kinematics took 0.050297192 [0m
[0m[ INFO] [1539720444.678897921]: Forward kinematics took 0.051132389 [0m
[0m[ INFO] [1539720444.680081659]: iteration: 40 [0m
[0m[ INFO] [1539720444.729352208]: Forward kinematics took 0.048260687 [0m
[0m[ INFO] [1539720444.771276552]: Forward kinematics took 0.040936018 [0m
[0m[ INFO] [1539720444.812860439]: Forward kinematics took 0.040338819 [0m
[0m[ INFO] [1539720444.863410422]: Forward kinematics took 0.049347686 [0m
[0m[ INFO] [1539720444.912107664]: Forward kinematics took 0.046708561 [0m
[0m[ INFO] [1539720444.961667370]: Forward kinematics took 0.048549477 [0m
[0m[ INFO] [1539720445.009757398]: Forward kinematics took 0.047319247 [0m
[0m[ INFO] [1539720445.048531138]: Forward kinematics took 0.037982191 [0m
[0m[ INFO] [1539720445.093400788]: Forward kinematics took 0.043831780 [0m
[0m[ INFO] [1539720445.140630574]: Forward kinematics took 0.045943751 [0m
[0m[ INFO] [1539720445.141808473]: iteration: 50 [0m
[0m[ INFO] [1539720445.185732401]: Forward kinematics took 0.043002244 [0m
[0m[ INFO] [1539720445.236429020]: Forward kinematics took 0.049525466 [0m
[0m[ INFO] [1539720445.285254338]: Forward kinematics took 0.047658242 [0m
[0m[ INFO] [1539720445.327182215]: Forward kinematics took 0.041110151 [0m
[0m[ INFO] [1539720445.371482470]: Forward kinematics took 0.043077516 [0m
[0m[ INFO] [1539720445.414973829]: Forward kinematics took 0.042576993 [0m
[0m[ INFO] [1539720445.463496973]: Forward kinematics took 0.046540294 [0m
[0m[ INFO] [1539720445.515914978]: Forward kinematics took 0.051167810 [0m
[0m[ INFO] [1539720445.559554748]: Forward kinematics took 0.042417482 [0m
[0m[ INFO] [1539720445.605756734]: Forward kinematics took 0.045210503 [0m
[0m[ INFO] [1539720445.606589486]: iteration: 60 [0m
[0m[ INFO] [1539720445.656516164]: Forward kinematics took 0.049210682 [0m
[0m[ INFO] [1539720445.707142661]: Forward kinematics took 0.049647082 [0m
[0m[ INFO] [1539720445.757407630]: Forward kinematics took 0.049584500 [0m
[0m[ INFO] [1539720445.805353615]: Forward kinematics took 0.046762893 [0m
[0m[ INFO] [1539720445.857566776]: Forward kinematics took 0.051147554 [0m


Copy link


roslaunch (MoveIt-node-folder-name) demo.launch


to mikael+b...@osrfoundation.org, ros-build...@googlegroups.com,
13...@2000.jukuin.keio.ac.jp, ch...@live.in, da...@dav.ee,
g.a.van...@tudelft.nl, gm1...@gmail.com, imcma...@gmail.com,
jon.b...@gmail.com, jorge...@swri.org, mathias...@ipa.fraunhofer.de,
m...@v4hn.de, mfer...@fetchrobotics.com, moveit_r...@googlegroups.com,
rhas...@techfak.uni-bielefeld.de


###  Footer navigation


  * [ Terms ](https://docs.github.com/site-policy/github-terms/github-terms-of-service)
  * [ Privacy ](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement)
  * [ Security ](/security)
  * [ Status ](https://www.githubstatus.com/)
  * [ Docs ](https://docs.github.com/)
  * [ Contact ](https://support.github.com?tags=dotcom-footer)
  * Manage cookies
  * Do not share my personal information


![ROS Buildfarm's profile photo](https://lh3.googleusercontent.com/a/default-
user=s40-c)


Sign in to forward


Forward


Delete


###  ROS Buildfarm


Show original message


Now that we have the MoveIt motion planning pipeline configured for the robot,
we can focus on the hardware portion of the robot. Normally, you would create
a ROS controller in MoveIt setup assistant and configure both the controller
and the hardware to move together. For this particular project, however, we
found success in maintaining a fake joint states controller for the MoveIt
pipeline and having the hardware motors read off the joint states topic and
follow accordingly. For this particular case, we used HEBI motors and the HEBI
C++ API in order to get the motors up and running.


Report message


unread,


![moveit_setup_assistant_start[(assets/moveit_setup_assistant_start.png)


Reply to author


Created  August 30, 2021 16:47


Sign in to reply to author


********************************************************
* MoveGroup using:
* - ApplyPlanningSceneService
* - ClearOctomapService
* - CartesianPathService


Sign in to report message


Copy link


The next window is the “Simulation” window. By selecting the “Generate URDF”
option, you can generate replacement URDF code to input to your URDF file in
order to have the model working on Gazebo, which is the ROS simulation
environment. Simply copy and paste the selected code over to your URDF file
code.


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/248/display/redirect
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/248/display/redirect)
>


[ 25%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/manipulation_pipeline.cpp.o
[ 33%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/reachable_valid_pose_filter.cpp.o
[ 41%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/approach_and_translate_stage.cpp.o
[ 50%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/plan_stage.cpp.o
[ 58%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/pick_place.cpp.o
[ 66%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/pick.cpp.o
[ 75%] Building CXX object
pick_place/CMakeFiles/moveit_pick_place_planner.dir/src/place.cpp.o
[ 83%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_manipulation/lib/libmoveit_pick_place_planner.so
[ 83%] Built target moveit_pick_place_planner
Scanning dependencies of target moveit_move_group_pick_place_capability
[ 91%] Building CXX object
move_group_pick_place_capability/CMakeFiles/moveit_move_group_pick_place_capability.dir/src/pick_place_action_capability.cpp.o
[100%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_manipulation/lib/libmoveit_move_group_pick_place_capability.so
[100%] Built target moveit_move_group_pick_place_capability
<== Finished processing package [16 of 26]: 'moveit_ros_manipulation'

==> Processing catkin package: 'moveit_ros_robot_interaction'
==> Building with env:
'/tmp/catkin_workspace/devel_isolated/moveit_ros_manipulation/env.sh'
==> cmake /tmp/catkin_workspace/src/moveit/moveit_ros/robot_interaction
-DCATKIN_DEVEL_PREFIX=/tmp/catkin_workspace/devel_isolated/moveit_ros_robot_interaction
-DCMAKE_INSTALL_PREFIX=/tmp/catkin_workspace/install_isolated
-DCATKIN_ENABLE_TESTING=1 -DCATKIN_SKIP_TESTING=0
-DCATKIN_TEST_RESULTS_DIR=/tmp/catkin_workspace/test_results -G Unix Makefiles
in '/tmp/catkin_workspace/build_isolated/moveit_ros_robot_interaction'


You do not have permission to delete messages in this group


FIND_PACKAGE_MESSAGE_DETAILS_PCL_POINT_CLOUD_EDITOR:INTERNAL=[/usr/include/pcl-1.7][v()]
//Details about finding PCL_RECOGNITION
FIND_PACKAGE_MESSAGE_DETAILS_PCL_RECOGNITION:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_recognition.so][/usr/include/pcl-1.7][v()] //Details about finding
PCL_REGISTRATION
FIND_PACKAGE_MESSAGE_DETAILS_PCL_REGISTRATION:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_registration.so][/usr/include/pcl-1.7][v()] //Details about finding
PCL_SAMPLE_CONSENSUS
FIND_PACKAGE_MESSAGE_DETAILS_PCL_SAMPLE_CONSENSUS:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_sample_consensus.so][/usr/include/pcl-1.7][v()] //Details about
finding PCL_SEARCH
FIND_PACKAGE_MESSAGE_DETAILS_PCL_SEARCH:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_search.so][/usr/include/pcl-1.7][v()] //Details about finding
PCL_SEGMENTATION
FIND_PACKAGE_MESSAGE_DETAILS_PCL_SEGMENTATION:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_segmentation.so][/usr/include/pcl-1.7][v()] //Details about finding
PCL_SURFACE
FIND_PACKAGE_MESSAGE_DETAILS_PCL_SURFACE:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_surface.so][/usr/include/pcl-1.7][v()] //Details about finding
PCL_TRACKING
FIND_PACKAGE_MESSAGE_DETAILS_PCL_TRACKING:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_tracking.so][/usr/include/pcl-1.7][v()] //Details about finding
PCL_VISUALIZATION
FIND_PACKAGE_MESSAGE_DETAILS_PCL_VISUALIZATION:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpcl_visualization.so][/usr/include/pcl-1.7][v()] //Details about
finding PkgConfig
FIND_PACKAGE_MESSAGE_DETAILS_PkgConfig:INTERNAL=[/usr/bin/pkg-
config][v0.29.1()] //Details about finding PythonInterp
FIND_PACKAGE_MESSAGE_DETAILS_PythonInterp:INTERNAL=[/usr/bin/python][v2.7.12()]
//Details about finding PythonLibs
FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs:INTERNAL=[/usr/lib/x86_64-linux-
gnu/libpython2.7.so][/usr/include/python2.7][v2.7.12(2.7)] //Details about
finding Threads FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()]
//Details about finding eigen
FIND_PACKAGE_MESSAGE_DETAILS_eigen:INTERNAL=[/usr/include/eigen3][v()]
//Details about finding libusb-1.0
FIND_PACKAGE_MESSAGE_DETAILS_libusb-1.0:INTERNAL=[/usr/include][v()] //Details
about finding openni
FIND_PACKAGE_MESSAGE_DETAILS_openni:INTERNAL=[/usr/lib/libOpenNI.so][/usr/include/ni][v()]
//Details about finding qhull


All groups and messages


Sign in to forward


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/264/display/redirect
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/264/display/redirect)
>

\------------------------------------------
[...truncated 1.29 MB...]
[ 7%] Built target moveit_ros_planning_gencfg
Scanning dependencies of target moveit_rdf_loader
[ 9%] Building CXX object
rdf_loader/CMakeFiles/moveit_rdf_loader.dir/src/rdf_loader.cpp.o
[ 10%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_rdf_loader.so
[ 10%] Built target moveit_rdf_loader
Scanning dependencies of target moveit_collision_plugin_loader
[ 12%] Building CXX object
collision_plugin_loader/CMakeFiles/moveit_collision_plugin_loader.dir/src/collision_plugin_loader.cpp.o
[ 14%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_collision_plugin_loader.so
[ 14%] Built target moveit_collision_plugin_loader
Scanning dependencies of target moveit_kinematics_plugin_loader
[ 16%] Building CXX object
kinematics_plugin_loader/CMakeFiles/moveit_kinematics_plugin_loader.dir/src/kinematics_plugin_loader.cpp.o
[ 18%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_kinematics_plugin_loader.so
[ 18%] Built target moveit_kinematics_plugin_loader
Scanning dependencies of target moveit_robot_model_loader
[ 20%] Building CXX object
robot_model_loader/CMakeFiles/moveit_robot_model_loader.dir/src/robot_model_loader.cpp.o
[ 21%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_robot_model_loader.so
[ 21%] Built target moveit_robot_model_loader
Scanning dependencies of target moveit_constraint_sampler_manager_loader
[ 23%] Building CXX object
constraint_sampler_manager_loader/CMakeFiles/moveit_constraint_sampler_manager_loader.dir/src/constraint_sampler_manager_loader.cpp.o
[ 25%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_constraint_sampler_manager_loader.so
[ 25%] Built target moveit_constraint_sampler_manager_loader
Scanning dependencies of target moveit_planning_pipeline
[ 27%] Building CXX object


gnu/liburdfdom_model.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_world.so;general;/opt/ros/kinetic/lib/librosconsole_bridge.so;general;/opt/ros/kinetic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-
gnu/libboost_signals.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/opt/ros/kinetic/lib/librosconsole.so;general;/opt/ros/kinetic/lib/librosconsole_log4cxx.so;general;/opt/ros/kinetic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-
gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-
gnu/libboost_regex.so;general;/opt/ros/kinetic/lib/libroscpp_serialization.so;general;/opt/ros/kinetic/lib/librostime.so;general;/opt/ros/kinetic/lib/libxmlrpcpp.so;general;/opt/ros/kinetic/lib/libcpp_common.so;general;/usr/lib/x86_64-linux-
gnu/libboost_system.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-
gnu/libpthread.so;general;/opt/ros/kinetic/lib/libsrdfdom.so;general;/usr/lib/x86_64-linux-
gnu/libconsole_bridge.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/usr/lib/x86_64-linux-
gnu/libboost_system.so;general;/usr/lib/x86_64-linux-
gnu/libboost_program_options.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-gnu/libpthread.so;
//Value Computed by CMake
moveit_simple_controller_manager_BINARY_DIR:STATIC=/home/robuter/catkin_ws/build/moveit-
kinetic-devel/moveit_plugins/moveit_simple_controller_manager //The directory
containing a CMake configuration file for moveit_simple_controller_manager.
moveit_simple_controller_manager_DIR:PATH=/home/robuter/catkin_ws/devel/share/moveit_simple_controller_manager/cmake
//Dependencies for the target
moveit_simple_controller_manager_LIB_DEPENDS:STATIC=general;moveit_exceptions;general;moveit_background_processing;general;moveit_kinematics_base;general;moveit_robot_model;general;moveit_transforms;general;moveit_robot_state;general;moveit_robot_trajectory;general;moveit_planning_interface;general;moveit_collision_detection;general;moveit_collision_detection_fcl;general;moveit_kinematic_constraints;general;moveit_planning_scene;general;moveit_constraint_samplers;general;moveit_planning_request_adapter;general;moveit_profiler;general;moveit_trajectory_processing;general;moveit_distance_field;general;moveit_kinematics_metrics;general;moveit_dynamics_solver;general;/usr/lib/x86_64-linux-
gnu/libboost_iostreams.so;general;/opt/ros/kinetic/lib/libeigen_conversions.so;general;/opt/ros/kinetic/lib/libgeometric_shapes.so;general;/opt/ros/kinetic/lib/liboctomap.so;general;/opt/ros/kinetic/lib/liboctomath.so;general;/opt/ros/kinetic/lib/libkdl_parser.so;general;/opt/ros/kinetic/lib/liborocos-
kdl.so.1.3.0;general;/opt/ros/kinetic/lib/liburdf.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_sensor.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_model_state.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_model.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_world.so;general;/opt/ros/kinetic/lib/librosconsole_bridge.so;general;/opt/ros/kinetic/lib/librandom_numbers.so;general;/opt/ros/kinetic/lib/libsrdfdom.so;general;/opt/ros/kinetic/lib/libclass_loader.so;general;/usr/lib/libPocoFoundation.so;general;/usr/lib/x86_64-linux-
gnu/libdl.so;general;/opt/ros/kinetic/lib/libroslib.so;general;/opt/ros/kinetic/lib/librospack.so;general;/usr/lib/x86_64-linux-
gnu/libpython2.7.so;general;/usr/lib/x86_64-linux-
gnu/libboost_program_options.so;general;/usr/lib/x86_64-linux-
gnu/libtinyxml.so;general;/opt/ros/kinetic/lib/libactionlib.so;general;/opt/ros/kinetic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-
gnu/libboost_signals.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/opt/ros/kinetic/lib/librosconsole.so;general;/opt/ros/kinetic/lib/librosconsole_log4cxx.so;general;/opt/ros/kinetic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-
gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/261/display/redirect
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/261/display/redirect)
>


Forward


[ All gists ](/discover) [ Back to GitHub ](https://github.com) [ Sign in
](https://gist.github.com/auth/github?return_to=https%3A%2F%2Fgist.github.com%2Fdpiet%2Fe1f2ab0e66e6619390a450c280dc2985)
[ Sign up
](/join?return_to=https%3A%2F%2Fgist.github.com%2Fdpiet%2Fe1f2ab0e66e6619390a450c280dc2985&source=header-
gist)


Assuming the xacro file of the robot model has been built, you can convert the
xacro file into a URDF model file using the following command (make sure you
source setup.bash in order to utilize ROS commands through terminal):


##  Step 12: Generate Configuration Files  
You are almost there. One last step - generating all the configuration files
that you will need to start using MoveIt
  * Click on the _Configuration Files_ pane. Choose a location and name for the ROS package that will be generated containing your new set of configuration files. Click browse, select a good location (for example, your home directory), click **Create New Folder** , call it “panda_moveit_config”, and click **Choose** . “panda_moveit_config” is the location used in the rest of the documentation on this wiki. This package does not have to be within your ROS package path. All generated files will go directly into the directory you have chosen.
  * Click on the _Generate Package_ button. The Setup Assistant will now generate and write a set of launch and config files into the directory of your choosing. All the generated files will appear in the Generated Files/Folders tab and you can click on each of them for a description of what they contain.
[
![../../../_images/setup_assistant_panda_done.png](../../../_images/setup_assistant_panda_done.png)
](../../../_images/setup_assistant_panda_done.png)
  * Congratulations!! - You are now done generating the configuration files you need for MoveIt
##  What’s Next  
The MoveIt RViz plugin
  * Start looking at how you can use the generated configuration files to play with MoveIt using the [ MoveIt RViz Plugin  ](../../tutorials/quickstart_in_rviz/quickstart_in_rviz_tutorial.html) .
Setup IKFast Inverse Kinematics Solver
  * A faster IK solver than the default KDL solver, but takes some additional steps to setup: [ Kinematics/IKFast  ](../ikfast/ikfast_tutorial.html)
##  Additional Reading  
  * See the [ URDF and SRDF  ](../urdf_srdf/urdf_srdf_tutorial.html) page for more details on the components of the URDF and SRDF mentioned in this tutorial.
[ Previous ](../mobile_base_arm/mobile_base_arm_tutorial.html "Planning For
Differential-Drive Mobile Base and an Arm") [ Next
](../urdf_srdf/urdf_srdf_tutorial.html "URDF and SRDF")
* * *
© Copyright 2024, PickNik Robotics.
Built with [ Sphinx ](https://www.sphinx-doc.org/) using a [ theme
](https://github.com/readthedocs/sphinx_rtd_theme) provided by [ Read the Docs
](https://readthedocs.org) .


Reply to author


Aug 23, 2018, 9:45:30 AM  8/23/18


Show original message


Delete


Sign in to reply to author


unread,


[ 55%] Built target shape_msgs_generate_messages_eus
[ 55%] Built target shape_msgs_generate_messages_lisp
[ 55%] Built target shape_msgs_generate_messages_nodejs
[ 55%] Built target octomap_msgs_generate_messages_eus
[ 55%] Built target object_recognition_msgs_generate_messages_cpp
Scanning dependencies of target moveit_move_group_interface
[ 61%] Building CXX object
move_group_interface/CMakeFiles/moveit_move_group_interface.dir/src/move_group_interface.cpp.o
[ 66%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning_interface/lib/libmoveit_move_group_interface.so
[ 66%] Built target moveit_move_group_interface
Scanning dependencies of target moveit_move_group_interface_python
[ 72%] Building CXX object
move_group_interface/CMakeFiles/moveit_move_group_interface_python.dir/src/wrap_python_move_group.cpp.o
[ 77%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning_interface/lib/python2.7/dist-
packages/moveit_ros_planning_interface/_moveit_move_group_interface.so
[ 77%] Built target moveit_move_group_interface_python
Scanning dependencies of target demo
[ 83%] Building CXX object
move_group_interface/CMakeFiles/demo.dir/src/demo.cpp.o
[ 88%] Linking CXX executable
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning_interface/lib/moveit_ros_planning_interface/demo
[ 88%] Built target demo
Scanning dependencies of target moveit_robot_interface_python
[ 94%] Building CXX object
robot_interface/CMakeFiles/moveit_robot_interface_python.dir/src/wrap_python_robot_interface.cpp.o
[100%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning_interface/lib/python2.7/dist-
packages/moveit_ros_planning_interface/_moveit_robot_interface.so
[100%] Built target moveit_robot_interface_python
<== Finished processing package [20 of 26]: 'moveit_ros_planning_interface'

==> Processing catkin package: 'moveit_planners_chomp'
==> Building with env:
'/tmp/catkin_workspace/devel_isolated/moveit_ros_planning_interface/env.sh'
==> cmake
/tmp/catkin_workspace/src/moveit/moveit_planners/chomp/chomp_interface
-DCATKIN_DEVEL_PREFIX=/tmp/catkin_workspace/devel_isolated/moveit_planners_chomp
-DCMAKE_INSTALL_PREFIX=/tmp/catkin_workspace/install_isolated


[ Sign in
](https://gist.github.com/auth/github?return_to=https%3A%2F%2Fgist.github.com%2Fdpiet%2Fe1f2ab0e66e6619390a450c280dc2985)
[ Sign up
](/join?return_to=https%3A%2F%2Fgist.github.com%2Fdpiet%2Fe1f2ab0e66e6619390a450c280dc2985&source=header-
gist)


gnu/liburdfdom_model.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_world.so;general;/opt/ros/kinetic/lib/librosconsole_bridge.so;general;/opt/ros/kinetic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-
gnu/libboost_signals.so;general;/opt/ros/kinetic/lib/libroscpp_serialization.so;general;/opt/ros/kinetic/lib/libxmlrpcpp.so;general;/opt/ros/kinetic/lib/libclass_loader.so;general;/usr/lib/libPocoFoundation.so;general;/usr/lib/x86_64-linux-
gnu/libdl.so;general;/opt/ros/kinetic/lib/librosconsole.so;general;/opt/ros/kinetic/lib/librosconsole_log4cxx.so;general;/opt/ros/kinetic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-
gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-
gnu/libboost_regex.so;general;/opt/ros/kinetic/lib/librostime.so;general;/opt/ros/kinetic/lib/libcpp_common.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-
gnu/libpthread.so;general;/usr/lib/x86_64-linux-
gnu/libconsole_bridge.so;general;/opt/ros/kinetic/lib/libroslib.so;general;/opt/ros/kinetic/lib/librospack.so;general;/usr/lib/x86_64-linux-
gnu/libpython2.7.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/usr/lib/x86_64-linux-
gnu/libboost_program_options.so;general;/usr/lib/x86_64-linux-
gnu/libboost_system.so;general;/usr/lib/x86_64-linux-gnu/libtinyxml.so; //The
directory containing a CMake configuration file for class_loader.
class_loader_DIR:PATH=/opt/ros/kinetic/share/class_loader/cmake //The
directory containing a CMake configuration file for cmake_modules.
cmake_modules_DIR:PATH=/opt/ros/kinetic/share/cmake_modules/cmake
//Dependencies for the target
collision_detector_hybrid_plugin_LIB_DEPENDS:STATIC=general;moveit_exceptions;general;moveit_background_processing;general;moveit_kinematics_base;general;moveit_robot_model;general;moveit_transforms;general;moveit_robot_state;general;moveit_robot_trajectory;general;moveit_planning_interface;general;moveit_collision_detection;general;moveit_collision_detection_fcl;general;moveit_kinematic_constraints;general;moveit_planning_scene;general;moveit_constraint_samplers;general;moveit_planning_request_adapter;general;moveit_profiler;general;moveit_trajectory_processing;general;moveit_distance_field;general;moveit_kinematics_metrics;general;moveit_dynamics_solver;general;/usr/lib/x86_64-linux-
gnu/libboost_iostreams.so;general;/opt/ros/kinetic/lib/libsrdfdom.so;general;/opt/ros/kinetic/lib/libresource_retriever.so;general;/opt/ros/kinetic/lib/libkdl_parser.so;general;/opt/ros/kinetic/lib/liburdf.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_sensor.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_model_state.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_model.so;general;/usr/lib/x86_64-linux-
gnu/liburdfdom_world.so;general;/opt/ros/kinetic/lib/librosconsole_bridge.so;general;/opt/ros/kinetic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-
gnu/libboost_signals.so;general;/opt/ros/kinetic/lib/libxmlrpcpp.so;general;/opt/ros/kinetic/lib/libgeometric_shapes.so;general;/opt/ros/kinetic/lib/liboctomap.so;general;/opt/ros/kinetic/lib/liboctomath.so;general;/opt/ros/kinetic/lib/libeigen_conversions.so;general;/opt/ros/kinetic/lib/liborocos-
kdl.so.1.3.0;general;/opt/ros/kinetic/lib/librandom_numbers.so;general;/opt/ros/kinetic/lib/libroscpp_serialization.so;general;/opt/ros/kinetic/lib/libclass_loader.so;general;/usr/lib/libPocoFoundation.so;general;/usr/lib/x86_64-linux-
gnu/libdl.so;general;/opt/ros/kinetic/lib/librosconsole.so;general;/opt/ros/kinetic/lib/librosconsole_log4cxx.so;general;/opt/ros/kinetic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-
gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-
gnu/libboost_regex.so;general;/opt/ros/kinetic/lib/librostime.so;general;/opt/ros/kinetic/lib/libcpp_common.so;general;/usr/lib/x86_64-linux-
gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-
gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-
gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-
gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-
gnu/libpthread.so;general;/usr/lib/x86_64-linux-
gnu/libconsole_bridge.so;general;/opt/ros/kinetic/lib/libroslib.so;general;/opt/ros/kinetic/lib/librospack.so;general;/usr/lib/x86_64-linux-
gnu/libpython2.7.so;general;/usr/lib/x86_64-linux-
gnu/libboost_filesystem.so;general;/usr/lib/x86_64-linux-


Sign in to report message


Analyzing the code in this file will help you understand how to operate MoveIt
from code. The first step is to initialize the different variables that MoveIt
uses to perform its operations. You’ll be creating a planning group, move
group, joint model group pointer, and planning scene interface. The planning
group is just a string that references the exact robot that you’ll be planning
with. The move group creates an instance of that specific robot that can be
commanded by the user. The joint model group pointer is used to set the
starting position of the robot arm for both planning and visualization.
Finally, the planning scene interface creates a virtual environment that can
be populated with objects and obstacles for the robot to interact with. After
the initial robot is set up, initializing visual tools will allow you to view
your robot and the planning scene interface for both feedback and control of
your system. Now that everything is established you can set a variety of goals
for your robot by filling in geometry_msgs pose targets or goal targets and
pushing them to the move group. Once all of your desired goals are set, using
move_group.plan command will trigger MoveIt to develop a plan for your robot.
You can check this plan for success and then, if successful, execute the plan
through the move_group.execute command. Congratulations, now you’re Moving It!


  Forward


planning_pipeline/CMakeFiles/moveit_planning_pipeline.dir/src/planning_pipeline.cpp.o
[ 29%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_planning_pipeline.so
[ 29%] Built target moveit_planning_pipeline
Scanning dependencies of target
moveit_default_planning_request_adapter_plugins
[ 30%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/empty.cpp.o
[ 32%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/fix_start_state_bounds.cpp.o
[ 34%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/fix_start_state_collision.cpp.o
[ 36%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/fix_start_state_path_constraints.cpp.o
[ 38%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/fix_workspace_bounds.cpp.o
[ 40%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/add_time_parameterization.cpp.o
[ 41%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_default_planning_request_adapter_plugins.dir/src/add_iterative_spline_parameterization.cpp.o
[ 43%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_default_planning_request_adapter_plugins.so
[ 43%] Built target moveit_default_planning_request_adapter_plugins
Scanning dependencies of target moveit_list_request_adapter_plugins
[ 45%] Building CXX object
planning_request_adapter_plugins/CMakeFiles/moveit_list_request_adapter_plugins.dir/src/list.cpp.o
[ 47%] Linking CXX executable
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/moveit_ros_planning/moveit_list_request_adapter_plugins
[ 47%] Built target moveit_list_request_adapter_plugins
Scanning dependencies of target moveit_planning_scene_monitor
[ 49%] Building CXX object
planning_scene_monitor/CMakeFiles/moveit_planning_scene_monitor.dir/src/planning_scene_monitor.cpp.o
[ 50%] Building CXX object
planning_scene_monitor/CMakeFiles/moveit_planning_scene_monitor.dir/src/current_state_monitor.cpp.o
[ 52%] Building CXX object
planning_scene_monitor/CMakeFiles/moveit_planning_scene_monitor.dir/src/trajectory_monitor.cpp.o
[ 54%] Linking CXX shared library
/tmp/catkin_workspace/devel_isolated/moveit_ros_planning/lib/libmoveit_planning_scene_monitor.so
[ 54%] Built target moveit_planning_scene_monitor
Scanning dependencies of target demo_scene


See < [
http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/272/display/redirect?page=changes
](http://build.ros.org/job/Ldev__moveit__ubuntu_xenial_amd64/272/display/redirect?page=changes)
>


Either email addresses are anonymous for this group or you need the view
member email addresses permission to view the original message


to mikael+b...@osrfoundation.org, ros-build...@googlegroups.com,
13...@2000.jukuin.keio.ac.jp, ch...@live.in, da...@dav.ee,
g.a.van...@tudelft.nl, gm1...@gmail.com, imcma...@gmail.com,
jon.b...@gmail.com, jorge...@swri.org, mathias...@ipa.fraunhofer.de,
m...@v4hn.de, mfer...@fetchrobotics.com, moveit_r...@googlegroups.com,
rhas...@techfak.uni-bielefeld.de