Skip to main content

Python package for FANUC industrial robots

Project description

fanucpy: Python package for FANUC industrial robots

IMPORTANT

The funding for this project officially ended on September 1, 2023. I am seeking external funding to keep this package alive and to develop packages such as abbpy, kukapy, etc. Please help me with your comments and use cases to understand better your needs. This is my calendar link for arranging a quick video call: https://calendar.app.google/GRfs1Q61QbQSMtAD8.

Software contents

The package consists of two parts:

  1. Robot interface code written in Python programming language
  2. FANUC robot controller driver (tested with R-30iB Mate Plus Controller) written in KAREL and FANUC teach pendant languages

The communication protocol between the Python package and the FANUC robot controller is depicted below: Communication Protocol

Python package installation

pip install -U fanucpy

Driver installation

Follow these steps to install FANUC driver.

Usage

Connect to a robot:

from fanucpy import Robot

robot = Robot(
    robot_model="Fanuc",
    host="192.168.1.100",
    port=18735,
    ee_DO_type="RDO",
    ee_DO_num=7,
)

robot.connect()

Moving

# move in joint space
robot.move(
    "joint",
    vals=[19.0, 66.0, -33.0, 18.0, -30.0, -33.0],
    velocity=100,
    acceleration=100,
    cnt_val=0,
    linear=False
)

# move in cartesian space
robot.move(
    "pose",
    vals=[0.0, -28.0, -35.0, 0.0, -55.0, 0.0],
    velocity=50,
    acceleration=50,
    cnt_val=0,
    linear=False
)

Opening/closing gripper

# open gripper
robot.gripper(True)

# close gripper
robot.gripper(False)

Querying robot state

# get robot state
print(f"Current pose: {robot.get_curpos()}")
print(f"Current joints: {robot.get_curjpos()}")
print(f"Instantaneous power: {robot.get_ins_power()}")
print(f"Get gripper state: {robot.get_rdo(7)}")

Calling external program

robot.call_prog(prog_name)

Get/Set RDO

robot.get_rdo(rdo_num=7)
robot.set_rdo(rdo_num=7, value=True)

Get/Set DOUT

robot.get_rdo(dout_num=1)
robot.set_rdo(dout_num=1, value=True)

Contributions

External contributions are welcome!

  • Agajan Torayev: Key developer
  • Karol
  • Fan Mo
  • Michael Yiu: External contributor

RobotApp

We introduce an experimental feature: Robot Apps. This class facilitates modularity and plug-and-produce functionality. Check the following example apps:

  1. Pick and Place App
  2. Aruco Tracking App
  3. FANUC ChatGPT

Citation

Please use the following to cite if you are using this library in academic publications Towards Modular and Plug-and-Produce Manufacturing Apps

@article{torayev2022towards,
  title={Towards Modular and Plug-and-Produce Manufacturing Apps},
  author={Torayev, Agajan and Mart{\'\i}nez-Arellano, Giovanna and Chaplin, Jack C and Sanderson, David and Ratchev, Svetan},
  journal={Procedia CIRP},
  volume={107},
  pages={1257--1262},
  year={2022},
  publisher={Elsevier}
}

Acknowledgements

This work was developed at the Institute for Advanced Manufacturing at the University of Nottingham as a part of the Digital Manufacturing and Design Training Network.

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under the Marie Skłodowska-Curie grant agreement No 814078.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fanucpy-0.1.14.tar.gz (14.1 kB view hashes)

Uploaded Source

Built Distribution

fanucpy-0.1.14-py3-none-any.whl (13.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page