Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gazebo: add OmniRover with Mecanum wheels #139

Merged
merged 8 commits into from
Sep 25, 2024

Conversation

srmainwaring
Copy link
Collaborator

@srmainwaring srmainwaring commented Jul 11, 2024

Add two omni rover frames using Mecanum wheels: a 4 wheel rover with frame type OmniX (FRAME_TYPE = 3), and a 3 wheel rover that uses a new frame type Omni3Mecanum.

Figure: 4 wheel rover using frame type OmniX.
omnirover

Figure: 3 wheel rover using frame type Omni3Mecanum.
omni3rover

Alternatives considered

The Gazebo model repo contains a Mecanum Lift. This model includes a planar controller plugin to move the model about in response to a planar twist command. The approach here is different in that the Mecaum wheels are modelled directly using 9 spheroid rollers in each wheel. There are models for left and right wheels that may be imported into another model using the SDF <include> element. This permits different geometries to be assembled, and allows the ArduPilot plugin to control each wheel directly by assigning it to a PWM channel.

Figure: Mecanum wheel detail displaying roller joints.
mecanum_wheel

Related issues and discussion

Usage

Run Gazebo

gz sim -v4 -s -r omnirover_playpen.sdf

Run SITL

sim_vehicle.py -v Rover --model JSON --add-param-file=$HOME/SITL_Models/Gazebo/config/omni4rover.param --console --map

Once armed, set the mode to MANUAL and control as follows:

Channel Low High
rc 1 yaw left yaw right
rc 2 not assigned
rc 3 move back move forward
rc 4 move left move right

Figure: omni rover moving laterally
omnirover_3

@srmainwaring srmainwaring marked this pull request as draft July 11, 2024 23:00
@srmainwaring srmainwaring self-assigned this Jul 12, 2024
- Add left Mecanum wheel.
- Add right Mecanum wheel.
- Update damping and friction.
- Update surface friction.
- Fix wheel joint limits.
- Fix formatting / indent.
- Align roller visual mesh with poles along z-axis.
- Use spheres for roller collision meshes.
- DART and ODE do not support ellipsoid collisions natively.
- Sphere collision meshes are much faster.

Signed-off-by: Rhys Mainwaring <[email protected]>
- Add OmniX rover.
- Fix rover joint limits.
- Fix wheel orientation.
- Standardise topic names.
- Update joint controller gains.
- Enable ArduPilot plugin.
- Fix channel for front right wheel.
- Increase base link mass to 1.5kg.
- Increase max velocity to 2.3 m/s
- Rename model
- Add readme

Signed-off-by: Rhys Mainwaring <[email protected]>
Signed-off-by: Rhys Mainwaring <[email protected]>
@srmainwaring srmainwaring force-pushed the prs/pr-omnirover branch 2 times, most recently from 1a6fd0e to e9ff5a9 Compare July 15, 2024 22:28
Signed-off-by: Rhys Mainwaring <[email protected]>
- Add Omni3 rover with Mecanum wheels.
- Use three left wheels for Omni3 rover

Signed-off-by: Rhys Mainwaring <[email protected]>
Signed-off-by: Rhys Mainwaring <[email protected]>
Signed-off-by: Rhys Mainwaring <[email protected]>
Signed-off-by: Rhys Mainwaring <[email protected]>
@srmainwaring srmainwaring marked this pull request as ready for review July 15, 2024 22:48
@srmainwaring srmainwaring merged commit 347b9b9 into ArduPilot:master Sep 25, 2024
@srmainwaring srmainwaring deleted the prs/pr-omnirover branch September 25, 2024 19:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant