C++ 控制器
与 Python 不同,C 和 C++ 控制器在运行之前必须先编译。本文档中的每个示例都有一个 C/C++ 标签页,其中的程序与 Python 版本相同,而且所有示例都已在入门机器人上编译并运行过。
#include <cmath>#include <webots/Robot.hpp>#include <webots/Motor.hpp>
using namespace webots;
int main() { Robot *robot = new Robot(); int timeStep = (int)robot->getBasicTimeStep();
Motor *left = robot->getMotor("left wheel motor"); Motor *right = robot->getMotor("right wheel motor"); left->setPosition(INFINITY); right->setPosition(INFINITY); left->setVelocity(3.0); right->setVelocity(3.0);
while (robot->step(timeStep) != -1) { }
delete robot; return 0;}在任何系统上,最简单的方法都是使用 Webots 编辑器:用 Wizards > New Robot Controller 创建一个带有 Makefile 的 C++ 控制器,然后按下 Build 按钮。请参阅 Webots 指南。
你也可以在终端中编译。下面的命令已在 macOS 上测试过:
WEBOTS=/Applications/Webots.app/Contentsclang++ -std=c++17 -I$WEBOTS/include/controller/cpp -L$WEBOTS/lib/controller \ -lController -lCppController -Wl,-rpath,$WEBOTS/lib/controller \ my_controller.cpp -o my_controller在 Linux 上,使用 WEBOTS=/usr/local/webots 时同样的选项也能用。如果你使用 OpenCV,还要加上它的选项。安装了 OpenCV 4 之后(例如在 macOS 上用 Homebrew 安装),$(pkg-config --cflags --libs opencv4) 会给出这些选项。示例已在 OpenCV 4.13 上测试过。
- 在 Windows 上,用控制窗口左侧的 LOAD 按钮加载
.exe文件。 - 在 macOS 和 Linux 上,编译后的程序没有文件扩展名,LOAD 按钮无法选择它们。请改用 Remote Controller 来运行,就像在比赛中一样。
