turtlebot / turtlebot_arm

The turtlebot_arm package provides bringup, description, and utilities for using the TurtleBot arm.
BSD 3-Clause "New" or "Revised" License
49 stars 43 forks source link

Gripper of Pincher Arm differs from reality #35

Open joellutz opened 6 years ago

joellutz commented 6 years ago

I've freshly cloned & built the turtlebot_arm & the arbotix repository (I had to remove the object_manipulation folder to get my build done, but I don't use it anyway). My physical Pincher Arm is connected to /dev/ttyUSB0. In order to move it around with MoveIt & Rviz, I had to change in the turtlebot_arm_moveit_config/demo.launch file the simulation arg for the arm bringup launch file to false as shown here: `

When I now start the MoveIt demo withroslaunch turtlebot_arm_moveit_config demo.launch ` I can plan & execute and the pincher arm moves to the goal. But if I change the Planning Group in Rviz to "gripper" instead of "arm" (under "Planning Request" in Rviz), I can still plan & execute, the gripper moves in Rviz and the logging says the Gripper Controller succeeded. But my real robot gripper doesn't move a bit, even with various different positions.

Every second I also get a log like this: [ WARN] [1524497161.302061425]: The complete state of the robot is not yet known. Missing gripper_joint I suspect my error has something to do with this. Also in Rviz, only one of the two gripper parts can be moved, while on the real pincher robot arm, it is a parallel gripper where both parts move symmetrically.

Edit: Right after opening this issue I found a solution to the first part: I had to use this arbotix_ros repository instead of the one mentioned above, then my gripper could move! Even though the logging tells a different story:

[ INFO] [1524498261.159729581]: Planning adapters have added states at index positions: [ 0 ] [ INFO] [1524498266.793112394]: Execution request received for ExecuteTrajectory action. [INFO] [1524498266.841353]: Gripper controller action goal recieved:0.014877 m [INFO] [1524498266.841908]: Gripper publish servo goal: -1.4771 rad [ERROR] [1524498267.674998461]: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 0.841428 seconds). Stopping trajectory. [ INFO] [1524498267.675095360]: Cancelling execution for gripper_controller [WARN] [1524498267.677588]: Gripper Controller: Preempted. [ INFO] [1524498267.741294827]: Execution completed: TIMED_OUT [ INFO] [1524498267.771785352]: ABORTED: Timeout reached

This doesn't always happen though.

But the gripper in Rviz of course still isn't symmetrical, so any suggestions on how to fix this difference between simulation & real world is still welcome.

Can someone help me with this? Thank you! Cheers

joellutz commented 6 years ago

As I mentioned, the gripper of the Pincher arm differs from the real robot. In addiditon, I had to modify the turtlebot_arm_moveit_config/config/pincher_arm.srdf file in order to get my pincher arm (and gripper) move around (in Gazebo):

`

</group>`

I don't know if this is necessary or not, but maybe someone finds this difference from the pincher_arm.srdf to the turtlebot_arm.srdf file interesting/useful. Note that I didn't have to do this when moving the real pincher arm, but rather to move it around in Gazebo. I currently can do the latter only with a self-written control-package and not with the arbotix controllers, so maybe this modifications aren't necessary when using the arbotix controllers.

corot commented 6 years ago

Hi! For the first point, there's a PR opened ages ago to make arbotix work with the pitcher. So would be great if you can put it up-to-date and ping arbotix maintainers to merge it so it makes it way to the next release! I'm re-reading my documentation and it says: _To use the PhantomX Pincher .... You will need arbotixros version 0.11.0 What is funny cause last released version is 0.10.0. So I suppose this means that you need a for integrating the above mentioned PR.

For the malformed gripper, please try this PR. By using it. the gripper appears in RViz in the right place. But I cannot tell if it works because I don't have a real Pitcher nor works on Gazebo (as you explained). I didn't merge the PR cause used to conflict somehow with kobuki plugin (read my comments), but it seems to work now with Gazebo9. So if you try it and works, I will merge.

joellutz commented 6 years ago

Hi! I'm already using the pull request version of arbotix_ros 0.11.0 you mentioned, otherwise I couldn't move the real pincher arm. Regarding the other PR, I've adapted my files according to the changes suggested in the PR, including the mechanicalReductionset to 2 in the transmission-tag for the gripper_joint. I can see an improvement when planning & executing gripper positions (grip_open, grip_closed etc.) in Rviz: both fingers are now moved when selecting a goal state, even though the gri_open position seems too wide: image When looking at it in Gazebo, sometimes opening/closing the gripper works for one finger (the gripper_active_link), but the other one (gripper_active2_link) stands still like before integrating the PR: gazebo_pincher_gripper_not_parallel On other occasions, the execution fails with the error message

Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 0.985854 seconds). Stopping trajectory.

With the modifications from the PR, I discovered that I'm only able to plan & execute in Rviz. But if I run a python script like in the MoveIt Python Interface Tutorial to move my arm, it isn't able to plan:

Error: RRTConnect: Unable to sample any valid states for goal tree at line 215 in /tmp/binarydeb/ros-kinetic-ompl-1.2.1/src/ompl/geometric/planners/rrt/src/RRTConnect.cpp

Maybe the moveit config package for the pincher arm needs an update in order to work with the modifications in the PR?

Additionally, the gripper_active_linkdoesn't seem to be correctly attached, as it glitches away from the gripper ground plane, mostly after moving the arm: gazebo_pincher_gripper_malformed

I have to mention here that I currently don't use any arbotix controllers at all when simulating the arm in Gazebo (only when moving the real arm, which I don't have problems with anymore), because I couldn't get it to work yet. Instead, I'm using a tinkered control-package (can be found here) and I had to slightly modify the turtlebot_arm_moveit_config/config/controllers.yaml file (see here), so maybe some of my issues come from this rather ugly workaround.

corot commented 3 years ago

Hey @joellutz, most probably this comes too late, but I just noticed that these people are using the Pincher arm and have their own repo. As they are selling the arm, I would expect that the description is correct,