小编Dyl*_*ter的帖子

结合陀螺仪和加速度计数据

我正在使用Lego Mindstorm的NXT系统构建一个平衡机器人.我使用的是HiTechnic的两个传感器,第一个是加速度计,第二个是陀螺仪.我已经成功地滤除了传感器和衍生角度的噪声,两者的范围在-90到90度之间,0度完全平衡.

我的下一个挑战是结合两个传感器值来校正陀螺仪随时间的漂移.下面是我根据实际数据创建的示例图,用于演示陀螺仪的漂移:

在此输入图像描述

我见过的最常用的方法是将这些传感器结合起来使用卡尔曼滤波器.但是,我不是微积分的专家,我真的不懂数学符号,但我确实理解源代码中的数学.

我正在使用RobotC(就像任何其他C衍生产品一样),如果有人能给我一些如何在C中完成此任务的例子,我将非常感激.

谢谢您的帮助!

解决方案结果:

好吧,kersny通过向我介绍补充过滤器解决了我的问题.这是一个说明我的结果的图表:

结果#1

在此输入图像描述

结果#2

在此输入图像描述

如您所见,滤波器校正陀螺仪漂移并将两个信号组合成单个平滑信号.

编辑:因为我正在修复破碎的图像,我认为显示我用来生成这些数据的装备会很有趣:

在此输入图像描述

c algorithm accelerometer lego nxt

69
推荐指数
2
解决办法
9万
查看次数

如何在特定边界内绘制具有可变宽度边框的圆角矩形

我有一个绘制带边框的圆角矩形的方法.边框可以是任何宽度,所以我遇到的问题是边框在厚度超出给定边界时会延伸,因为它是从路径的中心绘制的.

如何包含边框的宽度,使其完全适合给定的边界?

这是我用来绘制圆角矩形的代码.

private void DrawRoundedRectangle(Graphics gfx, Rectangle Bounds, int CornerRadius, Pen DrawPen, Color FillColor)
{
    GraphicsPath gfxPath = new GraphicsPath();

    DrawPen.EndCap = DrawPen.StartCap = LineCap.Round;

    gfxPath.AddArc(Bounds.X, Bounds.Y, CornerRadius, CornerRadius, 180, 90);
    gfxPath.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y, CornerRadius, CornerRadius, 270, 90);
    gfxPath.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
    gfxPath.AddArc(Bounds.X, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
    gfxPath.CloseAllFigures();

    gfx.FillPath(new SolidBrush(FillColor), gfxPath);
    gfx.DrawPath(DrawPen, gfxPath);
}
Run Code Online (Sandbox Code Playgroud)

c# gdi+ rounded-corners

19
推荐指数
1
解决办法
2万
查看次数

EF 4.1 Code First - 确定哪些属性已更改

我正在使用Entity Framework 4.1 Code First.是否有内置方法来获取自从数据库加载实体以来哪些属性已更改的列表?我知道代码首先检测到对象已被更改,但有没有办法确切地获取哪些属性已更改?

c# entity-framework change-tracking code-first

16
推荐指数
1
解决办法
7438
查看次数

基础控制器类的属性注入

我正在尝试在任何源自我的BaseController类的控制器上自动设置属性.这是我Application_Start方法中的代码.UnitOfWork当我尝试访问它时,该属性始终为null.

var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<VesteraTechnologiesContext>().As<IContext>();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>();
builder.RegisterType<BaseController>()
       .OnActivated(c => c.Instance.UnitOfWork = c.Context.Resolve<IUnitOfWork>());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)

这是BaseController的样子

