【干货】ROPS,好用的机器人开发工具
所有机器人都需要传感器,计算和驱动。
现成的x86 PC为您提供了一个熟悉的Linux环境来进行开发和部署。 然而,PC存在严重问题,现成的主板不能提供与外界的低延迟和噪声容忍连接。 USB似乎就是解决方法,但是一旦总线忙碌,如果你通过USB连接到电机控制器,延迟会让你感到困惑。
在机箱内隐藏着一个解决方案PCI Express。 虽然你很难找到PCI-e电机控制器或激光雷达,但速度快,延迟低。 这就是ROPS的用武之地,可以作为PCI-e与CAN和RS485等总线之间的桥梁,您可以在电机控制器和传感器上找到它们。
由于几乎所有移动机器人都需要IMU和GPS,有了ROPS这些都不是问题。
我们将在CSG325封装中使用Xilinx Artix-7 XC7A35T作为ROPS的核心。 35T是中档Artix部分,CSG325封装将所有重要的GTP收发器绑定,以便我们可以使用PCI-e连接到主机。
我们计划使用的传感器是ST LSM9DS1 IMU,ST LPS25HW气压计和uBlox NEO-M8T GPS。
将有后面板IO用于连接第三方硬件,如电机控制器和其他传感器,但我们还没有确定任何细节。 目前只有很少的FPGA用于IO,因此这里有很多灵活性。 在主机外壳内的夹层或柔性电缆连接器上也可能有额外的IO。
Verilog仿真工具
当你处理任何类型的代码时,收紧write-compile-test循环总是有帮助的,特别是当你第一次学习时。 对于SPI模块,最重要的是SPI输出的时序。 为此,我们需要模拟verilog并检查输出。 以下是我过去常用的工具。
编辑器
我使用neovim,但它并不重要。 我强烈建议使用语法高亮,强大的查找和替换以及跨平台功能,以便您可以随时随地使用它。
Bash Glue
这就是魔术发生的地方,这个脚本以您当前正在处理的文件的形式接受一个参数,并等待它被保存。 保存后,脚本会编译该文件,对其进行模拟,并更新GTKWave的输出。 我在这里使用verilog,但你可以在inotifywait之后用你正在处理的项目中有用的东西替换它们。 这可能是编译器,linter等。我将它的输出保存在我工作区的左上方窗格中,这样我就可以检查出现的任何错误。
inotifywait
这确实是脚本的关键。 当作为第一个参数提供给脚本的文件被关闭时,如果它被打开为可写,则inotifywait退出。 这样,如果你捕获文件,或差异,它将不会做任何事情。 它不会查看文件内部以查看是否已进行更改,它只知道文件已关闭。
iVerilog
Icarus Verilog是一个verilog综合和模拟工具。 iVerilog将源编译为类似中间程序集的源,然后由iVerilog工具集的另一部分vvp执行。 这样做会输出一个.lxt文件,该文件存储verilog中各种连线和寄存器的波形。
在脚本中,iverilog的-o选项命名输出文件,这里我们只使用main。 然后我们在main上调用vvp,并告诉vvp将波形输出到.lxt文件。
GTKWave
模拟verilog时,可以使用类似printf的语句,也可以转储每行的状态并注册到文件中。 查看寄存器转储。 我正在使用GTKWave。 在我看来,它是一个完美的软件。 当我想检查波形时,它会完成我需要的一切,而不是其他任何东西。
在脚本中,我们调用gconftool-2来更新波形。 我不知道他们为什么选择配置工具来做这件事,但它很有效。
好的文章,需要您的鼓励
20
- 最新资讯
- 最新问答
-
智能仓储系统的构成包括什么?有哪些特点?
关键字: 智能仓储 智慧物流 2025-05-15 -
微型压力传感器的原理是什么?有哪些应用?
关键字: 传感器 压力传感器 鑫精诚 2025-04-03 -
立体库堆垛机是什么?有哪几种类型?
关键字: 堆垛机 立体仓库 2025-03-24 -
埋弧焊是什么焊接方法?有什么特点?
关键字: 弧焊 埋弧焊 2025-03-17 -
AGV小车是什么?有哪些分类及特点?
关键字: agv小车 2025-03-12
-
激光焊接机器人的特点有哪些?
标签: 激光焊接机器人,焊接机器人,工业机器人 提问:小T 2025-04-15 11:02:00 -
工业机器人码垛原理是什么?
标签: 码垛机器人,工业机器人 提问:晓明 2025-03-24 12:00:00 -
什么是自动焊接和半自动焊接?
标签: 焊接,焊接机器人 提问:小君 2025-03-18 09:00:00 -
发那科机器人的信号种类?
标签: 发那科机器人,IO信号 提问:小马 2025-03-10 15:00:00 -
弧焊机器人有什么性能标准和要求?
标签: 弧焊机器人 提问:小常 2025-03-05 15:00:00
- 2021-06-10 10:45:45
- 2021-06-11 13:34:28
- 2020-05-29 10:03:22
- 2019-09-24 11:19:01
- 2020-01-16 13:27:13
- 2019-03-22 15:42:15
- 2018-07-18 16:14:08
- 2022-08-30 15:17:40
- 2022-08-24 14:16:37
- 2022-09-13 12:17:35
- 2023-09-01 10:16:04
- 2022-08-03 10:20:40
- 2025-05-15
- 2025-04-03
- 2025-03-24
- 2025-03-17
- 2025-03-12
- 2025-03-05
- 2025-02-27
- 2025-02-19
- 2025-02-18
- 2025-02-10