amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 28915|回复: 223

国外Bicraze开源微型四轴全部资料

  [复制链接]
发表于 2013-5-26 14:54:20 | 显示全部楼层 |阅读模式
本帖最后由 zhaochuanyuAVR 于 2013-5-26 16:52 编辑

    刚刚搜到的,希望能给大家提供个参考!以下是官网网址:
http://www.bitcraze.se/2013/02/pre-order-has-started/


http://v.youku.com/v_show/id_XNTEwODM4MzEy.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-7-1 02:26:25 | 显示全部楼层
最核心的,姿态融合,代码如下


#include "stm32f10x_conf.h"
#include <math.h>

#include "sensfusion6.h"
#include "imu.h"

//#define MADWICK_QUATERNION_IMU

#ifdef MADWICK_QUATERNION_IMU
  #define BETA_DEF     0.01f    // 2 * proportional gain
#else // MAHONY_QUATERNION_IMU
    #define TWO_KP_DEF  (2.0f * 0.8f) // 2 * proportional gain
    #define TWO_KI_DEF  (2.0f * 0.001f) // 2 * integral gain
#endif

#ifdef MADWICK_QUATERNION_IMU
  float beta = BETA_DEF;     // 2 * proportional gain (Kp)
#else // MAHONY_QUATERNION_IMU
  float twoKp = TWO_KP_DEF;    // 2 * proportional gain (Kp)
  float twoKi = TWO_KI_DEF;    // 2 * integral gain (Ki)
  float integralFBx = 0.0f;
  float integralFBy = 0.0f;
  float integralFBz = 0.0f;  // integral error terms scaled by Ki
#endif

float q0 = 1.0f;
float q1 = 0.0f;
float q2 = 0.0f;
float q3 = 0.0f;  // quaternion of sensor frame relative to auxiliary frame

static bool isInit;

// TODO: Make math util file
static float invSqrt(float x);

void sensfusion6Init()
{
  if(isInit)
    return;

  isInit = TRUE;
}

bool sensfusion6Test(void)
{
  return isInit;
}


