精华内容
下载资源
问答
  • 问题:carsim中的汽车初始速度设置为0汽车也会以微小的速度运动 **原理:**自动挡的车不踩油门也是会走的,因为自动挡车没有离合踏板,当你的档位进入行车档位的时候,实际上离合就已经处于连通状况,这个时候没有刹车的...

    问题:carsim中的汽车初始速度设置为0汽车也会以微小的速度运动

    **原理:**自动挡的车不踩油门也是会走的,因为自动挡车没有离合踏板,当你的档位进入行车档位的时候,实际上离合就已经处于连通状况,这个时候没有刹车的阻力自然汽车缓缓前行

    所以即使carsim中设置车辆的初始速度为0,车辆也会运动,除非施加一定的制动压力,车才会不动。

    展开全文
  • CEF3嵌入MFC对话框后, 在每天第一次打开软件时发现 CEF CefInitialize初始速度慢,不知道怎么回事?
  • box2d刚体添加初始速度,力

    千次阅读 2014-07-02 13:54:05
    学过物理力学的同学都知道,F=ma,有了力F就有了加速度a,有了加速度,物体就会有速度,就会慢慢动起来。(但是不会立马动起来,因为力不度)。 ApplyForce施加的力可以叠加,如 ballBody->ApplyForce(force1,...
    

    ApplyForce、ApplyImpulse和SetLinearVelocity。

    它们都是b2Body类的公共方法,而且它们都接收一个b2Vec2类型向量参数。关于向量的知识。
    1.力,循序渐进——ApplyForce

    顾名思义,ApplyForce方法会在刚体上施加一个力。学过物理力学的同学都知道,F=ma,有了力F就有了加速度a,有了加速度,物体就会有速度,就会慢慢动起来。(但是不会立马动起来,因为力不度)。

    ApplyForce施加的力可以叠加,如

    ballBody->ApplyForce(force1,ballBody->GetWorldCenter());//GetWorldCenter()方法用来获取刚体的重心

    ballBody->ApplyForce(force2,ballBody->GetWorldCenter());

    这样施加给ballBody的力就为force1与force2的和。

    举个简单的例子,小明推一个静止的箱子,箱子不会立马飞出去,而是慢慢的、越来越快的动起来(减速也一样)。

    2.速度,叠加——ApplyImpulse

    与ApplyForce不同,ApplyImpulse不会产生力,而是直接影响刚体的速度。通过ApplyImpulse方法添加的速度会与刚体原有的速度叠加,产生新的速度。

    3.一触即发——SetLinearVelocity

    setLinearVelocity与ApplyImpulse一样,直接影响刚体的速度。不一样的是,setLinearVelocity添加的速度会覆盖刚体原有的速度。不过,在SetLinearVelocity方法不会自动唤醒sleeping的刚体,所以在调用该方法之前,记得将刚体body.wakeUp()一下。

    b2Vec2 velocity = b2Vec2(x,y);
     ballBody->SetLinearVelocity(velocity);//设置刚体的速度

    velocity1 = ballBody->GetLinearVelocity();//得到刚体的速度


    展开全文
  • 如题,有几个窗体,每个大概拖了十几个DEV的控件,光初始化(InitializeComponent)一下就得500ms以上,导致界面第一次点开给人感觉不流畅,有啥办法解决不?换控件重做界面不太现实。
  • 磁力计和加速度初始姿态解算

    万次阅读 2016-08-15 17:56:24
    磁力计和加速度初始姿态解算 初始姿态解算原理 牛顿迭代法 迭代初值选取 万向节锁

    磁力计和加速度计初始姿态解算

    四旋翼的初始姿态是通过磁力计和加速度计来解算的,缺一不可。学习过程中遇到了不少问题,想通了总结如下:

    • 初始姿态解算原理
    • 牛顿迭代法
    • 迭代初值选取
    • 万向节锁
    • C++代码示例

    初始姿态解算原理

    导航坐标系选为东北天,则重力加速度和磁力计在导航坐标系中分别表示为 [0,0,g]T [0,mny,mnz]T 。假设机身坐标系下,加速度计和磁力计输出分别为 [ax,ay,az]T [mbx,mby,mbz]T 。若飞机加速度为0,且加速度计安装位置在飞机重心(原因打算后面的博客再写),则:

    axayaz=Rbn00g(1)

    0mnymnz=Rnbmxmymz(2)

    其中, Rnb=(Rbn)T Rbn 可以用四元数表示形式为:
    q20+q21q22q232(q1q2q0q3)2(q1q3+q0q2)2(q1q2+q0q3)q20q21+q22q232(q2q3q0q1)2(q1q3q0q2)2(q2q3+q0q1)q20q21q22+q23

    这里的表示形式和上一篇博客中的不一样,是为了和 Matlab 保持一致。 Rbn 的欧拉角形式可参见上一篇博客。
    选其中四个方程如下:
    2(q1q3q0q2)+axg=02(q2q3+q0q1)+ayg=0q20q21q22+q23+azg=0mbx(q20+q21q22q23)+mby(2(q1q2q0q3))+mbz(2(q1q3+q0q2))=0


    牛顿迭代法

    n 元非线性方程组写成如下形式:

    f1(x1,x2,...,xn)=0f2(x1,x2,...,xn)=0fn(x1,x2,...,xn)=0

    简写为: F(x)=0
    其中: x=(x1,x2,,xn)T,F(x)=(f1(x),f2(x),,fn(x))T
    若方程组存在解 xint(D) ,在 x 的某个开邻域 D0={xxx<δ,δ>0}D F(x) 可微,设 x(k)D0 是方程组的第 K 个近似解。由一阶泰勒公式可得:
    fi(x)fi(x(k))+nj=1fi(x(k))xj(xjx(k)j);(i=1,2,...,n)
    可以近似写为:
    fi(x(k))+nj=1fi(x(k))xj(xjx(k)j)=0;(i=1,2,...,n)
    写成矩阵形式:
    F(x(k))(xx(k))=F(x(k))
    则迭代公式为:
    x(k+1)=x(k)F(x(k))1F(x(k));(k=0,1,2...)
    算法设计:

    • x 附近选取 x(0)D ,给定精度水平 ϵ>0 和最大迭代次数 M
    • 对于k=0,1,...M执行
      • 计算 F(x(k)) F(x(k))
      • 求解关于 Δx(k) 的线性方程组: F(x(k))Δx(k)=F(x(k))
      • Δx(k)/x(k)ϵ ,取 xx(k) ,并停止计算,否则继续向下执行
      • 计算 x(k+1)=x(k)+Δx(k)
      • k<M ,继续迭代,否则停止计算。

    迭代初值选取

    迭代初值的选取会影响迭代次数和迭代结果。首先,初值离真值越近,迭代次数越少。此外,如果方程有多个解,选取不同的初值会得到不同的解,而正确的解只有一个,这就需要我们选取的初值必须距离正确的解最近。
    上面我们选取了四个方程,理论上有很多个解。最开始时,我将初值固定为 [1,0,0,0] ,某些情况下解算出来的偏航角会差180°。这意味着,最终的结果满足选取的四个方程,却不满足剩下的两个。那为什么俯仰角和滚转角解算不会出错呢?这个也是有原因的:
    用欧拉角表示 Rbn ,并将(1)式展开可以得到:

    sin(θ)=axgcos(θ)sin(ϕ)=aygcos(θ)cos(ϕ)=azg

    可以发现,当 cos(θ)0 时,仅根据加速度计的输出便可以得到俯仰角和滚转角:
    {θ=asin(ax/g)ϕ=atan(ay,az)(3)

    我们选取的四个方程包括加速度计的三个方程,迭代结果一定满足(1)式,而(1)式又唯一确定俯仰角和滚转角,因此二者解算结果永远不会出错。
    那问题来了,我们该怎样选取合适的初值呢?这个也不难!如下:
    axayazmbxmbymbz=R12R22R32R13R23R33[0gmnymnz](4)

    Rij 是旋转矩阵的后两列,等式右边的2x2方阵是可逆的,并且是个常数矩阵,这样也就可以求出这两列元素。俯仰角和滚转角都已知的情况下,根据旋转矩阵第二列便可以求出偏航角的正弦和余弦,进而得到偏航角。把得到的欧拉角转化为四元数来作为迭代的初值,就一定可以得到正确的解。


    万向节锁

    笔者解决了初值选取的问题之后,发现在俯仰角为 ±90 的时候,不仅迭代次数剧增,而且迭代结果偏航角和滚转角都会出错。这又是为什么呢?想了又想,想了又想,发现了传说中的万向节锁!
    我在上面特意提到:当 cos(θ)0 时,根据加速度计可以正确得到俯仰角和滚转角,是因为如果 cos(θ)=0 ϕ=atan(0,0) 是无意义的。况且实际中加速度计都存在误差,如果俯仰角过分接近 ±90 ,加速度计 ay az 轴的理论值会被误差淹没,也就无法得到正确的滚转角和偏航角。目前,笔者只有一个解决办法,对初始姿态解算时的俯仰角进行限制,笔者设置在 ±75 之间。

    C++代码示例

    int NewtonIteration(cVector<3> &acc, cVector<3> &mag, cQuaternion &quat)
    {
        int maxStep = 10;
        int curStep = 0;
        double error = 1E-8;
        cMatrix<4, 4> dF;
        cVector<4>  F;
        cQuaternion dquat;
        cEulerAngle angle;
        if (fabs(acc(3))<9.5)
        {
            double sin_yaw, cos_yaw, sin_pitch, cos_pitch, sin_roll, cos_roll;
            sin_pitch = acc(1) / g;
            cos_pitch = sqrt(1 - sin_pitch*sin_pitch);
            sin_roll = -acc(2) / (g*cos_pitch);
            cos_roll = -acc(3) / (g*cos_pitch);
            sin_yaw = (mag(1)*g + acc(1)*mnz) / (g*mny*cos_pitch);
            cos_yaw = ((mag(2)*g + acc(2)*mnz) / (g*mny) - sin_roll*sin_pitch*sin_yaw) / cos_roll;
            angle(1) = atan2(sin_roll, cos_roll);
            angle(2) = asin(sin_pitch);
            angle(3) = atan2(sin_yaw, cos_yaw);
            angle.toQuat(quat);
            do{
                curStep++;
                dF(1, 1) = -quat(3);
                dF(1, 2) = quat(4);
                dF(1, 3) = -quat(1);
                dF(1, 4) = quat(2);
                dF(2, 1) = quat(2);
                dF(2, 2) = quat(1);
                dF(2, 3) = quat(4);
                dF(2, 4) = quat(3);
                dF(3, 1) = 2 * quat(1);
                dF(3, 2) = -2 * quat(2);
                dF(3, 3) = -2 * quat(3);
                dF(3, 4) = 2 * quat(4);
                dF(4, 1) = 2 * (mag(1) * quat(1) - mag(2) * quat(4) + mag(3) * quat(3));
                dF(4, 2) = 2 * (mag(1) * quat(2) + mag(2) * quat(3) + mag(3) * quat(4));
                dF(4, 3) = 2 * (-mag(1) * quat(3) + mag(2) * quat(2) + mag(3) * quat(1));
                dF(4, 4) = 2 * (-mag(1) * quat(4) - mag(2) * quat(1) + mag(3) * quat(2));
                F(1) = -(quat(2) * quat(4) - quat(1) * quat(3) + acc(1) / (2 * g));
                F(2) = -(quat(3) * quat(4) + quat(1) * quat(2) + acc(2) / (2 * g));
                F(3) = -(quat(1) * quat(1) - quat(2) * quat(2) - quat(3) * quat(3) + quat(4) * quat(4) + acc(3) / g);
                F(4) = -(mag(1) * (quat(1) * quat(1) + quat(2) * quat(2) - quat(3) * quat(3) - quat(4) * quat(4))
                    + 2 * mag(2) * (quat(2) * quat(3) - quat(1) * quat(4)) + 2 * mag(3) * (quat(2) * quat(4) + quat(1) * quat(3)));
                LinearEquationSolve(dF, F, dquat);
                if (dquat.norm() > 1)
                    dquat.normalize();
                quat += dquat;
                quat.normalize();
            } while (curStep <= maxStep && dquat.norm() > error);
            std::cout << "*************************************" << std::endl;
            std::cout << "step : " << curStep << std::endl;
            std::cout << "result : " << std::endl;
            std::cout << quat << std::endl;
            cEulerAngle ans(quat);
            std::cout << ans*57.3 << std::endl;
        }
        return curStep;
    }

    LinearEquationSolve()解线性方程组采用全主元Doolittle方法。


    展开全文
  • 在平常的开发工作中,时常会用到第三方SDK,一般都需要在Application中初始话,随着集成的SDK后,Application类就可能会变成这样: class MainApplication : Application() { override fun onCreate() { super...

    在平常的开发工作中,时常会用到第三方SDK,一般都需要在Application中初始话,随着集成的SDK后,Application类就可能会变成这样:

    class MainApplication : Application() 
    {
        override fun onCreate()
        {
            super.onCreate()
            ARouter.init(this)
            UMConfigure.init(this,...)
            Realm.init(this)
            ToastUtils.init(this)
        }
    }
    

    所有的SDK初始化都放在这里会拖慢App的启动速度,所以需要优化;当然我们可以开线程去初始化,可以在用得到的时候再初始化,这里我们介绍一种新的集成方式(参照FireBase实现):

    1:把我们的SDK全部放进一个新的Module中并依赖(注意依赖的时候使用api方式,否则主模块将无法使用SDK):

    2:新建InitSDKProvider实现ContentProvider并实现接口方法,并且在onCreate函数中进行所依赖SDK的初始化:

    3:在Androidmanifgest.xml中添加provider节点:

    最后,主模块依赖AARProviderTest模块,并在代码中调用方法进行使用。

    工程代码链接:https://github.com/chen8888/AARProviderTest

    展开全文
  • 由磁场数据和加速度数据计算初始姿态角

    千次阅读 热门讨论 2019-12-15 18:17:54
    一般惯导姿态角的初始值是由加速度数据和磁场数据计算得到的,加速度数据计算得到滚转角和俯仰角,由滚转角,俯仰角以及磁场数据经过计算再得到初始的偏航角。下面是具体的计算和推导过程。 计算过程: 1.计算滚...
  • 无非就是异步初始化,延迟初始化,懒加载三种,我先对application中的初始化代码块做异步初始化 优化后加快了300ms,使用线程池,大概代码如下 ``` class Application{ onCreate(){ //do sth ...
  • 协调初始值失败。 奇异矩阵。 有。 变量 comp1.mf.psi 的 25229 空方程(矩阵中的空行)。 在坐标: (-0.0960383,-0.102881,-0.103172), (-0.102864,-0.103176,-0.0960355), (-0.103174,-0.0960565,-0.102863), (-...
  • VINS初始

    千次阅读 2018-09-07 10:46:18
    系统的初始化主要恢复出尺度、重力、速度以及IMU的bias.因为视觉(SFM)在初始化的过程中有着较好的表现,所以在初始化的过程中主要以SFM为主,然后将IMU的预积分结果与其对齐,即可得到较好的初始化结果。    系统...
  • 捷联式惯导系统初始对准

    千次阅读 多人点赞 2019-05-15 17:11:34
    捷联式惯导系统初始对准的任务有两项:第一,机体起飞前将初始速度和初始位置引人惯导系统;第二,机体坐标系与导航坐标系的初始变换短阵。另外,有些系统的初始化还包括惯导仪表的校准, 即对陀螺仪的标度系数进行测...
  • 在只有三轴加速度计的场合下(MARG初始校准的时候,需要先通过加速度计得到水平倾角,才能继续对磁力计数据进行处理)如何求得三轴角度,搜索互联网一般是这以下这两种算法:  左图算法是:  右图算法是:atan...
  • CSR蓝牙初始化流程

    千次阅读 2016-01-15 15:28:13
    最近遇到acc on/off的蓝牙初始化失败: 所以总结下整个蓝牙初始化的流程(基于CSR 8811 module通过uart 和车机连接): 一.芯片上电成功后拉下8811 module reset pin ->不是每个moudule都需要这么做 二.设置...
  • 为什么需要推迟视图初始化 这里谈谈为什么要推迟视图的初始化. 假设这样一个情况, 如果手机的界面包含大量的视图组件,而且数据大多都来源于服务器. 这就意味着一进入这个界面,应用就会在onCreate()方法中去初始化...
  • Python初始化列表

    万次阅读 2019-04-29 18:17:49
    Python初始化列表 下面我们就来介绍在Python中初始化列表(我们创建大小为1000并使用零初始化的列表)的一些方法。 1)方法一:使用for循环和append()函数 arr = [] for i in range(1000): arr.append(0) 2)方法...
  • 基于MPU6050的加速度求角度

    万次阅读 2015-08-06 11:09:22
    初始状态是,加速度计读数是A_X =0; A_Y=0; A_Z=1g;如下图: 然后旋转一定角度后事这样: 旋转后仍要保证竖直方向是1g的加速度,所以有将X轴和Z轴的加速度值矢量叠加后为1g即可用反正切出P的大小来了 如图:...
  • 内存的初始

    千次阅读 2017-03-29 10:23:13
    内存的初始
  • 组合导航初始对准

    千次阅读 2019-08-02 22:39:09
    同时,由于GNSS可以方便的给出位置和速度(内插速度或者多普勒测速),因此初始对准的关键任务就落到了姿态的确定。因此,下面主要讨论初始姿态的确定。 静态对准 静态条件下,加计可以测量出重力值,根据重力值可以...
  • javaweb项目初始化问题

    2017-11-24 14:24:23
    我写的项目启动时实例化了好多类,但是别人的项目就初始化一个类项目就运行完了, 启动速度很快,请问是如何设置的?
  • 对于调用费时的步骤,可以将其延后到窗体显示之后再加载。使用方法: new DelayLoading(this, new MethodInvoker(DataBind)).Execute();
  • 最近阿里云提供了快速初始化SpringBoot、SpringCloud项目的构建方式,和spring-initializr 如出一辙,当然访问速度肯定更快一些,所以不妨尝试一下。 访问地址:https://start.aliyun.com/ 打开后可以看到熟悉的界面...
  • 深度学习神经网络中权重的初始

    千次阅读 2018-04-15 15:35:05
    加快梯度下降的收敛速度 增加梯度下降收敛到较低训练(和泛化)错误的几率 所以一个良好的初始化也是非常重要的,这里尝试三种初始化化方式: 零初始化,将权重参数初始化为零。 随机初始化,使用随机的方式,...
  • MEMS惯性传感器初始姿态角的确定

    千次阅读 2019-04-29 00:34:46
    9轴MEMS惯性传感器初始...惯性导航系统利用初始的位置、速度和姿态信息,通过陀螺仪和加速度测量的角速率和比力进行二次积分推算得到目标的位置、速度和姿态信息。因此,初始对准的好坏将确定惯性导航系统的精度和稳...
  • Cesium:地球初始设置

    千次阅读 2019-11-23 18:14:29
    地球初始设置
  • Dreamweaver初始化设置

    千次阅读 2019-10-28 22:09:12
    Dreamweaver 初始化设置 Dreamweaver 初始化设置 为了使初学者更好的认识Dreamweaver 工具,需要对Dreamweaver进行初始化设置,具体如下: 1.工作区布局设置 打开Dreamweaver 工具界面,选择菜单栏中“窗口”–>...
  • 深度学习-六种权重初始

    千次阅读 2019-06-30 13:13:25
    模型权重的初始化对于网络的训练很重要, 不好的初始化参数会导致梯度传播问题, 降低训练速度; 而好的初始化参数, 能够加速收敛, 并且更可能找到较优解。 六种权重初始化 一、W初始化为0 在线性回归和logistics...
  • D3.js中初始化缩放比例

    千次阅读 2017-05-02 18:15:00
    我们使用d3将页面数据全部加载后,可能看起来不怎么协调,我们需要有个初始化缩放,如何进行初始化缩放呢? 滑轮brush:.call(brush.move, [150,200])//初始化长度缩放zoom:zoom.scaleTo()//初始化倍数
  • 本文主要介绍在类中简化数据结构初始化过程的技巧
  • 编译脚本后,运行关卡,即可使用快捷键I添加角色移动的速度,用F12减少角色移动速度 三、初始化改变视角,让其默认为第三人称视角 1.打开Development\Src\UTGame\Classes\UTPlayerController.uc 2.在default...
  • DMA初始化设置

    千次阅读 2018-08-21 09:25:10
    与设备之间传输,因而大大提高了数据传输速度。     2 DMA设置 UART通信时,DSP发送和接收到的数据存储在数据存储器中,为了实现DSP的高速处理,减少DSP响应McBSP数据寄存器中断的次数。发送和接收数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 687,730
精华内容 275,092
关键字:

初始速度怎么求