πŸš€ Updates

Here are updates and the recent changes we've made to the Jacobi library.

30 January 2024

Joint limits in Studio

πŸ›  Done

The joint limits of the robots seem to be incorrect in the Studio > Control > Joint Position panel.

It is sometimes possible to manually input / use the slider to define a value outside of the actual robot's joint limits (for instance: -2.9671 for the Panda's joint1 when the lower limit is supposed to be -2.8973) and sometimes impossible to input a value that should be in range because the slider's limit is too restrictive (for instance: UR5's joint6 blocked at -3.141593 when the actual limit is -6.2832).

One vote

08 January 2024

Max joint position exceeded with panda robot

πŸ›  Done

I tested planning for a Panda joint configuration that exceeds a joint limit (panda_joint2 going to 100 when its max position is supposed to be 1.7628).
The planner returned a trajectory that indeed reaches this out-of-bound value (see attached image).

One vote

30 December 2023

Newsletter / feed

πŸ›  Done

Is there any newsletter / feed to to get notified as soon as a new version of Jacobi Motion is released?
If not, what about creating one?

One vote

08 December 2023

Studio.reset() does not remove all obstacles

πŸ›  Done

Using Studio Live, the method studio.reset() does not remove all obstacles from the scene. One object seems to always stay in, although not necessarily the same one.
After adding objects once again, studio.reset() now leaves two objects in the scene. In my experience, I never got more than two objects staying though, even after repeating the operations multiple times.

One vote

29 November 2023

Error in quaternion?

πŸ›  Done

Hi,

Unless I'm doing something wrong, it seems there's an error in the Euler angles returned by a jacobi.Frame created from a quaternion.
Here is a minimal code to reproduce the error where the Euler angles are compared with the ones computed by scipy (scipy also agrees with the results of our own internal library):

import numpy as np
from scipy.spatial.transform import Rotation
import jacobi
for k in range(10):
    q_xyzw = np.array([2 * np.random.rand() - 1, 2 * np.random.rand() - 1, 2 * np.random.rand() - 1, 2 * np.random.rand() - 1])
    q_xyzw = q_xyzw / np.linalg.norm(q_xyzw)
    print("")
    print("jacobi euler: ", *[f"{e:+2.5f}" for e in jacobi.Frame.from_quaternion(0, 0, 0, q_xyzw[3], q_xyzw[0], q_xyzw[1], q_xyzw[2]).euler[3:]])
    print(" scipy euler: ", *[f"{e:+2.5f}" for e in Rotation.from_quat(q_xyzw).as_euler("xyz")])

One vote

26 September 2023

No jacobi-get-license executable

πŸ›  Done

Hi,

I'm trying to install the on-premise version of Jacobi today. I followed the instructions from here and could install the wheel without any issue. However, I don't have any jacobi-get-license executable on my machine, and I didn't find where I'm supposed to get it.

Could you tell me where to find it please?
Thanks

One vote

26 September 2023

pip install failing

πŸ›  Done

The command pip install jacobi-motion currently fails with the following error message:

ERROR: Could not find a version that satisfies the requirement jacobi-motion (from versions: none)
ERROR: No matching distribution found for jacobi-motion

Manually specifying a version (ex: 0.0.21) raises to the same error.

Context:

  • Ubuntu 20.04.6 LTS
  • Python 3.8.10
  • pip-23.2.1

One vote

22 September 2023

ABB Driver 0.0.9 compilation issue

πŸ›  Done

There is problem with compiling ABB driver:

