Skip to content

Commit

Permalink
Merge pull request #8 from Kinovarobotics/feature/release-2-2-1
Browse files Browse the repository at this point in the history
release 2.2.1
  • Loading branch information
alexvannobel authored Aug 5, 2020
2 parents 5765fd8 + 9c5826a commit 230b654
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 56 deletions.
5 changes: 3 additions & 2 deletions simplified_api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This MATLAB adaptor allows communication via MATLAB with a KINOVA<sup>®</sup> <
This software has been tested on **Ubuntu 16.04 (64-bit)** and **Windows 10**

### MATLAB
1. [MATLAB](https://www.mathworks.com/products/matlab.html) version 9.5 (R2018b)
1. [MATLAB](https://www.mathworks.com/products/matlab.html) version 9.8 (R2020a)
2. Simulink Coder Toolbox
3. Simulink Toolbox
4. Simscape Multibody Toolbox
Expand All @@ -20,7 +20,8 @@ This software has been tested on **Ubuntu 16.04 (64-bit)** and **Windows 10**
## Download instructions

## Installation Instructions
You can access the latest release of the MATLAB adaptor [here](https://artifactory.kinovaapps.com/ui/repos/tree/General/generic-public%2Fkortex%2Fmatlab%2Fsimplified_API ) on the Kinova Artifactory.
You can access the latest release of the MATLAB adaptor [here](https://artifactory.kinovaapps.com/ui/repos/tree/General/generic-public%2Fkortex%2Fmatlab%2Fsimplified_API%2F2.2.1%2Fmatlab_simplified_api_2.2.1.zip) on the Kinova Artifactory.
( The release contains compiled libraries for Linux x86 architecture and Windows Visual Studio 2015 )

### Windows Operating System
From the Kinova Artifactory:
Expand Down
108 changes: 54 additions & 54 deletions simplified_api/documentation/precomputed_joint_trajectories.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,55 @@
# Precomputed Joint Trajectories

## Overview

When sending a position command to the arm (```joint_reach``` or ```cartesian_reach``` through the System object for example), it always reaches the goal before processing the next one. Hence, the arm velocity between the commands reaches zero.
The Precomputed Joint Trajectories is the way to send the arm through joint-space waypoints that will ensure smooth movement.

### kObjTrajectoryFeeder object

The kObjTrajectoryFeeder object in the example Simulink model reads a Precomputed Joint Trajectory (computed offline with a motion planner) from a CSV file. and sends it to the kortex System Object. You will most likely create your own object to send your trajectories to the kortex System object. Both the Simulink model and the CSV file used in the exampel can be found in the [latest release of the MATLAB adaptor](https://artifactory.kinovaapps.com/artifactory/webapp/#/artifacts/browse/tree/General/generic-public/kortex/matlab/simplified_API/).

### Structure of the input arrays

The input arrays are :

- precompute_trj_position: 2D array of size [N X] filled with the positions (in degrees) for each joint for each trajectory point, where:
- N is the number of joints (7 for the Gen3)
- X is the number of points in the trajectory

- precompute_trj_velocity: 2D array of size [N X] filled with the velocities (in degrees per second) for each joint for each trajectory point, where:
- N is the number of joints (7 for the Gen3)
- X is the number of points in the trajectory

- precompute_trj_acceleration: 2D array of size [N X] filled with the accelerations (in degrees per second ^ squared) for each joint for each trajectory point, where:
- N is the number of joints (7 for the Gen3)
- X is the number of points in the trajectory

- precompute_trj_timestamp : 2D array of size [1 X] filled with the timestamps (in seconds) for each trajectory point, where:
- X is the number of points in the trajectory

### Hard limits and conditions to respect

Once sent to the arm, a trajectory is validated and the arm will execute it if it meets all the conditions :

- **The starting timestamp must be 0.0 seconds.** Timestamps are all relative to the starting timestamp, which must be 0.0.

- **Time increments must be 0.001 seconds between trajectory points.** For now, the arm only accepts trajectories with waypoints every 1ms.

- **The current position of the arm must match the first trajectory point.** The trajectory planners communicating with the System object have to take into account the current position of the arm for the computation of the trajectories.

- **The position limit of every joint must be respected for all the trajectory points.** The trajectory will be rejected if any of the points contain an illegal position.

- **The velocity limit of every joint must be respected for all the trajectory points.** The trajectory will be rejected if any of the points contain an illegal velocity. The hard velocity limit for each joint is **50 degree / second.**.

- **The acceleration limit of every joint must be respected for all the trajectory points.** The trajectory will be rejected if any of the points contain an illegal acceleration. The hard acceleration limit for each joint is **1 degree / second ^ squared.**

- **The arrays must contain the same number of joints and number of trajectory points.** The trajectory will be rejected if there is a mismatch in array sizes.

- **Position continuity must be ensured for all trajectory points.** For now, position continuity is the only supported trajectory continuity mode.

- **The trajectory must not last more than 30 seconds.** For now, it is the maximum supported size for a trajectory (30000 trajectory points).

### Trajectory errors

# Precomputed Joint Trajectories

## Overview

When sending a position command to the arm (```joint_reach``` or ```cartesian_reach``` through the System object for example), it always reaches the goal before processing the next one. Hence, the arm velocity between the commands reaches zero.
The Precomputed Joint Trajectories is the way to send the arm through joint-space waypoints that will ensure smooth movement.

### kObjTrajectoryFeeder object

The kObjTrajectoryFeeder object in the example Simulink model reads a Precomputed Joint Trajectory (computed offline with a motion planner) from a CSV file. and sends it to the kortex System Object. You will most likely create your own object to send your trajectories to the kortex System object. Both the Simulink model and the CSV file used in the exampel can be found in the [latest release of the MATLAB adaptor](https://artifactory.kinovaapps.com/ui/repos/tree/General/generic-public%2Fkortex%2Fmatlab%2Fsimplified_API).

### Structure of the input arrays

The input arrays are :

- precompute_trj_position: 2D array of size [N X] filled with the positions (in degrees) for each joint for each trajectory point, where:
- N is the number of joints (7 for the Gen3)
- X is the number of points in the trajectory

- precompute_trj_velocity: 2D array of size [N X] filled with the velocities (in degrees per second) for each joint for each trajectory point, where:
- N is the number of joints (7 for the Gen3)
- X is the number of points in the trajectory

- precompute_trj_acceleration: 2D array of size [N X] filled with the accelerations (in degrees per second ^ squared) for each joint for each trajectory point, where:
- N is the number of joints (7 for the Gen3)
- X is the number of points in the trajectory

- precompute_trj_timestamp : 2D array of size [1 X] filled with the timestamps (in seconds) for each trajectory point, where:
- X is the number of points in the trajectory

### Hard limits and conditions to respect

Once sent to the arm, a trajectory is validated and the arm will execute it if it meets all the conditions :

- **The starting timestamp must be 0.0 seconds.** Timestamps are all relative to the starting timestamp, which must be 0.0.

- **Time increments must be 0.001 seconds between trajectory points.** For now, the arm only accepts trajectories with waypoints every 1ms.

- **The current position of the arm must match the first trajectory point.** The trajectory planners communicating with the System object have to take into account the current position of the arm for the computation of the trajectories.

- **The position limit of every joint must be respected for all the trajectory points.** The trajectory will be rejected if any of the points contain an illegal position.

- **The velocity limit of every joint must be respected for all the trajectory points.** The trajectory will be rejected if any of the points contain an illegal velocity. The hard velocity limit for each joint is **50 degree / second.**.

- **The acceleration limit of every joint must be respected for all the trajectory points.** The trajectory will be rejected if any of the points contain an illegal acceleration. The hard acceleration limit for each joint is **1 degree / second ^ squared.**

- **The arrays must contain the same number of joints and number of trajectory points.** The trajectory will be rejected if there is a mismatch in array sizes.

- **Position continuity must be ensured for all trajectory points.** For now, position continuity is the only supported trajectory continuity mode.

- **The trajectory must not last more than 30 seconds.** For now, it is the maximum supported size for a trajectory (30000 trajectory points).

### Trajectory errors

If the arm encounters errors during the trajectory validation, it will report the errors in a Trajectory Report. The Trajectory Error Report will soon be available in Matlab, and is already available from the Kortex API when calling the GetTrajectoryErrorReport function from the Base service.
1 change: 1 addition & 0 deletions simplified_api/documentation/system_object.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ Send a Precomputed Joint Trajectory to the robot. A Precomputed Joint Trajectory
| velocity | double[ACTUATOR_COUNT][] | A matrix that contains a list of angular velocities (degrees / second) for each joint at each increment. |
| acceleration | double[ACTUATOR_COUNT][] | A matrix that contains a list of angular accelerations (degrees / second ^ squared) for each joint at each increment. |
| timestamp_sec | double[ACTUATOR_COUNT][] | A matrix that contains a list of timestamps for each joint at each increment. |
| step_count | uint32 | Number of steps (increments) for the trajectory |

##### Function Outputs
| Name | Type | Description |
Expand Down

0 comments on commit 230b654

Please sign in to comment.