Skip to main content

A Python Robot Control Framework for quickly prototyping control algorithms for different robot embodiments.

Project description

pyrcf

WORK IN PROGRESS. NOT READY FOR USE.

A Python Robot Control Framework for quickly prototyping control algorithms for different robot embodiments.

Primarily, this library provides an implementation of a typical control loop (via a MinimalCtrlLoop (extended from SimpleManagedCtrlLoop) class), and defines interfaces for the components in a control loop that can be used directly in these control loop implementations. It also provides utility and debugging tools that will be useful for developing controllers and planners for different robots. This package also provides implementations of basic controllers and planners.

In the long run, this package will also provide implementations of popular motion planners and controllers from literature and using existing libraries.

Continuous Integration Status

Ci Codecov GitHub issues GitHub pull-requests merged

License Python Pixi Badge

PyRCF Philosophy

PyRCF follows the principle of a single thread control loop where components are communicating with each other strictly using pre-defined message types, and run sequentially.

A generic control loop

LOOP:
  # Read latest robot state
  robot_state = ROBOT_INTERFACE->read_robot_state()

  # Update robot state with estimations (when all states are not directly measurable)
  robot_state = STATE_ESTIMATOR->update_robot_state_estimates(robot_state)

  # Generate global plan (high-level task objective or target)
  global_plan = GLOBAL_PLANNER->generate_global_plan()

  # Generate local plan based on state and global plan
  local_plan = LOCAL_PLANNER->generate_local_plan(robot_state, global_plan)

  # Generate control command based on state and local plan
  cmd = CONTROLLER->compute_commands(robot_state, local_plan)

  # Send command to robot
  ROBOT_INTERFACE->write_robot_command(cmd)

  # Maintain loop frequency (naive implementation)
  SLEEP(period)

END LOOP

This package provides interfaces to define custom components (such as controller, robot interface, global planner, local planner, etc) that can be run in a control loop, as well as provides an implementation of a control loop class which can execute these components in the required order at the specified rate. Implementations of simple forms of all components are available in this package, including simulated interfaces for many robot embodiments.

Custom controllers and planners can be implemented and quickly tested on existing robot interfaces or on custom robot interfaces (which can be easily defined).

More complex algorithms for control and planning will be provided by this package over time.

Tutorials and more details about concepts will be provided soon in the tutorials folder.

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

pyrcf-0.0.2.tar.gz (66.1 kB view details)

Uploaded Source

Built Distribution

pyrcf-0.0.2-py3-none-any.whl (86.0 kB view details)

Uploaded Python 3

File details

Details for the file pyrcf-0.0.2.tar.gz.

File metadata

  • Download URL: pyrcf-0.0.2.tar.gz
  • Upload date:
  • Size: 66.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for pyrcf-0.0.2.tar.gz
Algorithm Hash digest
SHA256 950aac4b99c653d33a9604932005fa3017776362bfc3c062c9a658939c6e8b92
MD5 d34d9b98d78651761fb8e88aa7d6915d
BLAKE2b-256 46208b68300f6d46bf34a99129b9ad9bedcf9b848854a2ccce2fd6f4509a3297

See more details on using hashes here.

File details

Details for the file pyrcf-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pyrcf-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 86.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for pyrcf-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 80c326ced134f5d5f33e3376cbc252e1d7c16ab8a8954f53b294671795cee64f
MD5 4dc7e8cd079f6def34ad535c362b7e10
BLAKE2b-256 42994c6f7cc355b5c28d2f809ea88c9432acd603293074aa4624d1806b2dcf60

See more details on using hashes here.

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