树莓派 ROS 学习(二)小乌龟 turtlesim
目錄
創建catkin工作空間
小烏龜turtlesim節點
啟動節點
turtlesim節點
turtlesim 話題與消息
查看話題的消息類型
查看消息類型的具體內容
查看話題的值
改變背景顏色
獲取參數列表
?獲取參數值
修改顏色
控制烏龜運動
通過發布話題控制烏龜運動
通過鍵盤控制烏龜運動
通過服務控制烏龜的移動
上次安裝成功ROS之后,先確認一下ROS的安裝環境正確:
env | grep ROSresult:
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創建catkin工作空間
其實就是創建一個文件夾,然后在這個文件夾下,我們可以生成或者修改現有的catkin工作空間。輸入以下命令就可以創建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輸出應該為:
?這里 ubuntu是安裝時的用戶名,上一篇安裝ubuntu桌面版的時候默認用戶名就是ubuntu了。
小烏龜turtlesim節點
啟動節點
首先打開一個終端窗口,輸入以下命令啟動ROS節點管理器:
roscore結果為:
然后再打開一個終端(不要關閉當前窗口),運行以下命令:
rosrun turtlesim turtlesim_node執行輸出類似:
然后會彈出turtlesim的界面如圖:
然后將這幾個終端最小化,記得不要關閉這兩個終端。
turtlesim節點
新打開一個終端,輸入如下命令找出所有的活動節點:
rosnode list輸出如下:
這里可以看到我們已經成功啟動了 /turtlesim 節點。
如果需要查看turtlesim節點發布的話題、訂閱話題和服務等內容,可以輸入:
rosnode info /turtlesim結果如圖:
在publications下面可以看到,/turtlesim 發布了兩個話題: /turtle1/color_sensor 和 /turtle1/pose, 分別控制了烏龜界面的北京顏色和烏龜在界面上的位置坐標,它們的消息類型分別是 [turtlesim/Color] 和 [turtlesim/Pose] 。
在Subscriptions下面可以看到 /turtlesim 訂閱了一個未知類型的話題 turtle1/cmd_vel
turtlesim 話題與消息
輸入如下命令來查看 /turtlesim 的話題:
rostopic list輸出結果為:
查看話題的消息類型
輸入 rostopic type 命令查看話題類型,例如:
rostopic type /turtle1/color_sensor?輸出結果為:
 turtlesim/Color 為 /turtle1/color_sensor這一話題的消息類型 (ROS消息類型命名格式:[package name]/[message type]
查看消息類型的具體內容
剛剛看到話題 /turtle1/color_sensor 的消息類型為 turtlesim/Color , 可以通過 rosmsg shw命令來查看它的具體內容:
rosmsg show turtlesim/Color?輸出結果為:
也就是說這里使用 unit8 來表示背景的RGB顏色。
查看話題的值
比如說想要查看背景的RGB顏色,或者小烏龜的位置,可以用 rostopic echo 命令,例如:
rostopic echo /turtle1/color_sensor終端會持續輸出如圖:
直到按下 Ctrl+C才會停止。
改變背景顏色
獲取參數列表
通過rosparam list 命令獲取 /turtlesim 節點的參數列表:
rosparam list輸出為:
?獲取參數值
通過 rosparam get / 命令獲得參數服務器上所有參數的數值:
rosparam get /輸出結果為:
?注意這里的RGB數值和之前用 rostopic echo [topic name] 得到的數值相同。
修改顏色
通過 rosparam set 可以修改顏色:
rosparam set turtlesim/background_b 0 rosparam set turtlesim/background_g 0 rosparam set turtlesim/background_r 255 rosservice call /clear可以看到背景變成了紅色:
控制烏龜運動
紅色的背景感覺有點刺眼,這里我關閉了之前的 turtlesim節點并結束了roscore 節點管理器。這里重新啟動一下:
在終端一中運行:
roscore在第二個終端中運行:
rosrun turtlesim turtlesim_node得到:
?(每次還都是不一樣的小烏龜)
通過發布話題控制烏龜運動
之前提到 /turtlesim 節點訂閱了一個位置類型的話題 turtle1/cmd_vel,這里先用 rostopic type來確定一下這個話題的消息類型,在一個新的終端窗口中運行如下命令:
rostopic type /turtle1/cmd_vel得到:
?運行如下命令確定該消息的數據格式:
rosmsg show geometry_msgs/Twist得到輸出:
可以看到我們可以規定的是烏龜的線速度和角速度,這里要注意在二維空間中,允許的運動是沿 x 方向的直線運動或者是沿 z (垂直于電腦屏幕)的旋轉運動。比如說:規定線速度為 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]'需要一個穩定的頻率為1Hz的指令流才能保持移動狀態。我們可以使用rostopic?pub?-r命令來發布源源不斷的命令,1 代表 1Hz 的 速度指令發布頻率。可以看到命令發布之后小烏龜開始做圓周運動:
通過 Ctrl+C停止圓周運動
通過鍵盤控制烏龜運動
在上面控制烏龜做圓周運動的終端重,輸入以下命令:
rosrun turtlesim turtle_teleop_key?命令執行后顯示:
然后就可以通過鍵盤的方向鍵來控制烏龜運動,方向鍵上下控制前后移動,左右控制移動方向:(注意這里需要活躍界面為這個終端窗口,而不是小烏龜的顯示界面,如果鼠標電機小烏龜的顯示界面 turtlesim 窗口,然后再用鍵盤控制,將不可用。)
?
結束后可以按q退出鍵盤控制。
通過服務控制烏龜的移動
首先通過 /turtle1/Pose 話題來獲得烏龜的位置信息:
執行:
rostopic type /turtle1/pose?得到輸出為:
然后執行:
rosmsg show turtlesim/Pose?輸出:
然后可以通過以下命令得到烏龜的位置坐標、方位角度(theta)和速度參數:
rostopic echo /turtle1/Pose輸出為:?
?
這里需要注意這個小烏龜的原點在 TurtleSim 窗口的左下角。
然后我們就可以實用 rosservice 來移動烏龜,格式為: rosservice call <service name><service arguments>
比如服務 /turtle1/teleport_absolute 可以控制絕對位置的移動,這一服務的 service arguments 包含 x,y 坐標和方位角。例如將烏龜移動到絕對坐標 [1, 1] ,方位角為0,那么運行以下命令:
rosservice call /turtle1/teleport_absolute 1 1 0執行結果如圖:
可以看到烏龜移動到了絕對坐標 [1, 1] 的位置,并且頭朝向是方位角為0的位置。
服務 /turtle1/teleport_relative?可以控制相對位置的移動,這一服務的 service arguments 包含移動距離和角度。例如將烏龜從絕對坐標 [1, 1] 移動到絕對坐標 [2, 1] ,那么相對位置移動了1,角度為 0 。運行以下命令:
rosservice call /turtle1/teleport_relative 1 0運行結果如下圖:
?
可以看到完成了相對位置的移動。大家也可以自己改變這兩個服務的角度或者位移量(坐標值)來看看不同的數值對小烏龜位置的影響。
總結
以上是生活随笔為你收集整理的树莓派 ROS 学习(二)小乌龟 turtlesim的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 从六大行中选择应届生们最容易上岸的银行笔
- 下一篇: U盘装机
