ROS入門基礎-分爲三部分來寫博客吧,第一步是ROS系統介紹,第二部分是ROS基礎,第三部分是ROS編程實例;,本博客爲ROS基礎
目錄
1.常用的命令行
常用Linux命令行
1.cd
cd /etc //進入/etc目錄 cd .. //進入上一級
2.ls
ls #顯示文件
3.mkdir
mkdir newfolder #創建文件夾
4.touch
touch a.txt //創建文件
5.rm
rm a.txt //刪除文件 rm –r 文件夾 //刪除文件及裏面的內容
6.cp
cp 文件a所在路徑 文件要copy 的位置 cp –r 文件a路徑 文件b路徑 //把a文件copy到b文件夾下
7.mv
mv a.txt c #移動a.txt 到c文件夾 mv b c #移動a文件夾 到c文件夾
8.pwd
pwd //顯示所處的文件位置
8.echo
echo “Hello world”> hello.txt#創建有內容的文本文件
9.vim
Ref: 1.https://zhuanlan.zhihu.com/p/95800252 2.https://blog.csdn.net/weixin_37657720/article/details/80645991
10.其它命令:如解壓與壓縮命令行,僅查看文本cat 等
常用ROS命令行
1.catkin_create_pkg
現在使用catkin_create_pkg命令來創建一個名爲‘beginner_tutorials’的新程序包,這個程序包依賴於 std_msgs、 roscpp和rospy:
catkin_create_pkg beginner_tutorials roscpp rospy std_msgs
2.rospack find package_name
3.rosnode
rosnode list
rosnode info node_name
4.rostopic
rostopic list
rostopic info topic_name
rostoipic echo topic _name
5.rosservice
rosservice list
rosservice info service_name
6.使用roscd,切換到功能包
roscd 功能包名
7.rosls 顯示包中的文件
rosls 功能包名
8.安裝功能包
sudo apt-get install ros- kinetic-功能包名(可以使用table鍵自動補全)
2.通信機制
節點、節點管理器、參數服務器、消息、主題、服務
1. 基於主題的異步數據通信
2. 基於服務的同步通信
3. 基於參數服務器的數據傳遞
2. 1基於主題的異步數據通信:
基本概念:
Nodes :節點,一個節點即爲一個可執行文件,它可以通過ROS與其它節點進行通信。
Messages:消息,消息是一種ROS數據類型,用於訂閱或發佈到一個話題。採用.msg文件 定義
Topics :話題,節點可以發佈消息到話題,也可以訂閱話題以接收消息。
1.節點之間用來傳輸數據的重要總線;
2.使用發佈/訂閱模型,數據由發佈者傳到訂閱者,同一話題的訂閱者或發佈者可以不唯一
Master :節點管理器, ROS名稱服務(比如幫助節點找到彼此)。
2. 2 基於服務的同步數據通信
服務:
1.使用客戶端/服務器,客戶端發送請求數據,服務器完成處理後返回應答數據
2.使用編程語言無關的.Srv文件定義的請求和應答數據結構。
2. 3 基於參數服務器的數據傳遞
參數服務器
1.通過網絡訪問的共享,多變量的字典
2.節點使用節點服務器可以來存儲運行時的參數
3.適合存儲靜態的配置參數,不適合存儲動態配置的數據
3.關鍵組件
1.launch
1.launch文件:通過XML標籤語言多節點的配置和啓動
2.<launch>:launch文件根元素採用<launch>標籤定義
3.<node>:
<node pkg="package-name" name="exe-name"
type="node-name"/>
pkg :功能包名稱
name:運行時的可執行名稱
type :節點運行時的名稱
其他:output,ns,args,required,respawn
4.<pararm>
設置ROS系統運行中的參數,存放在參數服務器
<param name="var" value="val" />
name:參數名
value:參數值
<rosparam>:加載參數文件多個參數
<rosparam name="param.yaml" command="load" ns="params"/>
5.<args>:內部參數
<arg name="arg-name" default="arg-value">
name:參數名
default:參數值
調用:<param name="var" value="$(arg arg-name)" />
6.<remap>:重新改變話題的命名
<remap from="/turtlebot/cmd_vel" to ="/cmd_vel" />
from :原命名 to: 映射之後的命名
7.<include>:包含其他launch文件
<include file="$(arg dirname)/other.launch" />
launch文件實例
1 <launch>
2
3 <group ns="turtlesim1">
4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
5 </group>
6
7 <group ns="turtlesim2">
8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
9 </group>
10
11 <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
15</launch>
Ref:http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch
2.Rviz可視化平臺:數據可視化
Rviz:是一款三維可視化工具,很好兼容基於ROS軟件
框架的機器人平臺。
1.Rviz顯示實物
2.圖形化方式,顯示機器人傳感器的信息,機器人運動狀態和周圍的環境
3.Gazebo三維物理仿真平臺
Gazebo是一款功能強大的三維物理仿真平臺
1.具有強大的物理
2.高質量的圖形渲染
3.方便的編程和圖像接口
參考:
1.http://wiki.ros.org/
2.http://wiki.ros.org/ROS/
3.http://wiki.ros.org/ROS/Tutorials(重要)
4.https://www.ncnynl.com/archives/201609/838.html
5.http://www.guyuehome.com/ (古月居)
6.https://www.ncnynl.com/archives/201609/838.html