标签: nxt

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

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

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

在此输入图像描述

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

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

谢谢您的帮助!

解决方案结果:

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

结果#1

在此输入图像描述

结果#2

在此输入图像描述

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

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

在此输入图像描述

c algorithm accelerometer lego nxt

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

乐高头脑风暴编程 - 您使用/推荐哪种语言/ IDE?

我是新手,目前正在使用Lego Mindstorms IDE使用的语言流程图.我对图解语言的可读性印象深刻,但却忽略了实际代码的灵活性.我想象我想尝试的复杂项目,并不是真的想把它们作为一个巨大的流程图来实现!大声笑 :)

我知道你可以使用其他语言/ IDE,但不确定它们是什么或使用哪些.您为Lego Mindstorms项目编程推荐了什么IDE /语言?

我更喜欢一个IDE,它仍然允许我点击Run并通过蓝牙将程序发送到NXT砖并立即运行.

更新:我最终选择了lejos.主要是因为我刚开始在工作中学习Java,这与我已经熟悉的C#非常相似.我推荐Lejos,因为Java是一个很好的高级,功能丰富的语言,并且有很好的IDE.Eclipse是一个很棒的IDE,lejos有一个插件,而ant构建脚本可以构建你的项目,将它加载到NXT砖并在设备上运行它一步到位.Lejos在你的NXT砖上确实需要特殊的固件,但是很好,如果你愿意,你可以随时将旧的Mindstorms固件重新安装.

如果你想查看其他语言和IDE选项,我强烈推荐这个图表我偶然发现:http://www.teamhassenplug.org/NXT/NXTSoftware.html

robotics programming-languages lego-mindstorms lego nxt

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

Lego MindStorms是基本机器人开发的不错选择吗?

我想学习如何编写用于控制机器人的软件.

乐高MindStorms是一个很好的选择吗?还有更好的选择吗?

我更喜欢MindStorms,但在阅读了几篇文章之后,我得到的结论是Lego已经停止了对MindStorms的研究和开发.

你有什么建议?

robotics lego-mindstorms lego nxt

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

Lego Mindstorm NXT的C#库

是否有适用于Lego Mindstorm NXT的C#(.NET)库,它是最新的?

NOG.NET for LEGO Mindstorms

MindSqualls

乐高.NET

我知道,有MS机器人工作室,但我的问题不是那个.

.net c# lego-mindstorms lego nxt

23
推荐指数
3
解决办法
2万
查看次数

我如何设计和实现编程语言?

这个问题与此有关

在过去的几年里,我一直在思考我喜欢的东西,而不喜欢我使用的语言.我一直想写自己的语言,但从未这样做过.

我也拥有乐高RCX和NXT,但大多数时候我从来没有让我的机器人做任何事情,因为他们的视觉编程环境比较严格.

我想我会为NXT设计我的编程语言,因为已经有很多通用语言,NXT给了我一套具体的问题和目标,希望能有一个很好的沙箱.

怎么办?我从哪里开始?我需要知道什么?

如果可能的话,我会用Python或Clojure编写编译器.有一个用于NXTSDK,但也有汇编语言.什么是最好/最简单的路线?

Lego NXT有一个小屏幕,USB和蓝牙,它有4个数字和模拟传感器端口,3个输出端口和2个ARM处理器,一个主处理器和一个协处理器.http://mindstormsnxt.blogspot.com/2006/08/whats-inside-nxt-brick.html

编程NXT将涉及处理数据和事件,所以某种单声道数据流/反应式似乎是合适的.它也应该很好地处理并行任务,所以我认为功能.我目前正在考虑基于堆栈.

在我的脑海中,我已经尝试统一这些概念并考虑示例代码.我正在考虑树而不是堆栈,其中功能分支可以并行运行.一个例子:

# implicit main stack
5 5 +
# 10

# quoted branch or list
[1 -]
# 10 [1 -]

# eval list and recur until false
loop
# [9 8 7 6 5 4 3 2 1 0]

# define stack as a function
[1 = [1 8 motor] [1 0 motor] if] fn
# [9 8 7 6 5 …
Run Code Online (Sandbox Code Playgroud)

python programming-languages clojure forth nxt

12
推荐指数
4
解决办法
2444
查看次数

Android和Lego Mindstorm NXT之间的蓝牙连接

有谁知道,如何在Android和LEGO-Mindstorm-NXT之间建立蓝牙连接?两个NXT之间的连接工作正常.但另一种Connection类型并不那么容易.我正在使用LeJOS Firmware 0.85和Android SDK Tools(2.2 Froyo).

