国外课栈 - 国外电子信息技术

机器人嵌入式控制平台软件

 二维码 7
文章附图

相关知识

仿真软件介绍

软件安装

使用Python的第一步

现在,我们将尝试使该机器人移动。 有关的RoBIOS命令是

int VWSetSpeed(int linSpeed, int angSpeed)

我们将其称为v-(v-omega)驱动界面,因为我们可以为机器人指定速度v和角速度。 如果给定v且= 0,则机器人应该一直行驶。 在v = 0和设置为固定值的情况下,机器人应该在原地旋转,如果v和both都获得非零值,则机器人将驱动某种曲线。 让我们尝试一下!

最简单的开始是使用Python,但我们也会在C中重复此示例。 启动EyeSim并准备好机器人(如下图所示)后,使用命令窗口并键入:

python 3

或启动Thonny或PyCharm之类的编程环境。 在Python命令提示符后,输入您的机器人程序:

from eye import *

这将使前面提到的所有RoBIOS API命令可用。 然后输入您的第一个驾驶命令,例如

VWSetSpeed(100,0)

它将以零转速将机器人设置在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解释器中键入驱动命令。 正方形 然后我们可以使用以下命令调用程序

python3 square.py

或者,更进一步,我们使源文件成为square.py可执行文件(通过更改其文件许可权),然后在第一行添加Python3解释器的名称:

#!/usr/bin/env python3

现在,我们可以直接从命令行更轻松地启动Python程序:

./square.py

用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

机器人嵌入式控制平台细节

机器人嵌入式控制平台仿真细节

机器人嵌入式控制平台功能

软件

算法

激光雷达

机器人群

行走

迷宫

视觉

转向

自主

阅读完整文档

文章分类: 嵌入式机器人
分享到: