Coder Social home page Coder Social logo

ada's People

Contributors

hadmoni avatar herlant avatar jeking04 avatar jshih2 avatar mikedh avatar mklingen avatar mkoval avatar pyrym avatar sjavdani avatar stefanos19 avatar

Stargazers

 avatar

Watchers

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

ada's Issues

mico_hardware crashes regularly

With this error message:

terminate called after throwing an instance of 'KinDrv::KinDrvException'
  what():  Could not get angular velocities! libusb error.

ada MoveHand to the current DOF values

When the 2 fingers are already in DOF values - [0.8,0.8], or close to [0.8,0.8], then if I call hand.MoveHand(0.8,0.8), it will raise an exception - TrajectoryExecutionFailed. Is it normal?

[ERROR] [adapy:adarobot.py:228]:ExecuteTrajectory: Trajectory execution failed.
Traceback (most recent call last):
  File "/home/shenli/storage/ada/src/ada/adapy/src/adapy/adarobot.py", line 222, in ExecuteTrajectory
    traj_future.result(timeout)
  File "/home/shenli/storage/ada/src/ada/adapy/src/adapy/futures.py", line 70, in result
    raise self._exception
TrajectoryExecutionFailed: Trajectory execution failed (REJECTED): INVALID_GOAL

Replace test.py with console.py

There is no easy way to open a console with AdaPy loaded. I suggest writing a console.py script similar to the famous HerbPy console script.

Also, on a related note, we really should remove test.py.

ADA joint velocity limits seem to be incorrect

I wonder if this is incorrect:

self.robot.GetDOFVelocityLimits()
Out[2]: 
array([ 0.87266462,  0.87266462,  0.87266462,  2.  ,  2.  , 2.  ,  0.78539816,  0.78539816])

The spec sheet seems to suggest that the large actuators have a limit of 9 RPM which is 0.942 rad/s. and the small actuators have a limit of 18 RPM which is 1.884 rad/s. The numbers in GetDOFVelocityLimits seem to be in the right ballpark but I wonder how they were set.

Which driver to use?

We need to decide which Kinova driver to use. Right now we're using libkindrv but what about Kinova's own driver? It'd be great to make this decision soon and stick to it.

Timeout parameter seems unused

The timeout parameter in MoveHand(self f1, f2, f3, timeout) seems to be ignored.

In herbpy, the code calls:
util.WaitForControllers([ self.controller ], timeout=timeout)

But in adapy the function just doesn't use the parameter at all, despite being mentioned in the docstring.

Possible solutions:

  • add a wait for controllers
  • remove the timeout parameter - but this would diverge from herbpy and might cause old code to fail
  • add a deprecation warning to the function that indicates that timeout should be ignored

dependencies listed in .rosinstall file missing or_parabolicsmoother

I needed to add the "or_parabolicsmoother" package manually to the .rosinstall to get the adapy code to run. I suppose this should be updated to include it at some point. Also, Mike mentioned the .rosinstall file should be added to the repo along with the others at some point so that we don't have to copy and paste anymore. We can just use wstool once that happens.

Problem with building ada

make changes in setup.py

From:
package_info['package_dir'] = {'adapy':'src'}

To:
package_info['package_dir'] = {'adapy':'src/adapy'}

default planning to named configurations on real ADA failure

Still running into issues when trying to plan something as simple as home configuration on real ADA. Not exactly sure what is motivating the failure, but it looks like the planner succeeds and when it goes to execute, there is a failure.

It is throwing an Attribute Error when it tries to call getDescription for a "JoinTrajectory" object in prpy

I am literally running test.py in default ADA and calling "planToNamedConfiguration('home',execute=True)"

Code is attached below.