#ifdef MADWICK_QUATERNION_IMU
// Implementation of Madgwick's IMU and AHRS algorithms.
// See: http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms
//
// Date     Author          Notes
// 29/09/2011 SOH Madgwick    Initial release
// 02/10/2011 SOH Madgwick  Optimised for reduced CPU load
void sensfusion6UpdateQ(float gx, float gy, float gz, float ax, float ay, float az, float dt)
{
  float recipNorm;
  float s0, s1, s2, s3;
  float qDot1, qDot2, qDot3, qDot4;
  float _2q0, _2q1, _2q2, _2q3, _4q0, _4q1, _4q2 ,_8q1, _8q2, q0q0, q1q1, q2q2, q3q3;

  // Rate of change of quaternion from gyroscope
  qDot1 = 0.5f * (-q1 * gx - q2 * gy - q3 * gz);
  qDot2 = 0.5f * (q0 * gx + q2 * gz - q3 * gy);
  qDot3 = 0.5f * (q0 * gy - q1 * gz + q3 * gx);
  qDot4 = 0.5f * (q0 * gz + q1 * gy - q2 * gx);

  // Compute feedback only if accelerometer measurement valid (avoids NaN in accelerometer normalisation)
  if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f)))
  {
    // Normalise accelerometer measurement
    recipNorm = invSqrt(ax * ax + ay * ay + az * az);
    ax *= recipNorm;
    ay *= recipNorm;
    az *= recipNorm;

    // Auxiliary variables to avoid repeated arithmetic
    _2q0 = 2.0f * q0;
    _2q1 = 2.0f * q1;
    _2q2 = 2.0f * q2;
    _2q3 = 2.0f * q3;
    _4q0 = 4.0f * q0;
    _4q1 = 4.0f * q1;
    _4q2 = 4.0f * q2;
    _8q1 = 8.0f * q1;
    _8q2 = 8.0f * q2;
    q0q0 = q0 * q0;
    q1q1 = q1 * q1;
    q2q2 = q2 * q2;
    q3q3 = q3 * q3;

    // Gradient decent algorithm corrective step
    s0 = _4q0 * q2q2 + _2q2 * ax + _4q0 * q1q1 - _2q1 * ay;
    s1 = _4q1 * q3q3 - _2q3 * ax + 4.0f * q0q0 * q1 - _2q0 * ay - _4q1 + _8q1 * q1q1 + _8q1 * q2q2 + _4q1 * az;
    s2 = 4.0f * q0q0 * q2 + _2q0 * ax + _4q2 * q3q3 - _2q3 * ay - _4q2 + _8q2 * q1q1 + _8q2 * q2q2 + _4q2 * az;
    s3 = 4.0f * q1q1 * q3 - _2q1 * ax + 4.0f * q2q2 * q3 - _2q2 * ay;
    recipNorm = invSqrt(s0 * s0 + s1 * s1 + s2 * s2 + s3 * s3); // normalise step magnitude
    s0 *= recipNorm;
    s1 *= recipNorm;
    s2 *= recipNorm;
    s3 *= recipNorm;

    // Apply feedback step
    qDot1 -= beta * s0;
    qDot2 -= beta * s1;
    qDot3 -= beta * s2;
    qDot4 -= beta * s3;
  }

  // Integrate rate of change of quaternion to yield quaternion
  q0 += qDot1 * dt;
  q1 += qDot2 * dt;
  q2 += qDot3 * dt;
  q3 += qDot4 * dt;

  // Normalise quaternion
  recipNorm = invSqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
  q0 *= recipNorm;
  q1 *= recipNorm;
  q2 *= recipNorm;
  q3 *= recipNorm;
}
#else // MAHONY_QUATERNION_IMU
// Madgwick's implementation of Mayhony's AHRS algorithm.
// See: http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms
//
// Date     Author      Notes
// 29/09/2011 SOH Madgwick    Initial release
// 02/10/2011 SOH Madgwick  Optimised for reduced CPU load
void sensfusion6UpdateQ(float gx, float gy, float gz, float ax, float ay, float az, float dt)
{
  float recipNorm;
  float halfvx, halfvy, halfvz;
  float halfex, halfey, halfez;
  float qa, qb, qc;

  gx = gx * M_PI / 180;
  gy = gy * M_PI / 180;
  gz = gz * M_PI / 180;

  // Compute feedback only if accelerometer measurement valid (avoids NaN in accelerometer normalisation)
  if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f)))
  {
    // Normalise accelerometer measurement
    recipNorm = invSqrt(ax * ax + ay * ay + az * az);
    ax *= recipNorm;
    ay *= recipNorm;
    az *= recipNorm;

    // Estimated direction of gravity and vector perpendicular to magnetic flux
    halfvx = q1 * q3 - q0 * q2;
    halfvy = q0 * q1 + q2 * q3;
    halfvz = q0 * q0 - 0.5f + q3 * q3;

    // Error is sum of cross product between estimated and measured direction of gravity
    halfex = (ay * halfvz - az * halfvy);
    halfey = (az * halfvx - ax * halfvz);
    halfez = (ax * halfvy - ay * halfvx);

    // Compute and apply integral feedback if enabled
    if(twoKi > 0.0f)
    {
      integralFBx += twoKi * halfex * dt;  // integral error scaled by Ki
      integralFBy += twoKi * halfey * dt;
      integralFBz += twoKi * halfez * dt;
      gx += integralFBx;  // apply integral feedback
      gy += integralFBy;
      gz += integralFBz;
    }
    else
    {
      integralFBx = 0.0f; // prevent integral windup
      integralFBy = 0.0f;
      integralFBz = 0.0f;
    }

    // Apply proportional feedback
    gx += twoKp * halfex;
    gy += twoKp * halfey;
    gz += twoKp * halfez;
  }

  // Integrate rate of change of quaternion
  gx *= (0.5f * dt);   // pre-multiply common factors
  gy *= (0.5f * dt);
  gz *= (0.5f * dt);
  qa = q0;
  qb = q1;
  qc = q2;
  q0 += (-qb * gx - qc * gy - q3 * gz);
  q1 += (qa * gx + qc * gz - q3 * gy);
  q2 += (qa * gy - qb * gz + q3 * gx);
  q3 += (qa * gz + qb * gy - qc * gx);

  // Normalise quaternion
  recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
  q0 *= recipNorm;
  q1 *= recipNorm;
  q2 *= recipNorm;
  q3 *= recipNorm;
}
#endif

