0
$\begingroup$

Rosanswers logo

This question is related to ros_control.

I'm working on a platform having an actuator with an embedded controller. The only thing I can do is to send a velocity command and trust the controller, I can not read the current position or velocity.

VelocityJointInterface seems to be the right interface, but JointHandle, the handle of the interface, inherits from JointStateHandle which needs valid pointers to all of position, velocity, and effort.

The first option was to make a dummy storage for position and effort (which will never be updated). It works fine for me but it'll malfunction if I use some controllers that assume those fields are correctly updated and use them, like PID controllers.

The second one is to write a new interface but I don't think it's a right way to do it since it hurts 'abstraction'.

Is there any way to disable some fields or mark them as 'N/A' without adding a new interface?


Originally posted by kukyakya on ROS Answers with karma: 1 on 2015-12-01

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

You can't use a position controller (such as a PID position controller) without position feedback.

Faking the position feedback is counterproductive; the integrated velocity error will build up until the position estimate is completely wrong.

At best, you can use one of the controllers that passes velocity commands through to the hardware.


Originally posted by ahendrix with karma: 47576 on 2015-12-02

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.