- 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