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”目录中查找这些文件。
- "xyz_controller[.exe]" (a binary executable)
- "xyz_controller.class" (a Java bytecode class)
- "xyz_controller.jar" (a Java .jar file)
- "xyz_controller.bsg" (a Webots/BotStudio file)
- "xyz_controller.py" (a Python script)
- "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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2019-07-27 ros节点启动和关闭相关
2019-07-27 how to use gflags