乐高Mindstorms NXT控制包

nxt-python的Python项目详细描述


nxt python是一个使用
python编程语言控制lego nxt机器人的包。它可以使用USB或
蓝牙进行通信。它在gnu gpl v3许可下可用。它基于
nxt_python,在2007年5月停止发布。


要求:

*python 2.6或更高版本,但不是3.x(http://www.python.org)
和至少一个通信库:
*蓝牙通信:
linux/windows:pybluez(http://code.google.com/p/pybluez/)
(打包python bluez)在基于deb的linuxes中)
mac:lightblue(http://lightblue.sourceforge.net/)
*usb通信:
pyusb(http://sourceforge.net/projects/pyusb/)
*fantom通信(在mac osx上测试):
pyfantom(http://pyfantom.ni.fr.eu.org/)

安装:

*untar/unzip源包。
*在包目录中,运行"python setup.py install"(作为根用户),或者如果在Windows下,双击install.bat。
*要在Linux上使用USB作为非超级用户,请在根终端键入:
groupadd lego
usermod-a-g lego[username]
echo'subsystem=="usb",attrs{idvendor}=="0694",group="lego",mode="0660"'>;/etc/udev/rules.d/70 lego.rules


入门:

请随意将代码复制到脚本中,不要害怕尝试!如果您有什么问题,您可以在文档字符串(例如help('nxt.sensor.ultrastic')中,甚至在源代码中找到解决方案(尤其是数字传感器)。

。无论如何,在寻求帮助之前,请通读一遍。谢谢!)

-=-=-关于v2-=-=-
此版本是2.x系列发行版的一部分。为nxt_python或nxt python的1.x系列设计的程序将无法使用此版本。如果你想让一个旧程序工作,
它很可能需要一个1.x系列版本,可以从googlecode的nxt python下载页面下载。新项目应该使用
2.x系列版本(提示:这是一个!)由于新特性和api的改进。转换旧项目有点困难,并且没有得到官方支持,尽管一如既往,欢迎您寻求帮助。
-=-=-问题及其解决方案-=-=-
由于缺少硬件,对许多传感器的支持根本没有经过测试。我已经开始了一个测试这段代码的项目,但是
进行得很慢,我仍然不能测试所有的代码。如果您的数字传感器有问题,请参阅下面的故障排除指南,不要忘记报告您的故障!
同步电机支架尚未进行广泛的精度测试。它似乎工作得很好,但制动功能的精确性和两个电机之间的紧密性还没有得到正式的科学评估。
nxt python还没有经过测试,可能无法使用定制的nxt
固件版本(如果你不知道这意味着什么,你不需要担心T)。但是,如果固件支持标准的lego
usb/bt通信协议,那么一切或多或少都应该正常工作。
nxt python已经用bricks进行了测试,使用的lego固件版本高达
1.29,并且与协议版本1.124兼容(如果不是,大多数官方固件都会使用)。据报道,它还与
lejos.
-=-=-如果您与svn合作…-=-=-
svn签出的arduino目录(不包括在release
包中)包含一个名为nxtduemu的数字传感器单元测试系统。它
面向希望体验传感器、数字传感器框架和类的开发人员和高级用户。
有关更多信息和使用说明,请参阅arduino/readme。


特定的稳定性状态:
nxt.brick、nxt.telegram、nxt.direct和nxt.system:
从v2.2.0起已进行了一些重新设计,但似乎工作良好。
USB通信系统(nxt.usbsock)
在Linux上:非常稳定,经过了广泛的测试。
在Windows上:经过了一些测试;似乎工作得很好。
在Mac上:有些用户有问题。
蓝牙通信系统(nxt.bluesock,nxt.lightblueglue)
在Linux上:稳定;在Pybluez和Lightblue上都经过了很好的测试。
在Windows上:稳定;上一次我检查过的工作。
在Mac上:有些用户问题。
互联网通信系统(nxt.ipsock)
似乎在很大程度上起作用。偶尔会有打嗝。
Linux上的Fantom通信系统(nxt.fantomsock)
不支持Fantom驱动程序(不支持Fantom驱动程序)
Windows上的:未测试。
Mac上的:已测试,USB接口工作,蓝牙不工作。
nxt.locator:
在v2.2.0中使用改进的逻辑和新代码进行测试。
nxt.电机:
除同步电机支架外稳定,该支架在
这一阶段处于实验阶段,尚未进行广泛测试。
nxt.传感器:
非特定于特定传感器的代码经过良好测试,工作良好。超过一半的传感器类上次被报告工作;
据我所知,其余的都没有经过测试,而且是根据制造商的规范盲目编写的。
nxt.错误:
如果这个有问题,我会哭的。

联系:

marcus wanner(marcus@wanner s.net)
支持和开发邮件列表:
http://groups.google.com/group/nxt python
报告错误并建议新功能,网址:
http://code.google.com/p/nxt python/issues/list


Doug Lau,用于编写NXT_Python,这是我们的起点。
rhn,用于创建将成为v2的版本,进行许多较小的更改,以及
查看大量代码。
mindsensors.com(特别是ryan kneip)用于帮助编写大量传感器的代码,扩展类型检查覆盖的传感器
数据库,并为测试提供硬件。
为传感器提供识别信息的技术。我注意到
他们现在已经在他们的网站中包含了这些信息。;)




排除数字传感器故障(除非有问题,否则不要读取):
如果从数字传感器获取错误、奇怪行为或错误值,则可能是我们的代码中存在错误。按照以下说明尝试找出问题所在:
1。用不同的访问库测试传感器,确保其工作正常。再次检查代码。在一些传感器的接口中有一些奇怪的"特性";确保你做的事情是正确的。在nxt python中找到sensor类的源代码。它应该
在nxt/sensor/<;manufacturer>;.py中的某个位置,在标题"Class sensorname(
BaseDigitalSensor):"下。阅读任何关于某些事情的说明。

解决问题,然后报告
(或者根本不报告,但那不是很好…。
除了这一点,还需要python体验。

4.从制造商的网站上获取传感器的规格。确保
包含一个I2C寄存器表和使用它们的说明。
5.根据问题所在选择下列选项之一:
错误:
原因:我们搞砸了。
解决方案:检查错误中提到的行是否存在语法错误或其他问题。有一点python的经验,可能需要一些google搜索
这里。
奇怪的行为(在带有模式/命令的传感器中):
原因:nxt python的命令枚举不正确。
解决方案:使用传感器的规范验证它们,并更正任何问题。
请参阅"不正确"值"了解更多信息。
不正确的值:
原因:nxt python正在错误地处理该值。
解决方案:对照规范
所说的应该执行的操作,检查采样方法中发生的情况。如果存在不一致,请尝试修复它。
原因:nxt python的寄存器号或i2c_地址中的类型不正确。
解决方案:验证地址(数字)和字符串(结构格式
字符串)。若要验证地址,请使用规范。若要验证结构格式,您需要阅读以下内容:<;http://docs.python.org/library/struct.html format-
strings>;或熟悉结构。
请阅读传感器规范以确定应如何读取给定值,
然后启动t阅读示例方法,在
开始时检查问题。如果看起来是正确的,请返回I2C_地址块(靠近
类的顶部),并确保使用了正确的结构格式字符串。这里最常见的问题是,由于不正确的有符号/无符号设置,值被加减128或32768关闭。这可以通过切换字符串中字母的大小写来解决。其他问题可能包括使用了错误的大小(b、h或l),或者在后两个问题中使用了错误的字节顺序(<;或>;)。像往常一样,需要常识。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Selenium中弹出的java句柄窗口   java将格式化消息从任何片段传递到活动   java如何从int类型的方法返回多个整数   servlets数据不会使用java类和bean插入数据库   java如何修改Solr给出的搜索结果页面?   java如何在wildfly中重定向应用程序路径?   java使用Apache异步HTTP客户端从InputStream构造多部分请求   java解析来自REST的压缩输入流   java上载文件失败,原因是Vaadin Spring PlupLocaddon   使用需要CSRF令牌的旧端点的javascript   java如何在viewpager应用程序中将图像设置为墙纸?   java Axis2与SharePoint 2013(ADFS/FedAuth cookie)   java H2选择:意外的类型39映射   Docker Composition中拒绝java Spring应用程序连接   使用Java的ibm mq ibm mq获取LGETTIME   java循环逻辑中的漏洞   javaspringcom。mongodb。util。JSONParseException   方法调用“振动”可能会产生java。更新到Android Studio 3后出现lang.NullPointerException警告   datetime如何将日历的时间与java进行比较。sql。时间物体?