Continuous joints don't rotate/work
I am working on a project where I have attached a custom-designed four-wheel cart on the rear axle of the Clearpath Robotics Ridgeback robot. The problem I have is, the continuous joints of the cart-wheels don't rotate as they should. They barely rotate when the robot is gonna come to a stop at a very low speed. As the wheels with continuous joints don't rotate, the cart skids/drifts and affects the direction of the robot and hence the entire system.
However, they do work when I change the joints to revolute, but then the wheels will stop working after the limits are reached. Hence the wheel joints have to be continuous.
I am attaching the video of the issue as well as my launch and urdf files in a folder here - https://drive.google.com/drive/folder...
The empty_world.launch file calls the other respective files in the following order -
empty_world.launch -> empty_world.launch (gazebo_ros); spawn_ridgeback.launch(ridgeback_gazebo) -> description.launch(ridgeback_description); control.launch -> ridgeback.urdf.xacro -> ridgeback.gazebo; cart.urdf.xacro
Please help me investigate and solve the issue. Thanks.
UPDATE 1
I changed the cart-wheel joints to revolute with the following limits -
<joint name="${prefix}_${side}_cart_wheel_joint" type="revolute">
<parent link="${prefix}_${side}_wheel_holder_mid_link"/>
<child link="${prefix}_${side}_cart_wheel_link" />
<axis xyz="0 1 0" />
<origin xyz="0 ${-(s_location*wheel_width/2)} -0.11" rpy="0 0 0"/>
<limit lower="-${PI*10000}" upper="${PI*10000}" velocity="0" effort="0"/>
</joint>
This gets the wheels working, and the same limit values with the continuous joint settings also works, but for some reason, the entire system isn't moving in a straight line. There is some kind of skid introduced which I'm not able to figure out. I have added a video labeled "system_skid" in the same drive folder for reference (https://drive.google.com/drive/folder...)
Please help investigate the issue.
Unfortunately, I don't have an immediate explanation, but I suspect it's an instability caused by the several uncontrolled and noncompliant contact points with the ground. One quick test would be to move the
...cart_wheel_link
collisions vertically by a small amount, sayxyz="0 0 0.0001"
. I assume the robot itself is fine since its wheels are controlled.@tryan, you are indeed correct. 0.0001 was a little too much as the wheels didn't remain in contact with the ground but 0.00001 works for now. And yes, the robot itself has no issues. I think the problem is solved for now until I encounter another problem. Thank you for the help. Also, do you have any idea why the continuous joints started working/rotating after I added limits to the joint definition?
According to the wiki,
limit
is only required for prismatic and revolute joints, which seems to be confirmed by the SDF parsing source code, so I'm not sure.