Webots和ROS的使用說明(譯)

具體使用教程:

https://www.php.cn/link/59e29dc7066b5a6fcf68b48e6dd67347https://www.php.cn/link/59e29dc7066b5a6fcf68b48e6dd67347/Tutorials sudo apt install ros-melodic-webots-ros

Webots和ROS使用指南(譯)

Webots和ROS的使用說明(譯)Webots和ROS的使用說明(譯)Webots和ROS的使用說明(譯) Webots和ROS SLAM聯調效果

官方文檔:

Webots和ROS的使用說明(譯) 官方文檔和教程 要了解如何使用ROS連接Webots,請查看此處的說明。 這里提供了一步步配置Webots ROS的教程。 這里鏈接了一個視頻教程。 完整的Webots ROS API記錄在這里。 有關Webots的更多信息,請訪問Cyberbotics的網站。 第三方貢獻的kaist_webots功能集包含用于直接從ROS啟動文件啟動Webots節點的控制器和關節位置控制器,以及搖桿遠程操作的控制器和關節狀態發布器。

報告錯誤 請在此處打開錯誤報告。

Webots用戶指南 R2019a

使用ROS目錄 什么是ROS? Web的ROS標準控制器 使用標準控制器 自定義控制器 什么是ROS? ROS(機器人操作系統)是用于機器人軟件開發的框架,提供類似操作系統的功能,運行在異構計算機集群之上。ROS最初由斯坦福人工智能實驗室于2007年開發。截至2019年,Willow Garage繼續其開發。

ROS提供標準操作系統服務,如硬件抽象、低級設備控制、常用功能的實現、進程間消息傳遞以及包管理。它基于圖形架構,處理發生在可以接收、發布和多路傳感器、控制、狀態、計劃、執行器和其他消息的節點中。該庫主要面向類unix系統,在linux下支持,在macos上為實驗版,在windows下具有部分功能。

ROS有兩個基本“方面”:操作系統方面,如上所述的ros,以及ROS包,一套用戶貢獻的包(組織成稱為),實現功能如同步定位和地圖構建、規劃、感知、模擬等。

ROS是根據BSD許可條款發布的,是開源軟件。它可以免費用于商業和研究用途。用戶貢獻的軟件包根據各種開源許可證進行許可。

Web的ROS 有兩種方法可以在Web上使用ROS。第一個解決方案也是最簡單的方案是使用標準ROS控制器。它是Webots默認控制器的一部分,可在任何項目中使用。該控制器可用于Webots中的任何機器人,并充當ROS節點,將所有Webots功能作為服務或主題提供給其他ROS節點。第二個定制且更復雜的方案是構建您自己的Webots控制器,它也將是使用Webots和ROS庫的ROS節點。此方案僅適用于標準控制器無法完成的特定應用程序。

標準控制器 該控制器使用“libCppController”庫,并根據機器人的配置在ROS網絡上提供可用的Webots功能。使用“roscpp”庫,它主要將這些Webots功能作為ROS服務提供,并使用標準消息類型來避免對第三方軟件包的依賴。

在模擬仿真期間,可以有多個機器人或設備實例以及連接到ROS網絡的其他Webot應用程序。因此,控制器使用特定語法在網絡上聲明其服務或主題:[robot_unique_name]/[device_name]/[service/topic_name]。

[robot_unique_name]:為了避免同一機器人的不同實例之間存在任何誤解,機器人的名稱后面跟著進程的ID和計算機的IP地址。

[device_name]:由于相同的功能可以引用不同的設備,因此該字段顯示它所引用的設備。

[service/topic_name]:此字段與其對應的Webots函數相同或非常接近。對于主題,接下來是采樣周期。對于服務,它也是相應srv文件的名稱。

使用標準控制器

名為ros的控制器已預編譯,您不需要編輯它。您所要做的就是將它裝入controller機器人的領域; 您會在默認的控制器列表中找到它。為了使用它,您必須構建一個ROS節點,該節點將使用可用的不同服務與機器人通信。在Webots中可以找到這種ROS節點的好例子WEBOTS_HOME/projects/languages/ros/webots_ros。

在教程7章節中,您將找到設置工作區并使用ROS運行示例模擬仿真的說明。

在下表中,您可以找到ros控制器參數列表。

參數 描述

–ROS_MASTER_URI=

指定roscore正在運行的計算機的URI地址。

–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。

ros控制器參數

如果要從另一臺計算機訪問控制器并且roscore未在與Webot相同的計算機上運行,??則需要編輯ROS_MASTER_URI變量。這可以通過編輯環境變量,–ROS_MASTER_URI=

