Jacobi Studio#

Studio is an easy-to-use web app for setting up your robot projects. After setting up the environment and the robot, specyfing the motions, and starting a training, you can download a *.jacobi-plan motion plan file. The Jacobi library can load this file via planner.load_motion_file('*.jacobi-plan').

Studio

Creating a new Project#

After clicking on the New Project button in your project overview, Studio should show an empty project:

Studio Empty Project

We will now add a robot, set up the environment obstacles, define motion waypoints to visualize the Quick Start guide all within Jacobi Studio.

Set up the Robot#

We can add a new robot by clicking on Add and Add a new robot from our list of pre-configured robots.

Studio Add Robot

We go for the Universal UR10e robot. After loading, the card on the lower left will show details about the robot (or other objects). We can now move the robot by setting the joint position or the Cartesian TCP, or select the robot in the 3D viewer and move the TCP by hand.

Studio Move Robot

We set the robot’s base position in the Base tab of the robot’s detail view, and the Flange to TCP transformation in the End Effector tab. There, we can also set up a box obstacle for the end effector or item obstacle, or upload a mesh file. In the Limits tab, we reduce the maximum acceleration to 4.0 rad/s^2 for each joint.

Set up the Environment#

We now add to Box obstacles to the environment. To rename the obstacles, click on the name in the detail view, and set the position and size there. The table obstacle has size [1.2, 2.0, 0.3] and it’s origin at [0.4, 0.0, 0.15]. We add a box divider of size [0.5, 0.1, 0.8] at [0.74, 0.0, 0.5]. We can also changing the color by clicking on the colored fill icon.

Studio Add Box Obstacles

Define Motions#

To let the robot move, we first need to define the start and goal waypoints for the robot. For the start, we add a waypoint and set the Cartesian position to a translation of [0.7, -0.3, 0.3] and an Euler rotation of [-3.14, 0, 0]. We can also add a Reference Configuration to let the inverse kinematics know which solution we prefer. In general, the IK will find a solution that is as close as possible to the given configuration. Here, we set a joint configuration of [-0.5, -0.8, 1.6, -2.2, -1.7, 0.0]. When selecting the robot, we can let the robot jump to this waypoint.

Studio Waypoint Start

Similarly, we add a second goal waypoint, select Joint Space and set a joint position of [0.45, -0.8, 1.40, -2.20, -1.60, -1.5].

Then, we select the Motions tab in the vertical left sidebar and click on Add Motion. Studio should automatically detect the waypoints, and show an arrow in the 3D viewer.

Studio Add Motion

Visualize Motions#

We move on to the Deploy tab. Before visualizing motions or starting a training, we need to save the current project. Click either on the Save button in the top right navbar, or on the blue button above the visualization view. Aftewards, we can run the Motion 1. Studio will calculate a time-optimized, collision-free, and jerk-limited motion and visualize it. The computed trajectory should have a duration of around 1.16 s. Feel free to change to the Collision Mode in the top right of the 3D viewer and use the timer to step through the trajectory in detail!

Studio Add Motion

Download a Project#

When hitting the Download button in the top right, the current project is bundled into a *.jacobi-project file. You can load a project in the C++ and Python library and plan your motions right away via:

planner = Planner.load_from_project_file(download_folder / 'quick-start.jacobi-project')
trajectory = planner.plan(
    start=[-0.80, -0.73, 1.58, -2.26, -1.42, 0.0],  # [rad]
    goal=[0.45, -0.73, 1.40, -2.20, -1.60, 0.5],  # [rad]
)

Start a Training#

This features is only available for users of the on-prem version. For a training, at least one start or goal of one motion needs to be a motion region. Then, we can start the training in the Deploy tab and monitor the training progress at the Training page.

Studio Start Training