-
Notifications
You must be signed in to change notification settings - Fork 5
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
extended joint_mode_controller #41
base: hydro-devel
Are you sure you want to change the base?
Conversation
Example yaml content to switch the legs of REEM-C to effort mode: joint_mode_controller:
type: joint_mode_controller/JointModeController
mode_handles:
leg_left_1_joint: 'hardware_interface/EffortJointInterface'
leg_left_2_joint: 'hardware_interface/EffortJointInterface'
leg_left_3_joint: 'hardware_interface/EffortJointInterface'
leg_left_4_joint: 'hardware_interface/EffortJointInterface'
leg_left_5_joint: 'hardware_interface/EffortJointInterface'
leg_left_6_joint: 'hardware_interface/EffortJointInterface'
leg_right_1_joint: 'hardware_interface/EffortJointInterface'
leg_right_2_joint: 'hardware_interface/EffortJointInterface'
leg_right_3_joint: 'hardware_interface/EffortJointInterface'
leg_right_4_joint: 'hardware_interface/EffortJointInterface'
leg_right_5_joint: 'hardware_interface/EffortJointInterface'
leg_right_6_joint: 'hardware_interface/EffortJointInterface' |
@adolfo-rt @lucamarchionni @hilario |
The example yaml content should use the variable name thingy to not repeat It was something like: (hippy!) @adolfo-rt https://github.com/adolfo-rt @lucamarchionni — |
That is true sir, thank you for your feedback. |
Did you try it on a robot? |
Only on the simulated one. I'm only done with the simulation HAL, the other one is on the way. |
@@ -1,7 +1,7 @@ | |||
cmake_minimum_required(VERSION 2.8.3) | |||
project(position_controllers) | |||
|
|||
if(USE_ROSBUILD) | |||
if(USE_ROSBUILD) |
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.
In Indigo we dropped support for rosbuild - should this PR target indigo and not include rosbuild stuff in cmakelists?
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.
Note taken
From email:
I haven't given this much thought, or read into it, but this seems to be adding too much complexity. If you want to change different groups to different control modes, shouldn't they just be in different controllers? This would allow you to have different joint_mode_controllers right? My memory is hazy. |
Any progress on this? |
Yes. As Adolfo mentioned in ros-simulation/gazebo_ros_pkgs#256, I am currently working on a hardware implementation of it, to validate that the proposed implementation is valid for both simulated and real hardware. Apologies for the visibility blocker, but to ease development, the changes are currently being done internally. When all is ready and tested, it will appear on the PAL github, and I will make a PR to ros-controls with it. |
I just wanted to send my encouragment (and gradtitude) for this feature! |
We've come to the conclusion that having controllers for handling joint mode switches is suboptimal. There are two reasons supporting this argument: UsabilityIt would be much more convenient to simply start/stop the actual controllers we're interested in, without having to additionally instantiate extra controllers for changing the mode of a joint. Consider the following example:
It's clear from 2. above that stopping Having additional controllers that trigger the mode switch seems unnecessary. I have also received some negative feedback from testers of this proposal that mode-switching controllers are an odd fit, as they are not really controllers (they do nothing in the control loop update cycle). They only do work when started/stopped. Technical aspectsDoing proper resource conflict handling with mode-switching controllers is kludgy at best in our prototypes. Reviewing the design, we found it impossible to prevent inconsistent controller configurations, in which one could end up with a running controller targeting a currently disabled interface. Without going into much detail, this is because when checking for conflicts, the only information available is a list of There is one place where all the information required to perform a correct mode switch exists, and that is the |
Some directions to where lwr_controllers should go until a ImpedanceJointInterface (for full exposal of FRI values) or joint_mode_controller (see pal-robotics-forks/ros_controllers#41), or to allow multiple command interfaces for a resource? Too many options !
Some directions to where lwr_controllers should go until a ImpedanceJointInterface (for full exposal of FRI values) or joint_mode_controller (see pal-robotics-forks/ros_controllers#41), or to allow multiple command interfaces for a resource? Too many options !
Some directions to where lwr_controllers should go until a ImpedanceJointInterface (for full exposal of FRI values) or joint_mode_controller (see pal-robotics-forks/ros_controllers#41), or to allow multiple command interfaces for a resource? Too many options !
to handle lists of handles, and take strings to define the modes. The accepted string parameters are the names of the corresponding hardware_interfaces for each.