Tesseract Setup Wizard Leveraging Ignition

Southwest Research Institute (SwRI) is excited to announce that it has adopted Ignition Robotics Software as the visualization tool set for the Tesseract Motion Planning Framework. Ignition Robotics Software provides a modular set of libraries related to rendering, GUI, math, physics and much more.

Over the past few years SwRI has received several inquires related to richer visualization, simulation and ease of use tools for industrial automation applications allowing a user without programming experience to perform tasks that leverage the advanced capabilities provided by ROS. The goal was to first start with something simple that would add value to the open-source community. It was chosen to start by developing a setup wizard for the Tesseract Motion Planning Framework, further down more details are provided.

If you are familiar with the current tools within ROS you may be asking yourself why we chose to leverage Ignition Robotics Software over something like RViz, RobotWeb Tools, etc. In my opinion, the Ignition Robotics Software is more user-experience focused and the others are more developer focused, for a specific platform. The Ignition GUI leverages Qt Quick, which provides several advantages over the legacy Qt Widgets. These advantages allow it not only to be used on a desktop but also on tablets and smart phones, along with multiple methods for web deployment; opening up the possibility to leverage this tool similar to how you would use an Industrial Human Machine Interface (HMI). In addition, Qt Quick allows for a cleaner solution for separating the UI development from the business logic, allowing faster development and integration.

Another aspect of the Ignition Robotics Software is the rendering capabilities which provides not only Ogre, but Ogre2 and OptiX. And because of its plugin architecture it will most likely see more support for other rendering libraries in the future. Lastly, an additional advantage is having direct access to physics provided by Ignition Physics for simulating various industrial processes like sanding, grinding and painting in the future.

The other component of this exercise was to determine how to deploy the User Tools. Since we are talking about deploying applications instead of libraries which are mostly self contained, it was key to utilize a method of deployment that allows these tools to be easily accessed by the user, with frequent improvements and support for early access to enable testing before making new features available. For this we have chosen to leverage Snapcraft and the Snap Store, provided by Canonical, for deploying these user based tools on Linux and we are currently investigating using MSIx for deployment on Windows.

Before I move on to providing details on Tesseract Ignition, I would like to recognize two key individuals instrumental throughout the development and decision process. I would like to recognize Louise Poubel, from Open Robotics, for her support related to the Ignition Robotics Software packages, and Kyle Fazzari, from Canonical, for his support related to building and deploying this tool to the Snap Store. Thank you both for your time and guidance on this effort and I look forward to further collaboration.

Tesseract Ignition Overview: This package provides two applications, the first is the Tesseract Setup Wizard and second is Tesseract Visualization outlined below and can be downloaded on the Snap Store by clicking on the Snap Store button below. Please see our video for a walk through of these tools and how you may start leveraging it now.

  • Tesseract Setup Wizard
    • Loading a URDF and SRDF
    • Defining kinematic groups
    • Defining allowed collision matrix
    • Defining group states
    • Defining group tool center points
    • Defining group opw kinematics parameters
    • Saving SRDF
  • Tesseract Visualization
    • Trajectory Simulation
    • Tool Path Visualization
    • Marker Visualization

New Release of ROS Qt Creator 4.8 RC on Xenial and Bionic

We are pleased to announce the release of the ROS Qt Creator Plug-in for Qt Creator 4.8 RC on Xenial and Bionic. The ROS Qt Creator Plug-in creates a centralized location for ROS tools to increase efficiency and simplify tasks.

Picture obtained from Qt Blog

Picture obtained from Qt Blog

