Skip to main content

swift-sim-modern

This is a fork of swift-sim with fixes for modern Python versions such as 3.14

Upstream project: https://github.com/jhavl/swift

Swift

A Python Robotics Package QUT Centre for Robotics Open Source

License: MIT

Swift is a light-weight browser-based simulator built on top of the Robotics Toolbox for Python. This simulator provides robotics-specific functionality for rapid prototyping of algorithms, research, and education. Built using Python and Javascript, Swift is cross-platform (Linux, MacOS, and Windows) while also leveraging the ubiquity and support of these languages.

Through the Robotics Toolbox for Python, Swift can visualise over 30 supplied robot models: well-known contemporary robots from Franka-Emika, Kinova, Universal Robotics, Rethink as well as classical robots such as the Puma 560 and the Stanford arm. Swift is under development and will support mobile robots in the future.

Swift provides:

  • visualisation of mesh objects (Collada and STL files) and primitive shapes;
  • robot visualisation and simulation;
  • recording and saving a video of the simulation;
  • source code which can be read for learning and teaching;

Installing

Using pip

Swift is designed to be controlled through the Robotics Toolbox for Python. By installing the toolbox through PyPI, swift is installed as a dependency

pip3 install roboticstoolbox-python

Otherwise, Swift can be install by

pip3 install swift-sim

Available options are:

  • nb provides the ability for Swift to be embedded within a Jupyter Notebook
  • vision implements an RTC communication strategy allowing for visual feedback from Swift and allows Swift to be run on Google Colab

Put the options in a comma-separated list like

pip3 install swift-sim[optionlist]

From GitHub

To install the latest version from GitHub

git clone https://github.com/jhavl/swift.git
cd swift
pip3 install -e .

Code Examples

Robot Plot

We will load a model of the Franka-Emika Panda robot and plot it. We set the joint angles of the robot into the ready joint configuration qr.

import roboticstoolbox as rp

panda = rp.models.Panda()
panda.plot(q=panda.qr)

Resolved-Rate Motion Control

We will load a model of the Franka-Emika Panda robot and make it travel towards a goal pose defined by the variable Tep.

import roboticstoolbox as rtb
import spatialmath as sm
import numpy as np
from swift import Swift


# Make and instance of the Swift simulator and open it
env = Swift()
env.launch(realtime=True)

# Make a panda model and set its joint angles to the ready joint configuration
panda = rtb.models.Panda()
panda.q = panda.qr

# Set a desired and effector pose an an offset from the current end-effector pose
Tep = panda.fkine(panda.q) * sm.SE3.Tx(0.2) * sm.SE3.Ty(0.2) * sm.SE3.Tz(0.45)

# Add the robot to the simulator
env.add(panda)

# Simulate the robot while it has not arrived at the goal
arrived = False
while not arrived:

    # Work out the required end-effector velocity to go towards the goal
    v, arrived = rtb.p_servo(panda.fkine(panda.q), Tep, 1)
    
    # Set the Panda's joint velocities
    panda.qd = np.linalg.pinv(panda.jacobe(panda.q)) @ v
    
    # Step the simulator by 50 milliseconds
    env.step(0.05)

Embed within a Jupyter Notebook

To embed within a Jupyter Notebook Cell, use the browser="notebook" option when launching the simulator.

# Try this example within a Jupyter Notebook Cell!
import roboticstoolbox as rtb
import spatialmath as sm
import numpy as np
from swift import Swift

# Make and instance of the Swift simulator and open it
env = Swift()
env.launch(realtime=True, browser="notebook")

# Make a panda model and set its joint angles to the ready joint configuration
panda = rtb.models.Panda()
panda.q = panda.qr

# Set a desired and effector pose an an offset from the current end-effector pose
Tep = panda.fkine(panda.q) * sm.SE3.Tx(0.2) * sm.SE3.Ty(0.2) * sm.SE3.Tz(0.45)

# Add the robot to the simulator
env.add(panda)

# Simulate the robot while it has not arrived at the goal
arrived = False
while not arrived:

    # Work out the required end-effector velocity to go towards the goal
    v, arrived = rtb.p_servo(panda.fkine(panda.q), Tep, 1)
    
    # Set the Panda's joint velocities
    panda.qd = np.linalg.pinv(panda.jacobe(panda.q)) @ v
    
    # Step the simulator by 50 milliseconds
    env.step(0.05)

Metadata

Release files for swift-sim-modern 1.1.8

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

Source distribution (sdist)

Source distribution for swift-sim-modern 1.1.8
File Size Uploaded
swift_sim_modern-1.1.8.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for swift-sim-modern 1.1.8
File Interpreter ABI Platform
swift_sim_modern-1.1.8-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details

Total release size: 3.5 MB

Release files / swift_sim_modern-1.1.8.tar.gz

Download URL swift_sim_modern-1.1.8.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
90c53cee2cdb4bf9d312c0e8c4089a1651a1e5993f4f3eb8d86f65d935d611b0
BLAKE2b-256 checksum
How to use checksums
e7f1ce270d5ce9282a6832c5cf33748f2dfac2df70a71517d8539ce4eb6e66fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / swift_sim_modern-1.1.8-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL swift_sim_modern-1.1.8-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 2.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
07c437023cd80170abdb795e7ce5b23902b2b5a0693037ca19f1de86593f7337
BLAKE2b-256 checksum
How to use checksums
8c887603fccdd73ae63cea8e142e61bf3462fba24e2e5615287ffc311871f3e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

1.1.8 This release

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