Skip to main content

Package to control CTU/CIIRC robot Bosch SR450 via MARS control unit.

Project description

BOSCH SR450 Robot at CTU/CIIRC

Package to control CTU/CIIRC robot Bosch SR450 via MARS control unit. This code is based on https://github.com/cvut/pyrocon but adds packaging, documentation, and some testing.

Installation

pip install ctu_bosch_sr450

Installation for old systems via Conda

You need at least Python 3.7 to use this package. In case your python is old (Ubuntu in CIIRC labs has old 3.6), install updated version of python e.g. via miniconda:

# Install miniconda:
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

# Create conda environment with newer python and install ctu_bosch_sr450:
conda create -n ctu_robotics python=3.8
conda activate ctu_robotics
pip install ctu_bosch_sr450

Usage

from ctu_bosch_sr450 import RobotBosch

robot = RobotBosch()  # set argument tty_dev=None if you are not connected to robot, it will allow you to compute FK and IK offline
robot.initialize()  # initialize connection to the robot
robot.move_to_q([0.1, 0.0, 0.0, 0.0])  # move robot
robot.wait_for_motion_stop()
robot.close()  # close the connection

Kinematics

robot = RobotBosch(tty_dev=None)  # initialize object without connection to the robot
x, y, z, phi = robot.fk([0, 0, 0, 0])  # compute forward kinematics
q = robot.ik([x, y, z, phi])[0]  # compute inverse kinematics, get the first solution

Coordinate systems

The library uses meters and radians for all values. Variable q is used to denote joint configuration, i.e. the array of joint angles/joint distance for revolute and prismatic joints, respectively. Variables x, y, z, and phi are used to denote position and orientation of the end-effector in the base frame. The orientation is given as rotation around the z-axis of the base frame. The reference base frame is located as shown in the figure below.

Joint configuration

The joint configuration is defined as follows:

  • the first joint is revolute and its angle is measured w.r.t. the x-axis of the base frame
  • the second joint is revolute and is measured w.r.t. the previous link
  • the third joint is prismatic and controls the height (i.e. motion in z-axis)
  • the last joint is revolute and measured w.r.t. the x-axis of the base frame (i.e. * not* w.r.t. the previous link)

How to control the robot

In case robot does anything unexpected, press the emergency button immediately.

Starting the robot

  • power up the robot with red switch on the Mars control panel
  • create RobotBosh() instance and call initialize()
  • you will be asked to press the yellow button (Arm Power) on the Mars control panel
  • robot will perform homing after which you are able to control it with this library

Finishing the work with the robot

  • to turn robot of call soft_home() followed by the close() methods
  • turn red switch off

Entering the cage

  • to enter the cage, you need to call release() function, that will power-off the motors and activate breaks

Recovering from error

Emergency stop or cage entry

  • unblock emergency stop button and/or closed the cage
  • press red button called MotionStop on the Mars control panel
  • press yellow button called ArmPower on the Mars control panel
  • continue with normal operation

Motor error

  • in case green led above motor axis is blinking and red led is on, there is a motor error
  • to reset motors call reset_motors() method

Hard home

Hard home is needed after the control unit power was turned off. It is performed automatically in the initialize() method. However, it needs to be performed only after the power was turned off and on again. In case the connection needs to be reestablished, you can call initialize without homing by setting the argument home to False.

Acknowledgment

Preparation of the course materials was partially supported by:

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

ctu_bosch_sr450-1.0.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ctu_bosch_sr450-1.0.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file ctu_bosch_sr450-1.0.0.tar.gz.

File metadata

  • Download URL: ctu_bosch_sr450-1.0.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.19.3 CPython/3.10.12 Linux/6.5.0-1025-azure

File hashes

Hashes for ctu_bosch_sr450-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e43b57eb41c24bc3c2945b5e7e7f366697b1bc26e5b1feb699b0f0dcffa82b9f
MD5 aa09d6a4f5a7b6d5b979f00bc331a7a3
BLAKE2b-256 c5f5d9c4ce166b5fe8a8254af24be8d2331c729017cefe271815ed27ddef0ca9

See more details on using hashes here.

File details

Details for the file ctu_bosch_sr450-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ctu_bosch_sr450-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.19.3 CPython/3.10.12 Linux/6.5.0-1025-azure

File hashes

Hashes for ctu_bosch_sr450-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ab4ec4d3b97a088de1330a0b3c29ce2d800ff7761b8f1545a3906ac006ee1ab
MD5 9496cf0c3729ccd0f0767b8dc7cf5b46
BLAKE2b-256 fec6b2c962484bb6862e465dfebe75f0f8fa3b9fec6b3a9a6192b2faf710e3db

See more details on using hashes here.

Supported by

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