【技术干货】如何更方便的开发机器人?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来更新波形。 我不知道他们为什么选择配置工具来做这件事,但它很有效。
好的文章,需要您的鼓励
12
- 最新资讯
- 最新问答
-
轮式机器人的发展及其趋势
关键字: 轮式机器人 发展 趋势 2024-07-03 -
具身智能的定义和作用
关键字: 具身智能 2024-06-28 -
什么是agv小车?特点有哪些?
关键字: agv小车 特点 2024-06-27 -
机器视觉应用的分类?范围有哪些?
关键字: 机器视觉 应用分类 范围 2024-06-25 -
机器人打磨抛光设备有哪些?特点是什么?
关键字: 机器人打磨 抛光 特点 2024-06-20
-
机器人焊接焊机报TC异常怎么解决
标签: 焊接机器人,焊机,TC异常 提问:TC 2024-06-28 16:05:01 -
机器人运动轨迹的控制方式有哪两种
标签: 机器人,运动轨迹,控制方式 提问:张默 2024-06-25 10:10:02 -
具身智能什么意思
标签: 具身智能,什么意思 提问:MESSE 2024-06-19 10:37:04 -
3D视觉无序抓取系统配置要点?
标签: 3D视觉,无序抓取,系统配置 提问:QUTE 2024-06-17 13:17:05 -
3d相机机器视觉检测原理
标签: 3D相机,视觉检测 提问:木木 2024-06-17 13:03:03
- 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-10-08 09:43:45
- 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
- 2024-07-03
- 2024-06-28
- 2024-06-27
- 2024-06-25
- 2024-06-20
- 2024-06-19
- 2024-06-17
- 2024-06-13
- 2024-06-11
- 2024-06-06