问题标签 [lego]
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.
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(用于蓝牙文档)
android - 如何使用蓝牙在 Android 和正在运行的 NXT 程序之间进行交互
我修改了 Minddroid github Android 程序以读取 LEGO NXT 上的传感器(很棒的设备!)。现在我想读取蓝牙消息并将其写入在 NXT 中运行的 Mindstorms 程序。这样我就可以运行 NXT 程序并在 Android 要求时将结果/读数发送到 Android。
android - 从 Android 向 LEGO NXT 发送消息
我只想从我的 Android 向 NXT 发送一条消息,就像字符串/数字一样。但是NXT没有收到数据。我将 ROBOT C 用于 NXT 程序和来自 ROBOT C 的 BluetoothMessage 示例。
首先,我从Android 和 Lego Mindstorm NXT 之间的蓝牙连接尝试 Android 的源代码。但是没有用。
然后我从 Google Play、NXT Mailbox 下载了一个软件,它就可以工作了。
有没有人有 Android 的源代码来向 NXT 发送消息?
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 的例子,或者可以解释为什么我的程序中的电机控制失败?在底部我附上了我的程序的源代码。
谢谢。
python - 基于角度旋转乐高 nxt
我想知道有没有一种方法可以使用基于两点 r(x1,y1) 和 p(x2,y2) 的角度来旋转乐高 nxt,而当机器人从面向北变为南、东或西方。谢谢
问候, 爱德华
python - 如何在不重复值的情况下更新机器人和对象的位置
我想知道如何解决值被重复传递给我的 activate(valueList) 方法的问题。程序的工作方式是有一个机器人和一个球,主循环连续传递值列表方法。我的目标是将机器人转向球的方向并朝它移动。问题是,如果球仍在移动,值保持不变,直到它停止,这导致机器人转向先前的角度流传下来。有没有特定的方法可以解决这个问题?请注意,即使机器人和球处于静止状态,向下传递的 valueList 中的值也会区分 +2 或 -2。PS。我正在使用通过网络连接到传递值的相机的乐高 nxt (nxt-python)
例如:
返回值的方法:
一个 activate 方法:ps turn_to 和 move_to 方法显示转向和向对象移动
以及这个不断将值传递给 valueList 的主循环
python - 向球的方向旋转机器人
我想知道这种方法是解决这个问题的正确方法吗?我想将面向北的机器人旋转到物体在这种情况下为红球的方向。
下面显示了网格和球的位置
这是我的代码:
我只想知道这是解决这个问题的正确方法吗?还是有其他选择,因为我会根据我之前发布的问题传递值。谢谢
问候爱德华
python - 机器人不停
附件是一个将机器人移动到特定距离的代码,但是我希望它在接近和障碍物时停止移动。我该怎么做呢?我尝试添加超声波来检测障碍物。我正在使用 nxt-python
c++ - 垃圾输出到NXT屏幕
我一直在尝试启动并运行 nxtOSEK,因为有一些 C++ 项目我想使用我的 NXT 进行工作,并且在搜索网络时,它似乎是最推荐这样做的系统。
我一直在关注本教程(我在 Mac 上)来更新我的砖并进行设置,并设法达到我正在编译示例程序并将它们下载到我的砖的地步。
但是,当我编译并运行 helloworld 程序(它只是将 'OSEK HelloWorld' 输出到砖块的屏幕上时,我得到一个满是垃圾字符的屏幕,只能通过重置电源来恢复。
编辑
在构建过程中,我注意到以下错误:
这可能是问题的一部分吗?
为了好玩,我将转储整个构建过程......也许一个鹰眼的 SO'er 会注意到我错过的一些东西。
再次编辑 还有一些版本信息以备不时之需:
编辑第三个
当运行一个应该简单地旋转电机的程序时,屏幕上也有垃圾和一块冻砖。
编辑第四条
我相信我已经解决了这个问题,但是我仍然不确定如何解决它。原来我的NXT的固件没有更新。我尝试通过 Mac 和 Windows 这样做,但它似乎并没有“接受”。例如,我每次都会收到一条下载成功消息,但是当我启动 NXT 时,我从来没有看到 nxtOSEK 徽标。这可以解释为什么我在屏幕上看到垃圾,但现在我不知道为什么它不能正常闪烁。
我首先将它置于固件更新模式(tic-tic-tic),然后进行闪存过程..但是......什么都没有。
python - 修复 nxt-python 中的 turn 方法
我希望能够在遇到障碍物时阻止我的机器人移动。SynchronizedMotors
但是,下类中的 turn 方法motor.py
不允许我这样做。我怎么能解决这个问题?有没有直接的解决办法?我确实尝试过使用线程,但它没有用。