在控制器參數(參見表)中設置或使用runtime.ini控制器目錄中的文件來完成。您還必須能夠以ssh兩種方式連接到每臺計算機。由于ROS使用主機名查找網絡上的其他計算機,因此必須將其他計算機的主機名和關聯的IP地址添加到每臺計算機的已知主機。您可以在名為hosts的文件中找到此列表。在Linux發行版上,您可以直接找到它/etc/hosts; 在macos上,它位于/private/etc/hosts; 在Windows上,它位于C:WindowsSystem32driversetchosts。在Windows和macOS上,這是一個隱藏路徑,您需要直接搜索此路徑。hosts文件通常受到保護,您需要管理員或root權限才能對其進行編輯。

自定義控制器 標準控制器的開發是為了適用于每個機器人和一般用途。有時,您可能無法使用此控制器執行您想要的操作,或者它太復雜了。在這種情況下,您可以構建自己的自定義控制器和ROS節點。

可以使用“roscpp”庫在C ++中實現這樣的ROS節點。但是,在這種情況下,您需要設置一個構建配置來處理來自ROS的“catkin_make”和來自Webots的“Makefile”,以便將結果二進制文件鏈接到Webots“libController”和“roscpp”庫。

通過在Webots機器人或監督控制器中導入ROS庫(roslib,rospy)和Webots庫(控制器),也可以在python中實現該控制器。


教程7:使用ROS 本教程介紹如何使用webots_rosWebots提供的軟件包中的節點。

這些示例使用ROS melodic和kineticLinux 進行了測試。如果您使用不同的平臺或古老的ROS發行版,它們將無法保證。

目錄 安裝ROS “webots_ros”包安裝 運行節點 創建新節點 安裝ROS 要使用這些節點,首先需要安裝ROS框架。要在ubuntu上安裝最新版本的ROS,請使用以下命令:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt-get update sudo apt-get install ros-melodic-desktop-full sudo apt-get install ros-melodic-sensor-msgs sudo rosdep init rosdep update

有關更多信息或將其安裝在其他平臺上,請閱讀http://wiki.ros.org/ROS/Installation。除非您需要舊版本用于其他應用程序,否則您應該選擇最新版本(Melodic Morenia或Kinetic Kame)。

“webots_ros”包安裝 如果尚未創建任何catkin工作區,可以使用以下命令創建一個:

source /opt/ros/<distro>/setup.bash mkdir -p catkin_ws/src cd catkin_ws/src catkin_init_workspace

設置工作區后,必須將webots_ros位于“projects/languages/ros”中的src文件夾復制到catkin工作區的文件夾中。您還需要復制webots_ros包的服務列表和消息定義。簡單地復制srv和msg位于文件夾“projects/default/controllers/ros/include”到src/webots_ros你的工作空間catkin的文件夾中。要復制Webots文件夾,catkin_ws/src可以使用以下說明:

cp -r <webots>/projects/languages/ros/webots_ros . cp -r <webots>/projects/default/controllers/ros/include/srv webots_ros/ cp -r <webots>/projects/default/controllers/ros/include/msg webots_ros/

該webots_ros軟件包已經包含一個“CmakeList.txt”,其中包含該軟件包的構建說明。為了構建軟件包,您所要做的就是運行:

cd catkin_ws catkin_make

運行節點 現在您已經構建了包,您可以運行所需的示例。首先必須使用catkin工作區中的以下命令啟動主節點:

source devel/setup.bash roscore

然后,您可以啟動Webots并打開要運行的示例的世界(示例世界位于“projects/languages/ros/worlds”中)。當您開始模擬時,控制器應連接到主站并開始模擬,等待指令。

如果控制器無法連接到主節點,則可能意味著主節點不使用該標準ROS_MASTER_URI。您可以檢查啟動主節點的終端,ROS_MASTER_URI然后在控制器參數,環境變量或控制器目錄的runtime.ini文件中添加正確的地址。

然后,您可以使用catkin工作區中的以下命令在新終端中啟動與此示例對應的ROS節點:

source devel/setup.bash rosrun webots_ros [node_name]

例如,如果您打開世界“projects/languages/ros/worlds/panoramic_view_recorder.wbt”,則必須panoramic_view_recorder使用以下命令啟動節點:

rosrun webots_ros panoramic_view_recorder

創建新節點 這些示例僅顯示了連接ROS和Webots的一些可能性,但您可以構建自己的節點以連接Webot。

該robot_information_parser節點是最基本的節點,是開始構建自己的節點的良好基礎。該complete_test節點不顯示任何特定應用程序,但包含幾乎詳盡的Webots API函數列表。

Webots API中的所有功能都有相應的服務或主題。您可以在、中找到與每個設備關聯的所有服務和主題的定義。

ROS API通用服務 Common Services 下表描述了Webots設備之間共享的ROS服務。

服務名稱 服務定義

get_bool bool ask—bool value

get_float bool ask—float64 value

get_int bool ask—int32 value

get_String bool ask—string value

get_uint64 bool ask—uint64 value

set_bool bool value—bool success

set_float float64 value—bool success

set_float_array float64[] values—bool success

set_int int32 value—bool success

set_string string value—bool success

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享