Giter VIP home page Giter VIP logo

fanuc's Introduction

Fanuc

Build Status: Ubuntu Bionic (Actions) Github Issues

license - apache 2.0 license - bsd 3 clause

support level: community

ROS-Industrial Fanuc meta-package. See the ROS wiki page for more information.

The fanuc_experimental repository contains additional packages.

Contents

Branch naming follows the ROS distribution they are compatible with. -devel branches may be unstable. Releases are made from the distribution branches (hydro, indigo, kinetic).

Older releases may be found in the Github mirror of the old ROS-Industrial subversion repository.

MoveIt configurations

All provided MoveIt configurations were moved to the moveit_cfgs subdirectory in #322. These packages can be used as-if they were still located in the root of the repository. Catkin will still be able to locate them.

Status

The packages in this repository are community supported. This means they do not get support from the OEM, nor from the ROS-Industrial consortia directly (see also the support level badge at the top of this page).

Maintenance and development is on a best-effort basis and depends on volunteers.

If you are looking for official support, ask your local Fanuc branch office for their version of the ROS 1 fanuc driver.

Installation

Binary packages are available for ROS Kinetic, but not all packages have been released.

For installation on newer ROS versions, refer to the Building section below.

The following packages have been released (as of 2019-10-09):

  • fanuc_driver
  • fanuc_resources
  • all support packages (ie: fanuc_*_support)

They can be installed using apt (on Ubuntu and Debian).

The other packages (MoveIt configurations and plugins) can be built from sources (see the Building section below).

Example

To install fanuc_m10ia_support on Ubuntu Xenial for ROS Kinetic (after having followed the normal ROS Kinetic installation tutorial):

sudo apt install ros-kinetic-fanuc-m10ia-support

This would install ros-kinetic-fanuc-resources and ros-kinetic-fanuc-driver as well (and all their dependencies).

Building

On newer (or older) versions of ROS

Building the packages on newer (or older) versions of ROS is in most cases possible and supported. For example: building the packages in this repository on Ubuntu Bionic/ROS Melodic or Ubuntu Focal/ROS Noetic systems is supported. This will require creating a Catkin workspace, cloning this repository, installing all required dependencies and finally building the workspace.

Catkin tools

It is recommended to use catkin_tools instead of the default catkin when building ROS workspaces. catkin_tools provides a number of benefits over regular catkin_make and will be used in the instructions below. All packages can be built using catkin_make however: use catkin_make in place of catkin build where appropriate.

Building the packages

The following instructions assume that a Catkin workspace has been created at $HOME/catkin_ws and that the source space is at $HOME/catkin_ws/src. Update paths appropriately if they are different on the build machine.

These instructions build the melodic-devel branch on a ROS Melodic system:

# change to the root of the Catkin workspace
$ cd $HOME/catkin_ws

# retrieve the latest development version of fanuc. If you'd rather
# use the latest released version, replace 'melodic-devel' with 'kinetic'
# NOTE: 'melodic-devel' is compatible with ROS Noetic. 'kinetic' may not be
$ git clone -b melodic-devel https://github.com/ros-industrial/fanuc.git src/fanuc

# check build dependencies. Note: this may install additional packages,
# depending on the software installed on the machine
$ rosdep update

# be sure to change 'melodic' to whichever ROS release you are using
$ rosdep install --from-paths src/ --ignore-src --rosdistro melodic

# build the workspace (using catkin_tools)
$ catkin build

Activating the workspace

Finally, activate the workspace to get access to the packages just built:

$ source $HOME/catkin_ws/devel/setup.bash

At this point all packages should be usable (ie: roslaunch should be able to auto-complete package names starting with fanuc_..). In case the workspace contains additional packages (ie: not from this repository), those should also still be available.

Installation and usage

Refer to Working With ROS-Industrial Robot Support Packages for information on how to use the files provided by the robot support and MoveIt configuration packages. See also the other pages on the ROS wiki.

Refer to the tutorials for information on installation and configuration of the controller-specific software components.

Disclaimer

