3、编程语言设置

Webots的控制器可以使用C、C++、JAVA、Python以及MATLAB来编写。本章解释怎样安装对应语言的软件开发库;

介绍

Webot可以执行用编译(C/C++、Java)或解释(Python、MATLAB)语言编写的控制器。编译或解释过程需要额外的软件,这些软件通常必须单独安装。只有在Windows平台上使用C/C++时,才需要安装单独的C/C++编译器;在此平台上,Webots附带了一个预安装和预配置的MinGW C/C++编译器副本。对于任何其他语言或平台,软件开发工具必须单独安装。请注意,Webots使用的是标准安装中可能已经存在的非常标准的工具。否则,本章中的说明将建议您安装软件开发工具。

控制器启动

.wbt文件包含每个机器人需要启动的控制器的名称。控制器名称是一个与平台和语言无关的字段;例如,当控制器名称在.wbt文件中指定为“xyzcontroller”时,这并不能说明控制器的编程语言或平台。这样做是为了确保.wbt文件独立于平台和编程语言。
当Webots尝试启动控制器时,它必须首先确定该控制器使用的编程语言。因此,Webots在项目的controllers目录中查找与控制器名称匹配的子目录。然后,在这个控制器目录中,它会查找与控制器名称匹配的文件。例如,如果控制器的名称为“xyz_controller”,则Webots将按指定顺序在“PROJECT_DIRECTORY/controllers/xyz_concontroller”目录中查找这些文件。

  1. "xyz_controller[.exe]" (a binary executable)
  2. "xyz_controller.class" (a Java bytecode class)
  3. "xyz_controller.jar" (a Java .jar file)
  4. "xyz_controller.bsg" (a Webots/BotStudio file)
  5. "xyz_controller.py" (a Python script)
  6. "xyz_controller.m" (a MATLAB function)

找到的第一个文件将由Webots使用所需的语言解释器(Java、Python、MATLAB)执行。因此,优先级由文件扩展名定义,例如,如果名为“xyz_controller.py”的文件也存在于同一控制器目录中,则无法执行“xyz-controller.m”。如果以上文件名都不存在,或者找不到所需的语言解释器,则会发出错误消息,Webots将启动“”控制器。

使用C

介绍:C API(应用程序编程接口)由一组大约200个C函数组成,可以在C或C++控制器代码中使用。这是与Webots模拟器的低级别接口;所有其他API都是基于C API构建的。大多数Webots控制器示例都是用C编写的,因此C API实际上是Webots的标准API。尽管在控制器示例中描述得较少,但其他API提供了与C API完全相同的功能。

C/C++编译器安装

Linux Instructions

对于编译C控制器,Webot将需要GNU C编译器和GNU Make实用程序。在Linux上,这些工具通常是预先安装的,否则您将需要单独安装它们(gcc和make包)。对于C++,您还需要GNU C++编译器(g++包)。您也可以选择安装GNU调试器(gdb包)。

使用C++

介绍:C++API是上一节描述的C API的包装器。C函数的主要部分已经封装在一个特定类的函数中。它目前由大约25个类组成,具有大约200个公共函数。这些类是场景树节点的表示(如Robot、LED等)或实用程序类(如Motion、ImageRef等)。这些功能的完整描述可在参考指南中找到,而有关C++控制器编程的常见方法的说明可在本章中找到。

C++ API的源码

Webots版本中提供了C++API的源代码。您可能有兴趣浏览包含头文件的目录(“include/controllers/cpp”),以便获得每个类和函数的精确定义,尽管参考指南提供了对公共函数的清晰描述。编译C++控制器时会自动包含此目录。
对于想要使用第三方开发环境的用户来说,知道共享库(“CppController.dll、libCppContrler.so”或“libCppCntroller.dylib”)位于Webots目录的“lib”子目录中是很有用的。当链接C++控制器时,会自动包含此目录。
高级用户可能希望从C++源代码修改C++API。https://github.com/cyberbotics/webots/tree/released/src/controller/cpp/

使用Python

介绍:Python API的设计灵感来自C++API。这意味着它们的类层次结构、类名和函数名几乎相同。Python API目前由一组大约25个类组成,其中大约有200个公共函数位于名为controller的模块中。这些类要么是场景树节点的表示(如Robot、LED等),要么是实用程序类(如Motion、ImageRef等)。这些功能的完整描述可以在参考指南中找到,而有关Python控制器编程的常见方法的说明可以在本章中找到。
Webots的Python API支持3.7以后的Pythin版本。
除了Webots内置编辑器之外,PyCharm还可以用于编辑和启动Python控制器,请参阅“将PyCharm与Webots一起使用”一章了解分步过程。

安装

Webots使用标准的Python命令行启动Python。因此,它执行在当前PATH中找到的第一个python二进制文件。如果你想使用不同版本的Python,请在需要时安装它,并配置你的环境,使其在从终端的命令行调用时成为默认的Python版本。或者,您可以从“常规”选项卡中的Webots首选项更改默认的Python命令。例如,如果将其设置为python3.8而不是Python,则默认情况下将使用此版本的Python(如果可以从命令行获得)。也可以为每个机器人控制器设置不同版本的Python,方法是编辑每个机器人控制器目录中runtime.ini文件的[Python]部分,并将COMMAND值设置为python3、python3.10或python3.8等。如果在控制器的runtime.ini文件中指定,则将执行此Python命令,而不是启动该控制器的默认命令。在Linux和macOS上,也可以通过在主Python控制器文件中设置标准Python shebang头行来覆盖此值,例如:

#!/usr/bin/env python3.8

linux安装

大多数Linux发行版都已经安装了Python3。要检查系统上安装的Python版本,可以键入一个终端:Python-version、python3.8-version、python2-version等。

WEBOTS_HOME/projects/web/vision_tracking示例模拟使用Python OpenCV和NumPy包。这些软件包必须安装在系统上才能正确运行此模拟。使用Python pip,NumPy包将自动与opencv-Python包一起安装。

linux库

使用Pip命令安装OpenCV

sudo apt-get install python3-pip
sudo pip3 install opencv-python

 

posted on 2023-07-27 09:55  gary_123  阅读(43)  评论(0编辑  收藏  举报

导航