void sensfusion6GetEulerRPY(float* roll, float* pitch, float* yaw)
{
  float gx, gy, gz; // estimated gravity direction

  gx = 2 * (q1*q3 - q0*q2);
  gy = 2 * (q0*q1 + q2*q3);
  gz = q0*q0 - q1*q1 - q2*q2 + q3*q3;

  *yaw = atan2(2*q1*q2 - 2*q0*q3, 2*q0*q0 + 2*q1*q1 - 1) * 180 / M_PI;
  *pitch = atan(gx / sqrt(gy*gy + gz*gz)) * 180 / M_PI;
  *roll = atan(gy / sqrt(gx*gx + gz*gz)) * 180 / M_PI;
}

//---------------------------------------------------------------------------------------------------
// Fast inverse square-root
// See: http://en.wikipedia.org/wiki/Fast_inverse_square_root
float invSqrt(float x)
{
  float halfx = 0.5f * x;
  float y = x;
  long i = *(long*)&y;
  i = 0x5f3759df - (i>>1);
  y = *(float*)&i;
  y = y * (1.5f - (halfx * y * y));
  return y;
}
发表于 2013-8-7 09:58:53 | 显示全部楼层
pcb图片,四层最后检查后做板子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-5-26 15:04:00 | 显示全部楼层
这个不错~
发表于 2013-5-26 16:08:04 | 显示全部楼层
飞得好灵活,帅啊
发表于 2013-5-26 16:19:32 | 显示全部楼层
本帖最后由 godlike438 于 2013-5-26 16:23 编辑

再帮你传个东西吧                                                                                    

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2013-5-26 16:39:07 | 显示全部楼层
godlike438 发表于 2013-5-26 16:19
再帮你传个东西吧                                                                                     ...

都是无私的兄弟啊!
 楼主| 发表于 2013-5-26 16:39:38 | 显示全部楼层
godlike438 发表于 2013-5-26 16:19
再帮你传个东西吧                                                                                     ...

都是无私的兄弟啊!
发表于 2013-5-26 17:17:37 | 显示全部楼层
看了,就是开发环境太复杂了。要是出来个ARM-MDK开发环境的程序就好了。
发表于 2013-5-26 22:33:07 | 显示全部楼层
-00这个‘是’好
发表于 2013-5-26 22:36:02 | 显示全部楼层
感谢分享
发表于 2013-5-26 23:53:22 来自手机 | 显示全部楼层
这个必须顶,,不过貌似以前也有人共享了这个
发表于 2013-5-27 00:02:22 | 显示全部楼层
niuren   bangding a  
发表于 2013-5-27 00:24:09 来自手机 | 显示全部楼层
很不错呀!顶个
发表于 2013-5-27 01:00:18 来自手机 | 显示全部楼层
留名,明天电脑看
发表于 2013-5-27 08:30:39 | 显示全部楼层
睇下能用上不~~
发表于 2013-5-28 09:59:34 | 显示全部楼层
他们这个没有用IDE,直接用Linux的gcc编译的么?
发表于 2013-5-28 10:06:08 来自手机 | 显示全部楼层
我试着装了stm32 的编译链,但是编译不通过 ,操
发表于 2013-5-28 10:15:01 | 显示全部楼层
实在厉害,顶起啊
发表于 2013-5-28 10:23:06 | 显示全部楼层
漂亮                    
发表于 2013-5-28 10:23:09 | 显示全部楼层
发表于 2013-5-28 10:45:39 | 显示全部楼层
学习了。。。
发表于 2013-5-30 09:16:20 | 显示全部楼层
国外Bicraze开源微型四轴
发表于 2013-5-30 09:50:01 | 显示全部楼层
关注,标记
发表于 2013-5-30 10:05:47 | 显示全部楼层
不错,顶一下
发表于 2013-5-30 10:44:58 | 显示全部楼层
好东西  谢了
发表于 2013-5-30 12:40:26 来自手机 | 显示全部楼层
Mark…
来自:amoBBS 阿莫电子论坛 Windows Phone 7 客户端
发表于 2013-5-30 12:52:56 来自手机 | 显示全部楼层
学习了,标记一下,改天下载学习
发表于 2013-5-30 13:02:01 | 显示全部楼层
好东西好东西,lz无私
发表于 2013-5-30 13:16:41 | 显示全部楼层
非常猛
发表于 2013-5-30 18:51:26 | 显示全部楼层
话说,这个才是迷你四轴的鼻祖!
发表于 2013-5-30 18:56:21 | 显示全部楼层
不错,谁赶紧山寨一个
发表于 2013-5-30 19:01:54 | 显示全部楼层

