-
Notifications
You must be signed in to change notification settings - Fork 164
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
Velocity control, documentation and examples update #109
Merged
alexvannobel
merged 62 commits into
feature/improve-simulation
from
feature/add-documentation-and-change-examples
Aug 5, 2020
Merged
Velocity control, documentation and examples update #109
alexvannobel
merged 62 commits into
feature/improve-simulation
from
feature/add-documentation-and-change-examples
Aug 5, 2020
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…h the kortex_driver too, in a different mode
…- only SRDF modifications remain
…rm and correctly use velocity limits in constraints
…t_states instead of controller state
… gripper joint is at the start of joint_states and sometimes it's at the end
…arted as well as added service client in simulator to switch controllers based on RPC called
…its to simulation class. Will need a way to wrap-around angles now that velocity control for infinite spinning joint is on.
… be activated so handler is commented out
…ty-control-implementation
…is finished or not and removed the sleeps
…e since we don't use MoveIt anymore to home the arm
alexvannobel
requested review from
agagne071174,
gstlaurentkinova and
polthergeist
July 14, 2020 15:27
- The node started correctly and without errors. | ||
|
||
<a id="the_ways"></a> | ||
## The ways to use a Kortex arm with ROS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good stuff! We should have done that a long time ago ;)
polthergeist
approved these changes
Jul 15, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That was a big chunk of code! ;)
Merged
alexvannobel
added a commit
that referenced
this pull request
Aug 5, 2020
* Separate generators for robot and simulation handlers (#99) * Created interface class and put the RPC handlers in robot folder * Now the robot functions interface work just like before * Added templates and generation for simulated services * Added the simulation services to the driver headers * Added newly generated files to repo * Adapt simulation launch files and add prefix support for simulation and MoveIt (#100) * Created interface class and put the RPC handlers in robot folder * Now the robot functions interface work just like before * Added templates and generation for simulated services * Added the simulation services to the driver headers * Added newly generated files to repo * Added simulation option to the driver so the gazebo package can launch the kortex_driver too, in a different mode * Adapt joint_limits files to correctly take prefix option * Change description and control files to support prefix option * Change MoveIt config launch and config files to enable prefix option - only SRDF modifications remain * Added xacro usage in SRDF files to be able to prefix joint names * Adjust ompl planning launch and config files to support prefixing joint names * Remove --inorder from xacro calls since it's default now * Create simulation handlers (#102) * Created interface class and put the RPC handlers in robot folder * Now the robot functions interface work just like before * Added templates and generation for simulated services * Added the simulation services to the driver headers * Added newly generated files to repo * Added simulation option to the driver so the gazebo package can launch the kortex_driver too, in a different mode * Adapt joint_limits files to correctly take prefix option * Change description and control files to support prefix option * Change MoveIt config launch and config files to enable prefix option - only SRDF modifications remain * Added xacro usage in SRDF files to be able to prefix joint names * Adjust ompl planning launch and config files to support prefixing joint names * Remove --inorder from xacro calls since it's default now * Set default gripper in launch files * Add namespace to launch file parameters passed to driver * Added class and implementation for simulator * Add stubs and register handlers for Action API * Add implementation for default actions and ReacAction/ReadAllActions * Added some unit tests for simulator and CreateAction implentation * Added the case where the prefix could be empty in XACRO * Added prefix support for fake controllers in MoveIt configs * Added a missing prefix value for Gen3 and fix the if and unless tags * Add test launch file to launch simulator unit tests * Don't create the gripper Move Group if no gripper on the arm * Added DeleteAction implementation and tests * Add implementation and tests for UpdateAction * Added basic frame for a threaded action executor * Added publishing for action topic before and after action execution * Added StopAction logic and tests for executing and aborting actions * Added stubs for other RPCs we want to support at first in simulation * Added implementation for other RPCs worth simulating * Added some data structure checks and TODOs in executors * Added tests for newly added RPCs * Remove merge artefacts * Implementation for angular position control, Cartesian position control and gripper position control (#105) * Created interface class and put the RPC handlers in robot folder * Now the robot functions interface work just like before * Added templates and generation for simulated services * Added the simulation services to the driver headers * Added newly generated files to repo * Added simulation option to the driver so the gazebo package can launch the kortex_driver too, in a different mode * Adapt joint_limits files to correctly take prefix option * Change description and control files to support prefix option * Change MoveIt config launch and config files to enable prefix option - only SRDF modifications remain * Added xacro usage in SRDF files to be able to prefix joint names * Adjust ompl planning launch and config files to support prefixing joint names * Remove --inorder from xacro calls since it's default now * Set default gripper in launch files * Add namespace to launch file parameters passed to driver * Added class and implementation for simulator * Add stubs and register handlers for Action API * Add implementation for default actions and ReacAction/ReadAllActions * Added some unit tests for simulator and CreateAction implentation * Added the case where the prefix could be empty in XACRO * Added prefix support for fake controllers in MoveIt configs * Added a missing prefix value for Gen3 and fix the if and unless tags * Add test launch file to launch simulator unit tests * Don't create the gripper Move Group if no gripper on the arm * Added DeleteAction implementation and tests * Add implementation and tests for UpdateAction * Added basic frame for a threaded action executor * Added publishing for action topic before and after action execution * Added StopAction logic and tests for executing and aborting actions * Added stubs for other RPCs we want to support at first in simulation * Added implementation for other RPCs worth simulating * Added some data structure checks and TODOs in executors * Added tests for newly added RPCs * Remove merge artefacts * Added implementation for ReachJointAngles action - optimal duration implementation remain * Added KDL parsing and solvers construction * Add max velocities and max accelerations to joint_limits.yaml files * Add a helper to fill KortexError and finish velocity profiles implementation for ReachJointAngles * Now use the velocity profile data to fill the trajectory * Add implementation for angular position control * Add same ROS parameters than real arm and adjust first timestamp to not be 0 * Fix MoveIt config Gen3 lite home position * Added ReachPose implementation, twist limits still hardcoded * Add twist limits files for simulation * Use the correct Cartesian velocity and acceleration values for each arm and correctly use velocity limits in constraints * Add simulated feedback support and change current state to fetch joint_states instead of controller state * Added implementation for gripper control * Fixed a Robotiq 2F-140 typo in the moveit config * Added indexes for first arm joint and gripper joint because sometimes gripper joint is at the start of joint_states and sometimes it's at the end * Address PR comments * Fix tool frame for 6DOF Gen3 arm * Simulation velocity control, documentation and examples update (#109) * Created interface class and put the RPC handlers in robot folder * Now the robot functions interface work just like before * Added templates and generation for simulated services * Added the simulation services to the driver headers * Added newly generated files to repo * Added simulation option to the driver so the gazebo package can launch the kortex_driver too, in a different mode * Adapt joint_limits files to correctly take prefix option * Change description and control files to support prefix option * Change MoveIt config launch and config files to enable prefix option - only SRDF modifications remain * Added xacro usage in SRDF files to be able to prefix joint names * Adjust ompl planning launch and config files to support prefixing joint names * Remove --inorder from xacro calls since it's default now * Set default gripper in launch files * Add namespace to launch file parameters passed to driver * Added class and implementation for simulator * Add stubs and register handlers for Action API * Add implementation for default actions and ReacAction/ReadAllActions * Added some unit tests for simulator and CreateAction implentation * Added the case where the prefix could be empty in XACRO * Added prefix support for fake controllers in MoveIt configs * Added a missing prefix value for Gen3 and fix the if and unless tags * Add test launch file to launch simulator unit tests * Don't create the gripper Move Group if no gripper on the arm * Added DeleteAction implementation and tests * Add implementation and tests for UpdateAction * Added basic frame for a threaded action executor * Added publishing for action topic before and after action execution * Added StopAction logic and tests for executing and aborting actions * Added stubs for other RPCs we want to support at first in simulation * Added implementation for other RPCs worth simulating * Added some data structure checks and TODOs in executors * Added tests for newly added RPCs * Remove merge artefacts * Added implementation for ReachJointAngles action - optimal duration implementation remain * Added KDL parsing and solvers construction * Add max velocities and max accelerations to joint_limits.yaml files * Add a helper to fill KortexError and finish velocity profiles implementation for ReachJointAngles * Now use the velocity profile data to fill the trajectory * Add implementation for angular position control * Add same ROS parameters than real arm and adjust first timestamp to not be 0 * Fix MoveIt config Gen3 lite home position * Added ReachPose implementation, twist limits still hardcoded * Add twist limits files for simulation * Use the correct Cartesian velocity and acceleration values for each arm and correctly use velocity limits in constraints * Add simulated feedback support and change current state to fetch joint_states instead of controller state * Added implementation for gripper control * Fixed a Robotiq 2F-140 typo in the moveit config * Added indexes for first arm joint and gripper joint because sometimes gripper joint is at the start of joint_states and sometimes it's at the end * Changed the way the individual position controllers are loaded and started as well as added service client in simulator to switch controllers based on RPC called * Added implementation for angular velocity control and added joint limits to simulation class. Will need a way to wrap-around angles now that velocity control for infinite spinning joint is on. * Added wrapping around in reach joint angles * Fix a problem with timestamps * Added an implementation for SendTwistCommand but not stable enough to be activated so handler is commented out * Dont start the joint_7 controller for a 6DOF robot * Changed the examples to use notifications to check whether an action is finished or not and removed the sleeps * Put back the homing script for Gazebo and removed the copyright notice since we don't use MoveIt anymore to home the arm * Adapt documentation for new simulation features * Updated the package.xml's with bumped versions and author and maintainer tags * Few minor tweaks in the examples * Added a bit of details in the documentation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds support for SendJointSpeedsCommand in simulation.
I wrote an implementation for SendTwistCommand, but the end effector is shaking a bit when moving, especially when an orientation command is given. I commented out the handler and documented that it should be re-enabled to try it out.
The velocity commands in simulation are in general less stable than position commands. It may be because of the command rate (100Hz) or because the virtual controllers's gains are not perfectly tuned.
The documentation and examples were also modified to reflect new changes to simulation.