| 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/