这么好的资料,得赞一个。
发表于 2013-5-30 19:02:36 | 显示全部楼层
真心牛啊,这帮北欧老外活的真是精彩!
发表于 2013-5-30 21:11:33 | 显示全部楼层
我靠,看了视频才知道,这也太牛逼了吧
发表于 2013-5-30 22:35:49 | 显示全部楼层
GOOD
发表于 2013-5-31 09:46:02 | 显示全部楼层
看看  学习了
发表于 2013-5-31 09:51:58 | 显示全部楼层
很漂亮,不错,
发表于 2013-6-7 02:18:54 | 显示全部楼层
本帖最后由 sxjclike 于 2013-6-7 02:55 编辑

我也帮楼主补些资料


玩家对四层板的二层化改造



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-6-7 08:38:30 | 显示全部楼层
不错!!!很好,真漂亮!
发表于 2013-6-7 09:47:16 来自手机 | 显示全部楼层
Mark……
发表于 2013-6-11 18:30:04 | 显示全部楼层
牛啊,看到又兴奋了,坚定了DIY四轴的激情
发表于 2013-6-25 22:30:08 | 显示全部楼层
我见过的最牛B微型四轴!
发表于 2013-6-25 22:36:28 | 显示全部楼层
扇叶的安装方式值得学习。
发表于 2013-6-29 15:35:33 | 显示全部楼层
原理图PCB的下载连接在哪里找的,多谢给个链接
发表于 2013-6-30 11:26:30 | 显示全部楼层
也分享一个牛逼的,红遍全球的的炫酷飞行器 v.youku.com/v_show/id_XNTc0MTk0MzI4.htm
发表于 2013-6-30 14:27:18 | 显示全部楼层
飞的真帅
发表于 2013-6-30 18:48:28 | 显示全部楼层
这个NB,mark留用
发表于 2013-7-1 01:18:41 | 显示全部楼层
我噻 很酷啊
发表于 2013-7-1 02:27:22 来自手机 | 显示全部楼层
学习学习暑假开搞。
发表于 2013-7-2 10:51:19 | 显示全部楼层
就是一个RTOS+四元数姿态融合
发表于 2013-7-2 11:56:45 | 显示全部楼层
非常好,改天下载好好学学~
发表于 2013-7-2 11:58:32 | 显示全部楼层
有意思~~~~
发表于 2013-7-2 12:48:20 | 显示全部楼层
rantingting 发表于 2013-5-30 21:11
我靠,看了视频才知道,这也太牛逼了吧

居然遇到熟人了。O(∩_∩)O~
发表于 2013-7-2 13:01:28 | 显示全部楼层
皮爱了西 发表于 2013-7-2 12:48
居然遇到熟人了。O(∩_∩)O~

who?……………………
发表于 2013-7-2 13:43:57 | 显示全部楼层
rantingting 发表于 2013-7-2 13:01
who?……………………

极客工坊里混的,O(∩_∩)O~
发表于 2013-7-2 13:47:46 | 显示全部楼层
皮爱了西 发表于 2013-7-2 13:43
极客工坊里混的,O(∩_∩)O~

还以为你认识我呢……极客我逛得少点
发表于 2013-7-6 21:17:40 | 显示全部楼层
好东西,谢谢分享
发表于 2013-7-6 22:36:57 | 显示全部楼层
赞赞赞 暑假搞飞行器去
发表于 2013-7-6 22:55:58 | 显示全部楼层
很牛的四轴,学习下算法。
发表于 2013-7-9 16:54:07 | 显示全部楼层
好东西,要好好学习了
发表于 2013-7-9 21:37:32 | 显示全部楼层
记号,收藏
发表于 2013-7-19 12:20:16 | 显示全部楼层
这鸡鸡做得顶漂亮!顶一个!
发表于 2013-7-24 14:58:26 | 显示全部楼层
微四轴,好诱人
发表于 2013-7-24 15:07:25 | 显示全部楼层
很牛的四轴飞行器啊
发表于 2013-8-1 20:01:38 | 显示全部楼层
国外人就是牛,好在开源。
发表于 2013-8-1 22:32:29 | 显示全部楼层
晒一个我做的最新版本的微型四轴,欢迎砸砖!
http://v.youku.com/v_show/id_XNTg5ODM0ODE2.html
发表于 2013-8-2 20:16:32 | 显示全部楼层
bygreencn 发表于 2013-6-29 15:35
原理图PCB的下载连接在哪里找的,多谢给个链接

