Hi, a quick question. The height of the Robotiq gripper changes with respect to how wide it's open. Is this depth somehow automatically compensated when planning a trajectory of UR5 robot with this gripper attached to it, for example in moveit?
↧
Robotiq gripper depth compensation
↧
KUKA YOUBOT: Cannot read gripper values
Hello
I seen somebody have a similiar problem with gripper but nobody give him answer.
My problem is: One of fingers stopped moving, both motor was hummed then i was dismounting gripper. After check gripper from inside a didn't seen nothing what can do this problem.
I connect gripper back to arm and launch youbot_driver
Program is display this >:IMG> https://scontent-frx5-1.xx.fbcdn.net/v/t1.0-9/29793190_10209152938380049_5763606348977668096_o.jpg?_nc_cat=0&oh=b6a429bb8d3634684f0cdcb9fc72a749&oe=5B7150B4
i don't know if software of gripper was 0 and version 0 to. But i can dispose of this problem : Cannot read gripper values
When i have unpluged gripper program write missing EtherCat slaves ....
So i think it isn't conection problem but IAM totaly sure i don't change nothing in youbot driver between i unplug and reconect gripper.
CAN SOMEBODY HELP MY?
↧
↧
How to use the action interface of franka_ros packages
Hello,
first of all: I am an absolute ROS beginner so excuse my silly question. I am trying to operate the Franka Emika Robot Panda using ROS.
Here the documentation: https://frankaemika.github.io/docs/ros_introduction.html
I operated it previously using MoveIt but now i would like to use franka_ros directly for instance to move the gripper. I started the respective node using:
roslaunch franka_gripper franka_gripper.launch robot_ip:=
In the docu it states that now different action servers can be used e.g. `franka_gripper::HomingAction()`.
But what exactly do I have to do now for example to home the gripper. Do I have to use the code part `franka_gripper::HomingAction()` and if so where do I have to put it in? Do I have to start an action Server first?
I did some reading but somehow I can't figure out how this basic structure works.. Thanks in advance for any help and explanations!!
---
Edit: Thanks for your answer. Apparently I was on the right track. However, I was not sure wether I needed to write the action server myself. Now I wrote an action client.
I included the following into my action client:
#include
#include
#include
#include
Within the main method I wrote:
> ros::init(argc, argv, "ros_test_client";
> actionlib::SimpleActionClient ac("franka_gripper/homing", true);
> ROS_INFO("Waiting for action server to start");
> ac.waitForServer();
> ROS_INFO("Actin server started, sending goal");
However, when I am running the action client it only gets to the point where it returns "Waiting for action server to start". So apparently the action server is not yet started.
Reading (https://frankaemika.github.io/docs/ros_introduction.html) I thought
> roslaunch franka_gripper
> franka_gripper.launch
> robot_ip:=
would do the job. Apparently it is not. I tryed to start the node independly by:
rosrun franka_gripper franka_gripper_node Robot_ip:=
In that case I get the error:
> terminate called after throwing an
> instace of 'ros::InvalidNameException'
> what(): Character [1] is not valid as
> the first character in Graph Resour
> Name
↧
Gripper server causes problems in example controller
I am working with a Franka Emika Panda Robot and currently testing the example Controllers. When testing the move_to_start.launch it doesn't work and i keep getting:
> GripperServer: Exception reading
> gripper state: libfranka: UDP receive:
> Timeout
The Error Messages can't be stopped with Strg + z. After this I have problems controlling the robot even after killing all nodes and restarting. It says `franka_gripper/franka_control has died` and `Action Client not connected: frank gripper/Position_joint_trajectory Controller`. In some cases even the computer hangs up. I can still move the cursor but whenever I try to execute a task (even starting the task manager/ shutdown buttom) it doesn't work and I get an error saying `Child process cannot be executed (input/output error)`.
Any ideas about how to solve the original problem or at least the consequences? Thanks for any help!
↧
Using ROS Rviz to control the UR5 with OnRobot RG2 Gripper
Hello there!
My objective is to control the UR5 robotic arm with the RG2 Gripper from OnRobot ([link here](https://onrobot.com/products/)) using Rviz for both the simulated robot in Gazebo and the Real robot itself. My current setup is **Ubuntu 16.04 >> ROS Kinetic >> Gazebo V7.0.0** Using the [Universal Robot](https://github.com/ros-industrial/universal_robot) and [ur_modern_driver](https://github.com/ThomasTimm/ur_modern_driver) packages in my catkin workspace.
As of now, i have managed to edit the .urdf files to attach the RG2 gripper model onto the UR5 in Gazebo. However, i am unsure on how to proceed further from this point in order to control the real and simulated gripper from Rviz. The only other example that i could find, is from Sharathrjtr ([link here](https://github.com/sharathrjtr/ur10_rg2_ros)) but his RG2 gripper model is one big static mesh which i assume means that it cannot grip objects in Gazebo since his gripper hands will never close. By using his example, i am able to control the RG2 Gripper by sending,
>$ rosservice call /rg2_gripper/control_width ur_control/RG2 110
and
>$ rosservice call /rg2_gripper/control_width ur_control/RG2 0
to open and close the RG2 Gripper respectively. However, on further inspection, i find that his code just uses ROS as a means of communication with the UR5's controller (Lines 395 onwards of ur_driver.cpp)([Found here](https://github.com/sharathrjtr/ur10_rg2_ros/blob/master/ur_modern_driver/src/ur_driver.cpp))
The parts of code are found below. Basically, all of the code assigned to cmd_str is in URScript.
std::string cmd_str;
char buf[5000],buf_socket[5000];
sprintf(buf, "\ttarget_width=%f\n",target_width);
std::cout << "Reached service to control RG2 gripper" << std::endl;
cmd_str = "def rg2ProgOpen():\n";
cmd_str += "\ttextmsg(\"inside RG2 function called\")\n";
cmd_str += buf;
cmd_str += "\ttarget_force=40\n";
cmd_str += "\tpayload=1.0\n";
cmd_str += "\tset_payload1=False\n";
cmd_str += "\tdepth_compensation=False\n";
cmd_str += "\tslave=False\n";
cmd_str += "\ttimeout = 0\n";
cmd_str += "\twhile get_digital_in(9) == False:\n";
cmd_str += "\t\ttextmsg(\"inside while\")\n";
cmd_str += "\t\tif timeout > 400:\n";
cmd_str += "\t\t\tbreak\n";
cmd_str += "\t\tend\n";
cmd_str += "\t\ttimeout = timeout+1\n";
cmd_str += "\t\tsync()\n";
cmd_str += "\tend\n";
cmd_str += "\ttextmsg(\"outside while\")\n";
cmd_str += "\tdef bit(input):\n";
cmd_str += "\t\tmsb=65536\n";
cmd_str += "\t\tlocal i=0\n";
cmd_str += "\t\tlocal output=0\n";
cmd_str += "\t\twhile i<17:\n";
cmd_str += "\t\t\tset_digital_out(8,True)\n";
cmd_str += "\t\t\tif input>=msb:\n";
cmd_str += "\t\t\t\tinput=input-msb\n";
cmd_str += "\t\t\t\tset_digital_out(9,False)\n";
cmd_str += "\t\t\telse:\n";
cmd_str += "\t\t\t\tset_digital_out(9,True)\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\t\tif get_digital_in(8):\n";
cmd_str += "\t\t\t\tout=1\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\t\tsync()\n";
cmd_str += "\t\t\tset_digital_out(8,False)\n";
cmd_str += "\t\t\tsync()\n";
cmd_str += "\t\t\tinput=input*2\n";
cmd_str += "\t\t\toutput=output*2\n";
cmd_str += "\t\t\ti=i+1\n";
cmd_str += "\t\tend\n";
cmd_str += "\t\treturn output\n";
cmd_str += "\tend\n";
cmd_str += "\ttextmsg(\"outside bit definition\")\n";
cmd_str += "\ttarget_width=target_width+0.0\n";
cmd_str += "\tif target_force>40:\n";
cmd_str += "\t\ttarget_force=40\n";
cmd_str += "\tend\n";
cmd_str += "\tif target_force<4:\n";
cmd_str += "\t\ttarget_force=4\n";
cmd_str += "\tend\n";
cmd_str += "\tif target_width>110:\n";
cmd_str += "\t\ttarget_width=110\n";
cmd_str += "\tend\n";
cmd_str += "\tif target_width<0:\n";
cmd_str += "\t\ttarget_width=0\n";
cmd_str += "\tend\n";
cmd_str += "\trg_data=floor(target_width)*4\n";
cmd_str += "\trg_data=rg_data+floor(target_force/2)*4*111\n";
cmd_str += "\tif slave:\n";
cmd_str += "\t\trg_data=rg_data+16384\n";
cmd_str += "\tend\n";
cmd_str += "\ttextmsg(\"about to call bit\")\n";
cmd_str += "\tbit(rg_data)\n";
cmd_str += "\ttextmsg(\"called bit\")\n";
cmd_str += "\tif depth_compensation:\n";
cmd_str += "\t\tfinger_length = 55.0/1000\n";
cmd_str += "\t\tfinger_heigth_disp = 5.0/1000\n";
cmd_str += "\t\tcenter_displacement = 7.5/1000\n";
cmd_str += "\t\tstart_pose = get_forward_kin()\n";
cmd_str += "\t\tset_analog_inputrange(2, 1)\n";
cmd_str += "\t\tzscale = (get_analog_in(2)-0.026)/2.976\n";
cmd_str += "\t\tzangle = zscale*1.57079633-0.087266462\n";
cmd_str += "\t\tzwidth = 5+110*sin(zangle)\n";
cmd_str += "\t\tstart_depth = cos(zangle)*finger_length\n";
cmd_str += "\t\tsync()\n";
cmd_str += "\t\tsync()\n";
cmd_str += "\t\ttimeout = 0\n";
cmd_str += "\t\twhile get_digital_in(9) == True:\n";
cmd_str += "\t\t\ttimeout=timeout+1\n";
cmd_str += "\t\t\tsync()\n";
cmd_str += "\t\t\tif timeout > 20:\n";
cmd_str += "\t\t\t\tbreak\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\tend\n";
cmd_str += "\t\ttimeout = 0\n";
cmd_str += "\t\twhile get_digital_in(9) == False:\n";
cmd_str += "\t\t\tzscale = (get_analog_in(2)-0.026)/2.976\n";
cmd_str += "\t\t\tzangle = zscale*1.57079633-0.087266462\n";
cmd_str += "\t\t\tzwidth = 5+110*sin(zangle)\n";
cmd_str += "\t\t\tmeasure_depth = cos(zangle)*finger_length\n";
cmd_str += "\t\t\tcompensation_depth = (measure_depth - start_depth)\n";
cmd_str += "\t\t\ttarget_pose = pose_trans(start_pose,p[0,0,-compensation_depth,0,0,0])\n";
cmd_str += "\t\t\tif timeout > 400:\n";
cmd_str += "\t\t\t\tbreak\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\t\ttimeout=timeout+1\n";
cmd_str += "\t\t\tservoj(get_inverse_kin(target_pose),0,0,0.008,0.033,1700)\n";
cmd_str += "\t\tend\n";
cmd_str += "\t\tnspeed = norm(get_actual_tcp_speed())\n";
cmd_str += "\t\twhile nspeed > 0.001:\n";
cmd_str += "\t\t\tservoj(get_inverse_kin(target_pose),0,0,0.008,0.033,1700)\n";
cmd_str += "\t\t\tnspeed = norm(get_actual_tcp_speed())\n";
cmd_str += "\t\tend\n";
cmd_str += "\tend\n";
cmd_str += "\tif depth_compensation==False:\n";
cmd_str += "\t\ttimeout = 0\n";
cmd_str += "\t\twhile get_digital_in(9) == True:\n";
cmd_str += "\t\t\ttimeout = timeout+1\n";
cmd_str += "\t\t\tsync()\n";
cmd_str += "\t\t\tif timeout > 20:\n";
cmd_str += "\t\t\t\tbreak\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\tend\n";
cmd_str += "\t\ttimeout = 0\n";
cmd_str += "\t\twhile get_digital_in(9) == False:\n";
cmd_str += "\t\t\ttimeout = timeout+1\n";
cmd_str += "\t\t\tsync()\n";
cmd_str += "\t\t\tif timeout > 400:\n";
cmd_str += "\t\t\t\tbreak\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\tend\n";
cmd_str += "\tend\n";
cmd_str += "\tif set_payload1:\n";
cmd_str += "\t\tif slave:\n";
cmd_str += "\t\t\tif get_analog_in(3) < 2:\n";
cmd_str += "\t\t\t\tzslam=0\n";
cmd_str += "\t\t\telse:\n";
cmd_str += "\t\t\t\tzslam=payload\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\telse:\n";
cmd_str += "\t\t\tif get_digital_in(8) == False:\n";
cmd_str += "\t\t\t\tzmasm=0\n";
cmd_str += "\t\t\telse:\n";
cmd_str += "\t\t\t\tzmasm=payload\n";
cmd_str += "\t\t\tend\n";
cmd_str += "\t\tend\n";
cmd_str += "\t\tzsysm=0.0\n";
cmd_str += "\t\tzload=zmasm+zslam+zsysm\n";
cmd_str += "\t\tset_payload(zload)\n";
cmd_str += "\tend\n";
cmd_str += "end\n";
rt_interface_->addCommandToQueue(cmd_str);
std::cout << cmd_str << std::endl;
If possible, i would like to control the RG2 Gripper solely using ROS.
Does anyone have any experience with the RG2 Gripper? Or can at at least point me in the right direction? Please let me know if you require any additional information.~
Thanks!
↧
↧
How to keep the gripping force applied over multiple tasks
I am planning a mission using smach for task planning. I want to grasp an object and keep the gripping force applied while moving the object. To grasp I am using the predefined action server of my hardware (Franka Emika Panda). Afterwards I am calling my own action servers to execute a predefined motion. However, when grasping the gripper only applies the specified force for a few seconds and then for the following task it only keeps the gripper fingers at the respective positions. This way the object is not grasped properly and rotates within the gripper. Any ideas how I can keep the force applied until I stop it with the respective "stop" action server? When I use the action server outside the smach environment it keeps the force applied as desired. Thank you for any help and suggestions!
↧
how to separate gripper control from arm control
I've planned and executed motions with my robot arm without any tools with moveit
Then, I've added a gripper in my URDF file and a controller for the gripper `[position_controllers/JointTrajectoryController]` just like the arm controller.
I've successfully controlled the gripper and the arm by loading those controllers and publishing in their topics directly.
now, I want to control the arm with moveit and the gripper with a simple publisher ( using `rostopic pub /gripper_joint_position_controller/command trajectory_msgs/JointTrajectory`).
Is that possible?
I don't want moveit to have any details about my gripper, so in the future , If I change the tools, I won't change my moveit config.
I think the problem that I use robot_desciption that contain gripper links joints `[joint_gripper_base, joint_gripper_finger_1, joint_gripper_finger_2]` and arm joints `[joint_1,joint_2,joint_3,joint_4]` so when I want to control the arm using moveit , i got this error:
ros.rosconsole_bridge.console_bridge: Found a contact between 'gripper_finger_1' (type 'Robot link') and 'gripper_base' (type 'Robot link'), which constitutes a collision. Contact information is not stored.
ros.rosconsole_bridge.console_bridge: Collision checking is considered complete (collision was found and 0 contacts are stored)
ros.moveit_ros_planning: Start state appears to be in collision with respect to group arm
ros.moveit_ros_planning: Unable to find a valid state nearby the start state (using jiggle fraction of 0.050000 and 100 sampling attempts). Passing the original planning request to the planner.
Debug: Starting goal sampling thread
Debug: Waiting for space information to be set up before the sampling thread can begin computation...
ros.rosconsole_bridge.console_bridge: Planner configur**ation 'arm' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
Debug: Beginning sampling thread computation
ros.rosconsole_bridge.console_bridge: Constraint satisfied:: Joint name: 'joint_1', actual value: 0.000013, desired value: 0.000000, tolerance_above: 0.000100, tolerance_below: 0.000100
ros.rosconsole_bridge.console_bridge: Constraint satisfied:: Joint name: 'joint_2', actual value: -0.099921, desired value: -0.100000, tolerance_above: 0.000100, tolerance_below: 0.000100
ros.rosconsole_bridge.console_bridge: Constraint satisfied:: Joint name: 'joint_3', actual value: 0.100007, desired value: 0.100000, tolerance_above: 0.000100, tolerance_below: 0.000100
ros.rosconsole_bridge.console_bridge: Constraint satisfied:: Joint name: 'joint_4', actual value: 0.100010, desired value: 0.100000, tolerance_above: 0.000100, tolerance_below: 0.000100
ros.rosconsole_bridge.console_bridge: Found a contact between 'gripper_finger_1' (type 'Robot link') and 'gripper_base' (type 'Robot link'), which constitutes a collision. Contact information is not stored.
ros.rosconsole_bridge.console_bridge: Collision checking is considered complete (collision was found and 0 contacts are stored)
Debug: RRTConnect: Planner range detected to be 3.746637
Warning: RRTConnect: Skipping invalid start state (invalid state)
at line 253 in /tmp/binarydeb/ros-kinetic-ompl-1.2.3/src/ompl/base/src/Planner.cpp
Debug: RRTConnect: Discarded start state joint_1 = 0
joint_2 = 0
joint_3 = 0
joint_4 = 0
* invalid state
Tag: -1
Error: RRTConnect: Motion planning start tree could not be initialized!
at line 172 in /tmp/binarydeb/ros-kinetic-ompl-1.2.3/src/ompl/geometric/planners/rrt/src/RRTConnect.cpp
Info: No solution found after 0.000459 seconds
Debug: Attempting to stop goal sampling thread...
Debug: Stopped goal sampling thread after 0 sampling attempts
ros.rosconsole_bridge.console_bridge: Unable to solve the planning problem
↧
YouBot: Cannot read gripper values
We have been performing many youBot manipulation experiments, and most of the experiments proceed well, but randomly during them we get:
[ WARN] [1449597292.790741537]: Receiving data failed
[ WARN] [1449597293.014359676]: Cannot read gripper values: Unable to get parameter: ActualPosition from the gripper
[ WARN] [1449597293.217931475]: Receiving data failed
[ERROR] [1449597293.320430594]: Lost EtherCAT connection
[ WARN] [1449597293.442503860]: Cannot read gripper values: Unable to get parameter: ActualPosition from the gripper
[ WARN] [1449597293.446424837]: No EtherCAT connection
This is followed by the youbot_driver stopping responding, and multiple identical warnings and erros repeatedly being printed. Has anyone encountered this issue before? It would seem that the gripper etherCAT communication just stops.
Our youBot is 12.04 Hydro, every ROS package is up to date. We actually have multiple youBots and we have tried with them too, but we get the same issue (So it is unlikely to be a hardware fault). We use youbot_driver, youbot_driver_ros_interface, youbot_manipulation, moveit and so on (i.e. The default pipeline for youBot arm control and manipulation).
We have tried using the following youbot_driver branch since it seemed to tackle the same issue:
https://github.com/youbot/youbot_driver/tree/patch_for_ethercat_lost_problem
But it did not solve the problem for us. We have contacted KUKA support but they do not know what it could be.
Here is the code we use in order to control and use the youBot, in case you think the problem may be higher up.
https://github.com/ipab-rad/youbot_picknplace
Thank you for your responses,
Alex
↧
Gripper Action Controller setup for air controlled 2-finger gripper
Hello All!
I am trying to configure an air controlled gripper that I am using with a Fanuc LRMate 200id. What I am trying to do is interface with a Python node that I have written that publishes the state (bool) of the gripper, either open or closed. I would like to use gripper_action_controller to be able to send/recieve goals/feedback/results. As in so far, I have edited the controllers.yaml file in my MoveIt! config directory. This is what my controllers.yaml file looks like:
controller_list:
- name: ""
action_ns: joint_trajectory_action
type: FollowJointTrajectory
joints: [joint_1, joint_2, joint_3, joint_4, joint_5, joint_6]
- name: "gripper_controller"
action_ns: gripper_cmd
type: GripperCommand
joint:
- gripper_joint
Thank you!
↧
↧
Arm does not appear when using xacro to attach UR5 to Robotiq Gripper
I am trying to attach a Robotiq 2f gripper to a UR5 arm, but cannot get the two components to properly connect to one another. Following the tutorial [here](http://wiki.ros.org/Industrial/Tutorials/WorkingWithRosIndustrialRobotSupportPackages#Example:_adding_an_end-effector_to_a_robot), I created the xacro file below, but only the gripper appears when I launch the MoveIt Setup Assistant and load the xacro. I don't see any errors.
How do I properly attach the gripper to the arm for simulation?
I have cloned the most recent industrial packages for Universal Robots and Robotiq and am running Ubuntu 18.04.
↧
I cannot make gazebo_ros_vacuum_gripper plugin to work. Please help
Hello,
I have a vacuum gripper in Gazebo simulation and I am trying to attach the gazebo_ros_vacuum_gripper plugin to make it work but without any success so far.
My .xacro configuration is as follows:
Gazebo/Black /robotName/${link_no} vacuum_gripper_link_${link_no} grasping 20 0.10 0.01
and then to use the above, I am using the following lines in my main .xacro
So with that configuration and by using rosservice call /robotName/1/on "{}" and rosservice call /robotName/1/off "{}" to activate deactivate suction, nothing happens and a target item (box) is not gripped.
Any help would be greatly appreciate it! Thank you.
↧
Missing joints when using MoveIt to configure gripper
I'm trying to build a simulation in Gazebo for a UR robot along with a Robotiq 2F-140 gripper (ideally with ros-melodic), but when using MoveIt to generate config files for a the robot coupled with the end effector, the robot poses for the gripper planning group don't appear to load correctly. As demonstrated in the gifs below, only the `finger_joint` appears in the group (which includes all the gripper joints).
What is even more confusing is that the first time I try to configure the pose, all of the joints are activated and move into position (not just the `finger_joint`).

Once the pose is saved though, subsequent poses only actuate the `finger_joint`.


Notice that in the planning group, I have more than just the `finger_joint` selected.

Is this expected behavior?
I have tried a number of different combinations including:
- urdf configurations using UR arm models (UR3/5/10) with both the 2f-140 and 2f-85 grippers
- ros-kinetic and ros-melodic
- Ubuntu 18.04 and Ubuntu 16.04
- urdfs that I have created, but also third party examples from tutorials and open source projects
Even with all these variations, I always get the same result, and must be missing something fundamental.
What could cause this to happen, and how do I correctly configure my robot for simulation?
↧
Incorrect gripper joint visualisation for Franka Panda
Hi,
I am using the Moveit Setup assistant to generate the inertial tags and manually adding the transmission tags to get a URDF for the Franka Panda to be used in ROS Sharp. ROS Sharp like gazebo requires the inertial and transmission tags to work and Franka ROS doesnt provide such a urdf or xacro which is why I used Moveit setup assistant to generate it.
When using it, the gripper's fingers (prismatic joints) move weirdly although the arm's revolute joints move perfect. I am not sure if this is an issue with the autogenerated URDF from the moveit setup assistant? To inquire if it is an issue with ROS Sharp I have posted an issue for it [there](https://github.com/siemens/ros-sharp/issues/176).
Here is the [urdf](https://drive.google.com/file/d/1N9QAvoCjonv4m2fsWhjEnsK78c3SAzGJ/view) generated with MoveIt plus the transmission tags I have added. Also [here](https://drive.google.com/file/d/11A8gqhVw5bwIcVgSBlAOjKjBHF5oTNhh/view) is an image showing the weird gripper positions
↧
↧
Controlling the robotiq_85_gripper (2-fingered gripper) in a Gazebo simulation
Hello all,
I am trying for some time now to control (open/close) the two fingered robotiq_85_gripper, as it is described in (https://github.com/DualUR5Husky/robotiq/tree/indigo-devel/robotiq_c2_model_visualization) but augmented with the transmissions and inertial described in (https://github.com/waypointrobotics/robotiq_85_gripper/tree/master/robotiq_85_description/urdf). The problem is that I am not sure how to transmit open - close commands in a Gazebo 7 environment. Do I need an extra plugin to transmit commands to the controllers? I found the following package: (https://github.com/DualUR5Husky/robotiq/tree/indigo-devel/robotiq_c_model_control), but it doesn't seam to do anything.
Please let me have your ideas.
Thank you.
↧
confusion about time_from_start in trajectory_msgs/joint_trajectory
Hello,
I’m trying to demonstrate pick and place in gazebo by using moveit to plan trajectory.
[Here](https://github.com/mvish7/moveit_gazebo_integration/blob/master/moveit_interface.cpp) is the code which i’m using, this is code is very much inline with moveit pick-n-place [tutorials](http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/pick_place/pick_place_tutorial.html).
I’m not able to understand the impact of time_from_start parameter used in open_gripper and close_gripper functions. I have read about [this](https://answers.ros.org/question/50610/the-meaning-of-velocities-accelerations-and-time_from_start-in-jointtrajectorypointmsg/) previous queston on community but it couldn’t solve my queries.
my questions are as follows:
1) What is the exact meaning and importance of parameter time_from_start in trajectory_msgs used in above pointed tutorial?
2) what significant the parameter time_from_start has on when the gripper is opened and closed?
3) Why the value of duration is hardcoded and how can i make it generic if it is possible?
4) Can i relate his time_from_start with sim_time or real_time parameters seen in gazebo??
i’ll appreciate any leads as it will help me to solve the problems about gripper opening and closing!
Thanks,
Vishal
↧
control gripper with motoman_driver?
Hi,
I have schrunk PGN64/1 pneumatic gripper (from teach pendent I/F PANEL can actuate gripper, open and close on real robot). for visualization I can add .xacro file to urdf.
But, I am trying to figure out, how can I control this gripper during Pick and place operation in real robot? can I do like this, open gripper and close gripper using motoman_driver?
can anyone guide me, how can I apply this functionality in ROS so to directly send command from PC? like gripper action server example.
Thanks.
↧
what are the different ways to integrate custom gripper(pneumatic) with ROS?
Hello,
I have schrunk gripper on motoman robotic arm
> https://ibb.co/4jjF8Zr
,
> https://schunk.com/be_de/greifsysteme/product/16941-0370100-pgn-64-1/
how can I integrate this gripper with my robot and control it with Moveit?
or
simply, adding gripper length in endeffector Pose (last link pose(z)+gripper length, gripper is attached to last link rigidly using mounting plate) every time when giving object **target_pose** for pick from current pose in Moveit is easiest way?
thanks.
↧
↧
Cannot move Robotiq 2F-140 in ROS
I have a robot configuration with an UR10 robot and a Robotiq 2F-140 gripper in ROS and Gazebo and when I try to control the gripper to open or close it, it does not work. I am a new ROS user and maybe I am making a mistake when I declare the properties of the robot when using MoveIt Setup Assistant. Here I leave the terminal report:
PARAMETERS
* /arm_controller/action_monitor_rate: 10
* /arm_controller/constraints/elbow_joint/goal: 0.1
* /arm_controller/constraints/elbow_joint/trajectory: 0.1
* /arm_controller/constraints/goal_time: 0.6
* /arm_controller/constraints/shoulder_lift_joint/goal: 0.1
* /arm_controller/constraints/shoulder_lift_joint/trajectory: 0.1
* /arm_controller/constraints/shoulder_pan_joint/goal: 0.1
* /arm_controller/constraints/shoulder_pan_joint/trajectory: 0.1
* /arm_controller/constraints/stopped_velocity_tolerance: 0.05
* /arm_controller/constraints/wrist_1_joint/goal: 0.1
* /arm_controller/constraints/wrist_1_joint/trajectory: 0.1
* /arm_controller/constraints/wrist_2_joint/goal: 0.1
* /arm_controller/constraints/wrist_2_joint/trajectory: 0.1
* /arm_controller/constraints/wrist_3_joint/goal: 0.1
* /arm_controller/constraints/wrist_3_joint/trajectory: 0.1
* /arm_controller/joints: ['shoulder_pan_jo...
* /arm_controller/state_publish_rate: 25
* /arm_controller/stop_trajectory_duration: 0.5
* /arm_controller/type: position_controll...
* /joint_group_position_controller/joints: ['shoulder_pan_jo...
* /joint_group_position_controller/type: position_controll...
* /joint_state_controller/publish_rate: 50
* /joint_state_controller/type: joint_state_contr...
* /move_group/allow_trajectory_execution: True
* /move_group/capabilities:
* /move_group/controller_list: [{'default': True...
* /move_group/disable_capabilities:
* /move_group/jiggle_fraction: 0.05
* /move_group/max_range: 5.0
* /move_group/max_safe_path_cost: 1
* /move_group/moveit_controller_manager: moveit_simple_con...
* /move_group/moveit_manage_controllers: True
* /move_group/octomap_resolution: 0.025
* /move_group/planner_configs/BFMT/balanced: 0
* /move_group/planner_configs/BFMT/cache_cc: 1
* /move_group/planner_configs/BFMT/extended_fmt: 1
* /move_group/planner_configs/BFMT/heuristics: 1
* /move_group/planner_configs/BFMT/nearest_k: 1
* /move_group/planner_configs/BFMT/num_samples: 1000
* /move_group/planner_configs/BFMT/optimality: 1
* /move_group/planner_configs/BFMT/radius_multiplier: 1.0
* /move_group/planner_configs/BFMT/type: geometric::BFMT
* /move_group/planner_configs/BKPIECE/border_fraction: 0.9
* /move_group/planner_configs/BKPIECE/failed_expansion_score_factor: 0.5
* /move_group/planner_configs/BKPIECE/min_valid_path_fraction: 0.5
* /move_group/planner_configs/BKPIECE/range: 0.0
* /move_group/planner_configs/BKPIECE/type: geometric::BKPIECE
* /move_group/planner_configs/BiEST/range: 0.0
* /move_group/planner_configs/BiEST/type: geometric::BiEST
* /move_group/planner_configs/BiTRRT/cost_threshold: 1e300
* /move_group/planner_configs/BiTRRT/frountier_node_ratio: 0.1
* /move_group/planner_configs/BiTRRT/frountier_threshold: 0.0
* /move_group/planner_configs/BiTRRT/init_temperature: 100
* /move_group/planner_configs/BiTRRT/range: 0.0
* /move_group/planner_configs/BiTRRT/temp_change_factor: 0.1
* /move_group/planner_configs/BiTRRT/type: geometric::BiTRRT
* /move_group/planner_configs/EST/goal_bias: 0.05
* /move_group/planner_configs/EST/range: 0.0
* /move_group/planner_configs/EST/type: geometric::EST
* /move_group/planner_configs/FMT/cache_cc: 1
* /move_group/planner_configs/FMT/extended_fmt: 1
* /move_group/planner_configs/FMT/heuristics: 0
* /move_group/planner_configs/FMT/nearest_k: 1
* /move_group/planner_configs/FMT/num_samples: 1000
* /move_group/planner_configs/FMT/radius_multiplier: 1.1
* /move_group/planner_configs/FMT/type: geometric::FMT
* /move_group/planner_configs/KPIECE/border_fraction: 0.9
* /move_group/planner_configs/KPIECE/failed_expansion_score_factor: 0.5
* /move_group/planner_configs/KPIECE/goal_bias: 0.05
* /move_group/planner_configs/KPIECE/min_valid_path_fraction: 0.5
* /move_group/planner_configs/KPIECE/range: 0.0
* /move_group/planner_configs/KPIECE/type: geometric::KPIECE
* /move_group/planner_configs/LBKPIECE/border_fraction: 0.9
* /move_group/planner_configs/LBKPIECE/min_valid_path_fraction: 0.5
* /move_group/planner_configs/LBKPIECE/range: 0.0
* /move_group/planner_configs/LBKPIECE/type: geometric::LBKPIECE
* /move_group/planner_configs/LBTRRT/epsilon: 0.4
* /move_group/planner_configs/LBTRRT/goal_bias: 0.05
* /move_group/planner_configs/LBTRRT/range: 0.0
* /move_group/planner_configs/LBTRRT/type: geometric::LBTRRT
* /move_group/planner_configs/LazyPRM/range: 0.0
* /move_group/planner_configs/LazyPRM/type: geometric::LazyPRM
* /move_group/planner_configs/LazyPRMstar/type: geometric::LazyPR...
* /move_group/planner_configs/PDST/type: geometric::PDST
* /move_group/planner_configs/PRM/max_nearest_neighbors: 10
* /move_group/planner_configs/PRM/type: geometric::PRM
* /move_group/planner_configs/PRMstar/type: geometric::PRMstar
* /move_group/planner_configs/ProjEST/goal_bias: 0.05
* /move_group/planner_configs/ProjEST/range: 0.0
* /move_group/planner_configs/ProjEST/type: geometric::ProjEST
* /move_group/planner_configs/RRT/goal_bias: 0.05
* /move_group/planner_configs/RRT/range: 0.0
* /move_group/planner_configs/RRT/type: geometric::RRT
* /move_group/planner_configs/RRTConnect/range: 0.0
* /move_group/planner_configs/RRTConnect/type: geometric::RRTCon...
* /move_group/planner_configs/RRTstar/delay_collision_checking: 1
* /move_group/planner_configs/RRTstar/goal_bias: 0.05
* /move_group/planner_configs/RRTstar/range: 0.0
* /move_group/planner_configs/RRTstar/type: geometric::RRTstar
* /move_group/planner_configs/SBL/range: 0.0
* /move_group/planner_configs/SBL/type: geometric::SBL
* /move_group/planner_configs/SPARS/dense_delta_fraction: 0.001
* /move_group/planner_configs/SPARS/max_failures: 1000
* /move_group/planner_configs/SPARS/sparse_delta_fraction: 0.25
* /move_group/planner_configs/SPARS/stretch_factor: 3.0
* /move_group/planner_configs/SPARS/type: geometric::SPARS
* /move_group/planner_configs/SPARStwo/dense_delta_fraction: 0.001
* /move_group/planner_configs/SPARStwo/max_failures: 5000
* /move_group/planner_configs/SPARStwo/sparse_delta_fraction: 0.25
* /move_group/planner_configs/SPARStwo/stretch_factor: 3.0
* /move_group/planner_configs/SPARStwo/type: geometric::SPARStwo
* /move_group/planner_configs/STRIDE/degree: 16
* /move_group/planner_configs/STRIDE/estimated_dimension: 0.0
* /move_group/planner_configs/STRIDE/goal_bias: 0.05
* /move_group/planner_configs/STRIDE/max_degree: 18
* /move_group/planner_configs/STRIDE/max_pts_per_leaf: 6
* /move_group/planner_configs/STRIDE/min_degree: 12
* /move_group/planner_configs/STRIDE/min_valid_path_fraction: 0.2
* /move_group/planner_configs/STRIDE/range: 0.0
* /move_group/planner_configs/STRIDE/type: geometric::STRIDE
* /move_group/planner_configs/STRIDE/use_projected_distance: 0
* /move_group/planner_configs/TRRT/frountierNodeRatio: 0.1
* /move_group/planner_configs/TRRT/frountier_threshold: 0.0
* /move_group/planner_configs/TRRT/goal_bias: 0.05
* /move_group/planner_configs/TRRT/init_temperature: 10e-6
* /move_group/planner_configs/TRRT/k_constant: 0.0
* /move_group/planner_configs/TRRT/max_states_failed: 10
* /move_group/planner_configs/TRRT/min_temperature: 10e-10
* /move_group/planner_configs/TRRT/range: 0.0
* /move_group/planner_configs/TRRT/temp_change_factor: 2.0
* /move_group/planner_configs/TRRT/type: geometric::TRRT
* /move_group/planning_plugin: ompl_interface/OM...
* /move_group/planning_scene_monitor/publish_geometry_updates: True
* /move_group/planning_scene_monitor/publish_planning_scene: True
* /move_group/planning_scene_monitor/publish_state_updates: True
* /move_group/planning_scene_monitor/publish_transforms_updates: True
* /move_group/request_adapters: default_planner_r...
* /move_group/sensors: [{'point_subsampl...
* /move_group/start_state_max_bounds_error: 0.1
* /move_group/trajectory_execution/allowed_execution_duration_scaling: 1.2
* /move_group/trajectory_execution/allowed_goal_duration_margin: 0.5
* /move_group/trajectory_execution/allowed_start_tolerance: 0.01
* /move_group/trajectory_execution/execution_duration_monitoring: False
* /move_group/ur10e_arm/default_planner_config: RRTConnect
* /move_group/ur10e_arm/longest_valid_segment_fraction: 0.005
* /move_group/ur10e_arm/planner_configs: ['SBL', 'EST', 'L...
* /move_group/ur10e_arm/projection_evaluator: joints(shoulder_p...
* /move_group/ur10e_gripper/default_planner_config: RRTConnect
* /move_group/ur10e_gripper/planner_configs: ['SBL', 'EST', 'L...
* /move_group/use_controller_manager: False
* /robot_description: tag in joint 'finger_joint'.
[ERROR] [1561032479.096457640, 0.083000000]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/finger_joint
[ INFO] [1561032479.112312095, 0.083000000]: Loaded gazebo_ros_control.
[ WARN] [1561032479.112940713, 0.084000000]: The default_robot_hw_sim plugin is using the Joint::SetPosition method without preserving the link velocity.
[ WARN] [1561032479.113049065, 0.084000000]: As a result, gravity will not be simulated correctly for your model.
[ WARN] [1561032479.113099199, 0.084000000]: Please set gazebo_pid parameters, switch to the VelocityJointInterface or EffortJointInterface, or upgrade to Gazebo 9.
[ WARN] [1561032479.113144206, 0.084000000]: For details, see https://github.com/ros-simulation/gazebo_ros_pkgs/issues/612
[ INFO] [1561032479.187684932, 0.108000000]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[ INFO] [1561032479.311193956, 0.170000000]: Physics dynamic reconfigure ready.
Loaded arm_controller
Loaded joint_state_controller
Started ['arm_controller'] successfully
Started ['joint_state_controller'] successfully
[joint_state_controller_spawner-7] process has finished cleanly
log file: /home/diego/.ros/log/083256ba-9354-11e9-9786-000c299380fc/joint_state_controller_spawner-7*.log
[arm_controller_spawner-8] process has finished cleanly
log file: /home/diego/.ros/log/083256ba-9354-11e9-9786-000c299380fc/arm_controller_spawner-8*.log
[ INFO] [1561032479.587987487, 0.365000000]: Added FollowJointTrajectory controller for arm_controller
Segmentation fault (core dumped)
[gazebo_gui-3] process has died [pid 115421, exit code 139, cmd /opt/ros/kinetic/lib/gazebo_ros/gzclient __name:=gazebo_gui __log:=/home/diego/.ros/log/083256ba-9354-11e9-9786-000c299380fc/gazebo_gui-3.log].
log file: /home/diego/.ros/log/083256ba-9354-11e9-9786-000c299380fc/gazebo_gui-3*.log
[ WARN] [1561032485.851045572, 5.397000000]: Waiting for gripper_controller/gripper_action to come up
[ WARN] [1561032492.718325250, 11.397000000]: Waiting for gripper_controller/gripper_action to come up
[ERROR] [1561032499.837589740, 17.397000000]: Action client not connected: gripper_controller/gripper_action
[ INFO] [1561032499.843780305, 17.401000000]: Returned 1 controllers in list
[ INFO] [1561032499.885161792, 17.421000000]: Trajectory execution is managing controllers
Loading 'move_group/ApplyPlanningSceneService'...
Loading 'move_group/ClearOctomapService'...
Loading 'move_group/MoveGroupCartesianPathService'...
Loading 'move_group/MoveGroupExecuteTrajectoryAction'...
Loading 'move_group/MoveGroupGetPlanningSceneService'...
Loading 'move_group/MoveGroupKinematicsService'...
Loading 'move_group/MoveGroupMoveAction'...
Loading 'move_group/MoveGroupPickPlaceAction'...
Loading 'move_group/MoveGroupPlanService'...
Loading 'move_group/MoveGroupQueryPlannersService'...
Loading 'move_group/MoveGroupStateValidationService'...
[ INFO] [1561032500.157115019, 17.613000000]:
********************************************************
* MoveGroup using:
* - ApplyPlanningSceneService
* - ClearOctomapService
* - CartesianPathService
* - ExecuteTrajectoryAction
* - GetPlanningSceneService
* - KinematicsService
* - MoveAction
* - PickPlaceAction
* - MotionPlanService
* - QueryPlannersService
* - StateValidationService
********************************************************
[ INFO] [1561032500.157269490, 17.613000000]: MoveGroup context using planning plugin ompl_interface/OMPLPlanner
[ INFO] [1561032500.157324467, 17.613000000]: MoveGroup context initialization complete
You can start planning now!
[ INFO] [1561032510.229610320, 25.758000000]: Combined planning and execution request received for MoveGroup action. Forwarding to planning and execution pipeline.
[ WARN] [1561032510.230002294, 25.758000000]: Joint left_inner_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.230079960, 25.758000000]: Joint right_inner_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.230100518, 25.758000000]: Joint right_outer_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ INFO] [1561032510.230413128, 25.759000000]: Planning attempt 1 of at most 1
[ INFO] [1561032510.230552682, 25.759000000]: Starting state is just outside bounds (joint 'left_inner_knuckle_joint'). Assuming within bounds.
[ INFO] [1561032510.230588009, 25.759000000]: Starting state is just outside bounds (joint 'right_inner_knuckle_joint'). Assuming within bounds.
[ INFO] [1561032510.230601645, 25.759000000]: Starting state is just outside bounds (joint 'right_outer_knuckle_joint'). Assuming within bounds.
[ WARN] [1561032510.232152786, 25.760000000]: Joint left_inner_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.232207289, 25.760000000]: Joint right_inner_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.232296257, 25.760000000]: Joint right_outer_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.232438415, 25.760000000]: Joint left_inner_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.232472637, 25.760000000]: Joint right_inner_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ WARN] [1561032510.232486297, 25.760000000]: Joint right_outer_knuckle_joint is constrained to be below the minimum bounds. Assuming minimum bounds instead.
[ INFO] [1561032510.232883208, 25.760000000]: Planner configuration 'ur10e_gripper[RRTConnect]' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1561032510.234086879, 25.761000000]: ur10e_gripper[RRTConnect]: Starting planning with 1 states already in datastructure
[ INFO] [1561032510.234259498, 25.761000000]: ur10e_gripper[RRTConnect]: Starting planning with 1 states already in datastructure
[ INFO] [1561032510.234433875, 25.761000000]: ur10e_gripper[RRTConnect]: Starting planning with 1 states already in datastructure
[ INFO] [1561032510.234561504, 25.761000000]: ur10e_gripper[RRTConnect]: Starting planning with 1 states already in datastructure
[ WARN] [1561032510.243289923, 25.770000000]: More than 80% of the sampled goal states fail to satisfy the constraints imposed on the goal sampler. Is the constrained sampler working correctly?
[ INFO] [1561032510.243955822, 25.770000000]: Constraint satisfied:: Joint name: 'finger_joint', actual value: 0.518286, desired value: 0.518359, tolerance_above: 0.000100, tolerance_below: 0.000100
[ INFO] [1561032510.244069136, 25.770000000]: Constraint satisfied:: Joint name: 'left_inner_finger_joint', actual value: 0.518286, desired value: 0.518359, tolerance_above: 0.000100, tolerance_below: 0.000100
[ INFO] [1561032510.244174373, 25.770000000]: Constraint violated:: Joint name: 'left_inner_knuckle_joint', actual value: -0.518286, desired value: 0.000000, tolerance_above: 0.000000, tolerance_below: 0.000100
[ INFO] [1561032510.244226625, 25.770000000]: Constraint violated:: Joint name: 'right_inner_knuckle_joint', actual value: -0.518286, desired value: 0.000000, tolerance_above: 0.000000, tolerance_below: 0.000100
[ INFO] [1561032510.244268859, 25.770000000]: Constraint violated:: Joint name: 'right_outer_knuckle_joint', actual value: -0.518286, desired value: 0.000000, tolerance_above: 0.000000, tolerance_below: 0.000100
[ INFO] [1561032510.244310213, 25.770000000]: Constraint satisfied:: Joint name: 'right_inner_finger_joint', actual value: 0.518286, desired value: 0.518359, tolerance_above: 0.000100, tolerance_below: 0.000100
[ERROR] [1561032510.246288109, 25.770000000]: ur10e_gripper[RRTConnect]: Unable to sample any valid states for goal tree
[ INFO] [1561032510.246455329, 25.770000000]: ur10e_gripper[RRTConnect]: Created 1 states (1 start + 0 goal)
[ERROR] [1561032510.255698286, 25.776000000]: ur10e_gripper[RRTConnect]: Unable to sample any valid states for goal tree
[ INFO] [1561032510.255818869, 25.776000000]: ur10e_gripper[RRTConnect]: Created 1 states (1 start + 0 goal)
[ERROR] [1561032510.257170039, 25.777000000]: ur10e_gripper[RRTConnect]: Unable to sample any valid states for goal tree
[ INFO] [1561032510.257420105, 25.777000000]: ur10e_gripper[RRTConnect]: Created 1 states (1 start + 0 goal)
[ERROR] [1561032510.257765953, 25.777000000]: ur10e_gripper[RRTConnect]: Unable to sample any valid states for goal tree
[ INFO] [1561032510.257873591, 25.777000000]: ur10e_gripper[RRTConnect]: Created 1 states (1 start + 0 goal)
[ WARN] [1561032510.258319088, 25.777000000]: ParallelPlan::solve(): Unable to find solution by any of the threads in 0.024953 seconds
[ERROR] [1561032510.258777717, 25.778000000]: ur10e_gripper[RRTConnect]: Insufficient states in sampleable goal region
[ERROR] [1561032510.262231037, 25.779000000]: ur10e_gripper[RRTConnect]: Insufficient states in sampleable goal region
[ERROR] [1561032510.263260474, 25.779000000]: ur10e_gripper[RRTConnect]: Insufficient states in sampleable goal region
[ERROR] [1561032510.265613493, 25.779000000]: ur10e_gripper[RRTConnect]: Insufficient states in sampleable goal region
[ WARN] [1561032510.266783149, 25.779000000]: ParallelPlan::solve(): Unable to find solution by any of the threads in 0.007731 seconds
[ERROR] [1561032510.268548449, 25.782000000]: ur10e_gripper[RRTConnect]: Insufficient states in sampleable goal region
[ERROR] [1561032510.268695780, 25.782000000]: ur10e_gripper[RRTConnect]: Insufficient states in sampleable goal region
[ WARN] [1561032510.268841497, 25.782000000]: ParallelPlan::solve(): Unable to find solution by any of the threads in 0.001890 seconds
[ INFO] [1561032510.269628636, 25.783000000]: Unable to solve the planning problem
Thanks in advance for your help.
↧
Grasp() detaches parts of my gripper from the rest everytime its called
Hallo guys,
I am trying to get a pick/place with an ABB_irb2600 to work and ran into a problem:
Every time the Grasp() happens the finger of my gripper (Added by myself into the ABBs urdf, see below) is moved about 20cm in x direction (of the parent link).
It does not matter which of the two fingers is actuated.
The problem that results from this is that the detached finger is still colliding with my environment and thus messes up the trajectory planning which in turn is failing my place() attempts.
I tried resetting the gripper into the "open" state which I introduced in the moveit setup_assistant but it is not working.
Adding limits in the urdf did not yield results as well.
Reducing the amount of obstacles (I try picking from one table and placing on another) helps but is still failing every other execution.
I checked out [this](http://http://answers.ros.org/question/53537/gripper-grasp-planner-cluster-gripper-model-changes-during-grasp-testing/) post, but I guess it is a different Problem, because he had no collision.
I would have realy liked to supply you with pictures, but my karma is to low to upload any files.
My setup is Ubuntu 16.04 LTS with 4.15.0-52-generic kernel and i am running ROS kinetic.
For visualization i use the demo.launch file from the abb_irb2600_moveit_config package supplied by ABB.
For my imports look at the code below, please.
[ WARN] [1561727424.886234042]: Fail: ABORTED: No motion plan found. No execution attempted.
Is the only warning/error i get.
The pick works most of the time, but the place has only 20% success rate.
Thanks in advance!
Shawn
----------
**gripper URDF**
------------
**My Code**
-------
#!/usr/bin/env python
import sys
import rospy
from moveit_commander import RobotCommander, MoveGroupCommander
from moveit_commander import PlanningSceneInterface, roscpp_initialize, roscpp_shutdown
from geometry_msgs.msg import PoseStamped
from moveit_msgs.msg import Grasp, GripperTranslation, PlaceLocation
from trajectory_msgs.msg import JointTrajectoryPoint
if __name__=='__main__':
roscpp_initialize(sys.argv)
rospy.init_node('moveit_py_demo', anonymous=True)
scene = PlanningSceneInterface()
robot = RobotCommander()
right_arm = MoveGroupCommander("ABB_arm")
right_gripper = MoveGroupCommander("gripper")
rospy.sleep(1)
# clean the scene
scene.remove_world_object("table1")
scene.remove_world_object("table2")
scene.remove_world_object("floor")
scene.remove_world_object("part")
rospy.sleep(1)
#remove the attached part to allow re-runs
if scene.get_attached_objects(object_ids = []) == {}:
print "no attached objects found"
else:
scene.remove_attached_object("palm", "part")
print "deleted attached objects"
rospy.sleep(1)
#moving to start position
right_arm.set_named_target("only_zeros")
right_arm.go()
print "only_zeros"
#set the gripper to open
right_gripper.set_named_target("open")
right_gripper.go()
print "open"
rospy.sleep(1)
# publish a demo scene
p = PoseStamped()
p.header.frame_id = robot.get_planning_frame()
#add the floor
p.pose.position.x = 0
p.pose.position.y = 0
p.pose.position.z = -0.1
scene.add_box("floor", p, (2, 2, 0.2))
# add a table
p.pose.position.x = 1.2
p.pose.position.y = -0.2
p.pose.position.z = 0.4
scene.add_box("table1", p, (0.5, 1.5, 0.8))
# add another table
p.pose.position.x = -1.2
p.pose.position.y = -0.2
p.pose.position.z = 0.4
scene.add_box("table2", p, (0.5, 1.5, 0.8))
# add an object to be grasped
p.pose.position.x = 1
p.pose.position.y = -0.12
p.pose.position.z = 0.84
scene.add_box("part", p, (0.08, 0.08, 0.08))
# define the place PlaceLocation
p.pose.position.x = -1
p.pose.position.y = -0.12
p.pose.position.z = 0.84
print "scene complete"
rospy.sleep(1)
grasps = []
for x in range(0, 2):
# define grasps (poses taken from rviz)
g = Grasp()
pose_for_grasps = []
pose_for_grasps.insert(0, [0.86, -0.12, 0.84, 0, 0, 0, 1])
pose_for_grasps.insert(1, [1, -0.12, 0.98, 0.0, 0.7071, 0.0, 0.7071])
approach_direction = []
approach_direction.insert(0, [1, 0, 0, 0.005, 0.1])
approach_direction.insert(1, [0, 0, 1, 0.005, 0.1])
retreat_direction = []
retreat_direction.insert(0, [0, 0, 1, 0.15, 0.05])
retreat_direction.insert(1, [0, 0, 1, 0.15, 0.05])
grasp_id = ["test0", "test1"]
g.id = grasp_id[x]
grasp_pose = PoseStamped()
grasp_pose.header.frame_id = "base_link"
grasp_pose.pose.position.x = pose_for_grasps[x][0]
grasp_pose.pose.position.y = pose_for_grasps[x][1]
grasp_pose.pose.position.z = pose_for_grasps[x][2]
grasp_pose.pose.orientation.x = pose_for_grasps[x][3]
grasp_pose.pose.orientation.y = pose_for_grasps[x][4]
grasp_pose.pose.orientation.z = pose_for_grasps[x][5]
grasp_pose.pose.orientation.w = pose_for_grasps[x][6]
# set the grasp pose
g.grasp_pose = grasp_pose
# define the pre-grasp approach
g.pre_grasp_approach.direction.header.frame_id = "base_link"
g.pre_grasp_approach.direction.vector.x = approach_direction[x][0]
g.pre_grasp_approach.direction.vector.y = approach_direction[x][1]
g.pre_grasp_approach.direction.vector.z = approach_direction[x][2]
g.pre_grasp_approach.min_distance = approach_direction[x][3]
g.pre_grasp_approach.desired_distance = approach_direction[x][4]
g.pre_grasp_posture.header.frame_id = "palm"
g.pre_grasp_posture.joint_names = ["palm_to_left_finger"]
pos = JointTrajectoryPoint()
pos.positions.append(0.0)
g.pre_grasp_posture.points.append(pos)
# set the grasp posture
g.grasp_posture.header.frame_id = "palm"
g.grasp_posture.joint_names = ["palm_to_left_finger"]
pos = JointTrajectoryPoint()
pos.positions.append(0.2)
pos.effort.append(0.0)
pos.time_from_start.secs = 1
g.grasp_posture.points.append(pos)
# set the post-grasp retreat
g.post_grasp_retreat.direction.header.frame_id = "base_link"
g.post_grasp_retreat.direction.vector.x = retreat_direction[x][0]
g.post_grasp_retreat.direction.vector.y = retreat_direction[x][1]
g.post_grasp_retreat.direction.vector.z = retreat_direction[x][2]
g.post_grasp_retreat.desired_distance = retreat_direction[x][3]
g.post_grasp_retreat.min_distance = retreat_direction[x][4]
g.allowed_touch_objects = ["part"]
g.max_contact_force = 0
# append the grasp to the list of grasps
grasps.append(g)
rospy.sleep(0.5)
print "trying to pick"
# pick the object
robot.ABB_arm.pick("part", grasps)
print "after pick"
rospy.sleep(0.5)
print "moving to zero"
right_arm.set_named_target("only_zeros")
right_arm.go()
if scene.get_attached_objects(object_ids = []) == {}:
print "couldn't find pick solution"
sys.exit()
else:
print "trying to place"
robot.ABB_arm.place("part", p)
print "after place"
right_arm.set_named_target("only_zeros")
right_arm.go()
print "finished pick and place"
sys.exit()
roscpp_shutdown()
↧
Usage of joint_state_publisher
Hi everyone,
I am working with a new UR10e robot and a 2F-140 Robotiq Gripper. And the new models of UR robot comes with a set of script functions to control the gripper. The thing is that working this way to command the gripper, you have no information publish by `/ur_driver` into the `robot_state_publisher` topic. So I created a node in order to publish the `finger_joint` value into the robot_state. I know that i have to use `joint_state_publisher` to achieve this task but I do not know how I have to write the code into the launch file just to publish `finger_joint` state. I'm launching `joint_state_publisher` in the following way:
` `
And ROS publishes all the joint states defined in my MoveIt *.srdf config.
Thanks in advance for your help.
↧