相关知识
仿真软件介绍
软件安装
使用Python的第一步
现在,我们将尝试使该机器人移动。 有关的RoBIOS命令是
int VWSetSpeed(int linSpeed, int angSpeed) |
我们将其称为v-(v-omega)驱动界面,因为我们可以为机器人指定速度v和角速度。 如果给定v且= 0,则机器人应该一直行驶。 在v = 0和设置为固定值的情况下,机器人应该在原地旋转,如果v和both都获得非零值,则机器人将驱动某种曲线。 让我们尝试一下!
最简单的开始是使用Python,但我们也会在C中重复此示例。 启动EyeSim并准备好机器人(如下图所示)后,使用命令窗口并键入:
或启动Thonny或PyCharm之类的编程环境。 在Python命令提示符后,输入您的机器人程序:
这将使前面提到的所有RoBIOS API命令可用。 然后输入您的第一个驾驶命令,例如
它将以零转速将机器人设置在100mm / s的直线路径上。 在命令窗口中,您将看到下面的系统对话框。
同时,在EyeSim窗口中,您可以看到机器人向前行驶。 实际上,如果我们不够快地使用 VWSetSpeed(0,0) 阻止它。
它会碰到后壁(下图)。 没问题,它只是一个模拟机器人,因此没有造成任何损坏。 您可以单击它,然后将其移回字段的中间。 使用+和–键,您还可以将机器人旋转到任意角度。
使用C的第一步
在C中直接行驶是由下述程序中的等效程序完成的。 但是,如果我们想避免墙体碰撞,就需要迅速停止它。
#include "eyebot.h" int main () { VWSetSpeed(100, 0); } |
include语句使RoBIOS API可用,并且所有C程序在程序启动时都需要一个主要的函数定义。 该程序中唯一的语句是VWSetSpeed命令。 请注意语句后的分号和封装函数定义的大括号。 在C中,您将需要很多这些。
由于C是经过编译的,并且不像Python那样被解释,因此我们必须先执行源程序的编译步骤,然后才能运行它。 尽管这似乎是不必要的额外工作,但它实际上是非常有益的,因为它会检查源代码中的错误并报告错误-而Python将开始执行程序,然后在遇到错误时可能在执行中间停止 。
使用我们放在一起的gccsim脚本,用C进行编译很简单(请参阅下面程序)。 第一个参数是C源文件,“-o”选项使您可以指定二进制输出文件的名称:gccsim straight.c -o straight.x
对于所有EyeSim示例目录,我们提供了所谓的Makefile,这些文件大大简化了C和C ++程序的编译。 有了正确的Makefile之后,您只需键入一个单词即可进行编译:make
假设我们已经启动了EyeSim模拟器,并且有一个机器人在等待命令,那么我们现在可以运行程序:./straight.x
Linux始终要求我们在执行命令时指定目录,因此,如果可执行程序Straight.x在当前目录中,则必须在其前面加上“ ./”。
用Python运动一个方形
让我们尝试将机器人绕正方形移动。 为此,我们使用了另外两个API命令,它们将直接驱动或原地旋转,但分别在所需的距离或角度之后停止。 这些命令是
int VWStraight(int dist, int lin_speed) int VWTurn(int angle, int ang_speed) |
对于VWStraight,它们的参数以[mm]和[mm / s]为单位,对于VWTurn,其参数为[degrees]和[degrees/ s]。 下面程序是驱动一个正方形的完整Python程序。
from eye import *
for x in range (0,4): VWStraight(300,500) VWWait() VWTurn(90, 100) VWWait() |
我们重复四次直行然后转弯的顺序。 for循环正在为我们做这件事。 其参数(0,4)表示计数器x将从0开始并在小于4时运行,因此它将执行迭代0、1、2、3,总共进行了四次运行,这正是我们所要做的。
在每个驱动命令之后都需要对VWWait进行调用,因为命令VWStraight和VWTurn将立即将控制权交还给程序,任何后续的驱动命令都将覆盖前一个命令。 因此,如果您忘记将VWWait放入程序中,则该程序将非常快地冲破所有命令,仅执行最后一条VWTurn命令。 它将仅旋转90°,并且不会从其起始位置移动。
模拟器的菜单命令“ File / Settings / Visualization”使我们可以打开机器人路径的可视化(下图2.7),
这将使我们更容易解释机器人的运动。 设置好此程序后,正方形程序将在地板上标记机器人的运动(见下图)。
最后,我们可以直接将驱动命令放入文件中,而不是直接在Python3解释器中键入驱动命令。 正方形 然后我们可以使用以下命令调用程序
或者,更进一步,我们使源文件成为square.py可执行文件(通过更改其文件许可权),然后在第一行添加Python3解释器的名称:
现在,我们可以直接从命令行更轻松地启动Python程序:
用C/C++运动一个方形
如下面程序所示,将C或C ++用于相同的驾驶任务并不难。 这些命令是相同的,但是C具有包括EyeBot / RoBIOS库的自己的语法,并且需要一个主要函数,该函数可以告诉系统程序在哪里启动。
#include "eyebot.h" int main() { for (int i=0; i<4; i++) // run 4 sides { VWStraight(400, 300); // drive straight 400mm VWWait(); // wait until finished VWTurn(90, 90); // turn 90 degrees VWWait(); // wait until finished } } |
for循环有点冗长,但是和Python中的一样。 它仅在内部大括号“ {”和“}”之间运行语句块四次。 和以前一样,在继续执行下一个驱动命令之前,VWStraight和VWTurn后面必须跟随VWWait语句,以确保它们完全执行。
SIM脚本和环境文件
显示和输入按钮
位置传感器
相机
机器人通讯
多任务
使用IDE
机器人嵌入式控制平台细节
机器人嵌入式控制平台仿真细节
机器人嵌入式控制平台功能
软件
算法
激光雷达
机器人群
行走
迷宫
视觉
转向
自主
阅读完整文档