Highlights:

  • Qt Creator 4.8 introduces several new rich features and improvements to existing capabilities.
    • Generic Programming Language Support (Python Support!)
      • To use this feature, you must enable the Language Support Plugin
    • C++
      • Compilation Database Projects!
      • Clang Format Based Indentation!
      • Cppcheck Diagnostics!
      • Simultaneously debugging one or more executables!
  • ROS Plug-in introducint a few new features and bug fixes
    • Upgraded to Qt Creator 4.8
    • Added catkin_test_results run step
    • Added ROS Settings Page to configure default settings
    • Bug Fixes
      • Issue #284 Package Wizard caused Qt Creator to crash if using when a ROS project is not loaded.
      • Issue #289 Clicking Help caused Qt Creator to crash
qt-creator-ros-settings-page.png

Optimization Motion Planning with Tesseract and TrajOpt for Industrial Applications

Summary

Southwest Research Institute launched an internal R&D project to integrate the existing motion planner TrajOpt (Trajectory Optimization for Motion Planning) into ROS. TrajOpt was created at UC Berkeley as a software framework for generating robot trajectories by local optimization. The integration of TrajOpt necessitated new capabilities that spawned the creation of several new packages: tesseract and trajopt_ros. The tesseract package contains a new lightweight motion planning environment designed for industrial application, while the trajopt_ros package contains packages specific to TrajOpt. We will demonstrate how these tools complement existing planners, like OMPL or Descartes, to solve complex problems quickly and robustly.

Description

The original implementation of TrajOpt was developed using OpenRave for Kinematics and Bullet for contact checking. The first step was to replace OpenRave with MoveIt! Kinematics and second replace the collision environment with MoveIt!’s Collision environment. Early on in the process several limitations were found in both MoveIt!’s Kinematics and Collision environment.

TrajOpt requires the ability to calculate specific information about the robot not provided by MoveIt!, but it turns out KDL, which is one of the kinematics libraries used by MoveIt!, provides methods for obtaining the required information. This resulted in the development of a custom kinematics library built on KDL for both kinematic chains and non-kinematic chains. Secondly TrajOpt leverages specific characteristics of convex to convex contact checking to provide the minimum translation vector to move two objects out of collision. In the process of integrating with MoveIt!, it was determined that it did not provide detailed distance information. Also, after further evaluation it was found that MoveIt! does not support convex to convex collision checking requiring significant API changes across multiple repositories. Since the IR&D was time-sensitive, it was determined to not use MoveIt! and create a light-weight Motion Planning Environment (Tesseract).

The Tesseract environment was designed to support SwRI’s work in complex industrial motion planning applications where flexibility and modularity are key to adapting to new applications. Packages include:

  • tesseract_core – Contains platform agnostic interfaces and data structures to be used. tesseract_ros –ROS implementation of the interfaces identified in the tesseract_core package, currently leverages Orocos/KDL libraries.
  • tesseract_collision – ROS implementation of a Bullet collision library. It includes both continuous and discrete collision checking for convex-convex and convex-concave shapes.
  • tesseract_msgs – ROS message types used by Tesseract.
  • tesseract_rviz –ROS visualization plugins for Rviz for both the environment state and trajectories.
  • tesseract_monitoring – Provides tools for monitoring the active environment state and publishing contact information. This is useful if the robot is being controlled outside of ROS, but you want to make sure it does not collide with objects in the environment. Also includes the environment monitor, which is the main environment facilitating requests to add, remove, disable and enable collision objects, while publishing its current state to keep other ROS nodes updated.
  • tesseract_planning – Contains interface bridges between Tesseract Environment and motion planners OMPL and TrajOpt.

After the creation of Tesseract all necessary capabilities were available to finish the integration of TrajOpt into ROS. The new motion planner was evaluated against the following use case while minimizing joint velocity, acceleration and jerk cost along with collision avoidance cost:

  • Fully Constrained Cartesian Path
  • Semi-Constrained Cartesian Path
  • Free Space Path
  • Semi-Constrained Free Space Path
  • Free Space + Constrained Cartesian Path

Only a few of the above case will be discussed below. The first is a Semi-Constrained Free Space Path where a KUKA iiwa needs to plan around a sphere while maintaining tool orientation with the z-axis rotation free to rotate. Each step of the optimization is shown in Figure 1. Note that once the robot is out of collision the remaining iteration are spent minimize joint velocity, acceleration and jerk.

