ROS機器人的日常使用命令整合(默認在異地組網的情況下)

首先說明,以下使用的rikirobot這個名字要換成你使用的代碼包名,因爲我用的是rikirobot的源碼,所以調用的是rikirobot的代碼包,不過目前市面上大部分的機器人小車都是千篇一律,所以換個名字大概率都適用。裏面的(TAB)的意思是名字太長我懶得打了,直接敲TAB鍵補全吧

網絡及環境配置

1.登錄蒲公英VPN,輸入與工控機相同的帳號密碼
2.前往蒲公英的控制檯,檢查上位機和工控機是否連上VPN以及查看他們的IP是否有變動:點此進入控制檯
3.輸入hostname,查看上位機的名字
4.檢查上位機的bashrc,如果發現ip變化需要更改

ROS_IP是在蒲公英查到的上位機的ip
ROS_HOSTNAME是你的上位機的名字.local
ROS_MASTER_URI是蒲公英查到的工控機的ip

sudo gedit ~/.bashrc		#在這裏面改
 # ROS_IP=XXX.XXX.XXX.XXX
 #ROS_HOSTNAME='你電腦的hostname.local'    
 #ROS_MASTER_URI=http://xxx.xxx.xxx.xxx:11311

4.檢查工控機的bashrc以及hosts,同理ip變化也需要修改若出現拒絕,可能是服務沒開或者名字重複
(1)啓動SSH服務:https://blog.csdn.net/zhe_csdn/article/details/90053018
(2)跳過SSH檢測:

sudo vim ~/.ssh/config
#按i進入編輯模式
#輸入以下內容:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
#之後用vim命令保存即可(先按ESC退出編輯模式,再輸入':wq!')

之後拿上位機使用ssh遠程連接工控機(自此之後就可以遠程操作了)

ssh  [email protected]     				   #xxx爲工控機的名字(最左邊那個),後填工控機的ip地址
sudo vim /etc/hosts
#找到一排空白行,輸入
XXX.XXX.XXX		XXX.local        			 #前爲上位機ip地址,後爲上位機的名字,之後保存並退出
#修改完進入bashrc文件裏改
sudo vim ~/.bashrc
#也是找這幾個參數,把蒲公英里拿到的工控機ip更換並輸入進去)
# ROS_IP=xxx.xxx.xxx
# ROS_HOSTNAME=xxx.xxx.xxx
# ROS_MASTER_URI=http://xxx.xxx.xxx:11311
# RIKIBASE=xx								xx是機器人的類別(用履帶就輸入tank,用四驅就輸入4wd
# RIKILIDAR=rplidar
#改完之後也是保存並退出
source ~/.bashrc    #最後source一遍

自此,網絡方面就配置完成了

檢查機器人的狀態

1.這裏我設置過開機是自啓動bringup.launch的,開機自動打開一個終端並運行程序的教程地址如下:
使用其中的方案二,我寫的腳本在主目錄下的Linux開頭的文件夾。
檢查一下是否有打開先

rostopic list

如果顯示了一定數量的話題,說明已經啓動成功,可以使用以下功能了。
如果沒有的話,運行如下代碼

roslaunch rikirobot bringup.launch

打開失敗的話要檢查線路或者電源問題

功能1:手動控制機器人的移動

以下代碼是在工控機內完成的(需要ssh)

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

之後就可以根據指示手動操控機器人的移動了,需要改按鍵的話也可以直接修改這個源碼
(改完記得重新catkin_make編譯一遍)

功能2:IMU,角速度線速度的自動校準

1.調整IMU

#以下代碼是在工控機內完成的(需要ssh)
roscd rikirobot/param/imu
sudo vim imu_calib.yaml		#查看數據
rostopic echo /imu/data		#刷新數據
rosrun imu_calib do_calib	#開始自動調整,名字錯的話可能我打少了字母,記得使用TAB補全

2.調整線速度角速度

#以下代碼是在工控機內完成的(需要ssh)
rosrun rikirobot_nav calibrate_angular.py 	#打開角速度調整模式
rosrun rikirobot_nav calibrate_linear.py	#打開線速度調整模式(二選一,分開來調整)
#以下代碼是在上位機內完成的(不需要ssh)
rqt_reconfigure
#以下代碼是在工控機內完成的(需要ssh)
roscd  rikirobot/launch
sudo vim bringup.launch		#在bringup文件夾裏修改其初始的線速度角速度,修改完記得':wq!'保存退出

功能3:SLAM地圖構建

1.使用gmapping算法構建地圖

#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot lidar_slam.launch
#以下代碼是在上位機內完成的(不需要ssh)
rviz		#1.在RVIZ左上的file-Openconfig-找到slam.rviz
			#2.使用2D Nav Goal功能(設定目標位置,發送地址來加載地圖),也可以使用功能1來手動控制建圖	
#以下代碼是在工控機內完成的(需要ssh)
#保存地圖
rosrun map_server map_saver -f house		#house可以是任意名字,不過默認後續默認調用的地圖就是house
roscd rikirobot/maps
ls -l										#查詢是否保存

2.選擇一片區域自動構建地圖(也是gmapping算法)

#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot auto_slam.launch
#以下代碼是在上位機內完成的(不需要ssh)
rviz		#1.在RVIZ左上的file-Openconfig-找到auto_slam.rviz
			#2.使用Publish Point功能(依次選擇幾個點連成封閉區域,再按點開始構建)