robot.arm.PlanToNamedConfiguration('home',execute=True)
[environment-core.h:116 Environment] setting openrave home directory to /home/rscalise/.openrave
[odecollision.h:124 ODECollisionChecker] ode will be slow in multi-threaded environments
[environment-core.h:193 Init] using ode collision checker
[environment-core.h:848 SetCollisionChecker] setting ode collision checker
[qtcoinviewer.cpp:2928 UpdateFromModel] timeout of GetPublishedBodies
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[INFO] [prpy.planning.base:base.py:297]:plan: Sequence - Calling planner "SnapPlanner".
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[INFO] [prpy.planning.base:base.py:306]:plan: Sequence - Planning succeeded after 0.591 seconds with "SnapPlanner".
[environment-core.h:221 Destroy] destroy module
[INFO] [prpy.base.robot:robot.py:400]:do_execute: Post-processing path with 2 waypoints.
[environment-core.h:116 Environment] setting openrave home directory to /home/rscalise/.openrave
[odecollision.h:124 ODECollisionChecker] ode will be slow in multi-threaded environments
[environment-core.h:193 Init] using ode collision checker
[environment-core.h:848 SetCollisionChecker] setting ode collision checker
[qtcoinviewer.cpp:2928 UpdateFromModel] timeout of GetPublishedBodies
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[WARNING] [prpy.base.robot:robot.py:331]:do_postprocess: Post-processing smooth paths is not supported. Using the default post-processing logic; this may significantly change the geometric path.
[INFO] [prpy.planning.base:base.py:297]:plan: Sequence - Calling planner "ParabolicSmoother".
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[parabolicsmoother.cpp:193 PlanPath] env=10, initial path size=1, duration=4.757549, pointtolerance=0.200000, multidof=0
[parabolicsmoother.cpp:387 PlanPath] after shortcutting 0 times: path waypoints=1, traj waypoints=4, traj time=4.757549s
[parabolicsmoother.cpp:395 PlanPath] path optimizing - computation time=0.001000s
[INFO] [prpy.planning.base:base.py:306]:plan: Sequence - Planning succeeded after 0.214 seconds with "ParabolicSmoother".
[environment-core.h:221 Destroy] destroy module
[INFO] [prpy.base.robot:robot.py:410]:do_execute: Post-processing took 0.416 seconds and produced a path with 4 waypoints and a duration of 4.758 seconds.
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/rscalise/storage/adaRun_ws/src/ada/adapy/scripts/test.py in <module>()
----> 1 robot.arm.PlanToNamedConfiguration('home',execute=True)

/home/rscalise/storage/adaRun_ws/src/prpy/src/prpy/base/manipulator.pyc in wrapper_method(*args, **kwargs)
     71             @functools.wraps(delegate_method)
     72             def wrapper_method(*args, **kwargs):
---> 73                 return self._PlanWrapper(delegate_method, args, kwargs)
     74             return wrapper_method
     75 

/home/rscalise/storage/adaRun_ws/src/prpy/src/prpy/base/manipulator.pyc in _PlanWrapper(self, planning_method, args, kw_args)
    183         # Optionally execute the trajectory.
    184         if kw_args.get('execute', False):
--> 185             return self.GetRobot().ExecutePath(traj, **kw_args)
    186         else:
    187             return traj

/home/rscalise/storage/adaRun_ws/src/prpy/src/prpy/base/robot.pyc in ExecutePath(self, path, defer, executor, **kwargs)
    425             return wrap_future(executor.submit(do_execute))
    426         elif defer is False:
--> 427             return do_execute()
    428         else:
    429             raise ValueError('Received unexpected value "{:s}" for defer.'.format(str(defer)))

/home/rscalise/storage/adaRun_ws/src/prpy/src/prpy/base/robot.pyc in do_execute()
    413             with Timer() as timer:
    414                 exec_traj = self.ExecuteTrajectory(traj, defer=False, **kwargs)
--> 415             SetTrajectoryTags(exec_traj, {Tags.EXECUTION_TIME: timer.get_duration()}, append=True)
    416             return exec_traj
    417 

/home/rscalise/storage/adaRun_ws/src/prpy/src/prpy/util.pyc in SetTrajectoryTags(traj, tags, append)
    318 
    319     if append:
--> 320         all_tags = GetTrajectoryTags(traj)
    321         all_tags.update(tags)
    322     else:

/home/rscalise/storage/adaRun_ws/src/prpy/src/prpy/util.pyc in GetTrajectoryTags(traj)
    292     import json
    293 
--> 294     description = traj.GetDescription()
    295 
    296     if description == '':

