65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 NKH Mindsqualls 库进行基本机器人控制

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (6投票s)

2010年8月28日

CPOL

4分钟阅读

viewsIcon

38140

downloadIcon

1425

演示如何使用NKH Mindsqualls库通过蓝牙进行基础的机器人远程控制。

引言

这段代码演示了如何通过蓝牙连接对乐高NXT机器人进行一些基本控制。它使用了可免费下载的NKH Mindsqualls库,用于与乐高NXT积木通信。在Google中搜索Mindsqalls即可找到原始下载。

背景

一位朋友刚拿到他的第一套乐高Mindstorms套件,他让我用C#编写一个基本程序,演示如何使用C#和Mindsqalls库。所以,这里也提供给其他遇到问题的任何人。

Using the Code

我的代码并没有改进NKH Mindsqalls类,但是我的远程控制面板和相关功能可以在其他程序中重复使用。

这个程序是一个基本的应用程序,只有两个主要部分

  1. MainForm - 主窗口窗体
  2. 远程控制面板 - 我制作的一个用于控制机器人电机运行的用户控件

它是如何工作的呢?当应用程序启动时,它运行MainFormMainForm有5个控件

  • 1. 远程控制面板 - 用于控制电机运行的用户控件
  • 2. 状态标签 - 告诉用户程序正在做什么
  • 3-5. 传感器状态标签 - 传感器1到3的状态显示在这些标签中。

MainForm运行时,它会循环遍历所有可用的串口,尝试连接到NXT。如果无法建立连接,它会告诉用户,然后退出,因为没有连接,程序就变得无用,最好退出。如果建立了连接,程序会将传感器1和2设置为触摸传感器,将传感器3设置为超声波传感器。由于我未知的原因,NKH Mindsqualls库没有提供用于确定连接到任何给定端口的传感器类型的函数,而且该库也不支持标准的颜色传感器。因此,设置的传感器类型是硬编码的,传感器4由于显而易见的原因被关闭,因为许多人只有标准套件,而第四个传感器(颜色传感器)不受支持。

如果所有这些都成功完成,应用程序将启用远程控制面板,并通过状态标签告诉用户现在已连接NXT。(要断开连接,用户必须关闭应用程序。)如果机器人的电池电量不足,应用程序还会每30秒警告用户一次,因为蓝牙消耗相当多的电量。

远程控制面板有两个部分

  1. 安装
  2. 运行控件

在用户连接到机器人期间,可以随时更改设置。该设置基于这样的理念:每次用户想要运行电机时,他们都会点击相关的按钮,应用程序会将当前设置与上次设置进行比较,如果它们相同,则电机会立即运行;但是,如果它们不同,则所有电机都将重置为当前设置,然后运行电机。通过这种方式,用户可以快速轻松地更改哪些电机是驱动电机,以及哪些(如果有)是辅助电机,以及驱动功率和转向比等设置。

运行控件分为两部分

  1. 驱动电机(2个或3个)
  2. 辅助电机(1个或无) - 也可以设置为转向

必须至少有两个驱动电机,但可以有三个。如果只有两个驱动电机,代码会使用Mindsqualls的MotorPair类。这将配对两个电机,并保证(如果不进行调试同时运行应用程序)这两个电机将完美同步运行。如果有三个驱动电机,则代码会手动尝试同步运行它们,但不能保证同步。

不必有辅助电机,如果所有三个电机都设置为驱动电机,则没有辅助电机。如果有备用电机,则将其设置为辅助电机,并具有其自己的一组独立控件。但是,辅助电机也可以设置为用于转向,因此当用户想要左转或右转时,辅助电机就像方向盘一样使用。

对于任何机器人程序员来说,这都相当基础,但如果您是机器人编程新手,不要因为看起来复杂而气馁。大部分代码都是相同的,但每次代码重复时都会更改一个选项。玩得开心!:D

关注点

我发现无法检测实际连接到任何给定端口的传感器类型很烦人,更令人沮丧的是标准的颜色传感器不受支持。希望将来能解决这个问题:/。

历史

  • 2010 年 8 月 28:初始发布
© . All rights reserved.