Skip to main content

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. For the complete documentation see https://robotics-robot-stations.readthedocs.io/

Installation

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:

For developers

git clone git@github.com:CTURobotics/ctu_bosch_sr450.git
cd ctu_bosch_sr450
uv sync
uv pip install -e ".[dev]"
pre-commit install

Metadata

Release files for ctu-bosch-sr450 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ctu-bosch-sr450 1.0.6
File Size Uploaded
ctu_bosch_sr450-1.0.6.tar.gz 11.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ctu-bosch-sr450 1.0.6
File Interpreter ABI Platform
ctu_bosch_sr450-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 21.8 kB

Release files / ctu_bosch_sr450-1.0.6.tar.gz

Download URL ctu_bosch_sr450-1.0.6.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
39d43da43fc9217e4cda822d492175ac291e8fdc7683379c111c1007b96e22f0
BLAKE2b-256 checksum
How to use checksums
06c70a625357d400cea0ea267ca96a864757602dd804b80851f3a44d9ca762f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2025.

Transparency log

Release files / ctu_bosch_sr450-1.0.6-py3-none-any.whl

Download URL ctu_bosch_sr450-1.0.6-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17decaf69d75dbc2c786a1b1b434c93975cdf3b1ece992a4249cf8228183bdf7
BLAKE2b-256 checksum
How to use checksums
1678e2a3ac380e767a1462491ddbbcb58c5f90fb637ff18ede3e7530ebaeb301
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page