AttributeError: 'JointTrajectory' object has no attribute 'GetDescription'

Change permissions to give access to ADA hardware to all users

Problem: Currently, the udev rule specified in the README only allows USB access to members of the "pr" user group. However, ada computer account prdemo is not part of that user group, so we have to manually adjust permissions on /dev/mico each time we run in order to access the robot hardware.

Solution: Change the udev to give full access to the ada hardware to all users.

ada_description/meshes/Hand_Link_camera.STL is malformed

After updating rviz, I get the following error:

The STL file '(...)ada/ada_description/meshes/Hand_Link_camera.STL' is malformed. According to the binary STL header it should have '35924' triangles, but it has too much data for that to be the case

All other meshes load except for one of the hand meshes

finger not accurate

The ada finger is not the same calibrated as the one in simulation. In simulation, if I do MoveHand(1.35,1.35), the two finger will cross to each other. But in reality, the two fingers barely touch to each other. Is this an issue? Do we change it intentionally to protect the finger or some other considerations?

wiki note for cblas.h error

This might be simple for other people, but both Shen and I ran into this issue when trying to get Ada running on a fresh copy of Ubuntu/ROS.

when running catkin_make you will get an error at around 25% of the build that says "cblas.h" is unable to be located. This terminates the process.

We found there is no apt-get for cblas itself, but it is included in the ATLAS library.

So, to resolve the issue, you can run the command:
apt-get install libatlas-base-dev

Thanks!!

ada wrist missing in simulation

When I run ada simulation in rviz, this error message always comes up and the wrist of ada is missing.