0.537 -- The CXX compiler identification is GNU 9.4.0                                                                                                                                                      
0.540 -- Check for working CXX compiler: /usr/bin/c++                                                                                                                                                      
0.597 -- Check for working CXX compiler: /usr/bin/c++ -- works                                                                                                                                             
0.598 -- Detecting CXX compiler ABI info                                                                                                                                                                   
0.653 -- Detecting CXX compiler ABI info - done
0.663 -- Detecting CXX compile features
0.663 -- Detecting CXX compile features - done
0.668 -- Looking for C++ include pthread.h
0.736 -- Looking for C++ include pthread.h - found
0.736 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
0.795 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
0.795 -- Looking for pthread_create in pthreads
0.843 -- Looking for pthread_create in pthreads - not found
0.843 -- Looking for pthread_create in pthread
0.899 -- Looking for pthread_create in pthread - found
0.900 -- Found Threads: TRUE  
0.904 -- Configuring done
0.908 -- Generating done
0.909 -- Build files have been written to: /root/jacobi/driver/build
0.929 Scanning dependencies of target example-run
0.935 [ 12%] Building CXX object CMakeFiles/example-run.dir/examples/run.cpp.o
1.135 /root/jacobi/driver/examples/run.cpp:7:10: fatal error: jacobi/drivers/abb.hpp: No such file or directory
1.135     7 | #include <jacobi/drivers/abb.hpp>
1.135       |          ^~~~~~~~~~~~~~~~~~~~~~~~
1.135 compilation terminated.
1.141 make[2]: *** [CMakeFiles/example-run.dir/build.make:63: CMakeFiles/example-run.dir/examples/run.cpp.o] Error 1
1.141 make[1]: *** [CMakeFiles/Makefile2:82: CMakeFiles/example-run.dir/all] Error 2
1.141 make: *** [Makefile:130: all] Error 2

It is probably due to breaking change in the newest driver version: change include/jacobi/driver into /include/jacobi/drivers directory

One vote

06 September 2023

ABB driver python version

πŸ›  Done