The author of these packages is not affiliated with FANUC Corporation in any way. All trademarks and registered trademarks are property of their respective owners, and company, product and service names mentioned in this readme or appearing in source code or other artefacts in this repository are used for identification purposes only. Use of these names does not imply endorsement by FANUC Corporation.

fanuc's People

Contributors

axelschroth avatar dniewinski avatar gavanderhoorn avatar jediofgever avatar jeremyzoss avatar jeroendm avatar jettan avatar joao-pm-santos96 avatar jrgnicho avatar pdragy avatar shaun-edwards avatar simonschmeisser avatar tfoote avatar victorlamoine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fanuc's Issues

driver: improve use of Karel built-ins / constants

As per subject. Example are the math 'libraries': Karel already defines constants like PI and DEG2RAD, which would make ours redundant.

  • math constants / functions
  • [ ] error levels
  • ascii colour codes
  • IO definitions (SOP, UOP, etc)

ros_relay accepts only JOINT_TRAJ_PT messages

Current implementation accepts only JOINT_TRAJ_PT messages. JOINT_TRAJ_PT_FULL contain more information (position, velocity and acceleration).

Using JOINT_TRAJ_PT_FULL would also help #6: ros_relay only controls first motion group.

driver: add pre-start check for presence of required libs/programs

Seems the KAREL runtime performs some sort of lazy loading: missing dependencies of a program only result in errors (INTP-368: (PROG, LINE) Cannot use specified program) if any symbols within those dependencies are actually used in execution paths.

Add a check at startup to make sure that all required KAREL programs are loaded on the controller and error-out early.

LOAD_STATUS(..) can be used for this.

support: determine actual effort limits

Similar to #49: determine the actual effort limits for every joint. This information might be stored in the files on the controller.

  • M-10iA
  • M-16iB/20
  • M-20iA
  • M-20iA/10L
  • M-430iA/2F
  • M-430iA/2P
  • LR Mate 200iC
  • LR Mate 200iC/5H
  • LR Mate 200iD

Make used socket TAGs configurable

Currently, ros_state and ros_relay need to be recompiled in case the user wants to change the used server TAGs. This is inconvenient (and involved).

These should be configurable using only the TP on the controller.

driver: include joint velocity (and acceleration) in joint_state report

As per the title: make ros_state also report joint velocities, in addition to joint positions as it currently does.

If possible acceleration should be included as well.

ros_state would first need support for JOINT_FEEDBACK simple_message messages. Exploiting the valid fields field allows for incremental implementation of this issue.


Blocked by: #5.

driver: support multiple motion groups

