From fc13a9a7cbec0dafb3b466695994f88cbf701cda Mon Sep 17 00:00:00 2001 From: Alexandre Vannobel Date: Wed, 5 Aug 2020 15:16:48 -0400 Subject: [PATCH] Changed the Artifactory link and the documentation a bit for release 2.2.1 --- simplified_api/README.md | 5 +- .../precomputed_joint_trajectories.md | 108 +++++++++--------- simplified_api/documentation/system_object.md | 1 + 3 files changed, 58 insertions(+), 56 deletions(-) diff --git a/simplified_api/README.md b/simplified_api/README.md index 878b9de..dc07223 100644 --- a/simplified_api/README.md +++ b/simplified_api/README.md @@ -7,7 +7,7 @@ This MATLAB adaptor allows communication via MATLAB with a KINOVA® < 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 @@ -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/artifactory/webapp/#/artifacts/browse/tree/General/generic-public/kortex/matlab/simplified_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: diff --git a/simplified_api/documentation/precomputed_joint_trajectories.md b/simplified_api/documentation/precomputed_joint_trajectories.md index b56b577..4dc0d3a 100644 --- a/simplified_api/documentation/precomputed_joint_trajectories.md +++ b/simplified_api/documentation/precomputed_joint_trajectories.md @@ -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. \ No newline at end of file diff --git a/simplified_api/documentation/system_object.md b/simplified_api/documentation/system_object.md index 970d37b..42ac983 100644 --- a/simplified_api/documentation/system_object.md +++ b/simplified_api/documentation/system_object.md @@ -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 |