ROS2學習之旅(3)——運行turtlesim和rqt


Turtlesim是一個輕量型的模擬器,可以幫助理解ROS。rqt是ROS2中的GUI工具,所有在rqt中的操作都可以通過命令行來實現,但是使用rqt會更加容易和友好。本文基於ros-foxy編寫。

1.安裝turtlesim

首先確保ROS2安裝並且環境變量設置正確,可以我的上一篇文章:

然后,將turtlesim包安裝到ROS2中,在終端運行:

sudo apt update

sudo apt install ros-foxy-turtlesim

檢查是否安裝成功:

ros2 pkg executables turtlesim

如果安裝成功,則在終端輸出:

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2.啟動turtlesim

開始啟動turtlesim,在終端運行:

ros2 run turtlesim turtlesim_node

與ROS1相比,無需啟動roscore,這里的ros2 run相當於ROS1中的rosrun

這時候會出現模擬器界面,並且在中心有一只隨機的小海龜。

在終端中會看到從節點(可以當做為一個應用程序)來的輸出:

[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim

[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

從輸出中可以看到海龜的名字被定為turtle1,並且預先設置的海龜位姿也可以得到。

3.使用turtlesim

打開新終端,運行一個新節點以控制生成的小海龜:

ros2 run turtlesim turtle_teleop_key

到了這一步,應該有三個運行的窗口:一個運行turtlesim_node,一個運行turtle_teleop_key以及turtlesim窗口。保持turtle_teleop_key窗口處在激活狀態,這樣就可以控制小海龜。

此時,使用鍵盤上的方向鍵就可以控制小海龜進行移動。當小海龜進行移動時,會使用自帶的“pen"工具繪制他的路線。

4.安裝rqt

打開一個新終端,安裝rqt及其附件:

ubuntu18.04以及更老的版本:

sudo apt update

sudo apt install ros-foxy-rqt*

ubuntu20.04:

sudo apt update

sudo apt install ~nros-foxy-rqt*

安裝完畢之后,在終端輸入:

rqt

運行rqt。

5.使用rqt

在第一次使用rqt時,rqt窗口是空白的。此時在菜單中選擇Plugins > Services > Service Caller,會出現如下界面:

注意:rqt查找所有插件本身可能需要一些時間。如果單擊Plugins,但沒有看到Services或任何其他選項,應該關閉rqt,在終端中輸入命令 rqt --force-discover

點擊Service下拉列表左側的刷新按鈕,以確保turturlesim節點的所有服務都可用:

點擊Service下拉列表查看turtlesim的服務,並選擇/spawn服務。

5.1 使用spawn服務

通過/spawn服務可以在turtlesim窗口中,創建另一只小海龜。通過雙擊Expression列中的空單引號,為新生成的小海龜指定一個唯一的名字,就像turtle2一樣。 可以看到,這個表達式對應於name value,其類型為string。輸入小海龜生成的坐標,如x = 1.0和y = 1.0。

注意:如果試圖生成一個與現有海龜同名的新海龜,就像turtle1,會在運行turtlesim_node的終端中得到一個錯誤消息:

[ERROR] [turtlesim]: A turtle named [turtle1] already exists

要生成turtle2,必須通過單擊rqt窗口右上角的call按鈕來調用該服務:

點擊之后,可以看到一個新的海龜在x和y輸入的坐標處生成。

如果刷新rqt中的服務列表,還會看到現在除了/turtle1/....之外,還有與新的turtle相關的服務:/turtle2/…

5.2 使用set_pen服務

使用/set_pen服務設置turtle1的鋼筆屬性:

其中,rgb的值(介於0和255之間)將設置turtle1的鋼筆的顏色,寬度設置線的粗細。要讓turtle1繪制一條明顯的紅線,將r的值改為255,寬度的值改為5。不要忘記在更新值之后調用服務。此時返回到運行turtle_teleop_node的終端並按下方向鍵,將看到turtle1的鋼筆發生了變化。

此時,沒有辦法移動turtle2,可以將turtle1的cmd_vel重映射到turtle2中。

6.重映射

打開一個新終端,並運行:

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

在此終端處於活動狀態時移動turtle2,在運行turtle_teleop_key的另一個終端處於活動狀態時移動turtle1

7.關閉turtlesim

turtlesim_node終端下,通過ctrl+c終止模擬。在teleop終端下,輸入q來停止。

8.總結

通過turlesim來體會ROS2的工作過程,理解ROS2中的基本元素。

如果給您帶來幫助,希望能給點個關注,以后還會陸續更新有關機器人的內容,點個關注不迷路~歡迎大家一起交流學習。

都看到這了,點個推薦再走吧~

未經允許,禁止轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM