Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

noetic-devel fixups #14

Closed
wants to merge 7 commits into from
Closed

Conversation

rhaschke
Copy link
Owner

See individual commits. Requires frankaemika/franka_ros#188.

@rhaschke
Copy link
Owner Author

rhaschke commented Oct 28, 2021

franka_gazebo tests

  • finger joints move in sync when setting target pose in MoveIt
  • finger joints move in sync when executing GripperCommands triggered from MoveIt, but action doesn't finish:
    [ERROR] ros.moveit_ros_planning.trajectory_execution_manager: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 4.886437 seconds). Stopping trajectory.
    [ INFO] ros.moveit_simple_controller_manager.ActionBasedController: Cancelling execution for franka_gripper
    [ INFO] ros.moveit_ros_planning.trajectory_execution_manager: Completed trajectory execution with status TIMED_OUT ...
    [ INFO] ros.franka_gazebo.FrankaGripperSim: Gripper Command Action cancelled
    [ INFO] ros.moveit_ros_planning_interface.move_group_interface: ABORTED: Timeout reached
    
  • arm moves when triggered from MoveIt, but aborts (at the end) with GOAL_TOLERANCE_VIOLATED:
    [ WARN] ros.moveit_simple_controller_manager.SimpleControllerManager: Controller 'joint_trajectory_controller' failed with error GOAL_TOLERANCE_VIOLATED: 
    [ WARN] ros.moveit_ros_planning.trajectory_execution_manager: Controller handle joint_trajectory_controller reports status ABORTED
    [ INFO] ros.moveit_ros_planning.trajectory_execution_manager: Completed trajectory execution with status ABORTED ...
    [ INFO] ros.moveit_ros_planning_interface.move_group_interface: ABORTED: Solution found but controller failed during execution
    
  • spawning two models independently:
    roslaunch gazebo_ros empty_world.launch world_name:=worlds/empty.world use_sim_time:=true
    roslaunch franka_gazebo panda.launch gazebo:=false arm_id:=left ns:=left y:=0
    roslaunch franka_gazebo panda.launch gazebo:=false arm_id:=right ns:=right y:=1
    
  • spawning in a namespace:
    roslaunch franka_gazebo panda.launch ns:=foo controller:=joint_trajectory_controller
    ROS_NAMESPACE=foo roslaunch panda_moveit_config demo.launch load_robot_description:=false moveit_controller_manager:=simple
    

@rickstaa
Copy link

rickstaa commented Oct 28, 2021

LGTM. Thanks for solving these issues! I tested everything except the panda_moveit.launch file. I will do this on Monday. Based on the code I however think there should be no problems other than the PID gains not being correct for the real robot. We however fix this when @frankaemika provides us with PID gains for the simulator and real robot.

arm moves when triggered from MoveIt, but aborts (at the end) with GOAL_TOLERANCE_VIOLATED:

I also noticed this during my tests. I tried to fix this with @gollth in frankaemika/franka_ros#173 and frankaemika/franka_ros#180. The issue however turned out to be a difficult one.

spawning two models independently:

Wow! Thanks for making this possible This is very helpful in my own research.

@rickstaa
Copy link

Based on the code I however think there should be no problems other than the PID gains not being correct for the real robot. We however fix this when @frankaemika provides us with PID gains for the simulator and real robot.

I just saw you are already working don't this https://github.com/frankaemika/franka_ros/pull/186/files.

@rhaschke
Copy link
Owner Author

Based on the code I however think there should be no problems other than the PID gains not being correct for the real robot. We however fix this when @frankaemika provides us with PID gains for the simulator and real robot.

The real robot will (still) work with position controllers, which doesn't require PID gains.

@rickstaa
Copy link

Based on the code I, however, think there should be no problems other than the PID gains not being correct for the real robot. ### We, however, fix this when @frankaemika provides us with PID gains for the simulator and real robot.

The real robot will (still) work with position controllers, which doesn't require PID gains.

I can test with the joint_trajectory_controller controller on Monday. My point, however, was about the fact that currently, the panda_arm_controller is started, which is tuned for the simulation:

<node name="trajectory_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="panda_arm_controller" />

In the future, we might want to start the effort PID controller provided by @frankaemika for the real robot. But let's wait till @frankaemika gives us with such a controller.

- Rename panda_moveit.launch -> franka_control.launch
- Unify franka_control.launch with franka_gazebo.launch
- Remove panda_control_moveit_rviz.launch
@rhaschke
Copy link
Owner Author

Actually, ros_controllers.launch and *.yaml are not used anymore in the latest proposal, because I switched to moveit_controller_manager:=simple. Thus, both in sim and real the joint_trajectory_controller should be used:

- name: joint_trajectory_controller

started via franka_gazebo:
<arg name="controller" default="joint_trajectory_controller" />

For the real robot you might need to add spawners for the controllers.

@rickstaa
Copy link

rickstaa commented Oct 28, 2021

I like this solution! Now we provide all the required controllers but don't start them by default. All this control logic is now in the franka_control package. Users can then choose the controller they want to use. I will test on the real robot.

@rhaschke
Copy link
Owner Author

Now we provide all the required controllers but don't start them by default. All this control logic is now in the franka_control package. Users can then choose the controller they want to use.

Yes, all controller configs are loaded as ROS params. But MoveIt's SimpleCtrlMngr requires the joint_trajectory_controller to be loaded and started. Otherwise:
[ERROR] ros.joint_trajectory_controller.joint_trajectory_controller: Can't accept new action goals. Controller is not running.

Only, the ROSCtrlMngr can start/stop controllers as well.

@rickstaa
Copy link

@rhaschke Good point! I didn't think of that. I will also test that and feedback the results to you. Feel free to join me on TeamViewer when I have all the tests set up.

@rickstaa
Copy link

rickstaa commented Nov 1, 2021

@rhaschke I tested the franka_control.launch script on the real robot and it works (see gif). Based on my experiments and #14 (comment) I would like to suggest automatically starting the joint_trajectory_controller (see #15).

robot_real_test

@rickstaa
Copy link

rickstaa commented Nov 1, 2021

Maybe we can start the joint_trajectory_controller (i.e. effort-based) by default while the joint_position_trajectory_controller is only loaded by the franka_control package. By doing this, we would adhere to @frankaemika's desire to use effort-based controllers as the default. This would require only a small change in https://github.com/frankaemika/franka_ros/pull/188/files.

@rhaschke rhaschke closed this Nov 8, 2021
@rhaschke rhaschke deleted the fixup branch September 1, 2022 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants