日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树莓派 ROS 学习(二)小乌龟 turtlesim

發(fā)布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树莓派 ROS 学习(二)小乌龟 turtlesim 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

創(chuàng)建catkin工作空間

小烏龜turtlesim節(jié)點

啟動節(jié)點

turtlesim節(jié)點

turtlesim 話題與消息

查看話題的消息類型

查看消息類型的具體內(nèi)容

查看話題的值

改變背景顏色

獲取參數(shù)列表

?獲取參數(shù)值

修改顏色

控制烏龜運動

通過發(fā)布話題控制烏龜運動

通過鍵盤控制烏龜運動

通過服務(wù)控制烏龜?shù)囊苿?/p>


上次安裝成功ROS之后,先確認一下ROS的安裝環(huán)境正確:

env | grep ROS

result:

ROS_VERSION=1 ROS_PYTHON_VERSION=3 ROS_PACKAGE_PATH=/opt/ros/noetic/share ROSLISP_PACKAGE_DIRECTORIES= ROS_ETC_DIR=/opt/ros/noetic/etc/ros ROS_MASTER_URI=http://localhost:11311 ROS_ROOT=/opt/ros/noetic/share/ros ROS_DISTRO=noetic

創(chuàng)建catkin工作空間

其實就是創(chuàng)建一個文件夾,然后在這個文件夾下,我們可以生成或者修改現(xiàn)有的catkin工作空間。輸入以下命令就可以創(chuàng)建catkin工作空間:

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace

注意這個時候其實工作空間是空的,但是還是可以編譯它:

cd ~/catkin_ws/ catkin_make

在這一步之后最好是可以加載在devel文件夾下的源文件 setup.bash,也可以一步到位直接在.bashrc里面加入加載源文件的命令,這樣不用每次都加載一遍:

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

使用以下命令確認源文件加載成功:

echo $ROS_PACKAGE_PATH

輸出應(yīng)該為:

?這里 ubuntu是安裝時的用戶名,上一篇安裝ubuntu桌面版的時候默認用戶名就是ubuntu了。

小烏龜turtlesim節(jié)點

啟動節(jié)點

首先打開一個終端窗口,輸入以下命令啟動ROS節(jié)點管理器:

roscore

結(jié)果為:

然后再打開一個終端(不要關(guān)閉當(dāng)前窗口),運行以下命令:

rosrun turtlesim turtlesim_node

執(zhí)行輸出類似:

然后會彈出turtlesim的界面如圖:

然后將這幾個終端最小化,記得不要關(guān)閉這兩個終端。

turtlesim節(jié)點

新打開一個終端,輸入如下命令找出所有的活動節(jié)點:

rosnode list

輸出如下:

這里可以看到我們已經(jīng)成功啟動了 /turtlesim 節(jié)點。

如果需要查看turtlesim節(jié)點發(fā)布的話題、訂閱話題和服務(wù)等內(nèi)容,可以輸入:

rosnode info /turtlesim

結(jié)果如圖:

在publications下面可以看到,/turtlesim 發(fā)布了兩個話題: /turtle1/color_sensor 和 /turtle1/pose, 分別控制了烏龜界面的北京顏色和烏龜在界面上的位置坐標(biāo),它們的消息類型分別是 [turtlesim/Color] 和 [turtlesim/Pose] 。

在Subscriptions下面可以看到 /turtlesim 訂閱了一個未知類型的話題 turtle1/cmd_vel

turtlesim 話題與消息

輸入如下命令來查看 /turtlesim 的話題:

rostopic list

輸出結(jié)果為:

查看話題的消息類型

輸入 rostopic type 命令查看話題類型,例如:

rostopic type /turtle1/color_sensor

?輸出結(jié)果為:


turtlesim/Color 為 /turtle1/color_sensor這一話題的消息類型 (ROS消息類型命名格式:[package name]/[message type]

查看消息類型的具體內(nèi)容

剛剛看到話題 /turtle1/color_sensor 的消息類型為 turtlesim/Color , 可以通過 rosmsg shw命令來查看它的具體內(nèi)容:

rosmsg show turtlesim/Color

?輸出結(jié)果為:

也就是說這里使用 unit8 來表示背景的RGB顏色。

查看話題的值

比如說想要查看背景的RGB顏色,或者小烏龜?shù)奈恢?#xff0c;可以用 rostopic echo 命令,例如:

rostopic echo /turtle1/color_sensor

終端會持續(xù)輸出如圖:

直到按下 Ctrl+C才會停止。

改變背景顏色

獲取參數(shù)列表

通過rosparam list 命令獲取 /turtlesim 節(jié)點的參數(shù)列表:

rosparam list

輸出為:

?獲取參數(shù)值

