Continuous joints don't rotate/work

asked 2021-02-02 08:25:57 -0500

hanks gravatar image

updated 2021-02-03 08:05:02 -0500

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.

edit retag flag offensive close merge delete

Comments

1

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, say xyz="0 0 0.0001". I assume the robot itself is fine since its wheels are controlled.

tryan gravatar image tryan  ( 2021-02-03 10:43:41 -0500 )edit

@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?

hanks gravatar image hanks  ( 2021-02-04 00:49:11 -0500 )edit

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.

tryan gravatar image tryan  ( 2021-02-04 10:08:26 -0500 )edit