android bluetooth lego-mindstorms lego nxt

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

用于编程乐高NXT的C++ OOP库

前段时间,我在圣诞节期间获得了LEGO Mindstorms NXT,现在我想用C++编程.

我环顾四周,在这里和其他地方,找不到一个"感觉正确"的跨平台,开源,OOP C++库,包括lestat和nxtOSEK.

所以,我已经决定,除非我能找到一个我喜欢的,否则编写我自己的图书馆对我来说将是一次很棒的学习经历.

我做了一些研究,并决定通过蓝牙与它进行通信最简单,而不是将我的程序编译为NXT机器代码.

我也希望这能以OOP风格完成,这意味着NXT砖,电机,传感器等将作为对象存在.

所以,我的问题是:在开始这个之前我需要知道什么?我在哪里可以得到很好的参考(除了这里,特定于NXT)?对于像蓝牙通信这样的东西,还有哪些其他像样的"基础"库?

*顺便说一句,如果有必要的话,我全都是使用boost和STL.

或者,我相信如果我不需要重新发明轮子,所以如果有一个体面的C++ OOP蓝牙通信NXT库,请告诉我!

c++ lego nxt

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

Lego Mindstorms 1.0和2.0有什么区别

我正在考虑购买一个mindstorms工具包(我目前没有一个,但我在大学时曾使用过1.0)而且我对2.0超过1.0的好处有点不确定.我已经看到关于这个主题的其他帖子都说一般2.0更好但我有一些更具体的问题,我似乎无法找到任何答案.

除了使用2.0套件获得的不同乐高件和传感器外,1.0 nxt砖和2.0 nxt砖之间有什么区别吗?从我可以从其他来源确定,除了安装的固件之外,它们是相同的.我说得对,我可以买一个1.0套件并安装2.0套件附带的相同固件,砖块是相同的,或者1.0块砖与2.0固件不兼容???

另外,我打算使用不同的编程语言,比如c或java,所以我需要安装特定的固件,比如librcx或lejos吧?因此,如果使用c或java而不是提供的lego编码方法,那么如果我使用的是1.0或2.0(套件中的乐高件除外)并不重要,我是对的吗?

简而言之,假设我使用的是librcx或lejos并且我不关心传感器和乐高积木,那么购买2.0套件比1.0套件有什么好处吗?

提前致谢

firmware lego-mindstorms lego nxt lejos-nxj

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

明确设置方法的docstring

我帮忙维护一个名为nxt-python的python包.它使用元类来定义控件对象的方法.这是定义可用函数的方法:

class _Meta(type):
    'Metaclass which adds one method for each telegram opcode'

    def __init__(cls, name, bases, dict):
        super(_Meta, cls).__init__(name, bases, dict)
        for opcode in OPCODES:
            poll_func, parse_func = OPCODES[opcode]
            m = _make_poller(opcode, poll_func, parse_func)
            setattr(cls, poll_func.__name__, m)
Run Code Online (Sandbox Code Playgroud)

我希望能够为它添加的每个方法添加不同的docstring.m是_make_poller()返回的方法.有任何想法吗?有没有办法解决改变文档字符串的python限制?

python nxt

8
推荐指数
1
解决办法
3277
查看次数

LEGO NXT Brick使用NBC

我是NBC编程的新手,我正在尝试编程我的Lego NXT Brick来搜索和跟踪我在地板上的黑色电子胶带线(我在前面有光传感器,直接指向地面).截至目前,灯亮了,但机器人只是继续越过磁带而没有承认它.如果碰到墙壁,我也会把它设置为停下来转身.唯一不起作用的是当光线照过它时,确认并跟随黑带.任何人都可以看看我的代码并告诉我哪里出错了?

                                          dseg segment
  Switch sword 0
  Volume sword 0
  Level sword 0
  Distance sword 0
dseg ends

thread main
  SetSensorTouch(IN_1)    // touch sensor connected to IN_1
  SetSensorSound(IN_2)    // sound sensor connected to IN_2
  SetSensorLight(IN_3)    // Light Sensor connected to input 3
  SetSensorUltrasonic(IN_4) // Ultrasonic Sensor connected to input 4
  OnFwd(OUT_BC,80)     // move forward

CheckSensor:

  ReadSensor(IN_1,Switch)       // reads current value of sensor (0/1)
  brtst EQ, CheckSensor, Switch // branch to CheckSensor if Switch = 0
                              // i.e., exit the …
Run Code Online (Sandbox Code Playgroud)

lego nxt

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