Ask Your Question
0

compute_cartesian_path obstacle avoidance?

asked 2018-09-17 07:44:25 -0500

akosodry gravatar image

updated 2018-09-18 01:43:47 -0500

Hello ROS Community!

I have the following scenario in gazebo: robotic arm + wall + obstacle (see the figure)

image description

Based on (simulated) kinect sensor data i am able to detect the obstacle and determine the main way-points trough which the selected surface of the wall can be covered. (i.e. i have the waypoints that describe the complete coverage path). see the following image:

image description

Before i call the compute_cartesian_path i always test these waypoints individually and all of them are reachable by the robot.

Once i call the compute_cartesian_path it fails with small percentages (1-3%).

BUT, IF i remove the obstacle (ie. delete the wood cube object in gazebo) BUT KEEP the waypoints (that corresponded to the situation when the obstacle was present) than the compute_cartesian_path succesfully calculates the path and the robot can successfully execute the trajectory.

Why the compute_cartesian_path doen't succeed if the obstacle is present?

I call it in the following way:

(plan, fraction) = group.compute_cartesian_path(
          self.waypoints,  # waypoints to follow
          step,  # eef_step
          0.0,  # jump_threshold
          True) #avoid_collisions

In the moveit config package i load the following sensor:

sensors:
  - sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
    point_cloud_topic: /rgbd_camera/depth_registered/points
    max_range: 5.0
    point_subsample: 1
    padding_offset: 0.1
    padding_scale: 1.0
    max_update_rate: 1.0
    filtered_cloud_topic: filtered_cloud

And in RVIZ i am able to see the OctoMap.

Thank you in advance!

Best regards.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2018-09-17 13:06:08 -0500

setting jump_threshold to 0 may be part of the issue, see here for a description of that argument.
Also, are any of your waypoints in collision with he obstacle?

edit flag offensive delete link more

Comments

@jrgnicho Thanks for the reply. I tried the jump_threshold to be 0.1 and also 100000 but it did not change the outcome. I updated the second image in my post with the waypoint numbers. Every waypoint is reachable and all of them are outside of the obstacle territory. BUT

akosodry gravatar image akosodry  ( 2018-09-18 01:47:27 -0500 )edit

BUT moving on a straight line from waypoint 16 to waypoint 17is not possible since there is the obstacle (wood cube). BUT i expected (maybe wrongly) that compute_cartesian_path can cleverly return a plan that bypasses the obstacle when moving from wp16 to wp17. Any tips,ideas? Thanks

akosodry gravatar image akosodry  ( 2018-09-18 01:52:40 -0500 )edit
1

BUT i expected (maybe wrongly) that compute_cartesian_path can cleverly return a plan that bypasses the obstacle when moving from wp16 to wp17. Any tips,ideas? Thanks

No, that is not how it works.

computeCartesianPath(..) does not "plan" (ie: come up with paths itself), it's simple linear ..

gvdhoorn gravatar image gvdhoorn  ( 2018-09-18 02:09:23 -0500 )edit
1

.. interpolation between the waypoints, similar to how a traditional industrial robot controller would do it (ie: go through your obstacle).

So you'll have to make sure that linear interpolation between your waypoints works (or accept that only part of the interpolation will be successful).

gvdhoorn gravatar image gvdhoorn  ( 2018-09-18 02:10:21 -0500 )edit

@gvdhoorn Thanks for the reply. Can you recommend then what solution can be implemented to go from waypoint 16 to waypoint 17 (see the images in the post)? Should i manually add wpoints to bypass the obstacle? What is the meaning of avoid_collisions = true then?

akosodry gravatar image akosodry  ( 2018-09-18 02:13:42 -0500 )edit

Or using computeCartesianPath is not the right way to solve the described problem?

akosodry gravatar image akosodry  ( 2018-09-18 02:14:21 -0500 )edit
1

According to the documentation:

Collisions are avoided if avoid_collisions is set to true. If collisions cannot be avoided, the function fails.

If due to robot kinematics there are configurations of your robot that allow computeCartesianPath(..) to "work around" collisions, then it will ..

gvdhoorn gravatar image gvdhoorn  ( 2018-09-18 02:16:15 -0500 )edit
2

.. use those.

If all of the solutions for a waypoint are still in collision, "the function fails", as the documentation states.

http://docs.ros.org/kinetic/api/movei...

gvdhoorn gravatar image gvdhoorn  ( 2018-09-18 02:16:48 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

3 followers

Stats

Asked: 2018-09-17 07:44:25 -0500

Seen: 481 times

Last updated: Sep 18 '18