GithubHelp home page GithubHelp logo

ada_meal_scenario's People

Contributors

hadmoni avatar herlant avatar jeking04 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

ada_meal_scenario's Issues

Get Shorter Forks

Would you please order some shorter forks, using the faster shipping method possible? The ones we have are too long to be stable. It would be great if the forks are as short as possible.

Fix loose camera mount

The camera mount seems to be loose at the base joint. It looks like one of the screws has sheared.

feature/action_framework: manip.PlanToConfiguration results in program to freeze

With the latest master versions of PrPy and Adapy (as well as with the tagged versions prpy 0.5.0 and ada 0.1.2), manip.PlanToConfiguration results in the program to freeze. Here is the output:

/homes/snikolai/catkin_demo_jen_branch/src/ada_meal_scenario/src/ada_meal_scenario/actions/trajectory_actions.py:36: FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
  first_config = cspec.ExtractJointValues(first_wpt, robot, manip.GetArmIndices())
/homes/snikolai/catkin_demo_jen_branch/src/prpy/src/prpy/base/manipulator.py:99: FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
  return self.GetRobot().GetDOFValues(self.GetIndices())
[INFO] [ada_meal_scenario:trajectory_actions.py:41]:_run: Planning to start of trajectory for action LOOKING_AT_PLATE
[environment-core.h:116 Environment] setting openrave home directory to /homes/snikolai/.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

feature/action_framework: keep-alive motion

It'd be nice if the robot performed some keep-alive motion, like a scan around the room [something that's even precomputed] if it doesn't see a morsel for some timeout. Otherwise the demo will look very static.

Why does the morsel detector send a JSON message?

It's already publishing a ROS message containing a std_msgs/String, so it seems silly to just fill it with JSON. It looks like the the JSON contains a point cloud. Why not use a standard ROS message type for this (e.g. PointCloud or an array of Points)?

Speed up planning by pre-computing trajectories

There are only two configurations in the demo, feed and perceive. You can pre-compute the trajectory from perceive to feed. Then reverse it to get a trajectory from feed back to perceive. This trajectory only needs to be computed once, when you load the demo script.

It's not possible to pre-compute the trajectory from perceive to stab the bite, since it depends on perception. But, once planned, you can just reverse this trajectory to get back to perceive.

Document demo

I'd like Rachel or anyone else to be able to run the demo. This requires good documentation. I suggest putting that in the README.

Slow performance with prpy 0.4.0

The two videos below run identical code, apart from the the first using prpy 0.3.1 and the second 0.4.0 For the first, the duration of grasp_bite - serve - look - ready-to-grasp is 25sec, for the second 49 secs https://www.youtube.com/watch?v=YkwINudZnOw https://www.youtube.com/watch?v=LbgmtMS4kpo
I took time stamps before and after each PlanToConfiguration and PlanToEndEffectorOffset call:

0.4.0 0.3.1. Call
935486 11590 PlanToLookingAtFace
905313 330854 PlanToLookingAtPlate
362034 82758 PlanToEndEffectorPose
937087 702920 PlanToEndEffectorOffset
263716 783048 PlanToEndEffectorOffset
166682 586631 PlanToServingConfiguration
3570318 2497801 Total

It appears though that the actual delays in the video are much larger than the ones in the time stamps
@siddhss5 @mkoval @jeking04

Purchase utensils for demo

Make sure the utensils are usable by ADA and are matte for perception. Update this issue with possible options.

Make poster

Work with everyone else and make a nice poster for the demo.

Race conditions in _MorselDetectionCallback

rospy.Subscribers run in a separate thread. This means that you have to use locks when accessing or modifying data in the callback. In this script, this includes:

  • self.ROBOT_STATE
  • self.bite_world_pose
  • self.bite_detected

You should also lock the OpenRAVE environment when reading or writing anything. This includes:

  • world_camera = self.robot.GetLinks()[7].GetTransform()
  • self.robot.SetDOFValues(self.robot.GetDOFValues())
  • self.robot.SetTransform(robot_pose)
  • self.robot.SetActiveDOFs(activedofs)

Error handling with actions

I don't know where to exactly raise this issue but I'll do it here for now.
Relevant also to @psigen @mkoval @jeking04 @Stefanos19.
I see several ActionExceptions being raised by our actions, spread over the several action.py files. The main demo file has a try-except that catches these exceptions and might deal with them. However, a big issue is that

  • there's no list of possible exceptions that could be raised, so the demo file doesn't really know if it is catching all of them or what they might even be.
  • related, there's no way to verify that exceptions were caught, except by running the robot and seeing it fail. Maybe that's OK but it definitely makes it harder to be sure this will really work.

Any thoughts on fixing this?

Demo logic for faster plans

One way to speed things up is to break down the PlanToEndEffectorOffset into a PlanToTSR (with free roll) to as close to the food as possible followed by a shorter PlanToEndEffectorOffset. I think this will succeed more often. @mkoval and jeking, does this make sense? I think we can encode this as an action, much like the push-grasp.

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.