- Home /
Problem is outdated
Using custom accelerometer, gyro & magnetometer to move objects
Hello, So, here's my problem: I am using 2 9 DoF (3X Accel, 3X Gyro, 3X Mag) modules to implement a motion capture billiards game. In order to control the cue, I need to assign the readings to transformation of my Cue GameObject. My sensors give me linear and angular accelerations in real values (m/sec^2 and rad/sec^2). I am really stuck as I have programmed the entire driver for the sensors and the game, but I couldn't integrate the two parts.
Does anyone have any idea as to how I can apply this data to control the cue? Any kind of help is appreciated.
How do I make a player shoot right and left 2D platformer firing left and right, help! using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityStandardAssets.CrossPlatformInput;
public class movo : $$anonymous$$onoBehaviour { float bulletSpeed = 500f; public Animator anim; public Transform barrel; public Rigidbody2D bullet; private Rigidbody2D rb; private bool moveLeft; private bool moveRight; private float horizontal$$anonymous$$ove; public float speed = 5; public SpriteRenderer sp;
 private void Start()
 {
     anim = GetComponent<Animator>();
     rb = GetComponent<Rigidbody2D>();
     sp = GetComponent<SpriteRenderer>();
 
     moveLeft = false;
     moveRight = false;
 }
 
 public void PointerDownLeft()
 {
     anim.SetBool("run", true);
     moveLeft = true;
 }
 
 public void PointerUpLeft()
 {
     anim.SetBool("run", false);
     moveLeft = false;
 }
 
 public void PointerDownRight()
 {
     anim.SetBool("run", true);
     moveRight = true;
 }
 
 public void PointerUpRight()
 {
     anim.SetBool("run", false);
     moveRight = false;
 }
 
 void Update()
 {
     $$anonymous$$ovementPlayer();
     if (CrossPlatformInput$$anonymous$$anager.GetButtonDown ("Fire1"))
         Fire ();
 }
 
 void $$anonymous$$ovementPlayer()
 {
     if (moveLeft)
     {
         sp.flipX = true;
         horizontal$$anonymous$$ove = -speed;
     }
 
     else if (moveRight)
     {
         sp. flipX = false;
         horizontal$$anonymous$$ove = speed;
     }
 
     else
     {
         horizontal$$anonymous$$ove = 0;
     }
 }
 
 private void FixedUpdate()
 {
     rb.velocity = new Vector2(horizontal$$anonymous$$ove, rb.velocity.y);
 }
 void Fire()
 {
     var firedBullet = Instantiate (bullet, barrel.position, barrel.rotation);
     firedBullet.AddForce (barrel.up * bulletSpeed);
 }
}
Answer by avr · Jul 12, 2014 at 03:08 AM
The best way to do it is using sensor fusion methods based on unscented Kalman filters/ sigma point filters
Note: you need accurate time stamps of all measurements.
this may be helpful for a start, though based on extended Kalman filter instead of unscented https://github.com/ethz-asl/ethzasl_sensor_fusion
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Match Object (Main Camera) To Gyroscope Rotation Rate 1 Answer
Accelerometer Quick Question(Moving Up and Down?) 1 Answer
What is the best way to steer the direction of a sphere in 3D space on an iPad? 0 Answers
3D: how to avoid jerks in a character movement using accelerometer 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                