Figure <span style='font-size:11.0pt;line-height:
107%;font-family:"Calibri",sans-serif;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Ca…

Figure 1 - KUKA iiwa (7 DOF) TrajOpt free space planning round sphere

The next use case was a complex industrial application. It is an 8 DOF problem, where the robot picks up a seat off of a conveyor and loads the seat into a car. This is a very challenging task, given the amount of manipulation required to pass through the doorway and set the seat without colliding with the car structure. The final trajectory, found in 0.482 seconds using TrajOpt with continuous collision checking enabled, is shown in Figure 2.

Figure <span style='font-size:11.0pt;line-height:
107%;font-family:"Calibri",sans-serif;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Ca…

Figure 2 - TrajOpt Car Seat Installation Example

One significant advantage of the Tesseracts implementation of the Bullet Collision Library is the ability to perform continuous collision checking. An example demonstrating the use of continuous collision with TrajOpt is shown in Figure 3. Each red box represents a state in the trajectory with the green box being the collision object to avoid during planning. Under discrete collision checking each state would be found to be collision free even if the motion between states was not. With continuous collision checking enabled, it can be seen that a collision is detected when transitioning between state 2 and state 3 resulting in a collision-free trajectory.

Figure <span style='font-size:11.0pt;line-height:
107%;font-family:"Calibri",sans-serif;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Ca…

Figure 3 - Planar Box (2 DOF) TrajOpt free space planning with continuous collision checking

The remaining application to discuss is a complex Semi-Constrained Cartesian path with 437 poses each with 5 Degrees Of Freedom (DOF) fixed and the tool z-axis free to rotate. The application is performing a deburr operation on a complex puzzle piece shown in Figure 4. Also the problem includes a 7 DOF robot and a 2 DOF positioner for the spindle making it a non-fixed base kinematic chain. This requires the use of Tesseract’s joint kinematic model developed for this particular use case. The TrajOpt motion planner problem contains roughly 3,000 constraints and was able to solve in 4.4 seconds.

Figure <span style='font-size:11.0pt;line-height:
107%;font-family:"Calibri",sans-serif;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Ca…

Figure 4 – Semi-Constrained Cartesian Planning Problem

TrajOpt has shown itself capable of solving very difficult problems but, as an optimization, it can be sensitive to its initial conditions. This presentation will explore several strategies for seeding the solver, including the integration of sampling planners like OMPL and Descartes. These planners can coarsely and quickly sample the space of a problem to generate candidate solutions that can be refined by TrajOpt. If that should fail, a new robot configuration is selected from the sampled problem-space and the process repeated. For some problems this results in a planner finding a true global optimum.

References

  1. Tesseract Repository
  2. TrajOpt ROS Repository
  3. Examples (Tesseract and TrajOpt ROS)
  4. Videos

New Release of the ROS Qt Creator Plug-in

We are pleased to announce the release of the ROS Qt Creator Plug-in for Qt Creator 4.5.1 on Trusty and Xenial. The ROS Qt Creator Plug-in creates a centralized location for ROS tools to increase efficiency and simplify tasks.

Highlights:

  • The installation has changed from using a debian installation method to using the Qt Installer framework. This change is to facilitate tighter integration with existing ROS capabilities and libraries within Qt Creator.
image1.png
  • A set of new video tutorials were contributed by Nathan George broken down into five parts:
    • Installation
    • Import, Build, and Run Settings
    • Create Hello World C++
    • Building Hello World
    • Indexing, Auto Complete and Code Style
  • Updated wiki using Sphinx and GitHub Pages to provide a richer wiki.
  • In an effort to make it simpler when using the dugger within Qt Creator for ROS an “Attach to unstarted process” run step was created as shown below.
image2a.png
  • A set of existing ROS templates were added to simplify adding ROS specific files within Qt Creator.