同求啊   
发表于 2013-8-3 11:06:26 | 显示全部楼层
MARK一下。。。。
发表于 2013-8-5 12:03:18 | 显示全部楼层
 楼主| 发表于 2013-8-6 15:44:48 | 显示全部楼层
sxjclike 发表于 2013-8-5 12:03

你厉害!都搞到PCB了?
发表于 2013-8-6 19:50:55 | 显示全部楼层
zhaochuanyuAVR 发表于 2013-8-6 15:44
你厉害!都搞到PCB了?

官网上截的图而已
发表于 2013-8-7 09:28:59 | 显示全部楼层
搞到版图了准备做板
发表于 2013-8-7 13:08:04 | 显示全部楼层
xjf_hz 发表于 2013-8-7 09:58
pcb图片,四层最后检查后做板子

没有PCB文件么
发表于 2013-8-7 13:20:03 | 显示全部楼层
我拿到的图(AD格式的)是网上买的,据说是原版。我在核对一下图是否正确。过几天做样板。可惜amo这不能做四层板。
发表于 2013-8-9 12:18:39 | 显示全部楼层
发表于 2013-8-9 13:57:33 | 显示全部楼层
mark. 收藏
发表于 2013-8-9 17:46:29 | 显示全部楼层
谢谢楼主分享,非常棒!
发表于 2013-8-9 20:45:05 | 显示全部楼层
楼主,资料不会用
发表于 2013-8-10 19:53:09 | 显示全部楼层
xjf_hz 发表于 2013-8-7 13:20
我拿到的图(AD格式的)是网上买的,据说是原版。我在核对一下图是否正确。过几天做样板。可惜amo这不能做 ...

在哪里买的多少大洋,可否分享下啊
发表于 2013-8-11 13:29:46 | 显示全部楼层
我想说.....那个电池是不是鼓起来了....
发表于 2013-8-12 21:45:52 来自手机 | 显示全部楼层
mark……
顶一个…
发表于 2013-8-12 21:59:32 | 显示全部楼层
倒是很灵活 稳吗?
发表于 2013-8-23 12:54:52 | 显示全部楼层
PCB做好了四层,准备焊接调试,上图。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-8-23 12:56:54 | 显示全部楼层
桌面太脏了对不起观众了。下次拍照片前先擦干净。
发表于 2013-8-23 13:00:27 | 显示全部楼层
另一块遥控板还在做,等好了在上图。
发表于 2013-8-24 16:08:11 | 显示全部楼层
很不错,有空也要搞一个
发表于 2013-8-24 17:41:00 | 显示全部楼层
多谢楼主
发表于 2013-9-29 12:09:50 | 显示全部楼层
持续关注中
发表于 2013-9-29 16:15:12 | 显示全部楼层
求板图与原理图!
发表于 2013-9-29 16:47:19 | 显示全部楼层
这个很爽啊,一定要抽时间做个玩玩
发表于 2013-9-29 16:49:10 | 显示全部楼层
感觉这些东西全都逆天了  哈哈
发表于 2013-9-29 16:51:57 | 显示全部楼层
要是mdk或者IAR的多好啊
发表于 2013-10-2 10:03:03 | 显示全部楼层
帅      谢谢奉献
发表于 2013-10-2 14:35:03 | 显示全部楼层
前两天看见这个视频,现在楼主提供的资料更让我疯狂啊
发表于 2013-10-2 14:45:37 | 显示全部楼层
xjf_hz 发表于 2013-8-23 12:54
PCB做好了四层,准备焊接调试,上图。

哥们,这个打板多少钱?四层板
发表于 2013-10-2 14:50:05 | 显示全部楼层
plc_avr 发表于 2013-8-1 22:32
晒一个我做的最新版本的微型四轴,欢迎砸砖!

哥们,这个群满了啊,
发表于 2013-10-2 21:52:52 | 显示全部楼层
收藏了 谢谢楼主
发表于 2013-10-4 17:00:29 | 显示全部楼层
四轴的声音是真好听。不过这个好mini
发表于 2013-10-21 16:28:02 | 显示全部楼层
这个不知道 稳定性怎么样。就一直看着他在动
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-4-26 04:45

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表