Velocity controll and PID tuneing
I'm currently building a simulation model for my robot and so far almost every thing works. I can move all my actuators. I'm currently stuck with the controlling the wheel velocity.
I have a joint
<joint name="wheel_main_rotation" type="continuous">
<parent link="wheel_main_suspension" />
<child link="wheel_main" />
<origin xyz="0 0 -0.1" rpy="0 0 0" />
<axis xyz="0 1 0" />
<limit effort="2000.0" velocity="1.0" />
</joint>
with a transmission
<transmission name="tran2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="wheel_main_rotation">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="motor2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
with the following controller config
# velocity Controllers ---------------------------------------
joint2_velocity_controller:
type: effort_controllers/JointVelocityController
joint: wheel_main_rotation
pid: {p: 10000.0, i: 1.0, d: 1000.0}
and a rosnode which publishes the value 1.0
on the following topic
pub = rospy.Publisher('/my_robot_ns/joint2_velocity_controller/command', Float64, queue_size=10)
This approach works for all my revoloute
and prismatic
joints, but not for controlling the velocity of the main wheel. I actually doesn't move at all, no matter which value I publish.
edit:
the maximum velocity of my robot should be 1.0 m/sec