Skip to content

Release 2.2.2 of KINOVA ROS KORTEX repository : improvements to the Gazebo simulation

Compare
Choose a tag to compare
@alexvannobel alexvannobel released this 05 Aug 18:21
· 12 commits to kinetic-devel since this release

This simulation-only release affects users using the Gazebo simulation for Kortex arms.

Download links

There is no new release for Kortex arms firmware so the release 2.2.0 download links are still the latest ones.

What's new

We have received a lot of feedback in the last few months over the fact that the Gazebo simulation for the Kortex arms did not have the same interface as the real arms, so writing code in simulation and testing it afterwards on a real arm was tedious in nature because code had to change between the simulated and real arm implementations.

We addressed that issue by modifying the kortex_driver package to start in simulation too, and to expose all the auto-generated services
and topics that a real arm exposes. We implemented only the most important RPCs : the ones related to moving and stopping the arm and its gripper. You can see the list of handlers in the source code. They include the *Action ROS services as well as their specific counterpart (PlayCartesianTrajectory, PlayJointTrajectory, SendGripperCommand, ApplyEmergencyStop).

The SendTwist implementation has been kept in the code as a POC, but commented out because the arm was shaky in some positions and not stable enough. Users can uncomment this to see the behaviour and start from this code if they want to achieve simulated twist commands. We won't work on enhancing this in the short term. We didn't find the root cause for the shaking but it may be because of the PID gains not tuned enough, or the command rate of the simulated ROS Control individual position controllers.

You can have a look at the new kortex_examples documentation to learn more about the details and the differences between simulated and real arms.

The entry-point for real arms is still kortex_driver.launch and the entry-point for simulated arms is still spawn_kortex_robot.launch.

What's changed/fixed

  • #88 the prefix option for both the simulated and real arm now also prefixes MoveIt configurations correctly. This is useful if you want to run multiple robots on a given ROS network (make sure to also set the robot_name parameter to namespace your robot!)
  • #90 The implementation of the PlayCartesianTrajectory and ExecuteAction ROS services for a simulated arm makes it possible for simulation users to send the arms to a Cartesian pose, without computing the IK themselves. We use KDL in the kortex_driver to do this. Since the real arm has its own IK implementation, paths may vary between simulation and real arms (especially for the Gen3 7DOF).
  • The Gen3 lite users now don't have to specify a gripper when launching the driver since the default (and only) gripper is gen3_lite_2f.

Using simulated services that are not implemented

It is possible for users to implement simulation handlers for every call in the Kortex API. We did implement the most crucial ones and don't plan in the short term to implement more, but there is only one function call to add in the kortex_arm_driver and one handler to define in the kortex_arm_simulation to implement your own simulated behaviour for one of our Kortex API RPCs in simulation.

By default, unimplemented handlers for simulated services return the default value for their Response data structure and print a warning in the terminal.