Gazebo: Helicopter: add models for rotor head and helicopter#149
Open
srmainwaring wants to merge 1 commit intoArduPilot:masterfrom
Open
Gazebo: Helicopter: add models for rotor head and helicopter#149srmainwaring wants to merge 1 commit intoArduPilot:masterfrom
srmainwaring wants to merge 1 commit intoArduPilot:masterfrom
Conversation
RotorHead - Adjust pose of model in world - Add further links and joints. - Add lever coupling links and joints. - Simplify collisions. - Compose ball joint from 2 revolute joints. - Simplify collisions for linkages. - Ensure all ball joints have 3DoF - Add servo linkage visuals. - Limit movement of lever joints. - Lever coupling top joints are revolute, not ball. - Add guide rod and retainer to prevent lower swashplate rotation. - Update friction and damping. - Recompute ball joint inertials. - Add servos and rods. - Update joint damping. - Update link and joint names. - Align swashplate joints. - Replace collision guide with joints. - Add rotor blades. - Add lift-drag plugins. - Correct joint orientations. - Reorient servo links. - Reduce mass of rotor head. - Adjust rotor lift-drag. - Rename rotor head model - Add ccw version of rotor head. - Update orientation in ccw rotor head. - Velocity controllers were not using force and PIDs - Update PIDs for joint and position controllers. - Fit lift-drag coefficients to NACA0012 profile. - Add blade visuals for CW and CCW rotors. - Move servo2 to be near centre of rotor head. - Remove debug info. - Remove debug colours of servo rods and joints. - Add credit for visuals Helicopter - Add helicopter model in world. - Add tail rotor. - Add stabiliser bars and wheels. - Add ArduPilot plugin. - Swap servo_1 and servo_3 to be consistent with AP ordering. - Adjust CoG. - Adjust IMU position to main rotor. - Add separate model and config files. - Use standalone model for helicopter. - Place on runway model. - Rename helicopter world - Update to SDF version 1.11 - Add intermeshing dual rotor example. - Add meshes. - Increase friction on stabilizers. - Correct orientation of tail rotor blade visual and collision. - Correct dual heli control elements. - Increase mass of base link for dual heli. - Add params for dual transverse helicopter. - Add gimbal for testing attitude control. - Allow blades to flap on rotor heads - This is essential for correct operation. - Blades hinge at blade grips with range +/- 8 deg. - Adjust blade flapping damping and spring constant. - Remove oscillation / resonance when rolling at higher collective. - Reduce blade hinge spring stiffness. - Set ball joint properties - Use gazebosim/gz-physics#753 - Set physics params in detachable joints - Use gazebosim/gz-physics#754 - Use gazebosim/gz-sim#2960 - Adjust flapping hinge position - Move hinge towards rotor hub. - This position gives a flapping lag of about 80 deg behind the blade pitch. - Retune ATC_RAT PIDs for flapping blades. - Add visuals for frame and rotors - Add mesh visuals based on TRex-450. - Remove stabilising links and wheels. - Reposition tail rotor to match rescaled model. - Update rotor velocity command topic. - Add config for the ros_gz bridge - Retune model for adjusted CoM and tail position - Add credit for visuals Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
076cce7 to
58b9e68
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a Gazebo model for a traditional helicopter with functioning swash plate and rotor head.
The model is a slightly scaled up version of a T-Rex 450 (1.75x). This is mainly because the CAD model for the rotor head is slightly oversize for the to-scale T-Rex 450, and as it is the most complex mechanical component it is simpler to scale the frame up than the rotor-head down.
Testing
The simulation was tested on the following systems:
Gazebo pre-requisites
This model uses some more advanced features from the Gazebo physics library that are not yet released in standard distributions of Gazebo. The model will not be stable without them (it will load, but the model will not operate correctly).
Until the features have been released it is necessary to build Gazebo (Harmonic or Ionic) from source and include the patches below by cherry-picking the commits into
gz-physicsandgz-sim:Usage
Ensure the
GZ_SIM_RESOURCE_PATHis updated to include these models:Run Gazebo
Run ArduPilot SITL
sim_vehicle.py -v ArduCopter -f helicopter --model json --add-param-file=$HOME/SITL_Models/Gazebo/config/helicopter.param --console --mapThe model operates as a traditional helicopter with RC 3 controlling collective and RC 8 the motor interlock. RC 1 is roll cyclic, RC 2 pitch cyclic and RC 4 yaw via tail rotor.
Credits
The visuals for the rotor head and frame were derived from the following CAD models:
Permission to use the models in a derived work has been sought.