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用法