[ERROR] [1445436599.845274902]: The STL file 'file:///home/shen/research/ada/src/ada/ada_description/meshes/Hand_Link_camera.STL' is malformed. According to the binary STL header it should have '35924' triangles, but it has too much data for that to be the case.
[ERROR] [1445436599.845466286]: Failed to load file [file:///home/shen/research/ada/src/ada/ada_description/meshes/Hand_Link_camera.STL]

What are the correct joint limits for the Mico?

I get this error if I try to plan to the retract configuration:

[cbirrt.cpp:487 InitPlan] Skipping Goal 0: 1.68754e-13 1.11022e-15 1.5687 3.66431 5.50133 1.48701 6.10652 1.39951 
[cbirrt.cpp:488 InitPlan]  because it is in collision:

switch openrave retimer to HauserParabolicSmoother?

When I try to plan ada toward a direction, it always fails although Planning succeeded.
I also asked Jen about this.

traj = robot.arm.PlanToEndEffectorOffset([1,1,0],distance=0.1)
traj.GetNumWaypoints();

We got output: 3.
So the trajectory is good with 3 points.
However, when we tried robot.ExecuteTrajectory(traj), it will fail.

Then we tried to switch the retimer to HauserParabolicSmoother,

from prpy.planning.retimer import HauserParabolicSmoother
                    robot.retimer=HauserParabolicSmoother()

and it finally worked.

Should we switch ada retimer to HauserParabolicSmoother, like what we did in herb?

The error message:

In [14]: traj = robot.arm.PlanToEndEffectorOffset([1,1,0],distance=0.1, execute=True)
[environment-core.h:116 Environment] setting openrave home directory to /home/shen/.openrave
[odecollision.h:124 ODECollisionChecker] ode will be slow in multi-threaded environments
[environment-core.h:193 Init] using ode collision checker
[environment-core.h:848 SetCollisionChecker] setting ode collision checker
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[INFO] [prpy.planning.base:base.py:297]:plan: Sequence - Calling planner "VectorFieldPlanner".
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[WARNING] [prpy.planning.vectorfield:vectorfield.py:346]:FollowVectorField: Terminated early: Terminated by callback.
[INFO] [prpy.planning.base:base.py:306]:plan: Sequence - Planning succeeded after 0.239 seconds with "VectorFieldPlanner".
[environment-core.h:221 Destroy] destroy module
[INFO] [prpy.base.robot:robot.py:393]:do_execute: Post-processing path with 3 waypoints.
[environment-core.h:116 Environment] setting openrave home directory to /home/shen/.openrave
[odecollision.h:124 ODECollisionChecker] ode will be slow in multi-threaded environments
[environment-core.h:193 Init] using ode collision checker
[environment-core.h:848 SetCollisionChecker] setting ode collision checker
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[WARNING] [prpy.base.robot:robot.py:324]:do_postprocess: Post-processing smooth paths is not supported. Using the default post-processing logic; this may significantly change the geometric path.
[basemanipulation.cpp:117 main] BaseManipulation: using BiRRT planner
[taskmanipulation.cpp:179 main] using BiRRT planner
[environment-core.h:221 Destroy] destroy module
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/home/shen/research/ada/src/ada/adapy/src/adapy/blocks.py in <module>()
----> 1 traj = robot.arm.PlanToEndEffectorOffset([1,1,0],distance=0.1, execute=True)

/home/shen/research/ada/src/prpy/src/prpy/base/manipulator.pyc in wrapper_method(*args, **kwargs)
     71             @functools.wraps(delegate_method)
     72             def wrapper_method(*args, **kwargs):
---> 73                 return self._PlanWrapper(delegate_method, args, kwargs)
     74             return wrapper_method
     75 

/home/shen/research/ada/src/prpy/src/prpy/base/manipulator.pyc in _PlanWrapper(self, planning_method, args, kw_args)
    183         # Optionally execute the trajectory.
    184         if kw_args.get('execute', False):
--> 185             return self.GetRobot().ExecutePath(traj, **kw_args)
    186         else:
    187             return traj

/home/shen/research/ada/src/prpy/src/prpy/base/robot.pyc in ExecutePath(self, path, defer, executor, **kwargs)
    418             return wrap_future(executor.submit(do_execute))
    419         elif defer is False:
--> 420             return do_execute()
    421         else:
    422             raise ValueError('Received unexpected value "{:s}" for defer.'.format(str(defer)))

/home/shen/research/ada/src/prpy/src/prpy/base/robot.pyc in do_execute()
    394 
    395             with Timer() as timer:
--> 396                 traj = self.PostProcessPath(path, defer=False, **kwargs)
    397             SetTrajectoryTags(traj, {Tags.POSTPROCESS_TIME: timer.get_duration()}, append=True)
    398 

/home/shen/research/ada/src/prpy/src/prpy/base/robot.pyc in PostProcessPath(self, path, defer, executor, constrained, smooth, default_timelimit, shortcut_options, smoothing_options, retiming_options, affine_retiming_options, **kwargs)
    368             return wrap_future(executor.submit(do_postprocess))
    369         elif defer is False:
--> 370             return do_postprocess()
    371         else:
    372             raise ValueError('Received unexpected value "{:s}" for defer.'.format(defer))

/home/shen/research/ada/src/prpy/src/prpy/base/robot.pyc in do_postprocess()
    333                                      ' trajectory will stop at every waypoint.')
    334                         traj = self.retimer.RetimeTrajectory(
--> 335                             cloned_robot, path, defer=False, **retiming_options)
    336                     # The trajectory is not constrained, so we can shortcut it
    337                     # before execution.

/home/shen/research/ada/src/prpy/src/prpy/planning/base.pyc in __call__(self, instance, robot, *args, **kw_args)
    151                 return wrap_future(executor.submit(call_planner))
    152             else:
--> 153                 return call_planner()
    154 
    155     def __get__(self, instance, instancetype):

/home/shen/research/ada/src/prpy/src/prpy/planning/base.pyc in call_planner()
    131                 try:
    132                     planner_traj = self.func(instance, cloned_robot,
--> 133                                              *args, **kw_args)
    134 
    135                     # Tag the trajectory with the planner and planning method

/home/shen/research/ada/src/prpy/src/prpy/planning/retimer.pyc in RetimeTrajectory(self, robot, path, options, **kw_args)
    108         with CollisionOptionsStateSaver(self.env.GetCollisionChecker(),
    109                                         CollisionOptions.ActiveDOFs):
--> 110             status = self.planner.PlanPath(output_traj, releasegil=True)
    111 
    112         if status not in [PlannerStatus.HasSolution,

IndexError: vector::_M_range_check

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.