massprop_birdwing {AvInertia}R Documentation

Calculate the center of gravity and moment of inertia for a halfspan wing.

Description

Function that reads in anatomical data and returns the moment of inertia tensor and center of gravity of a wing one side of the bird.

Usage

massprop_birdwing(
  dat_wingID_curr,
  dat_bird_curr,
  dat_bone_curr,
  dat_feat_curr,
  dat_mat_curr,
  clean_pts,
  feather_inertia,
  plot_var
)

Arguments

dat_wingID_curr

Dataframe related to the current bird wing ID info that must include the following columns:

  • speciesSpecies ID code as a string.

  • BirdIDBird ID code as a string.

  • TestIDTest ID code as a string.

  • frameIDVideo frame ID code as a string.

dat_bird_curr

Dataframe related to the current bird wing that must include the following columns:

  • total_bird_massMass of full bird for the current wing (kg).

  • wing_massMass of one wing, should be the current wing (kg).

  • barb_radiusRadius of feather barb for current species (m).

  • barb_distanceDistance between feather barbs for current species (m).

  • brachial_muscle_massMass of all muscles in the brachial region of the wing (kg).

  • antebrachial_muscle_massMass of all muscles in the antebrachial region of the wing (kg).

  • manus_muscle_massMass of all muscles in the manus region of the wing (kg).

  • all_skin_coverts_massMass of all skin and covert feathers (kg).

  • tertiary_massMass of tertiary feathers (kg).

dat_bone_curr

Dataframe (6 row x 5 column) related to the current bird wing bones that must include the following columns:

  • boneBone ID code. Must include: "Humerus","Ulna","Radius","Carpometacarpus","Ulnare" and "Radiale".

  • bone_massMass of bone in the same row as the appropriate bone ID code (kg).

  • bone_lenLength of bone in the same row as the appropriate bone ID code (m).

  • bone_out_radOuter radius of bone in the same row as the appropriate bone ID code (m).

  • bone_in_radInner radius of bone in the same row as the appropriate bone ID code (m).

dat_feat_curr

Dataframe related to the current bird wing feathers input as a dataframe with the following structure:

  • featherFeather ID code. Must be in standard format i.e. 1st primary is "P1", third secondary is "S3", etc. Alula feathers should be grouped and named "alula".

  • m_fMass of feather in the same row as the appropriate feather ID code (kg).

  • l_calLength of calamus in the same row as the appropriate feather ID code (m).

  • l_vaneLength of rachis/vane in the same row as the appropriate feather ID code (m).

  • w_calWidth (diameter) of calamus in the same row as the appropriate feather ID code (m).

  • w_vpWidth of proximal vane (average value) in the same row as the appropriate feather ID code (m).

  • w_vdWidth of distal vane (average value) in the same row as the appropriate feather ID code (m).

  • vane_angleInterior angle between the rachis and calamus (degrees).

NOTE: Alula feathers will be treated as point mass so only the mass of the feathers is required. Other columns can be left blank.

dat_mat_curr

Dataframe related to the current species input as a dataframe with the following structure:

  • materialMaterial information. Must include the following: "Bone","Skin","Muscle","Cortex", "Medullary"

  • densityDensity of each material (kg/m^3).

clean_pts

A data frame of the key positions of the bird as follows:

  • pt1x, pt1y, pt1zPoint on the shoulder joint (m).

  • pt2x, pt1y, pt2zPoint on the elbow joint (m).

  • pt3x, pt3y, pt3zPoint on the wrist joint (m).

  • pt4x, pt4y, pt4zPoint on the end of carpometacarpus (m).

  • pt6x, pt6y, pt6zPoint on the leading edge of the wing in front of the wrist joint (m).

  • pt8x, pt8y, pt8zPoint on tip of most distal primary (m).

  • pt9x, pt9y, pt9zPoint on the tip of the last primary to model as if it is on the end of the carpometacarpus (m).

  • pt10x, pt10y, pt10zPoint on tip of last primary to model as if it was distributed along the carpometacarpus (m).

  • pt11x, pt11y, pt11zPoint on tip of most proximal feather (m).

  • pt12x, pt12y, pt12zPoint on exterior shoulder position (wing root leading edge) (m).

feather_inertia

A list with one entry per flight feather. Each primary feather includes the following variables:

  • I_pria 3x3 matrix representing the moment of inertia about each feather calamus tip (kg-m^2).

  • CG_pria 1x3 vector (x,y,z) representing the center of gravity of the primary feather (m).

  • m_pria double representing the mass of the primary feather (kg).

Each secondary feather includes the following variables:

  • I_seca 3x3 matrix representing the moment of inertia about each feather calamus tip (kg-m^2).

  • CG_seca 1x3 vector (x,y,z) representing the center of gravity of the primary feather (m).

  • m_seca double representing the mass of the primary feather (kg).

plot_var

A string that defines the x-axis and y-axis of the output plot. Can either equal "yx" or "yz".

Value

Function returns a dataframe that includes the moment of inertia and center of gravity of one wing about the VRP in the VRP frame and that of each major anatomical group i.e. skin, feathers, bones, muscles.

CAUTION

All points must all have the vehicle reference point (VRP) as their origin and the vehicle major axes as their frame of reference. This is normally selected so that the VRP is in line with the body center of gravity. Ensure the axes used represent a right-handed axis system.

Author(s)

Christina Harvey

Examples

# refer to the vignette
library(AvInertia)

# load data
data(dat_id_curr, package = "AvInertia")
data(dat_bird_curr, package = "AvInertia")
data(dat_feat_curr, package = "AvInertia")
data(dat_bone_curr, package = "AvInertia")
data(dat_mat, package = "AvInertia")
data(clean_pts, package = "AvInertia")

# 1. Determine the center of gravity of the bird's torso (including the legs)
dat_torsotail_out = massprop_restbody(dat_id_curr, dat_bird_curr)
# 2. Calculate the inertia of the flight feathers about the tip of the calamus
feather_inertia <- compute_feat_inertia(dat_mat, dat_feat_curr, dat_bird_curr)
# 3. Determine the center of gravity of one of the bird's wings
dat_wing_out      = massprop_birdwing(dat_id_curr, dat_bird_curr,
dat_bone_curr, dat_feat_curr, dat_mat, clean_pts,
feather_inertia, plot_var = 0)
# Visualize the center of gravity of each wing component in the x and y axis
dat_wing_out      = massprop_birdwing(dat_id_curr, dat_bird_curr,
dat_bone_curr, dat_feat_curr, dat_mat, clean_pts,
feather_inertia, plot_var = "yx")
# or the y and z axis
dat_wing_out      = massprop_birdwing(dat_id_curr, dat_bird_curr,
dat_bone_curr, dat_feat_curr, dat_mat, clean_pts,
feather_inertia, plot_var = "yz")
# 4. Combine all data and obtain the center of gravity, moment of inertia
# and principal axes of the bird
curr_full_bird      = combine_inertialprop(dat_torsotail_out,dat_wing_out,
dat_wing_out, dat_id_curr, dat_bird_curr, symmetric=TRUE)


[Package AvInertia version 0.0.2 Index]