Ask Your Question
0

UR5 mounted on table collides with the table at runtime

asked 2022-02-17 05:37:22 -0500

zahid990170 gravatar image

updated 2022-02-24 05:31:08 -0500

Hi all,

I have a ur5 robotic arm that is mounted on a table surface. I have created a urdf of the workspace digi2.xacro given as follows:

<?xml version="1.0" ?>
<robot name="ur5" xmlns:xacro="http://ros.org/wiki/xacro">

<xacro:include filename="$(find ur_description)/urdf/ur5.urdf.xacro" />
<xacro:ur5_robot prefix="" joint_limited="true"/>

<link name="world"/>

<link name="table">
    <visual>
      <geometry>
        <box size="2 1.5 0.05"/>
      </geometry>
      <material name="white">
        <color rgba="1 1 1 1"/>
      </material>
    </visual>
    <collision>
      <geometry>
        <box size="2 1.5 0.05"/>
      </geometry>
    </collision>
</link>


<joint name="world_to_table" type="fixed">
  <parent link="world"/>
  <child link="table"/>
  <origin xyz="0 0 1" rpy="0 0 0"/>
</joint>

<joint name="table_to_robot" type="fixed">
  <parent link="table"/>
  <child link="base_link"/>
  <origin xyz="0 0 0" rpy="0 0 0"/>
</joint>


</robot>

I have created by moveit package by running through MoveIt Setup Assistant (MSA). The idea being that, the table surface was taken into account when generating the collision matrix. The screen shot when I run the demo.launch file is shown below.

image description

As, it shows a wide flat table surface beneath the robotic arm. However, when running on the real robotic arm hardware, at times, I see the robotic arm going down the table, hitting and then emergency stopping. Why is it that happening? Do I have to change the origin tag in the xacro file. Do I have to use a mesh, instead of simple box primitive? Please can you provide any suggestions in this regards.

EDIT 1

I've made some small changes to the workcell xacro file. I will add here,

  1. the input xacro file
  2. the generated srdf file
  3. the screenshot from demo.launch

workcell.xacro

<?xml version="1.0" ?>
<robot name="myworkcell" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find ur_description)/urdf/ur5.urdf.xacro" />
<xacro:ur5_robot prefix="" joint_limited="true"/>

<link name="world"/>
<link name="table">
  <visual>
    <geometry>
      <box size="1.0 1.0 0.05"/>
    </geometry>
  </visual>
  <collision>
    <geometry>
      <box size="1.0 1.0 0.05"/>
    </geometry>
  </collision>
</link>

<joint name="world_to_table" type="fixed">
  <parent link="world"/>
  <child link="table"/>
  <origin xyz="0 0 0.5" rpy="0 0 0"/>
</joint>

<joint name="table_to_robot" type="fixed">
  <parent link="table"/>
  <child link="base_link"/>
  <origin xyz="0 0 0" rpy="0 0 0"/>
</joint>


</robot>

myworkcell.srdf

<?xml version="1.0" ?>
<!--This does not replace URDF, and is not an extension of URDF.
    This is a format for representing semantic information about the robot structure.
    A URDF file must exist for this robot as well, where the joints and the links that are referenced are defined
-->
<robot name ...
(more)
edit retag flag offensive close merge delete

Comments

I tried to do something similar by mounting the ur5e arm on a surface. After doing so my I tried to move to arm to a pose goal but it did not generate a plan. Do I need to create a new move it package after adding the surface into the urdf file?

The following error message was displayed : manipulator/manipulator[RRTConnectkConfigDefault]: Unable to sample any valid states for goal tree

Kaushik_6 gravatar image Kaushik_6  ( 2022-06-02 02:47:58 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2022-02-18 14:30:33 -0500

tahsinkose gravatar image

No, you don't have to use a mesh, the primitive should suffice. You need to provide more info for the troubleshooting of the problem. Please also share your srdf file. If the collision between grippers and the table object are allowed, then this kind of a behavior is normal.

edit flag offensive delete link more

Comments

thanks @tahsinkose, I have made an update on my question. I just added the entire arm as a single planning group from 'base_link' until 'tool_0' as kinetic chain. I have added the xacro, srdf and screenshots here. thanks.

zahid990170 gravatar image zahid990170  ( 2022-02-19 04:53:45 -0500 )edit

hi, thanks @tahsinkose, I made a mistake. Previously. I was running the roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=false which was using the standard srdf from the downloaded repositories of the unviersal_robots pacakge. But, here I have updated my scenario, with correct srdf and other configurations. But, now I am getting another problem, as the goal pose is never reached on real robot when sent using move_group_interface in my c++ code. However from the RViz, I can still command different motions. Maybe, you can share some input. thanks,

zahid990170 gravatar image zahid990170  ( 2022-02-23 05:34:00 -0500 )edit

@zahid990170 Please search the forum for similar problems and mark this problem as solved.

tahsinkose gravatar image tahsinkose  ( 2022-02-24 02:07:02 -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

1 follower

Stats

Asked: 2022-02-17 05:37:22 -0500

Seen: 92 times

Last updated: Feb 24