Subtasks:

  • report state of all motion groups with ros_state (was: #4)
  • add support for JOINT_FEEDBACK messages to ros_state (was: #5)
  • ros_relay only controls first motion group (was: #6)
  • add support for JOINT_TRAJ_PT_FULL message to ros_relay (was: #7)

support: details on robot specs used for support pkgs missing

Many of the Fanuc manipulators support different configurations: dress-outs, mounting angles, etc. While the support packages currently do specify the documentation (and version) that provided the joint limits, information on the specific configuration used to generate the URDF is missing.

This should be added.

  • M-10iA
  • M-16iB/20
  • M-20iA
  • M-20iA/10L
  • M-430iA/2F
  • M-430iA/2P
  • LR Mate 200iC
  • LR Mate 200iC/5H
  • LR Mate 200iD

driver: improve usefulness of 'timestamp' in text on UserMenu

Currently shows something like:

26139 I RSTA Waiting for ROS state prox

The first integer is like MM:SS, but unrecognisable as such. It is currently only meant to offer some indication of which lines are chronologically 'close'.

This should either be removed, or reworked to show something intelligible.

Add IKFast MoveIt plugins

As mandated by the Industrial Robot Driver Specification, section 1.3.4, under Kinematics:

To enable real-time motion planning and collision avoidance, the node should provide robot-specific inverse kinematics solutions. A generic solver is provided in ROS, but it operates too slowly for collision-avoidance path planning. As described here and here, the ikfast tool can be used to generate the required kinematics files for any 6-DOF serial manipulator. These files should be integrated with ROS as a plugin, not a service, to avoid expensive communications-related overhead. This involves creating a launch file to connect your plugin with the ROS arm_kinematics_constraint_aware node, as described here.


This is a composite issue:

  • #13, M-10iA
  • #14, M-16iB/20
  • #52, M-20iA
  • #53, M-20iA/10L
  • #15, M-430iA/2F
  • #16, M-430iA/2P
  • #34, LR Mate 200iC
  • #35, LR Mate 200iC/5H

Fanuc status on main page should be changed dynamically using wiki macros

The fanuc wiki main page ( http://wiki.ros.org/fanuc ), shows the software status for the groovy version. "Groovy" is "hard coded" into the wiki. The desired method of doing this is to use the wiki version macros as shown here: http://wiki.ros.org/Industrial/Software_Status#Full_Example.

In the future, we hope that the software status will be embedded in the auto-generated content at the top of each page. This content is tied to ROS versions. By following the example above the page layout will not change if/when this information becomes embedded in the auto-generated content.

Make ros_state use JOINT_FEEDBACK messages

JOINT_FEEDBACK messages provide more information on the state of the manipulator (position, velocity and acceleration vs only position).

This would also help with #4: reporting state on all motion groups in the robot.

support: determine actual acceleration limits

Acceleration limits currently specified in the Arm Navigation and MoveIt configuration packages are calculated values, not actual limits.

Todo: determine actual acceleration limits and update MoveIt configuration packages.

  • M-10iA
  • M-16iB/20
  • M-20iA
  • M-20iA/10L
  • M-430iA/2F
  • M-430iA/2P
  • LR Mate 200iC
  • LR Mate 200iC/5H
  • LR Mate 200iD

driver: determine joint2 & 3 coupling factor at runtime (using controller info)

The value of the J23_factor can be determined at runtime using info that is stored on the controller on which the KAREL programs are running. As this is (at the moment) the only difference between the fanuc_driver and the generic industrial_robot_client binaries, this would allow the fanuc_driver to return to using those generic binaries.

This would reduce the amount of custom code and launch files, thus reducing maintainance effort and potential sources of errors.

driver: too much delay in detection of communications loss

Minimum timeout value for server TAGs on the controller is 1 minute. This value seems to be used to configure the TCP timeout on open sockets. Only after this time the controller will report an error to the program making use of the TAG (connection).

Perhaps a heartbeat system should be implemented -- as suggested by the Industrial Robot Driver Specification, section 1.2.2, under Communications. This would allow for much shorter timeout values, increasing responsiveness of the driver.

ros_state only reports state of first motion group

The current implementation of ros_state only reports the state of the first motion group of the robot. Any additional axes will not be included in the state report. This makes it impossible to control positioners or any other non-arm axes controlled by the robot controller.

driver: servos are not powered down in case of connection loss

As mandated by the Industrial Robot Driver Specification, section 1.2.2, under Communications:

  • both sides of the robot-ROS connection should handle communications-loss scenarios:
    • [...]
    • the robot shall
      • stop motion and power off the drives
      • [...]

The current implementation (if run in auto mode) does not power down the servos. This should be fixed.


It is unclear whether this is possible: the OS on the robot has control over servo power, and determines whether it should keep them powered, or not.

ros_relay only controls first motion group

The ros_relay KAREL program only controls the first motion group. Any additional axes are ignored. This makes it impossible to control any positioners or external axes for instance.

Arm navigation pkgs depend on dry packages

This makes it impossible to release those packages, as catkin packages cannot depend on rosbuild packages.

planning_environment is one such package: it is (still) dry and the arm navigation packages of the M-10 and the M-430 depend on it.

Decimate robot meshes of 'visual' quality

Some of the meshes in the visual subdirectories have currently a rather high face and vertex count, which can result in a large visualisation overhead when displaying the model in RViz.

Suggestion: decimate quality of those meshes, but keep them detailed enough.

This would also lower total filesizes of those meshes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.