| Title: | Estimate Orientation of an Inertial Measurement Unit | 
| Version: | 0.6.0 | 
| Description: | Estimate the orientation of an inertial measurement unit (IMU) with a 3-axis accelerometer and a 3-axis gyroscope using a complementary filter. 'imuf' takes an IMU's accelerometer and gyroscope readings, time duration, its initial orientation, and a gain factor as inputs, and returns an estimate of the IMU's final orientation. | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| LinkingTo: | Rcpp, RcppEigen | 
| Imports: | htmltools, htmlwidgets, Rcpp | 
| Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0), purrr, ggplot2, shiny, serial, stringr | 
| Config/testthat/edition: | 3 | 
| URL: | https://github.com/gitboosting/imuf, https://gitboosting.github.io/imuf/ | 
| BugReports: | https://github.com/gitboosting/imuf/issues | 
| Depends: | R (≥ 2.10) | 
| LazyData: | true | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | yes | 
| Packaged: | 2025-02-12 15:07:36 UTC; mkcha | 
| Author: | Felix Chan [aut, cre, cph], Ricardo Cabello [cph] ('three.js' JavaScript library) | 
| Maintainer: | Felix Chan <chanfelix@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-02-12 15:30:06 UTC | 
imuf: Estimate Orientation of an Inertial Measurement Unit
Description
Estimate the orientation of an inertial measurement unit (IMU) with a 3-axis accelerometer and a 3-axis gyroscope using a complementary filter. 'imuf' takes an IMU's accelerometer and gyroscope readings, time duration, its initial orientation, and a gain factor as inputs, and returns an estimate of the IMU's final orientation.
Author(s)
Maintainer: Felix Chan chanfelix@gmail.com [copyright holder]
Other contributors:
Ricardo Cabello ('three.js' JavaScript library) [copyright holder]
See Also
Useful links:
Report bugs at https://github.com/gitboosting/imuf/issues
Animate movement of an inertial measurement unit
Description
Create interactive animated movements of an inertial measurement unit
Usage
animate_imu(data, dt, width = NULL, height = NULL, elementId = NULL)
Arguments
data | 
 A   | 
dt | 
 A numeric of time duration in milli-seconds  | 
width, height | 
 width and height of animate_imu htmlwidget
specified in any valid   | 
elementId | 
 
  | 
Shiny bindings for animate_imu
Description
Output and render functions for using animate_imu within Shiny applications and interactive Rmd documents.
Usage
animate_imuOutput(outputId, width = "100%", height = "400px")
renderAnimate_imu(expr, env = parent.frame(), quoted = FALSE)
Arguments
outputId | 
 output variable to read from  | 
width, height | 
 Must be a valid CSS unit (like   | 
expr | 
 An expression that generates a animate_imu  | 
env | 
 The environment in which to evaluate   | 
quoted | 
 Is   | 
Update orientation with 3-axis acc and gyr data
Description
compUpdate() uses complementary filtering to update the orientation, given
an initial orientation, readings of a 3-axis accelerometer and a 3-axis
gyroscope. time duration, and a gain factor
Usage
compUpdate(acc, gyr, dt, initQuat, gain)
Arguments
acc | 
 A numeric 3-vector of 3-axis accelerometer readings in g  | 
gyr | 
 A numeric 3-vector of 3-axis gyroscope readings in rad/sec  | 
dt | 
 A numeric of time duration in sec  | 
initQuat | 
 A numeric 4-vector of the starting orientation in quaternion  | 
gain | 
 A numeric gain factor between 0 and 1  | 
Value
A numeric 4-vector of the ending orientation in quaternion
Examples
compUpdate(c(0, 0, -1), c(1, 0, 0), 0.1, c(1, 0, 0, 0), 0.1)
Animate in real time movement of an inertial measurement unit in shiny
Description
Create in real time animated movements of an inertial measurement unit in shiny
Usage
imu_object(data = c(1, 0, 0, 0), width = NULL, height = NULL, elementId = NULL)
Arguments
data | 
 A   | 
width, height | 
 width and height of imu_object htmlwidget
specified in any valid   | 
elementId | 
 
  | 
Shiny bindings for imu_object
Description
Output and render functions for using imu_object within Shiny applications and interactive Rmd documents.
Usage
imu_objectOutput(outputId, width = "100%", height = "400px")
renderImu_object(expr, env = parent.frame(), quoted = FALSE)
Arguments
outputId | 
 output variable to read from  | 
width, height | 
 Must be a valid CSS unit (like   | 
expr | 
 An expression that generates a imu_object  | 
env | 
 The environment in which to evaluate   | 
quoted | 
 Is   | 
Update a widget in shiny with an orientation
Description
Pair of functions used in conjunction to update a imu_object widget
Usage
imu_proxy(id, session = shiny::getDefaultReactiveDomain())
imu_send_data(proxy, data)
Arguments
id | 
 HTML element id that houses the html widget  | 
session | 
 shiny session - default to current session  | 
proxy | 
 imu_proxy output to be used as input to imu_send_data  | 
data | 
 a numeric unit 4-vector (quaternion) for the updated orientation  | 
Rotate a 3-vector by a quaternion
Description
rotV() rotates a 3-vector by a quaternion expressed as a unit 4-vector in
(w,x,y,z) convention
Usage
rotV(quat, vin)
Arguments
quat | 
 A numeric unit 4-vector (w,x,y,z) for a rotation quaternion  | 
vin | 
 A numeric 3-vector to be rotated by quat  | 
Value
A numeric 3-vector after the rotation
Examples
q <- c(cos(pi/4), sin(pi/4), 0, 0)
vin <- c(0, 1, 0)
rotV(q, vin)
University of Mannheim Real World Activities
Description
Accelerations and angular velocities captured by sensors of the mobile device situated on the shin of subject 1 while the subject was walking for 10 minutes
Usage
walking_shin_1
Format
walking_shin_1
A data frame with 31,946 rows and 6 columns of accelerometer and gyroscope measurements at 50 Hz
- acc_x, acc_y, acc_z
 north, east and down acceleration in m/s^2
- gyr_x, gyr_y, gyr_z
 angular velocity about north, east and down in rad/sec
Source
https://www.uni-mannheim.de/dws/research/projects/activity-recognition/dataset/dataset-realworld/s1/