控制器启动
.wbt文件包含每个机器人需要启动的控制器的名称。控制器名称是平台和语言无关的字段;例如,当在.wbt文件中将控制器名称指定为“ xyz_controller”时,则不会说任何有关控制器的编程语言或平台信息。以确保.wbt文件独立于平台和编程语言。
当Webots尝试启动控制器时,首先必须确定该控制器使用哪种编程语言。因此,Webots在项目的controllers目录中查找与控制器名称匹配的子目录。然后,在此控制器目录中,查找与控制器名称匹配的文件。例如,如果控制器的名称为“ xyz_controller”,则Webots将以指定的顺序在“ PROJECT_DIRECTORY / controllers / xyz_controller”目录中查找这些文件。
1.“ xyz_controller [.exe]”(二进制可执行文件)
2.“ xyz_controller.class”(Java字节码类)
3.“ xyz_controller.jar”(一个Java .jar文件)
4.“ xyz_controller.bsg”(Webots / BotStudio文件)
5.“ xyz_controller.py”(Python脚本)
6.“ xyz_controller.m”(一个MATLAB脚本)
Webots将使用所需的语言解释器(Java,Python,MATLAB)执行找到的第一个文件。因此,优先级由文件扩展名定义,例如,如果在同一控制器目录中还存在名为“ xyz_controller.py”的文件,则将无法执行“ xyz_controller.m”。如果以上文件名都不存在,或者找不到所需的语言解释器,则将发出错误消息,Webots将启动“ void”控制器。
使用C
介绍
C API(应用程序编程接口)由一组大约200个C函数组成,可以在C或C ++控制器代码中使用。这是Webots模拟器的底层接口。所有其他API均基于C API构建。Webots控制器的大多数示例都是用C编写的,因此C API是Webots事实上的标准API。尽管在控制器示例中表示较少,但其他API提供的功能与C API完全相同。
C / C ++编译器安装
Windows说明
Windows版本的Webots带有MinGW C / C ++编译器的预安装副本,因此通常无需安装单独的编译器。MinGW编译器是Windows平台上GNU编译器集合(gcc)的端口。使用MinGW编译器的优点是您的控制器代码具有更好的可移植性。如果您使用MinGW开发代码,则可以直接在其他Webots支持的平台(macOS和Linux)上重新编译代码。
macOS说明
为了在Mac上编译C / C ++控制器,您将需要安装Apple Xcode。Xcode是Apple开发的用于开发macOS软件的工具套件。Xcode是免费的,可以从Apple App Store下载。Webots主要需要gcc(GNU C编译器)和makeXcode命令。要安装这些命令,请启动Xcode并转到Xcode菜单,“首选项”,“下载”,“组件”,然后单击Install“命令行工具”。
Linux指令
为了编译C控制器,Webots将需要GNU C编译器和GNU Make实用程序。在Linux上,这些工具通常是预先安装的,否则您将需要分别安装它们(gcc和make软件包)。对于C ++,您还需要GNU C ++编译器(g ++软件包)。您也可以选择安装GNU调试器(gdb软件包)。
使用C ++
介绍
C ++ API是上一节中描述的C API的包装。C函数的主要部分已包装在特定类的函数中。它目前由大约25个classes和大约200个public functions组成。这些类是场景树节点的表示形式(例如Robot,LED等)或实用程序类(例如Motion,ImageRef等)。在参考指南中可以找到这些功能的完整说明,而在本章中可以找到有关编程C ++控制器的常用方法的说明。
C ++ API的源代码
Webots版本中提供了C ++ API的源代码。您可能有兴趣浏览包含头文件的目录(“ include / controllers / cpp”),以便获得每个类和函数的精确定义,尽管参考指南提供了对公共函数的清晰描述。编译C ++控制器时,将自动包含此目录。
对于想要使用第三方开发环境的用户,了解共享库(“ CppController.dll,libCppController.so”或“ libCppController.dylib”)位于您的“ lib”子目录中非常有用。 Webots目录。链接C ++控制器时,将自动包含此目录。
高级用户可能需要从C ++来源修改C ++ API 。
使用Java
介绍
Java API是使用SWIG从C ++ API生成的。这意味着它们的类层次结构,它们的类名和函数名几乎是相同的。Java API当前由位于com.cyberbotics.webots.controller包中的大约25个类的集合组成,这些类具有大约200个公共功能。这些类要么是场景树节点(例如Robot,LED等)的表示形式,要么是实用程序类(例如Motion,ImageRef等)。在参考指南中可以找到这些功能的完整说明,而在本章中可以找到有关编程Java控制器的常用方法的说明。
Java和Java编译器安装
为了开发和运行Webot的Java控制器,必须具有Java开发工具包(JDK)1.8或更高版本的64位版本。
Java开发工具包(JDK)是免费的,供个人和开发使用,可以从Oracle技术网下载。确保选择JDK版本8或更高版本的标准版(SE)的最新64位版本。然后,按照安装说明进行操作。
该java命令是Java虚拟机(JVM)。它用于在Webots中执行Java控制器。该javac命令是Java编译器;它用于在Webots的文本编辑器中编译Java控制器。
安装后,应该可以从终端访问这些命令。如果不是这种情况,可以通过修改PATH环境变量来完成。
Windows
在Windows上,必须使用对话框设置PATH变量Environment Variables。
可以这样打开此对话框:选择Start, Settings, Control Panel, System and Security, System并打开Advanced system settings。选择Advanced选项卡,然后单击Environment Variables按钮。
在对话框的该User variables for ...部分中,寻找一个名为PATH的变量。将已安装的SDK的“ bin”路径添加到PATH变量的右端。如果PATH变量不存在,则应创建它。PATH的典型值为:
其中jdk-XXXXXX代表已安装的JDK软件包的实际名称。
然后,您需要重新启动Webots,以便将更改考虑在内。
请注意,也可以为所有用户全局设置PATH。在Linux上,可以通过将其添加到“ / etc / profile”文件中来实现。在Windows上,可以通过将其添加到对话框部分的Path变量中来实现。System variablesEnvironment Variables
Linux
如果在终端上无法获得安装java或javac命令之后,则应通过将以下行添加到“〜/ .bashrc”或等效文件中来更新PATH:
其中java-XXXXXX应该与已安装的JDK软件包的实际名称相对应。
OpenJDK
除了Oracle JDK以外,在大多数流行的Linux发行版上,还可以从系统软件包管理器直接安装开源JDK。可以在OpenJDK网站上找到详细信息。
macOS
在macOS上,JDK安装程序应自动设置PATH变量,因此您无需执行任何操作。
对Java安装进行故障排除
如果Java控制器无法执行或编译,请检查java和javac命令是否可访问并且与JDK的64位版本相对应。您可以通过打开终端(Linux和macOS)或命令提示符(Windows)并键入java -version或轻松地验证这一点javac -version。如果无法从终端(或命令提示符)访问这些命令,则Webots将无法访问这些命令。如果您的默认Java命令指向Java的32位版本,则Webots可能会显示如下错误消息:
Native code library failed to load. See the chapter on Dynamic Linking
Problems in the SWIG Java documentation for help.
java.lang.UnsatisfiedLinkError: libJavaController.jnilib: no suitable
image found.
链接到外部JAR文件
编译或执行Java控制器时,分别使用选项java和分别执行和javac命令-classpath。此选项在内部用控制器库的位置,当前控制器目录的位置以及CLASSPATH环境变量的内容填充。为了包括第三方jar文件,您应该在运行Webot之前定义(或修改)此环境变量(请参阅上一节以了解如何设置环境变量)。在Windows下,CLASSPATH如下所示:
$ set CLASSPATH=C:\Program Files\java\jdk\bin;relative\mylib.jar
在Linux和macOS下,它看起来像这样:
$ export CLASSPATH=/usr/lib/jvm/java/bin:relative/mylib.jar
Java API的源代码
Webots版本中提供了Java API的源代码。您可能会对浏览包含Java文件的目录感兴趣,以便获得每个类和函数的精确定义,尽管这些文件是由SWIG生成的,并且很难阅读。
对于想要使用第三方开发环境的用户,了解Java API的程序包(“ Controller.jar”)位于“ lib”目录中可能会很有用。
高级用户可能需要修改Java API。他们将需要修改SWIG脚本和Makefile。
使用Python
介绍
Python API是使用SWIG从C ++ API生成的。这意味着它们的类层次结构,它们的类名和函数名几乎相同。Python API当前由一组大约25个类组成,这些类具有位于称为controller的模块中的大约200个公共函数。这些类要么是场景树节点(例如Robot,LED等)的表示形式,要么是实用程序类(例如Motion,ImageRef等)。在参考指南中可以找到这些功能的完整说明,而在本章中可以找到有关编程Python控制器的常用方法的说明。
Webots的Python API支持Python版本2.7、3.7、3.8和3.9。请注意,自2020年1月1日起不推荐使用Python 2.7,应避免使用。在Ubuntu上,它还支持Python版本3.5和3.6。
除了Webots内置编辑器之外,还可以使用PyCharm来编辑和启动Python控制器,有关逐步过程,请参阅在Webots中使用PyCharm一章。
安装
Webots使用标准python命令行启动Python 。结果,它执行python在current中找到的第一个二进制文件PATH。如果要使用其他版本的Python,请在需要时安装它并配置您的环境,以便python在终端中从命令行调用时它成为默认版本。或者,您可以从“常规”选项卡中的“ Webots首选项”更改默认的Python命令。如果将其设置为python3.8而不是python,则默认情况下将使用此版本的Python(如果可从命令行获得)。还可以通过在每个机器人控制器目录中编辑文件的相应[python]部分,runtime.ini并设置每个机器人控制器的Python版本,来设置不同版本的Python。COMMAND值python3,python3.8或python2.7,等等。如果在runtime.ini控制器文件中指定,则将执行此Python命令,而不是默认命令以启动该控制器。在Linux和macOS上,也可以通过在主python控制器文件中设置标准的Python shebang标头行来覆盖此值,例如:
在Windows上,不支持shebang标头行选项。但是,如果不匹配(例如,在shebang标头行上指定的版本与Webots使用的Python的实际版本不匹配),它将对其进行解析并显示警告。
Linux安装
大多数Linux发行版已经安装了Python 2.7和3.x。:要检查在系统上安装了Python的版本,可以在终端中输入python --version,python3.8 --version,python2.7 --version,python3 --version,等。
macOS安装
默认安装Python 2.7。您可以从Python网站或使用Homebrew安装Python 3.7、3.8或3.9 。:要检查在系统上安装了Python的版本,可以在终端中输入python --version,python3.8 --version,python2.7 --version,python3 --version,等。
Windows安装
您应该从Python官方网站安装最新版本的Python 3.7(64位),3.8(64位),3.9(64位)或2.7(64位)。然后,您必须修改PATH环境变量以将路径添加到python.exe位于主安装文件夹中的二进制文件中。要检查此操作是否正确完成,您可以打开DOS控制台(CMD.EXE)并输入python --version。如果显示正确的Python版本,则说明一切设置正确并且您应该能在WEBOTS_HOME/projects/languages/python/worlds/example.wbtworld文件中运行Webots随附的Python示例。
资源库
该WEBOTS_HOME/projects/web/visual_tracking样品模拟使用Python的OpenCV和NumPy的包。这些软件包必须安装在系统上才能正确运行此模拟。使用Python pip,NumPy软件包将与opencv-python软件包一起自动安装。
Linux库
使用pip命令安装OpenCV:
macOS库
打开一个终端并输入:
Windows库
打开DOS控制台(CMD.EXE)并键入:
PYTHON_PATH例如,Python安装目录的路径在哪里C:\Python36。
使用其他Python版本
如上所述,Webots的Python库已针对Python 2.7、3.7、3.8、3.9的标准版本进行了预编译,而在Ubuntu上针对系统随附的默认Python 3版本进行了预编译。但是,可以通过重新编译Webots Python库来使用另一个Python版本,例如Anaconda Python。这样的任务需要一些有关软件安装,从源代码和Makefile进行编译的知识。
总体思路是执行以下步骤:
1.安装新的Python版本,并在PATH环境变量中添加新python二进制文件的路径,以便您可以python --version从控制台执行并获取正确的版本号。
2.获取SWIG。
3.使用其Makefile重新编译Python包装器(请参阅内部详细信息以了解如何使用不同的选项进行调用)。
在Windows上,您将需要安装x86_64的MSYS2并在管理员模式下运行它才能修改中的文件$WEBOTS_HOME。从MSYS2控制台,您至少需要安装gcc make和swig使用的pacman命令:
现在,您可以从此处继续执行步骤3。
使用MATLAB
MATLAB简介
MATLAB TM是一种数值计算环境和一种解释型编程语言。它使矩阵操作,功能和数据绘制,算法的实现以及用户界面的创建变得容易。您可以在MathWorks官方网站上获得更多信息。MATLAB被广泛用于机器人技术中,尤其是其图像处理,神经网络和遗传算法工具箱。Webots允许直接将MATLAB脚本用作仿真的机器人控制器程序。使用MATLAB界面,在运行模拟时,可以很容易地可视化控制器或主管数据,例如,处理后的图像,传感器读数,优化算法的性能等。此外,可以在Webots中直接重用现有的MATLAB代码。
MATLAB安装
为了在Webots中使用MATLAB控制器,必须安装MATLAB软件(需要MATLAB许可证)。Webots R2021a从2015b开始仅支持64位MATLAB版本。
在Windows上,除了MATLAB外,还需要安装MATLAB MinGW-w64 C / C ++编译器。
Webot必须能够访问“ matlab”可执行文件(通常是脚本)才能运行控制器m文件。Webots在PATH(或Windows上的Path)环境变量的每个目录中寻找“ matlab”可执行文件。请注意,这类似于从终端(或Windows上的命令提示符)调用“ matlab” ,因此,如果可以从终端启动MATLAB,那么也可以从Webots启动。
在Windows上,MATLAB安装程序通常会将MATLAB的bin目录添加到Path环境变量中,因此通常情况下,Webots将能够在标准安装后找到MATLAB。然而,如果它不能正常工作,请确保您的路径环境变量中包含此目录(或东西略有不同,根据您的MATLAB版本)C:\Program Files\MATLAB\R2020b\bin。使用旧版本的MATLAB(例如R0217b),您的Path环境变量还应包括:C:\Program Files\MATLAB\R2017b\bin\win64。
在Linux上,MATLAB安装程序通常建议在“ / usr / local / bin”目录中的“ matlab”启动脚本中添加符号链接。这是使“ matlab”可全局访问的好选择。否则,您以后可以随时使用此shell命令创建链接(请根据您实际的MATLAB安装目录和版本进行更改):
$ sudo ln -s /usr/local/MATLAB/R2020b/bin/matlab /usr/local/bin/matlab
同样,在macOS上,如果Webots无法找到“ matlab”启动脚本,则应在“ / usr / bin”中添加符号链接:
$ sudo ln -s /Applications/MATLAB_R2020b.app/bin/matlab /usr/local/bin/matlab
如何运行示例?
要在Webots中测试MATLAB,请启动Webots并打开“ WEBOTS_HOME / projects / languages / matlab / worlds / e-puck_matlab.wbt”或“ WEBOTS_HOME / projects / robots / softbank / nao / worlds / nao_matlab.wbt ”世界文件。当Webots在控制器目录中检测到m文件时,它将自动启动MATLAB。请注意,m文件必须以其目录命名,以便被Webots识别为控制器文件。因此,例如,如果目录名为“ my_controller”,则控制器m文件必须命名为“ my_controller / my_controller.m”。
控制器m文件中不需要特殊的初始化代码。实际上,Webots调用了一个中间的“ launcher.m”文件,该文件设置了Webots控制器环境,然后调用了控制器m文件。特别是,“ launcher.m”文件加载用于与Webots通信的库,并将路径添加到API m文件。MATLAB API m文件位于Webots发行版的“ lib / matlab”目录中。这些是可读的源文件。请报告有关这些文件的任何问题或可能的改进。
将信息显示到Webots控制台
在Linux和macOS上,MATLAB输出将直接重定向到Webots控制台。这意味着您可以使用所有的MATLAB显示功能,包括disp和display(在语句末尾省略分号)。
在Windows上,MATLAB输出不会重定向到Webots控制台。该wb_console_print(text, stream)功能应用于在Webots控制台中显示一些文本。第二个参数(stream)可以是WB_STDOUT或WB_STDERR取决于哪个流要写入。
为了创建跨平台控制器,建议wb_console_print(text, stream)在每个OS上使用。
相容性问题
我们建议在最新的操作系统上使用最新的MATLAB版本。
请注意,Webots的64位版本与MATLAB的32位版本不兼容。Webots仅提供64位版本,因此只能与64位版本的MATLAB进行互操作。
在某些平台上,需要MATLAB接口,perl并且gcc需要单独安装。这些工具是必需的,因为MATLAB的loadlibrary功能将需要即时重新编译Webots头文件。根据MATLAB的文档,在64位系统上会是这种情况,因此,我们建议64位Webots用户(在Linux上)确保将这些软件包安装在他们的系统上。
在某些macOS系统上,MATLAB界面仅在您安装Xcode开发环境时才起作用,因为这gcc是必需的。像这样的错误消息是上述问题的征兆:
使用ROS
什么是ROS?
ROS(机器人操作系统)是用于机器人软件开发的框架,在异构计算机集群之上提供了类似于操作系统的功能。ROS最初是由斯坦福大学人工智能实验室于2007年开发的。自2008年起,Willow Garage的开发主要继续进行。
ROS提供标准的操作系统服务,例如硬件抽象,低级设备控制,常用功能的实现,进程之间的消息传递以及程序包管理。它基于图架构,其中处理在可能接收,发布和多路传输传感器,控制,状态,计划,执行器和其他消息的节点中进行。该库面向类似Unix的系统,并在Linux下受支持,在macOS上进行了试验,在Windows下具有部分功能。
ROS具有两个基本的“方面”:如上所述,操作系统方面ros和ROS软件包是一套由用户提供的软件包(组织为称为堆栈的集合),这些软件包实现了诸如同时定位和映射,规划,感知,模拟等功能。 。
ROS是根据BSD许可条款发布的,并且是开源软件。它是免费的,可用于商业和研究用途。用户提供的软件包已获得各种开源许可证的许可。
Webots的ROS
有两种将ROS与Webot一起使用的方法。
第一个也是最简单的解决方案是使用标准ROS控制器。但是,该解决方案不适用于Windows和macOS,仅适用于Linux。它是Webots默认控制器的一部分,在任何项目中都可用。该控制器可以在Webots中的任何机器人上使用,并充当ROS节点,将Webots的所有功能作为服务或主题提供给其他ROS节点。
第二种名为自定义ROS控制器的解决方案要求您构建自己的Webots控制器,该控制器也将是使用Webots和ROS库的ROS节点。除Linux外,此解决方案还适用于Windows和macOS(使用Python)。设置起来有点困难,但可以提供更大的灵活性。
标准ROS控制器
该控制器使用“ libCppController”库,并根据机器人的配置在ROS网络上提出可用的Webots功能。它使用“ roscpp”库将这些Webots功能主要作为ROS服务提供,并使用标准消息类型来避免依赖第三方程序包。服务和消息的列表可以在这里找到。
在仿真过程中,可能会有多个机器人或设备实例以及其他Webots应用程序连接到ROS网络。因此,控制器使用特定的语法在网络上声明其服务或主题:[robot_unique_name]/[device_name]/[service/topic_name]。
[robot_unique_name]:为了避免在同一机械手的不同实例之间产生任何误解,机械手的名称后跟进程ID和计算机的IP地址。
[device_name]:由于相同的功能可以引用不同的设备,因此此字段显示了它引用的设备。
[service/topic_name]:此字段与对应的Webots函数相同或非常接近。对于主题,紧随其后的是采样期。对于服务,它也是相应的srv文件的名称。
使用标准ROS控制器
名为的控制器ros已预编译,您不应对其进行编辑。您所要做的就是将其加载到controller机器人的现场。您将在控制器的默认列表中找到它。为了使用它,您将必须构建一个ROS节点,该节点将使用可用的不同服务与机器人进行通信。在webots_ros存储库中可以找到此类ROS节点的好示例,并在webots_ros软件包教程中进行了说明。
在“教程8”一章中,您将找到使用ROS运行样本仿真的说明。
在下表中,您可以找到ros控制器参数的列表。
争论 | 描述 |
--ROS_MASTER_URI=<address> | 指定roscore正在运行的计算机的URI地址。 |
--name=<robot_unique_name> | 指定用于服务和主题的预定义[robot_unique_name]。请注意,您有责任避免不同机器人控制器之间的名称冲突。 |
--synchronize | 默认情况下,ros即使没有ROS节点连接到控制器,控制器也不会阻止模拟。为了使仿真与ROS节点同步,--synchronize可以指定参数,以便只要time_step不调用机械手服务就不会运行仿真。 |
--clock | 使用该clock主题发布Webots时间。 |
--use-sim-time | 指定将Webots时间用作ROS时间。为了正常工作,您还应该定义--clock参数并将ROS参数设置use_sim_time为true。 |
如果要从另一台计算机访问控制器,并且roscore与Webots不在同一台计算机上运行,则需要编辑ROS_MASTER_URI变量。这可以通过编辑环境变量,--ROS_MASTER_URI=<address>在控制器参数中设置(请参阅表)或使用runtime.ini控制器目录中的文件来完成。您还必须能够通过ssh两种方式连接到每台计算机 。由于ROS使用主机名查找网络上的其他计算机,因此必须将其他计算机的主机名和关联的IP地址添加到每台计算机的已知主机中。您可以在名为hosts的文件中找到此列表。在Linux发行版上,您可以直接在/etc/hosts;上找到它。在macOS上,它位于/private/etc/hosts;在Windows上,它位于C:\Windows\System32\drivers\etc\hosts。在Windows和macOS上,这是一个隐藏的路径,您将需要直接搜索该路径。主机文件通常受到保护,您将需要管理员或root特权才能对其进行编辑。
自定义ROS控制器
已经开发了标准的ROS控制器,以便可以在每个机器人上使用并用于一般用途。有时,您可能无法使用此控制器执行所需的操作,否则可能会太复杂。在这种情况下,您可以构建自己的自定义ROS控制器。
可以使用Linux和macOS上的“ roscpp”库在C ++中实现这样的ROS节点。但是,在这种情况下,您需要设置一个构建配置以同时处理ROS中的“ catkin_make”和Webots中的“ Makefile”,以使生成的二进制文件同时链接到Webots的“ libController”和“ roscpp”库。这里提供了一个示例,以创建用于控制车辆的特定控制器。
更为通用的解决方案是使用extern控制器,并将该控制器作为ROS端上的常规ROS节点运行。这里提供了一个非常简单的示例,它是用纯Python编写的,可以直接在Windows,Linux和macOS上运行。只要没有障碍物(使用front DistanceSensor检测到),就可以使用正确的世界文件,外部控制器和简单的ROS节点来启动机器人,从而启动Webots,只要没有障碍物即可(使用前DistanceSensor进行检测)。
使用TCP / IP将Webots与第三方软件接口
概述
Webots提供了以下语言的编程API:C / C ++,Java,Python和MATLAB TM。也可以将Webots与软件包的其他编程语言(例如Lisp TM,LabView TM等)进行接口。可以通过您可以定义自己的TCP / IP协议来实现这种接口。Webots提供了一个示例,该示例通过TCP / IP将模拟的Khepera机器人与能够读取和写入TCP / IP连接的任何第三方程序接口。该示例世界称为“ khepera_tcpip.wbt ”,可以在Webots的“ WEBOTS_HOME / projects / robots / k-team / khepera1 / worlds ”目录中找到。模拟的Khepera机器人由“tcpip “控制器,位于同一项目的” controllers “目录中。此小型C控制器在” tcpip.c “中带有完整的源代码,以便您可以对其进行修改以适合您的需求。” client.c。”此客户端可以作为一种模式来编写使用第三方软件的编程语言类似的客户端,这已经在实施的Lisp TM和MATLAB一些Webots用户。
主要优势
使用这样的接口有几个优点。首先,您可以使用同一“ tcpip”控制器的多个实例在同一世界中拥有多个模拟机器人,每个实例都使用不同的TCP / IP端口,从而使您的第三方软件可以通过多个TCP / IP连接来控制多个机器人。要允许“ tcpip”进程根据受控的机械手打开不同的端口,应name为每个机械手指定一个不同的端口,并使用robot_get_name“ tcpip”控制器中的功能来检索此名称并决定为每个机械手打开哪个端口。
第二个优点是,您还可以通过简单地基于给定的远程控制库来实现您的库,从而从第三方软件中控制真正的机器人。切换到远程控制模式将通过进程间通信(IPC)将输入/输出重定向到真实的机器人。在Webots的目录“ WEBOTS_HOME / projects / robots / gctronic / e-puck / worlds / e-puck.wbt ”目录中为e-puck机器人实现了一个远程控制示例。
第三个优点是您可以在计算机网络上分布控制器程序。如果控制器程序执行计算量大的算法(例如遗传算法或其他学习技术),则这特别有用。
最后,应根据是否希望Webots模拟器等待来自控制器的命令,将受控机械手设置为同步或异步模式。在同步模式下(synchronization机器人的字段等于TRUE),模拟器将等待来自控制器的命令。robot_step将遵守由“ tcpip”控制器的参数定义的控制器步骤。在异步模式下(synchronization将机械手的字段设置为FALSE),模拟器将尽可能快地运行,而无需等待控制器发出的命令。在后一种情况下,您可能希望以实时模式运行仿真,以便机器人的行为类似于通过异步连接控制的真实机器人。
局限性
TCP / IP接口的主要缺点是,如果您的机器人具有摄像头设备,则协议必须通过TCP / IP将图像发送到控制器,这可能会占用大量网络资源。因此,建议使用高速网络,或使用小分辨率的摄像机图像,或在将图像数据发送到控制器之前对其进行压缩。如果您使用低分辨率相机(例如Khepera K213),则此开销可以忽略不计(请参见示例“ WEBOTS_HOME / projects / robots / k-team / khepera1 / worlds / khepera_k213.wbt “)。
此文章引用https://www.cyberbotics.com/官网手册