#以下代碼是在工控機內完成的(需要ssh)
#保存地圖
rosrun map_server map_saver -f house		#house可以是任意名字,不過默認後續默認調用的地圖就是house
roscd rikirobot/maps
ls -l										#查詢是否保存

3.用hector算法構建地圖

#注意:線速度要0.2以下、角速度0.2以下,不要來回走動,該算法適合在空曠地方下使用
#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot hector_slam.launch
#以下代碼是在上位機內完成的(不需要ssh)
rviz		#1.在RVIZ左上的file-Openconfig-找到slam.rviz
			#2.使用2D Nav Goal功能(設定目標位置,發送地址來加載地圖),也可以使用功能1(需要ssh)來手動控制建圖	
#以下代碼是在工控機內完成的(需要ssh)
#保存地圖
rosrun map_server map_saver -f house		#house可以是任意名字,不過默認後續默認調用的地圖就是house
roscd rikirobot/maps
ls -l										#查詢是否保存

4.用karto算法構建地圖

#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot karto_slam.launch
#以下代碼是在上位機內完成的(不需要ssh)
rviz		#1.在RVIZ左上的file-Openconfig-找到slam.rviz
			#2.使用2D Nav Goal功能(設定目標位置,發送地址來加載地圖),也可以使用功能1(需要ssh)來手動控制建圖	
#以下代碼是在工控機內完成的(需要ssh)
#保存地圖
rosrun map_server map_saver -f house		#house可以是任意名字,不過默認後續默認調用的地圖就是house
roscd rikirobot/maps
ls -l										#查詢是否保存

功能4:自動導航功能

1.定點導航(單點)

#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot navigate.launch
#以下代碼是在上位機內完成的(不需要ssh)
rviz		#1.在RVIZ左上的file-Openconfig-找到navigate.rviz
			#2.使用2D Pose Est功能(初始機器人在地圖上的位置,雷達與牆面越貼合越好)
			#3.使用2D Nav Goal功能(設定目標位置,發送地址來直接導航)

2.多點導航(規劃路線)

#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot navigate_multi.launch
#以下代碼是在上位機內完成的(不需要ssh)
rviz		#1.在RVIZ左上的file-Openconfig-找到multi_goals.rviz
			#2.使用Publish Point功能(依次選擇幾個點,機器人會按照順序朝着這些點移動)
			#有時候可能打不開show_mark.py文件而報錯,需要單獨運行或者再chmod 777 -R catkin_ws

功能5:調試PID參數

#以下代碼是在工控機內完成的(需要ssh)
rosrun riki_pid pid_configure
#以下代碼是在上位機內完成的(不需要ssh)
rosrun rqt_reconfigure rqt_reconfigure       #調整參數
rikirobot_project/riki_pid/cfg/rikiPID.cfg   #修改PID的默認啓動值
#從網上搜PID調試方法,慢慢調出合適值

功能6:攝像頭尋紅線,雷達跟隨

1.攝像頭尋紅線(打開usb攝像頭)

#以下代碼是在工控機內完成的(需要ssh)
roslaunch camera.launch
#打開之後可以RVIZ讀節點或者使用rqt_image_view讀/image/raw節點來獲取圖像(啓動rqt工具欄時不用ssh)
roslaunch riki_line_follower riki_line.launch		#攝像頭越低越好

2.雷達跟隨(不實用)

#以下代碼是在工控機內完成的(需要ssh)
roslaunch riki_lidar_follower laser_follower.launch
#原理是雷達檢測最近的目標,並固定與其的距離(誤差很大)

功能7:使用手機APP控制(安裝Map Nav和Make a Map)

#以下代碼是在工控機內完成的(需要ssh)
roslaunch rikirobot appcamera.launch
#打開APP之後連接完就直接使用了
#用app導航的話啓動跟功能3、4一樣的包就行了

功能8:OpenCv圖像處理模板

#以下代碼是在上位機內完成的[添加鏈接描述](https://www.bilibili.com/video/av50377985/?p=6)(不需要ssh)
roslaunch opencv_apps edge_(TAB)			#邊緣提取
roslaunch opencv_apps hough_lines.launch	#直線識別
roslaunch opencv_apps find_cont(TAB)		#結構特徵輪廓識別
roslaunch opencv_apps convex(TAB)			#凸起識別
roslaunch opencv_apps general(TAB)		#橢圓識別
roslaunch opencv_apps people_det(TAB)		#身高特徵識別等等。。。。具體可以直接百度出想要的功能
#用的版本是2.7,可以用來參考別人圖像識別是怎麼做的

後記:實用功能鏈接

Linux方面的:

1.Linux開機執行指令: 自啓動
2.Linux改用戶名: 改用戶名
3.串口數據的讀取: 讀串口數據
4.開機不需要密碼: 自動登錄
5.SSH免密碼登錄: 免密碼視頻教程
6. ROBOWARE STUDIO的安裝 安裝IDE
7. 以ROOT用戶自動運行程序 開機執行指令(ROOT版)
8. 用ROOT權限打開文件管理器:sudo nautilus

ROS方面的:

1.rosbag數據記錄及轉換圖片、視頻:ROSBAG用法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章