Manipulator initial position altered after changing from a position_controllers/JointTrajectoryController to a effort_controllers/JointTrajectoryController
Hi, I am currently on Ubuntu 16.04 LTS and ROS Kinetic, working on the integration of a Husky and a Robotis Manipulator-H in the Gazebo simulator. Right now I have the manipulator working with MoveIt! while standing fixed on top of a Husky robot. First of all I was having a problem which was the fact that when I moved the Husky robot (for example, with the teleop keyboard), his dynamics were not correct, i. .e, the front wheels would lift up when I moved him forward and the back wheels would also lift up If I moved him backwards. I researched about the possible reasons why this was happening and via this link:
http://answers.gazebosim.org/question...
I found out that the fact that I was using a position_controllers/JointTrajectoryController to control the manipulator (via MoveIt!) was afecting my robot's dynamics. The solution was changing this controller to a effort_controllers/JointTrajectoryController, which made it possible to move my Husky robot around normally. The only problem is that now, the initial position of the manipulator is a bit odd. The following images show the normal position of the manipulator (when using a position_controllers/JointTrajectoryController) and the position of the manipulator when using a effort_controllers/JointTrajectoryController:
Normal position:
Altered position:
Besides this initial position problem, path planning has equally good (or even perfect) results when using both controller types. Has this weird initial position any side effect in my system/manipulator/simulation?
I posted this question in Github: https://github.com/znbrito/Brito-thes... And in Gazebo answers: http://answers.gazebosim.org/question...
Because I am not sure where exactly I should post my problem but from the feedback that I got till know, I think this has something to do with the PID controllers that I am using right now. What I did was simply using the PID parameters that came from the original package from Robotis's Github from other controller types:
robotis_manipulator_h:
# Publish all joint states -----------------------------------
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 125
# Position Controllers ---------------------------------------
joint1_position:
type: effort_controllers/JointPositionController
joint: joint1
pid: {p: 9000.0, i: 0.1, d: 500.0}
joint2_position:
type: effort_controllers/JointPositionController
joint: joint2
pid: {p: 9000.0, i: 0.1, d: 500.0}
joint3_position:
type: effort_controllers/JointPositionController
joint: joint3
pid: {p: 6000.0, i: 0.1, d: 400.0}
joint4_position:
type: effort_controllers/JointPositionController
joint: joint4
pid: {p: 6000.0, i: 0.1, d: 400.0}
joint5_position:
type: effort_controllers/JointPositionController
joint: joint5
pid: {p: 6000.0, i: 0.1, d: 400.0}
joint6_position:
type: effort_controllers/JointPositionController
joint: joint6
pid: {p: 6000.0, i: 0.1, d: 400.0}
And I added the controller for MoveIt! myself with these PID parameters:
robotis_manipulator_h:
# Publish all joint states -----------------------------------
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 125
# Controllers for MoveIt! ------------------------------------
main_group_controller:
type: effort_controllers/JointTrajectoryController
joints:
- joint1
- joint2
- joint3
- joint4
- joint5
- joint6
gains:
joint1: {p: 9000.0, i: 0.1, d: 500.0}
joint2: {p: 9000.0, i: 0.1, d: 500.0}
joint3: {p: 6000.0, i: 0.1, d ...