I am currently working on developing a model of a robot that moves in space (gravity=0) in the Gazebo simulator. The robot is based on a body with one continuous joint and two revolute joints. Jount1 in the image is a continuous joint and the x-axis rotates. Jount 2 and 3 in the image are revolute joints and rotate on the z-axis.
Control is made by using velocity_controllers of ros_control and Joint Velocity Controller. In this way, the joints of the robot are moved by sending velocity command values, but in this case, the continuous joint must be set to the effect and velocity limit. If not, the continuous joint will be subjected to a large force and the model will explodes. The movement in the Gazebo simulator is shown in the GIF image below.
In this case, the robot first moves Joint3 until the pose of Link3 is straight. Next, robot moves Joint2 until the pose of Link2 is straight. In this process, the speed of Joint1 always publish 0. Also, Control is made by using velocity_controllers of ros_control and Joint Velocity Controller. The robot model explodes when only Joint2 is moved. However, the values of the Joint2 controller were not particularly strange.
I poused the simulation and inspected it, but could not find the cause of the problem. Even if I remove the collision settings for each manipulator, it still explodes. I don't think it is a collision problem. I also checked the controller values, but it did not seem like a large force was added. I do not think it is a controller problem. The robot explodes when the manipulators are moved from the folded position to the extended position. In this case, joint1 is not moved, but Jouint1 starts to vibrate and the robot explodes.
When I set the limit it does not explode, but in this state I am not sure if the physics are working correctly. I think it is strange that the model explodes in the first place, but is there anything I should consider about this phenomenon?
A portion of the code for the robot model is available below url. I would be happy to receive your advice.