问题标签 [mindstorms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
744 浏览

java - 消息、处理程序和线程:Lego Mindstorms 蓝牙通信

这个问题是指编写一个与乐高头脑风暴机器人上的 NXT 块通信的应用程序。

我想做的事

NXC(不完全是 C,一种用于为 NXT 编写程序的语言)提供了一个函数,该函数until(condition)等待条件评估为真。我想使用蓝牙消息协议来实现这一点,通过蓝牙从 android 应用程序与 NXT 交谈。

到目前为止我能做的:

我能够发送一个输入查询消息 ( getInputValue(int in)),它向 NXT 发送一条消息,询问输入的当前状态。然后,NXT 会发回一条包含此信息的消息,然后将其写入保存最近询问的输入值的全局变量(我们称之为myValue)。

问题是什么:

我正在使用乐高 MINDroid 应用程序中的点点滴滴——在这个类中,我有一个单独的通信线程来处理与 NXT 的直接通信。当它收到一条消息时,它会通过Handler. 当我尝试忙于等待回复时会出现问题 - 执行以下操作:

最终忙于主线程,因此处理程序实际上永远不会收到任何消息。通信线程从 NXT 接收消息,将它们转发到主线程,但处理程序永远不会被调用,因为它正在做其他事情。

解决这个问题的最佳方法是什么?我不能让线程以任何方式等待,因为这也会阻止它接收消息:(

任何建议,将不胜感激!我也很乐意详细说明任何代码。

可能有用的链接

http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/main.html

http://github.com/NXT/LEGO-MINDSTORMS-MINDdroid

http://mindstorms.lego.com/en-us/support/files/default.aspx(用于蓝牙文档)

0 投票
1 回答
1554 浏览

c - 乐高积木NXT-G可视化编程与NXC类C编程的区别

我正在接近乐高 NXT 编程,我从非常好的网站http://nxtprograms.com开始. 特别是我遵循了简单的 Segway 的说明,将光传感器作为平衡传感器 (http://nxtprograms.com/NXT2/segway/index.html)。我研究了他的 (Dave Parker) NXT-G 程序,并成功地在他的机器人和更简单的自定义版本(没有“驱动程序”)上复制。一切正常,无论是他的程序还是我的程序。我很快就转向了 NXC 编程,因为我已经了解 C 语言并且想利用更大的潜力。我用相同的 PID 常数和计算很好地复制了平衡算法。结果是 C 程序不起作用:机器人自我平衡 1 或 2 秒,振动比 NXT-G 的振动大,然后摔倒。

我比较了 NXT-G 和 C 基本逻辑,没有发现任何区别。所以我想知道在我的程序中,电机控制是否有问题。我想控制电机的 NXT-G 图形框做的更多是简单地调用 OnFwdSync(...)/OnRevSync(...)。这可以解释为什么我的程序会产生大的初始振荡。

有没有人有 NXC 程序驱动那个简单的 segway-lego 的例子,或者可以解释为什么我的程序中的电机控制失败?在底部我附上了我的程序的源代码。

谢谢。

0 投票
1 回答
441 浏览

c++ - 垃圾输出到NXT屏幕

我一直在尝试启动并运行 nxtOSEK,因为有一些 C++ 项目我想使用我的 NXT 进行工作,并且在搜索网络时,它似乎是最推荐这样做的系统。

我一直在关注本教程(我在 Mac 上)来更新我的砖并进行设置,并设法达到我正在编译示例程序并将它们下载到我的砖的地步。

但是,当我编译并运行 helloworld 程序(它只是将 'OSEK HelloWorld' 输出到砖块的屏幕上时,我得到一个满是垃圾字符的屏幕,只能通过重置电源来恢复。


编辑

在构建过程中,我注意到以下错误:

这可能是问题的一部分吗?

为了好玩,我将转储整个构建过程......也许一个鹰眼的 SO'er 会注意到我错过的一些东西。


再次编辑 还有一些版本信息以备不时之需:

编辑第三个

当运行一个应该简单地旋转电机的程序时,屏幕上也有垃圾和一块冻砖。


编辑第四条

我相信我已经解决了这个问题,但是我仍然不确定如何解决它。原来我的NXT的固件没有更新。我尝试通过 Mac 和 Windows 这样做,但它似乎并没有“接受”。例如,我每次都会收到一条下载成功消息,但是当我启动 NXT 时,我从来没有看到 nxtOSEK 徽标。这可以解释为什么我在屏幕上看到垃圾,但现在我不知道为什么它不能正常闪烁。

我首先将它置于固件更新模式(tic-tic-tic),然后进行闪存过程..但是......什么都没有。

0 投票
2 回答
750 浏览

c# - 使用 Mindsqualls 和 C# 对 LEGO Mindstorms 进行编程

我正在开发一个从计算机运行 LEGO NXT 的程序。我找到了用于 LEGO NXT 的MindSqualls .NET 库,但我不知道如何处理 DLL 和/或 c# 库以使软件正常工作。

我首先下载了 DLL 版本,并在项目的所有不同文件夹中尝试了它们。然而,当我尝试使用代码时:

我得到错误

找不到类型或命名空间名称“NKH”(您是否缺少 using 指令或程序集引用?)

当我尝试下载 c# 项目并将它们包含在我的解决方案中时,我得到了同样的错误。

有谁知道我将如何以我可以使用它们的方式包含 DLL 或 c# 项目?

0 投票
0 回答
137 浏览

java - Lego Mindstorms:几次成功尝试后的 gnu noSuchPortException

为了向我们的 Lego Mindstorms 机器人发送直接命令,我们使用 NXTComm 和 RXTXComm(用于 x64)库。

我们可以多次启动Processing Applet并调用

机器人启动时会发出 2 声清晰的声音,PApplet关闭时会发出 1 声声音,我认为这是“机器人已连接”和“机器人已断开连接”的警报。但是,在 4-5 次成功尝试后,总是出现以下错误:

即使出现此错误,也会出现机器人的“最终声音”。从现在起,我们只能通过重新启动计算机来解决此问题。在此之后,整个事情从新开始。

什么会导致此错误?有没有办法“清理”端口连接?

0 投票
2 回答
95 浏览

java - 覆盖函数并调用扩展类中的其他函数

我的电机NXT2 2.0是向后的,现在每次我运行命令forward()时它都会向后滚动。我正在使用DifferentialPilot来移动我的机器人,因此想要覆盖DifferentialPilot类中的几个函数。

我从该类继承并用我的自定义构造函数覆盖了所有构造函数。然后我覆盖forward()了现在应该调用backward()的,反之亦然。

但是,现在我遇到了异常,我真的不知道为什么。

这是被覆盖的类:

我的机器人示例代码:

是否不允许在覆盖方法内的子类中从超类调用函数?

0 投票
4 回答
2561 浏览

java - 如何在没有反射的情况下进行 Java 序列化?

我正在开发一个不支持 Java 反射的 Lego Mindstorm NXT 机器人。

出于某种原因(模拟器的并行创建和实际的头脑风暴),我们想使用序列化来交换 Java 对象。

问题是序列化使用了反射,mindstorm上的JVM不支持。

有任何想法吗?

在 Zwong.de 上找到了这个页面,但源代码已被删除。

0 投票
2 回答
326 浏览

lego - 在 NXC 的循环中使用后如何将变量重置回 0

出于某种奇怪的原因,当循环结束时,变量“角度”不会重置为 0。所有的数学只是计算 c = sqrt(a^2 + b^2 - 2abCos(theta)) 机器人不会在一行中完成所有的数学。在完整代码中,a 和 b 都是变化变量,并且基于超声波传感器输入。

sub 最多可以调用 3 次不同的时间,并且每次调用 sub 时角度变量都需要从 0 开始。

我试过把 float angle = 0; 或者只是角度= 0;在每个可以想象的地方,但没有任何效果。我什至尝试过使用 int angle = 0; 在多个地方。

0 投票
1 回答
312 浏览

nxt - 我可以将用 C# 编写的程序下载到 nxt 2.0 砖中吗?

我使用 C# 语言和http://www.mindsqualls.net/库。但我找不到如何将我的程序下载到砖中。其实,有可能吗?或者我只需要通过蓝牙控制我的 nxt 2.0 机器人?是否有任何语言/库允许将程序下载到砖块中,或者只有 Mindstorms nxt 2.0 可视化编辑器才有可能?

0 投票
1 回答
875 浏览

python - 通过蓝牙传输 Python 数据

我需要通过蓝牙将python程序计算的数据发送到我的乐高 mindstorms nxt2.0 机器人。这怎么可能?我需要什么工具?