首頁 > Webots操作指南 > Webots編程語言設置
2021
02-26

Webots編程語言設置

控制器啟動

.wbt文件包含每個機器人需要啟動的控制器的名稱??刂破髅Q是平臺和語言無關的字段;例如,當在.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??梢栽?a data-cke-saved- >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的OpenCVNumPy的包。這些軟件包必須安裝在系統上才能正確運行此模擬。使用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 “中帶有完整的源代碼,以便您可以對其進行修改以適合您的需求?!?nbsp;client.c?!贝丝蛻舳丝梢宰鳛橐环N模式來編寫使用第三方軟件的編程語言類似的客戶端,這已經在實施的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/官網手冊




本文》有 0 條評論

留下一個回復