image3.png
  • Additional changes
    • Show hidden files/folder like .clang-format and .rosinstall.
    • Support for catkin tools partial build capabilities.

Final in series on ROS-I development process – Publishing & Installation

ROS-Development-BlogPost-01-ARTC Update.png

This is the last post in a series detailing the ROS-Industrial software development process. We will discuss publishing and installing software. The first post described the process of contributing code to a project (item 1-3 in the figure above). The second post described the process of Continuous Integration, Pull Request (PR) peer review , and the release of a given repositories packages by the maintainer (item 4-7). Note that the starred numbers in the software development process illustrated above correspond to the outline below.

  1. The publishing of the released packages (item 8) is managed by OSRF and is not on a set schedule. This usually happens when all packages for a given distro are built successfully and stable. The current status for the distro kinetic can be found here . Navigating to other distros can be done by changing the distro name in the link.
  2. Once the package has been published, it is available to be installed by the developer (item 9).
  3. After the install of a new version, the developer may have questions, experience issues or it may not have the necessary functionality which should all be reported on the packages GitHub repository as an issue (item 10). If an issue is identified or there is missing functionality that the developer requires, the cycle starts back at (item 2).
The full series has been compiled and is now located on ROS-Industrial website here

Successful ROS-I Kinetic Training Class - Curriculum Available

The ROS-Industrial Consortium Americas hosted a ROS-Industrial Developers Training Class June 6-8, 2017, at SwRI in San Antonio, Texas. Twelve attendees represented a diverse set of organizations, including Bastian Solutions, EWI, John Deere, PlusOne Robotics, Magna International, Rensselaer Polytechnic Institute, The University of Texas at Austin, and Yaskawa America’s Motoman Robotics Division. The three-day class was geared toward individuals with a C++ programming background who sought to learn to compose their own ROS nodes.

  • Day 1 focused on introductory ROS skills.
  • Day 2 examined motion planning using MoveIt! as well as using the Descartes planner and perception concepts.
  • Day 3 included an introduction to perception and culminated with lab programming exercises with a choice of Pick-and-Place Application or Descartes Application.

Many thanks to training class leaders Jeremy Zoss and Austin Deric. The training curriculum is open-source and available here.

For more details about this class, see the event page.

If you are interested in attending the next class in October, keep an eye on this event page.

THE FULL CLASS WITH SWRI ROS-INDUSTRIAL SUPPORT STAFF INCLUDED

THE FULL CLASS WITH SWRI ROS-INDUSTRIAL SUPPORT STAFF INCLUDED

Qt Creator IDE Plug-in for ROS

The ROS Qt Creator Plug-in is developed specifically for ROS to increase a developers' efficiency by simplifying tasks and creating a centralized location for ROS tools. Since it is built on top of the Qt Creator platform, users have access to all of its existing features like: syntax highlighting, editors (C++ , Python, etc.), code completion, version control (Git, Subversion, etc.), debuggers (GDB, CDB, LLDB, etc.), and much more.

The ROS Qt Creator Plug-in provides the following capabilities:

  • Import/Create Catkin Workspaces
  • Create Catkin Packages
  • Custom Build and Run Configuration
    • catkin_make (Debug, Release, Release with Debug Info, Minimum Size Release)
    • roslaunch
    • rosrun
    • sourcing workspace
      Note: The Qt Creator Plug-in supports multiple configurations to enable quick switching between configurations, and everything is saved.
  • Integrated Tabbed Terminal
  • Templates
    • Industrial Robot Support Package
    • Basic Launch File
    • Basic URDF File
    • Basic Node File
      Note: Users may create custom templates.

Check out two videos (below). The first (left) is a short overview of the Qt Creator and its default capabilities. The second video (right) is an overview of the ROS Qt Creator Plug-in developed by Levi Armstrong from Southwest Research Institute. It concludes with an invitation for other to begin using the plug-in for ROS development.