GithubHelp home page GithubHelp logo

abr / abr_jaco2 Goto Github PK

View Code? Open in Web Editor NEW
17.0 17.0 4.0 4.11 MB

A repository for the Jaco2 robot arm interface and configuration files, intended for use with the abr/control repo.

License: Other

Python 18.43% C++ 38.19% C 40.23% Shell 1.88% Cython 1.27%

abr_jaco2's People

Contributors

p3jawors avatar studywolf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abr_jaco2's Issues

Issue running examples/adaptive_reach.py

$ python adaptive_reach.py 
Traceback (most recent call last):
  File "adaptive_reach.py", line 40, in <module>
    path = path_planners.SecondOrderFilter(
AttributeError: module 'abr_control.controllers.path_planners' has no attribute 'SecondOrderFilter'

The same error appears when running position_and_orientation_control_osc.py

How can I change to other arm?

Hello!

It's interesting to use ABR to control arm and plan force for I used to ros API.
However I'm using Mico Arm to do some research, how can I change to my arm?
For example, where can I find RS485API and other config file?

about jaco2's torque control

Hi, Studywolf
FIrst of all, thanks for providing such a good package for Jaco2 position and torque control.
My research is Nolinear Model Predictive Control based Multi Task Control Framework for Wheeled Mobile Manipulator. Now I have finished the simulation of NMPC based path following on Jaco2 in V-rep and want to implement it on real Jaco2.Because I use dynamics model for prediction and joint torques as control input, I should learn how to use torque control interface provided by Jaco2.
Before abr_jaco2, I tried kinova_ros package. However, its communication frequency is up to 100Hz, which is not high enough for good torque control performance. In addition, I am confused about the internal force controller of Jaco2. It seems that Jaco2 has a default gravity compensation after switching to torque control mode by High Level API. However, if I send torque command as [0,0,0,0,0,0] to Jaco2, it will fall down; if I calculate torque command based on the dynamics model with zero gravity, Jaco2 will track the target trajectory , but the tracking error is really big.
Occasionally, I find abr_jaco2 and have tested all python files in the examples directory. connection test, control loop speed test, joint space position control osc and reaching osc python files all work normally. As for floating.py, Jaco2 cannot hold itself after entering force control mode. And for adaptive reach.py, there will appear ERROR MESSAGE 9 in the terminal after entering force control mode.
Since I am only familiar with C++ and MATLAB, I wanna know how to communicate with and control Jaco2 only by C++ based on abr_jaco2 or Low Level API.

Free Falling when using send_forces

Hi! Thank you for your wonderful repository!
I am trying to control the Jaco2 arm by using the path planner example using the OSC controller, but when the send_force function enters into play the robot slowly free falls, the position control works since when i send the target angles the robot stays in position.
I also changed the starting angle of the robot so maybe that can be a problem.

I also saw in the interface file that I need to use the INIT_TORQUE_POSITION in the Config file so that the init_force_control can work, but I cannot find it there.
If this problem cannot be solved, can I use OSC also with send_target_angles?

Thank you in advance!

Can't build setup.py

Hi, I'm want to use these library in order to operate real jaco2 arm.

So I cloned these repository and tried to run "python setup.py install" as the installation guide suggests.

but the error message occured as the quote below.

I already installed "ABR_Control" repo where this "ABR_jaco2" repo depends on
and I even changed the version of the cython to cython==0.29 (at conda env) as the setup.py file requires
but the error message didn't changed.

Could you help me?

$ python setup.py install
/home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/setuptools/dist.py:461: UserWarning: Normalizing '0.1.0.dev' to '0.1.0.dev0'
warnings.warn(tmpl.format(**locals()))
running install
running bdist_egg
running egg_info
writing abr_jaco2.egg-info/PKG-INFO
writing dependency_links to abr_jaco2.egg-info/dependency_links.txt
writing requirements to abr_jaco2.egg-info/requires.txt
writing top-level names to abr_jaco2.egg-info/top_level.txt
reading manifest file 'abr_jaco2.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '.dll' under directory 'abr_jaco2'
warning: no files found matching '
.dylib' under directory 'abr_jaco2'
warning: no files found matching '.msim' under directory 'abr_jaco2'
warning: no files found matching '
.ttt' under directory 'abr_jaco2'
writing manifest file 'abr_jaco2.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
running build_ext
skipping 'abr_jaco2/interface/jaco2_cython.cpp' Cython extension (up-to-date)
building 'abr_jaco2.interface.jaco2_rs485' extension
gcc -pthread -B /home/mlcs/anaconda3/envs/py/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/numpy/core/include -I/home/mlcs/anaconda3/envs/py/include/python3.7m -I/home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/numpy/core/include -c abr_jaco2/interface/jaco2_cython.cpp -o build/temp.linux-x86_64-3.7/abr_jaco2/interface/jaco2_cython.o -ldl
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0,
from /home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
from /home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/numpy/core/include/numpy/arrayobject.h:4,
from abr_jaco2/interface/jaco2_cython.cpp:449:
/home/mlcs/anaconda3/envs/py/lib/python3.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
#warning "Using deprecated NumPy API, disable it with "
^~~~~~~
In file included from abr_jaco2/interface/jaco2_cython.cpp:451:0:
abr_jaco2/interface/jaco2_rs485.h:24:0: warning: "RS485_MSG_GET_ACTUALPOSITION" redefined
#define RS485_MSG_GET_ACTUALPOSITION 0x0001

In file included from abr_jaco2/interface/jaco2_rs485.h:17:0,
from abr_jaco2/interface/jaco2_cython.cpp:451:
abr_jaco2/interface/kinova-api/Kinova.API.CommLayerUbuntu.h:113:0: note: this is the location of the previous definition
#define RS485_MSG_GET_ACTUALPOSITION 0x01

abr_jaco2/interface/jaco2_cython.cpp: In function ‘PyObject* __Pyx_PyCFunction_FastCall(PyObject*, PyObject**, Py_ssize_t)’:
abr_jaco2/interface/jaco2_cython.cpp:6632:69: error: too many arguments to function
return (((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL);
^
abr_jaco2/interface/jaco2_cython.cpp: In function ‘void __Pyx__ExceptionSave(PyThreadState
, PyObject**, PyObject**, PyObject**)’:
abr_jaco2/interface/jaco2_cython.cpp:6853:21: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
type = tstate->exc_type;
^~~~~~~~
curexc_type
abr_jaco2/interface/jaco2_cython.cpp:6854:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
value = tstate->exc_value;
^~~~~~~~~
curexc_value
abr_jaco2/interface/jaco2_cython.cpp:6855:19: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
abr_jaco2/interface/jaco2_cython.cpp: In function ‘void __Pyx__ExceptionReset(PyThreadState
, PyObject
, PyObject
, PyObject*)’:
abr_jaco2/interface/jaco2_cython.cpp:6862:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
abr_jaco2/interface/jaco2_cython.cpp:6863:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
abr_jaco2/interface/jaco2_cython.cpp:6864:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
abr_jaco2/interface/jaco2_cython.cpp:6865:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = type;
^~~~~~~~
curexc_type
abr_jaco2/interface/jaco2_cython.cpp:6866:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = value;
^~~~~~~~~
curexc_value
abr_jaco2/interface/jaco2_cython.cpp:6867:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = tb;
^~~~~~~~~~~~~
curexc_traceback
abr_jaco2/interface/jaco2_cython.cpp: In function ‘int __Pyx__GetException(PyThreadState*, PyObject**, PyObject**, PyObject**)’:
abr_jaco2/interface/jaco2_cython.cpp:6922:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
abr_jaco2/interface/jaco2_cython.cpp:6923:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
abr_jaco2/interface/jaco2_cython.cpp:6924:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
abr_jaco2/interface/jaco2_cython.cpp:6925:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = local_type;
^~~~~~~~
curexc_type
abr_jaco2/interface/jaco2_cython.cpp:6926:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = local_value;
^~~~~~~~~
curexc_value
abr_jaco2/interface/jaco2_cython.cpp:6927:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = local_tb;
^~~~~~~~~~~~~
curexc_traceback
error: command 'gcc' failed with exit status 1

Questions about connection

Hi,thanks for the sharing.I try to run the examples:connection_test.py. But the program stopped at “Activating the Jaco2…”. I wonder is there anywhere wrong? I connect jaco with USB3.0

when I run connection_test.py, the program runs as follows:

Using Force Command 0x200: 512
INFO: RS485 initialization completed
INFO: Activating Jaco2...

Loop speed test

Need to add an example that tests the control loop speed so users can tell if their computer is fit to control the arm in force mode

Stuck on "INFO: Connection successful"

I followed the steps in #23 and installed kinova SDK on Ubuntu 20.04, and I was able to control the robot via the SDK GUI. However, when I ran control_loop_speed_test.py , I got the following output and is stuck on INFO: Connection successful, and I have to close the terminal window to terminate it(ctrl+c won't do anything). The segmentation fault never happens. Update: After of poking around, I found that the code gets stuck on interface.init_position_mode(). I did some tracing, it seems like it could not execute past self.jaco2.InitPositionMode() in interface.py

Generating Jacobian function for EE[0,0,0]_J
Generating transform function for EE[0,0,0]_Tx
Generating inertia matrix function
Generating Jacobian function for link0[0,0,0]_J
Generating transform function for link0[0,0,0]_Tx
Generating Jacobian function for link1[0,0,0]_J
Generating transform function for link1[0,0,0]_Tx
Generating Jacobian function for link2[0,0,0]_J
Generating transform function for link2[0,0,0]_Tx
Generating Jacobian function for link3[0,0,0]_J
Generating transform function for link3[0,0,0]_Tx
Generating Jacobian function for link4[0,0,0]_J
Generating transform function for link4[0,0,0]_Tx
Generating Jacobian function for link5[0,0,0]_J
Generating transform function for link5[0,0,0]_Tx
Generating Jacobian function for link6[0,0,0]_J
Generating transform function for link6[0,0,0]_Tx
Generating Jacobian function for joint0[0,0,0]_J
Generating transform function for joint0[0,0,0]_Tx
Generating Jacobian function for joint1[0,0,0]_J
Generating transform function for joint1[0,0,0]_Tx
Generating Jacobian function for joint2[0,0,0]_J
Generating transform function for joint2[0,0,0]_Tx
Generating Jacobian function for joint3[0,0,0]_J
Generating transform function for joint3[0,0,0]_Tx
Generating Jacobian function for joint4[0,0,0]_J
Generating transform function for joint4[0,0,0]_Tx
Generating Jacobian function for joint5[0,0,0]_J
Generating transform function for joint5[0,0,0]_Tx
Loading expression from EE[0,0,0]_Tx ...
Generating gravity compensation function
Loading expression from link0[0,0,0]_J ...
Loading expression from link1[0,0,0]_J ...
Loading expression from link2[0,0,0]_J ...
Loading expression from link3[0,0,0]_J ...
Loading expression from link4[0,0,0]_J ...
Loading expression from link5[0,0,0]_J ...
Loading expression from link6[0,0,0]_J ...
Loading expression from joint0[0,0,0]_J ...
Loading expression from joint1[0,0,0]_J ...
Loading expression from joint2[0,0,0]_J ...
Loading expression from joint3[0,0,0]_J ...
Loading expression from joint4[0,0,0]_J ...
Loading expression from joint5[0,0,0]_J ...
Using Force Command 0x200: 512
INFO: RS485 initialization completed
INFO: Activating Jaco2...
INFO: Connection successful

Then, if I run
After this if I run reaching_osc.py , it gets stuck on INFO: Connection successful. The same happens if I try to rerun control_loop_speed_test.py .

Using Force Command 0x200: 512
INFO: RS485 initialization completed
INFO: Activating Jaco2...
INFO: Connection successful

If I rerun connection_test.py however, everything works and exits properly.

Do you know what could be happening? Thanks a lot in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.