public class BaseController : Controller
{
    public IUnitOfWork UnitOfWork { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我试图通过属性而不是通过构造函数来实现这一点的原因是我不必在每个需要访问UnitOfWork属性的控制器中复制构造函数,因为构造函数不是继承的.

c# asp.net-mvc inversion-of-control autofac

11
推荐指数
1
解决办法
3549
查看次数

在SQL Server 2008数据库中维护数据历史的方法

长期以来,我们一直希望创建一个不会丢失历史的案例管理系统.当进行更改时,我们希望记录该更改,但能够返回到任何时间点并查看记录的外观.我想向Stack Overflow社区提出这个问题,看看有什么方法可以做到这一点,是否已经有技术来实现这一目标?

.net sql change-tracking sql-server-2008 entity-framework-4

9
推荐指数
1
解决办法
5049
查看次数

使用Arduino XBee Shield和XBee Explorer进行无线编程

我试图通过XBee Shield和XBee Explorer 启用Arduino的无线编程.我在网上看过两个教程,XBee无线电ATmega168/ATmega328的无线启动,向您展示如何做到这一点.

但是,这两个教程都讨论了使用组件将接收器XBee连接到Arduino.那么XBee Shield处理接收器XBee和Arduino之间的通信,因此额外的组件不是必需的(或者是它们).他们谈论使用电容器或晶体管来无线复位Arduino.这是否已经可以使用XBee Shield,或者我可以对其进行一些修改以使其成为可能吗?

如何使用现有的Arduino IDE无线编程我的Arduino?

ide arduino bootloader xbee

7
推荐指数
1
解决办法
4810
查看次数

在C#中将无符号16位int转换为带符号的16位int

我正在为一个机器人控制器编写一个数据记录解析器,从数据日志中得到的是一个0到65535范围内的数字(如果我没弄错的话,这是一个16位无符号整数).我正在尝试将其转换为带符号的16位整数以显示给用户(因为这是记录器更改之前的实际数据类型).

有人可以帮我一把吗?

例:

值应该是什么(0,-1,-2,-3,-4)

值是什么(0,65535,65534,65533,65532)

.net c# unsigned signed bit-manipulation

6
推荐指数
1
解决办法
1万
查看次数

使用Visual Studio 2010 Web配置转换删除XML注释

我们正在使用Team Build来处理我们对开发服务器的部署,并且我们需要在转换时从Web配置中删除注释.有谁知道如何<!-- -->使用转换从Web配置文件中删除注释行?

.net web-config transformation visual-studio-2010

5
推荐指数
1
解决办法
3412
查看次数

实体框架4.1代码优先 - 使用LinqKit PredicateBuilder时忽略Include

我正在使用Entity Framework 4.1 Code First,我也在使用PredicateBuilder,这样我就可以跨多个Specification类构建谓词表达式(使用Specification模式).我能够正确地构建谓词并将其应用于DbSet,我得到的数据就是我所期望的.但是,无论我尝试什么,它总是延迟加载.这是我如何构建谓词并应用它的一个简单示例.

IQueryable<HairColor> hairColorQuery = Context.Set<HairColor>().AsExpandable();

Expression<Func<Parent, bool>> parentPredicate = PredicateBuilder.And(PredicateBuilder.True<Parent>(), p => p.NameLast.StartsWith("V")).Expand();

Expression<Func<HairColor, bool>> hairColorPredicate = PredicateBuilder.And(PredicateBuilder.True<HairColor>(), h => h.Parents.AsQueryable().Any(parentPredicate));

HairColor[] hairColors = hairColorQuery.Where(hairColorPredicate).Include(h => h.Parents).ToArray();
Run Code Online (Sandbox Code Playgroud)

就像我上面说的那样,我得到了我想要的数据,但它忽略了Include.

有没有人有任何想法?

c# .net-4.0 include ef-code-first

4
推荐指数
1
解决办法
2623
查看次数

自定义表单身份验证+ MVC3 + AuthorizeAttribute

我基本上做的是这个.但是,每当我使用内置的AuthorizeAttribute时,MVC框架(我猜)都不会查看我的主体以确定用户是否具有适当的角色.它一直试图在app_data目录中创建一个新的MDF文件,因为它没有特权,所以它会爆炸.

这是预期的行为,我应该自己派生自己的AuthorizeAttribute并检查校长吗?

另一个奇怪的行为是,我在同一个域上有两个站点,我正在进行单点登录.在任一站点上,我使用相同的类库在AuthenticateRequest上重新创建我的自定义主体,并且我在调试时看到主体在每个站点上正确设置.但是,站点1(对用户进行身份验证的站点)使用内置的AuthorizeAttribute,它可以正常工作,但站点2正在尝试在调用具有AuthorizeAttribute的任何操作时创建MDF文件.

forms-authentication asp.net-mvc-3

3
推荐指数
1
解决办法
3502
查看次数