Microsoft Robotics Studio For LEGO Mindstorms NXT 使 用 手 册 Nov. 2007
Microsoft Robotics Studio 使 用 手 册 1 目 录 第 一 章 MSRS 安 装 与 使 用 1.1 MSRS 下 载 2 1.2 MSRS 系 统 运 行 要 求 2 1.3 MSRS 安 装 3 1.4 配 置 MSRS 与 NXT 的 蓝 牙 连 接 4 第 二 章 Visual Programming Language 2.1 VPL 快 速 入 门 7 2.2 Basic Activities 基 本 活 动 8 2.3 Services 服 务 18 2.4 模 块 的 连 接 26 2.5 NXT 基 本 编 程 步 骤 30 2.6 编 译 与 运 行 32 2.7 NXT 编 程 示 例 35
Microsoft Robotics Studio 使 用 手 册 2 第 一 章 MSRS 安 装 与 使 用 1.1 MSRS 下 载 Microsoft Robotics Studio 可 以 通 过 微 软 官 方 网 站 下 载 获 得 MSRS 网 址 :http://msdn.microsoft.com/robotics/ MSRS 目 前 最 新 的 版 本 为 Microsoft Robotics Studio 1.5 版, 其 中 更 新 了 对 NXT 的 服 务 程 序 支 持, 使 得 用 MSRS 连 接 和 控 制 NXT 机 器 人 更 为 简 单 与 方 便 1.2 MSRS 系 统 运 行 要 求 支 持 的 操 作 系 统 Windows CE; Windows Server 2003 R2 (32-Bit x86); Windows Server 2003 R2 x64 editions; Windows Vista; Windows XP; Windows XP 64-bit.NET Framework 2.0 框 架 : NET Framework 2.0 Software Development Kit (SDK) (x86 or x64) 框 架 中 Microsoft Visual Studio 2005 任 何 Visual Studio 2005 版 本, 包 括 Visual 2005 Express Editions, Visual Studio 2005 Standard Edition, Visual Studio 2005 Professional Edition or Visual Studio 2005 Team System Edition
Microsoft Robotics Studio 使 用 手 册 3 1.3 MSRS 安 装 1. 安 装 Microsoft Visual Studio 2005 在 安 装 MSRS 之 前, 首 先 要 确 保 计 算 机 上 已 经 安 装 了 Microsoft Visual Studio 2005 任 一 一 个 版 本 的 开 发 环 境 Visual Studio 2005 同 样 也 可 以 在 微 软 的 官 方 网 站 中 下 载 到 其 Express 版 本 或 试 用 版 只 有 安 装 了 Visual Studio 2005 与 其 附 带 的.NET Framework 2.0 框 架 包 之 后,MSRS 才 能 够 正 常 运 行 下 载 网 址 :http://www.microsoft.com/express/2005/ 2. 安 装 MSRS 第 一 步 : 点 击 已 下 载 的 MSRS 1.5 安 装 程 序 Microsoft Robotics Studio (1.5) 第 二 步 : 按 照 提 示 安 装 MSRS Runtime
Microsoft Robotics Studio 使 用 手 册 4 第 三 步 : 安 装 MSRS 相 关 程 序 包 安 装 完 成 MSRS 核 心 模 块 后, 安 装 程 序 还 会 提 醒 您 安 装 软 件 运 行 所 需 要 的 相 关 程 序 包, 其 中 包 括 用 于 运 行 仿 真 环 境 的 驱 动 程 序, 用 于 运 行 Visual Programming Language 的.NET3.0 框 架 包 和 MSRS 帮 助 文 件 第 四 步 : 完 成 安 装 全 部 安 装 完 成 后, 可 以 在 系 统 开 始 菜 单 中 找 到 所 安 装 的 Microsoft Robotics Studio 程 序 的 快 捷 方 式 1.4 配 置 MSRS 与 NXT 的 蓝 牙 连 接 由 于 MSRS 通 过 蓝 牙 无 线 通 讯 方 式 与 NXT 进 行 连 接 因 此, 在 使 用 MSRS 对 NXT 进 行 编 程 与 控 制 前, 先 要 将 NXT 与 所 使 用 的 PC 机 进 行 蓝 牙 配 对, 以 保 证 MSRS 能 够 正 确 获 取 蓝 牙 串 口 通 讯 端 口 第 一 步 : 选 择 合 适 的 蓝 牙 适 配 器 和 驱 动 程 序 确 保 您 的 计 算 机 具 有 蓝 牙 通 讯 模 块, 或 外 置 式 蓝 牙 适 配 器, 并 且 该 蓝 牙 适 配 器 能 够 与 NXT 控 制 器 很 好 的 兼 容
Microsoft Robotics Studio 使 用 手 册 5 第 二 步 : 搜 索 NXT 打 开 蓝 牙 控 制 程 序, 选 择 添 加 同 时, 启 动 NXT 控 制 器, 并 开 启 NXT 控 制 器 中 的 蓝 牙 通 讯 功 能 第 三 步 : 选 中 所 要 控 制 的 NXT 控 制 器 名 称, 并 按 下 一 步 第 四 步 : 输 入 蓝 牙 通 讯 密 钥
Microsoft Robotics Studio 使 用 手 册 6 第 五 步 : 等 待 确 认 NXT 控 制 器 上 输 入 的 密 码, 完 成 PC 机 与 NXT 的 蓝 牙 通 讯 配 对 完 成 蓝 牙 配 对 后, 系 统 会 提 示 所 分 配 给 设 备 的 COM 串 行 通 讯 端 口, 记 录 下 传 出 COM 的 端 口 号, 以 便 在 使 用 MSRS 与 NXT 通 讯 设 置 时 应 用 该 端 口 以 上 的 操 作 仅 是 在 第 一 次 配 置 NXT 蓝 牙 通 讯 的 设 置 过 程, 如 果 已 经 可 以 进 行 NXT 的 蓝 牙 连 接, 则 可 跳 过 上 述 步 骤
Microsoft Robotics Studio 使 用 手 册 7 第 二 章 Visual Programming Language 2.1 VPL 快 速 入 门 Visual Programming Language 是 一 种 基 于 数 据 流 形 式 的 编 程 方 式, 因 此 整 个 程 序 是 由 一 系 列 的 基 本 活 动 模 块 和 各 种 服 务 程 序 采 用 图 形 模 块 连 接 而 成 工 具 栏 (ToolBox): 提 供 包 括 程 序 创 建 存 档 编 辑 视 图 选 择 和 程 序 编 译 与 运 行 的 功 能 基 本 活 动 栏 (Basic Activites): 提 供 程 序 设 计 中 常 用 的 数 据 流 程 控 制 模 块 数 据 和 变 量 创 建 模 块 以 及 程 序 注 释 模 块 服 务 程 序 栏 (Services): 显 示 所 有 与 VPL 相 关 的 服 务 程 序 模 块 其 中 包 括 LEGO Mindstorms NXT 控 制 模 块 与 第 三 方 传 感 器 模 块 您 可 以 在 服 务 程 序 栏 中 搜 索 所 要 寻 找 的 服 务 程 序, 或 将 常 用 的 模 块 进 行 分 类 保 存 项 目 资 源 栏 (Project): 显 示 和 编 辑 当 前 主 程 序 所 调 用 的 程 序 和 配 置 文 件, 在 该 栏 中 编 辑 删 除 或 创 建 新 的 程 序 属 性 栏 (Properties): 显 示 所 选 程 序 模 块 的 相 关 属 性, 并 且 可 以 进 行 属 性 的 设 置 当 启 动 VPL 时,VPL 已 经 为 您 创 建 了 一 个 空 的 主 程 序 通 过 拖 动 左 侧 基 本 活 动 栏 和 服 务 程 序 栏 中 的 控 制 模 块 到 主 编 程 窗 口, 完 成 程 序 的 编 写
Microsoft Robotics Studio 使 用 手 册 8 2.2 Basic Activities 基 本 活 动 在 VPL 中 提 供 了 11 个 Basic Activities 基 本 活 动 模 块, 将 这 些 模 块 相 互 连 接 或 与 其 它 服 务 程 序 模 块 相 连 接 来 创 建 一 个 数 据 流 程 序 Activity 活 动 Activity 活 动 模 块 能 够 允 许 创 建 属 自 己 的 数 据 流 程 序 模 块 集 可 以 将 一 些 具 有 特 定 功 能 的 程 序 编 写 在 此 活 动 中 进 行 封 装, 作 为 一 个 功 能 模 块 在 其 它 程 序 中 就 能 方 便 地 调 用 此 模 块, 并 完 成 特 定 的 行 为 双 击 Activity 基 本 活 动, 打 开 新 的 编 程 窗 口 在 该 窗 口 中 可 以 编 写 特 定 的 行 为 程 序 并 进 行 封 装 为 了 使 数 据 能 在 该 模 块 中 得 到 处 理 并 输 出, 需 要 将 模 块 内 的 程 序 依 次 从 左 侧 的 输 入 端 口 连 接 至 右 侧 的 输 出 端 口
Microsoft Robotics Studio 使 用 手 册 9 选 择 编 程 窗 口 上 方 的 Actions and Notifications 图 标, 可 以 对 输 入 输 出 端 口 设 置 相 应 的 变 量, 以 便 数 据 流 在 输 入 与 输 出 过 程 中 的 参 数 传 递 如 果 您 所 编 写 的 活 动 模 块 不 需 要 输 入 数 据 或 输 出 数 据, 仅 仅 作 为 一 个 过 程 而 被 触 发, 则 可 以 点 击 上 方 的 Action 选 择 框, 并 选 择 Start 选 项 该 活 动 程 序 模 块 将 变 成 一 个 不 带 输 入 输 出 端 口 的 空 程 序 窗 口 完 成 活 动 模 块 编 写 后, 回 到 主 程 序 窗 口, 将 自 己 创 建 的 Activity 活 动 模 块 与 其 它 模 块 相 连 接, 就 可 以 将 具 有 特 定 功 能 的 子 程 序 应 用 到 主 程 序 中 了
Microsoft Robotics Studio 使 用 手 册 10 Variable 变 量 Variable 变 量 模 块 允 许 您 在 此 模 块 中 创 建 设 置 或 读 取 变 量, 同 时 可 以 选 择 该 变 量 的 类 型, 如 整 型 浮 点 型 字 符 串 型 等 点 击 图 标 右 下 方 的 标 识, 弹 出 变 量 设 置 对 话 框 在 该 对 话 中, 您 可 以 添 加 或 删 除 变 量, 并 在 Type 下 拉 列 表 框 中 设 置 变 量 的 数 据 类 型 在 VPL 中, 变 量 的 命 名 是 区 分 大 小 写 的, 并 且 名 称 的 首 字 符 要 设 置 为 字 母 形 式 完 成 变 量 设 置 后, 点 击 Variable 变 量 模 块 的 下 拉 列 表 框, 可 以 选 择 所 要 使 用 的 变 量, 并 在 连 线 时 设 定 该 变 量 的 功 能 为 SetValue 变 量 输 入 或 GetValue 变 量 输 出
Microsoft Robotics Studio 使 用 手 册 11 Calculate 计 算 Calculate 计 算 模 块 提 供 简 单 的 数 学 计 算 和 逻 辑 操 作 等 表 达 式 根 据 操 作 数 的 类 型, 用 户 可 以 在 图 标 的 输 入 框 中 可 以 键 入 数 字 消 息 返 回 值 数 据 成 员 或 其 它 服 务 程 序 预 先 定 义 的 变 量 值 数 学 计 算 操 作 : + 加 - 减 * 乘 / 除 % 取 余 数 字 符 串 操 作 : + 连 接 两 个 字 符 串 或 连 接 一 个 字 符 串 与 一 个 数 值 逻 辑 操 作 : && 与 操 作 或 操 作! 取 非 操 作 当 Calculate 计 算 模 块 与 其 它 模 块 相 连 接 后, 点 击 模 块 中 的 输 入 框, 可 以 选 择 所 要 操 作 的 输 入 变 量 有 时, 当 前 一 模 块 发 送 的 消 息 包 括 多 种 数 据, 而 Variable 变 量 模 块 又 无 法 分 解 这 些 数 据 结 构 时, 可 以 应 用 Calculate 计 算 模 块 选 择 所 要 储 存 的 数 据, 并 将 其 输 出 保 存 到 Variable 变 量 模 块 的 变 量 中
Microsoft Robotics Studio 使 用 手 册 12 Data 数 据 Data 数 据 模 块 用 来 为 其 它 活 动 或 服 务 程 序 提 供 所 要 设 定 的 参 数 值 在 模 块 的 输 入 框 中 可 以 键 入 所 要 设 定 的 参 数 值, 参 数 可 以 是 整 型 浮 点 型 布 尔 类 型 等 点 击 图 标 下 方 的 下 拉 列 表 框 选 择 相 应 的 数 据 类 型 Join 汇 总 Join 数 据 合 并 模 块 可 以 将 两 个 或 更 多 的 数 据 参 数 合 并 在 一 起, 组 成 一 个 数 据 结 构, 并 发 给 其 后 连 接 的 模 块 进 行 数 据 处 理 在 模 块 的 文 本 输 入 框 中 输 入 代 表 该 数 据 的 局 部 变 量 名 称 在 以 后 的 使 用 中, 可 以 直 接 使 用 该 变 量 名 称 来 找 到 这 个 数 据 当 数 据 结 构 较 为 复 杂 时, 也 可 以 使 用 点 运 算 符, 如 (x.a) 的 形 式 来 表 示 这 个 数 据 成 员 变 量 右 击 Join 数 据 合 并 模 块, 在 弹 出 的 菜 单 中 选 择 Add Element 选 项, 可 以 增 加 合 并 数 据 变 量
Microsoft Robotics Studio 使 用 手 册 13 Merge 合 并 Merge 分 支 汇 总 模 块 将 两 个 或 多 个 数 据 流 汇 总 该 模 块 仅 仅 是 将 多 个 消 息 集 中 起 来 输 出 到 下 一 个 模 块 环 节 中, 并 没 有 任 何 其 它 的 连 接 条 件 If 判 断 If 判 断 分 支 模 块 能 够 根 据 用 户 在 输 入 框 中 所 输 入 的 条 件 进 行 判 断 当 条 件 为 真 时, 则 导 通 上 半 分 支 ; 当 条 件 为 假 时, 导 通 下 半 分 支 条 件 判 断 的 表 达 式 可 以 使 用 下 列 操 作 符 : = 或 == 表 示 等 于!= 或 <> 表 示 不 等 于 < 表 示 小 于 > 表 示 大 于 <= 表 示 大 于 等 于 >= 表 示 大 于 等 于 点 击 图 标 中 的 + 键 可 以 增 加 判 断 条 件 和 判 断 分 支
Microsoft Robotics Studio 使 用 手 册 14 Switch 选 择 Switch 条 件 选 择 模 块 判 断 输 入 的 消 息 是 否 符 合 输 入 框 中 表 达 式 的 条 件 如 果 符 合 某 一 表 达 式 的 条 件, 则 选 择 导 通 该 分 支 点 击 图 标 中 的 + 键 可 以 增 加 判 断 条 件 和 判 断 分 支 List 列 表 List 列 表 模 块 可 以 用 来 创 建 一 个 空 的 数 据 项 列 表 用 户 能 在 模 块 的 下 拉 框 中 选 择 所 需 的 数 据 类 型 该 模 块 所 生 成 的 列 表 数 据 类 型 需 要 与 List Functions 模 块 一 起 使 用 才 能 实 现 对 一 个 数 据 列 表 进 行 添 加 删 除 排 序 等 操 作 如 果 在 程 序 的 其 它 地 方 也 需 要 使 用 到 该 列 表 模 块, 则 可 以 通 过 创 建 一 个 变 量 的 方 式 储 存 该 列 表, 并 在 其 它 地 方 调 用 此 变 量 通 常, 生 成 列 表 类 型 的 变 量 后, 该 变 量 的 数 据 类 型 就 显 示 为 List of 的 形 式, 表 明 该 数 据 是 一 个 列 表
Microsoft Robotics Studio 使 用 手 册 15 List Functions 列 表 List Functions 列 表 功 能 模 块 用 来 对 已 创 建 的 数 据 列 表 进 行 数 据 修 改 在 模 块 的 下 拉 框 中 可 以 选 择 各 种 不 同 的 数 据 操 作 功 能, 包 括 数 据 列 表 的 数 据 添 加 合 并 反 向 排 序, 删 除 索 引 等 功 能 Append: 将 一 个 字 符 串 类 型 的 Forward 数 据 添 加 到 名 为 List1 的 数 据 列 表 中 Concatenate: 将 一 个 名 为 List1 与 一 个 名 为 List2 的 两 个 字 符 串 类 型 列 表 进 行 合 并, 合 并 的 两 个 数 据 列 表 必 须 类 型 相 同
Microsoft Robotics Studio 使 用 手 册 16 Reverse: 将 数 据 列 表 进 行 颠 倒 排 序 Sort: 将 数 据 列 表 按 升 序 的 方 式 进 行 排 列 Remove Item: 将 一 个 指 定 索 引 号 为 1 的 数 据 从 数 据 列 表 中 删 除 Insert Item: 将 一 个 Backward 的 字 符 串 类 型 数 据 插 入 到 数 据 列 表 中, 并 指 定 其 插 入 位 置 的 索 引 号 为 2 Get Index: 从 数 据 列 表 中 获 取 Backward 的 字 符 串 类 型 数 据 的 索 引 号