Ubuntu18.04 ROS-Melodic Turtlebot2
操作系統(tǒng)為ubuntu18.04 安裝ROS Melodic Turtlebot2,很多大佬分享了詳細(xì)的安裝過程,在這里就不多贅述,安裝遇到問題多百度,大部分都是可以解決的。
Turtlebot2移動控制
前期學(xué)習(xí)了趙虛左老師的ROS入門課程,結(jié)合Turtlebot2資料這里方便大家打開,放的創(chuàng)客制造的文檔,也推薦大家去看官方文檔
首先創(chuàng)建一個工作空間,然后切換到工作空間進(jìn)行編譯
mkdir -p rosdemo_ws/src
cd rosdemo_ws/
catkin_make
方法一 終端運行
機(jī)器人底盤連接到電腦,關(guān)閉turtlebot所有終端窗口,打開一個新的中斷,聽到提示音后,機(jī)器人底盤成功連接
roslaunch turtlebot_bringup minimal.launch
在工作空間下,下載源代碼
sudo git clone https://github.com/markwsilliman/turtlebot/
切換目錄
cd turtlebot
運行測試腳本,這里有兩個都可以作為測試腳本,goforward.py 或者 draw_a_square.py
python goforward.py
能夠看到機(jī)器人向前移動,按下Ctrl + c,停止運行
接著打開腳本
sudo gedit goforward.py
可以對速度等參數(shù)進(jìn)行修改,比如如下
# let's go forward at 0 m/s
move_cmd.linear.x = 0
# let's turn at 0.5 radians/s
move_cmd.angular.z = 0.5
保存退出,重新運行程序,可以看到更改后的效果
運行另一個測試的腳本,你會看到Turtlebot2在地板上畫正方形
python draw_a_square.py
至此,完成Turtlebot2的測試,但是為了更加方便我們開發(fā),個人覺得用gedit打開代碼不是很舒服,所以第二種方法我們安裝配置VScode,這里VScode安裝以及配置方法可以參考VScode配置
方法二 VScode運行實現(xiàn)精確控制
在之前的測試中,只能用Ctrl + c停止運行,可以實現(xiàn)更加精確的控制嗎?比如我想前進(jìn)1米,在轉(zhuǎn)彎30度,在前進(jìn)2米,最好我可以通過終端傳入?yún)?shù)來控制移動距離或者傳入角度
這里參考了上述歷程中的想法,比如設(shè)置機(jī)器人的移動速度為 0.2m/s 運行 5s 的時間就能夠?qū)崿F(xiàn)移動1m的控制目標(biāo)
代碼如下所示,添加對輸入?yún)?shù)個數(shù)進(jìn)行檢測
#import
import sys
#main
if __name__ == '__main__':
#judge the number of param
if len(sys.argv) != 3:
rospy.logerr("Input error")
sys.exit(1)
# ros running
try:
DrawASquare()
except:
rospy.loginfo("node terminated.")
接著對DrawASquare()函數(shù)根據(jù)自己的需求進(jìn)行更改,這里展示部分,簡單實現(xiàn)了所需功能
while not rospy.is_shutdown():
if(str(sys.argv[1]) == 'line'):
#if go forward 0.2 m (1 seconds * 0.2 m / seconds)
rospy.loginfo("Going Straight")
for x in range(0,int(float(sys.argv[2])*5*5)):
self.cmd_vel.publish(move_cmd)
r.sleep()
count = count + 1
if(count == 1):
sys.exit(1)
這里移動的距離通過for循環(huán)中的參數(shù)進(jìn)行設(shè)置,完成了腳本的編寫之后,編譯沒問題之后進(jìn)行仿真設(shè)計。
Rviz Gazebo仿真實現(xiàn)
1.首先為地圖創(chuàng)建一個文件夾
mkdir ~/turtlebot_custom_maps
2.推出Gazebo的世界
roslaunch turtlebot_gazebo turtlebot_world.launch
3.啟動地圖建設(shè)
roslaunch turtlebot_gazebo gmapping_demo.launch
4.使用rviz的地圖構(gòu)建過程可視化
roslaunch turtlebot_rviz_launchers view_navigation.launch
這里上邊給出的是官方的文件,但是在我的路徑中沒有找到,最后發(fā)現(xiàn)在我的文件中,命名為 view_robot.launch,更改為如下指令
roslaunch kobuki_rviz_launchers view_robot.launch
到此就成功打開了Gazebo 和 Rviz
問題匯總:
在仿真運行過程中可能會遇到的問題
1.RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name
原因:沒有添加環(huán)境變量
解決方法:
回去再次編譯,添加環(huán)境變量(建議報類似錯誤時候 source一下,可能有意想不到的效果哈哈)
catkin_make
source ./devel/setup.bash
2.Rviz 啟動后 No transform from [base_link] to [map]
robotmodel下的Status狀態(tài)是紅色的,而且右側(cè)顯示的機(jī)械臂上附近有不明的大片的白色
原因:缺少unicode
解決方法
安裝 unicode 關(guān)閉終端,重新啟動 Rviz
sudo apt-get install unicode
結(jié)合仿真與機(jī)器人控制
我們在仿真中,運行之前寫的精確控制機(jī)器人移動的腳本,直觀進(jìn)行展示
cd到python腳本的工作空間,編譯成功后,代碼如上,輸入第一個參數(shù)為走直線的指令(line),第二個參數(shù)為移動距離(1m)
rosrun test01_hello draw_a_square.py line 1
Rviz中看到機(jī)器人移動距離大約為1m(大約一個格子的距離)
當(dāng)然你也可以控制機(jī)器人旋轉(zhuǎn)固定的角度,輸入第一個參數(shù)為旋轉(zhuǎn)的指令(rotate),第二個參數(shù)為旋轉(zhuǎn)角度(90)
rosrun test01_hello draw_a_square.py rotate 90
rosrun test01_hello draw_a_square.py line 1
不僅可以在Rviz中看到機(jī)器人移動,也可以在Gazebo中看到機(jī)器人移動畫面,這里不做展示。
還可以通過鍵盤控制機(jī)器人的移動
roslaunch turtlebot_teleop keyboard_teleop.launch文章來源:http://www.zghlxwxcb.cn/news/detail-424187.html
小結(jié)
本篇主要記錄自己在做畢設(shè)過程中的一些過程與經(jīng)驗,部分地方的內(nèi)容不是很詳細(xì),但是已附上參考鏈接,希望給到大家?guī)椭?,遇到問題可以多百度一下,很多大佬都給出了詳細(xì)的解決方案,祝您科研順利文章來源地址http://www.zghlxwxcb.cn/news/detail-424187.html
到了這里,關(guān)于Ubuntu18.04 Turtlebot2機(jī)器人移動控制 Rviz Gazebo仿真實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!