There is no information about minimal version of python required for abb driver. According to pypi page it is 3.9 (https://pypi.org/project/jacobi-abb-driver/0.0.9/#files) which is not consistent to the motion library where documentation stated that there is python needed in version 3.7 or above.

One vote

06 September 2023

Driver documentation bug

πŸ›  Done

Documentation of the driver (https://docs.jacobirobotics.com/api/py.html#Driver) states that there are 3 methods for Driver class : is_running(), get_current_joint_position(), get_current_state() . Actually none of those exists and there are attributes is_running, current_joint_position, current_state.

One vote

06 September 2023

Error in ABB driver documentation

πŸ›  Done

In ABB driver documentation (https://docs.jacobirobotics.com/motion/driver/abb.html), example stated that one should do
from jacobi_abb_driver import ABBDriver
while correct line is
from jacobi_driver_abb import ABBDriver

One vote

17 August 2023

Fixed Panda in Studio

πŸ›  Done

Hello,
The Franka Panda always stays fixed in Studio. The robot does not track the TCP target (see attachment), not does it move when visualizing a motion that was successfully calculated.
Thanks

One vote

31 July 2023

Can't plan using a list of waypoints

πŸ›  Done

I've upgrade jacobi-motion to the latest version=0.0.17 and am using python 3.8.10

I can use the planner to plan from a start to goal waypoint, but the following code fails on line trajectory = planner.plan(waypoints)

planner = Planner('xxx', delta_time=0.01)  # [s]
planner.set_authentication(
    'xxx', 'xxx')

trajectory = planner.plan(
    start=[0, 0, 0, 0, 0.32, 0.0, -0.68, 0.0, -1.57, 0.97, 1.57],
    goal=[0, 0, 0, 0, 0.32, 2.0, -0.68, 0.0, -1.57, 0.97, 1.57])  # this passes

waypoints = [[0, 0, 0, 0, 0.32, 0.0, -0.68, 0.0, -1.57, 0.97, 1.57],
                [0, 0, 0, 0, 0.32, 2.0, -0.68, 0.0, -1.57, 0.97, 1.57],
                [0, 0, 0, 0, 0.32, 0.0, -0.68, 0.0, -1.57, 0.97, 1.7]]
trajectory = planner.plan(waypoints)  # this fails

I get the following error:

Traceback (most recent call last):
  File "jacobi_testing.py", line 22, in <module>
    trajectory = planner.plan(waypoints)
jacobi.JacobiError: 
[jacobi.exception.planner]
    Please set up an environment via the Jacobi API.

One vote

13 May 2023

ABBDriver returns to some default position when idle after move

πŸ›  Done

After executing motion the ABBDriver moves the robot to some default pose (seems like it's the pose the robot was in when the driver was created?). Expected behaviour is to stay where the motion finished.
The rapid program was configured with EGM_STOP_HOLD flag:
EGMRunJoint egm_id, EGM_STOP_HOLD, \J1 \J2 \J3 \J4 \J5 \J6 \CondTime:=10;
If program is shutdown just after the move is finished the robot stays in place.

One vote

13 May 2023

Can't compile ABB driver 0.0.7

πŸ›  Done

There is an error while compiling ABB driver version 0.0.7

#0 0.706 -- Build files have been written to: /root/jacobi/driver/build
#0 0.728 Scanning dependencies of target example-run
#0 0.735 [ 12%] Building CXX object CMakeFiles/example-run.dir/examples/run.cpp.o
#0 3.445 /root/jacobi/driver/examples/run.cpp: In function β€˜int main(int, char**)’:
#0 3.445 /root/jacobi/driver/examples/run.cpp:37:87: error: no matching function for call to β€˜jacobi::driver::ABBDriver::ABBDriver(<brace-enclosed initializer list>)’
#0 3.445    37 |     ABBDriver driver {&planner, args["host"].as<std::string>(), args["port"].as<int>()};
#0 3.445       |                                                                                       ^
#0 3.445 In file included from /root/jacobi/driver/examples/run.cpp:7:
#0 3.445 /root/jacobi/driver/include/jacobi/driver/abb.hpp:46:14: note: candidate: β€˜jacobi::driver::ABBDriver::ABBDriver(jacobi::Planner*, int)’
#0 3.445    46 |     explicit ABBDriver(Planner* planner, int port);
#0 3.445       |              ^~~~~~~~~
#0 3.445 /root/jacobi/driver/include/jacobi/driver/abb.hpp:46:14: note:   candidate expects 2 arguments, 3 provided
#0 5.892 make[2]: *** [CMakeFiles/example-run.dir/build.make:63: CMakeFiles/example-run.dir/examples/run.cpp.o] Error 1
#0 5.892 make[1]: *** [CMakeFiles/Makefile2:82: CMakeFiles/example-run.dir/all] Error 2
#0 5.893 make: *** [Makefile:130: all] Error 2

One vote

20 April 2023

ABBDriver trajectory execution issues

πŸ›  Done

The ABBDriver methods: run(), move_to() and move_to_async() results in killing the program without executing the motion or raising any exception.
run_async() executes motion to some point and kills the program without any indication of a reason.

One vote

20 April 2023

ABBDriver keeping EGM connection

πŸ›  Done

The driver does not keep the connection to the EGM stream - if no command is sent to the ABBDriver within the EGMRunJoint timeout, the connection is dropped.

One vote

18 April 2023

Typo in example Rapid program

πŸ›  Done

There is a typo in egmident on https://docs.jacobirobotics.com/motion/examples/03-motion-interface.html in Rapid program:
LOCAL VAR emgident egm_id;
where it should be:
LOCAL VAR egmident egm_id;

One vote

24 March 2023

Custom Robots via URDF

πŸ›  Done

Load a custom robot from a URDF file to the library.

2 votes

07 March 2023

Error on adding obstacles when Studio Project

πŸ›  Done

The library should raise an error when a user tries to add an obstacles despite using a Studio project by set_project.

No votes yet

07 March 2023

Training error?

πŸ›  Done

I noticed it is possible now to run training for region motions. On the training page all the started trainings have finished, except for one, the "Target Region - Source Region". Has something bugged there?

One vote