通過 rosparam get / 命令獲得參數(shù)服務(wù)器上所有參數(shù)的數(shù)值:

rosparam get /

輸出結(jié)果為:

?注意這里的RGB數(shù)值和之前用 rostopic echo [topic name] 得到的數(shù)值相同。

修改顏色

通過 rosparam set 可以修改顏色:

rosparam set turtlesim/background_b 0 rosparam set turtlesim/background_g 0 rosparam set turtlesim/background_r 255 rosservice call /clear

可以看到背景變成了紅色:

控制烏龜運動

紅色的背景感覺有點刺眼,這里我關(guān)閉了之前的 turtlesim節(jié)點并結(jié)束了roscore 節(jié)點管理器。這里重新啟動一下:

在終端一中運行:

roscore

在第二個終端中運行:

rosrun turtlesim turtlesim_node

得到:

?(每次還都是不一樣的小烏龜)

通過發(fā)布話題控制烏龜運動

之前提到 /turtlesim 節(jié)點訂閱了一個位置類型的話題 turtle1/cmd_vel,這里先用 rostopic type來確定一下這個話題的消息類型,在一個新的終端窗口中運行如下命令:

rostopic type /turtle1/cmd_vel

得到:

?運行如下命令確定該消息的數(shù)據(jù)格式:

rosmsg show geometry_msgs/Twist

得到輸出:

可以看到我們可以規(guī)定的是烏龜?shù)木€速度和角速度,這里要注意在二維空間中,允許的運動是沿 x 方向的直線運動或者是沿 z (垂直于電腦屏幕)的旋轉(zhuǎn)運動。比如說:規(guī)定線速度為 2m/s, 角速度為 1.8?rads/s,那么命令如下:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

需要一個穩(wěn)定的頻率為1Hz的指令流才能保持移動狀態(tài)。我們可以使用rostopic?pub?-r命令來發(fā)布源源不斷的命令,1 代表 1Hz 的 速度指令發(fā)布頻率。可以看到命令發(fā)布之后小烏龜開始做圓周運動:

通過 Ctrl+C停止圓周運動

通過鍵盤控制烏龜運動

在上面控制烏龜做圓周運動的終端重,輸入以下命令:

rosrun turtlesim turtle_teleop_key

?命令執(zhí)行后顯示:

然后就可以通過鍵盤的方向鍵來控制烏龜運動,方向鍵上下控制前后移動,左右控制移動方向:(注意這里需要活躍界面為這個終端窗口,而不是小烏龜?shù)娘@示界面,如果鼠標(biāo)電機小烏龜?shù)娘@示界面 turtlesim 窗口,然后再用鍵盤控制,將不可用。)

?

結(jié)束后可以按q退出鍵盤控制。

通過服務(wù)控制烏龜?shù)囊苿?/h3>

首先通過 /turtle1/Pose 話題來獲得烏龜?shù)奈恢眯畔?#xff1a;

執(zhí)行:

rostopic type /turtle1/pose

?得到輸出為:

然后執(zhí)行:

rosmsg show turtlesim/Pose

?輸出:

然后可以通過以下命令得到烏龜?shù)奈恢米鴺?biāo)、方位角度(theta)和速度參數(shù):

rostopic echo /turtle1/Pose

輸出為:?

?

這里需要注意這個小烏龜?shù)脑c在 TurtleSim 窗口的左下角。

然后我們就可以實用 rosservice 來移動烏龜,格式為: rosservice call <service name><service arguments>

比如服務(wù) /turtle1/teleport_absolute 可以控制絕對位置的移動,這一服務(wù)的 service arguments 包含 x,y 坐標(biāo)和方位角。例如將烏龜移動到絕對坐標(biāo) [1, 1] ,方位角為0,那么運行以下命令:

rosservice call /turtle1/teleport_absolute 1 1 0

執(zhí)行結(jié)果如圖:

可以看到烏龜移動到了絕對坐標(biāo) [1, 1] 的位置,并且頭朝向是方位角為0的位置。

服務(wù) /turtle1/teleport_relative?可以控制相對位置的移動,這一服務(wù)的 service arguments 包含移動距離和角度。例如將烏龜從絕對坐標(biāo) [1, 1] 移動到絕對坐標(biāo) [2, 1] ,那么相對位置移動了1,角度為 0 。運行以下命令:

rosservice call /turtle1/teleport_relative 1 0

運行結(jié)果如下圖:

?

可以看到完成了相對位置的移動。大家也可以自己改變這兩個服務(wù)的角度或者位移量(坐標(biāo)值)來看看不同的數(shù)值對小烏龜位置的影響。

總結(jié)

以上是生活随笔為你收集整理的树莓派 ROS 学习(二)小乌龟 turtlesim的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。