How to simulate and command a steerable wheel?
Hello to everyone, I'm very new in Gazebo and I was wondering if you could help me with the following:
I'm a trying to simulate a simple mobile base like in the picture below:
I would like to create 2 revolute joints for the front wheel (steerable wheel), one joint around 'z' axis of the wheel which would simulate the robot propulsion( TRACTION )and one joint around the 'y' axis of the wheel (DIRECTION) which would simulate the steering. This is typically the case of an industrial AGV. However when I create a 2 joints with the same parent and child, none of them work.
I can either have the steering or the propulsion but I can't have both at the same time. Is there any other way to simulate this case ?.
Thanks in advance.
Asked by parevalosiles on 2020-02-28 05:29:31 UTC
Answers
You cannot have two joints with the same parents and child. To solve this problem, you will need to create an additional link that acts as a hinge. Firstly, create a joint between the body of the vehicle and the hinge link. This joint will be of kind 'revolute' and responsible for steering. Secondly create a joint between the hinge link and the wheel, this joint will be of kind 'continuous' and responsible for robot propulsion. Simple Example:
<link name='robot_body'/>
<link name='front_wheel_hinge'/>
<link name='front_wheel'/>
<joint name="steering_joint" type="revolute">
<origin rpy="0 0 0" xyz="* * *"/>
<parent link="robot_body"/>
<child link="front_wheel_hinge"/>
<axis xyz="0 0 -1"/>
<limit lower="-0.63" upper="0.63" effort="10" velocity="100"/>/>
</joint>
<joint name="propulsion_joint" type="continuous">
<origin rpy="0 0 0" xyz="-0.08 0 0"/>
<parent link="front_wheel_hinge"/>
<child link="front_wheel"/>
<axis xyz="0 -1 0"/>
<limit effort="10" velocity="100"/>
</joint>
Asked by zokowc on 2020-02-28 17:05:59 UTC
Comments