ROS launch文件
ROS launch文件
- 1.arg標(biāo)簽
- 2.group標(biāo)簽
- 3.param標(biāo)簽
- 4.ns標(biāo)簽
1.arg標(biāo)簽
這里面arg標(biāo)簽用來在 launch 文件中聲明參數(shù)。
default的內(nèi)容則是對參數(shù)賦值。如無參數(shù)傳入則使用 launch 文件中定義的值。
也可在啟動launch文件時傳入?yún)?shù)的值。
傳入 pub_imu 的值為 true roslaunch base_control base_control.launch pub_imu:=ture2.group標(biāo)簽
group標(biāo)簽會將group里的內(nèi)容劃分成一個組。
里面用到了一個if unless語句,如下。意思是如果robot_name為空,執(zhí)行第一個group的內(nèi)容;否則執(zhí)行第二個。
<group if="$(eval robot_name == '')"><group unless="$(eval robot_name == '')">下面這個代碼:節(jié)點(diǎn)的名稱name、該節(jié)點(diǎn)所在的包名pkg,節(jié)點(diǎn)的可執(zhí)行文件type、輸出方式output,“screen”表示輸出在當(dāng)前終端屏幕。
<node name="base_control" pkg="base_control" type="base_control.py" output="screen">3.param標(biāo)簽
下面這個代碼:param標(biāo)簽也是用來聲明參數(shù)。
param聲明的變量是節(jié)點(diǎn)所接收的,用來設(shè)置傳入節(jié)點(diǎn)的參數(shù),arg的參數(shù)是launch文件所接收的。
參數(shù)的值是通過value直接傳入的。
可以傳入固定值,如下。
<param name="baudrate" value="115200"/>可以傳入?yún)?shù),如下。下面這個value值是arg標(biāo)簽聲明的參數(shù)base_frame
<param name="base_id" value="$(arg base_frame)"/> <!-- base_link name --> <param name="odom_id" value="$(arg odom_frame)"/> <!-- odom link name -->4.ns標(biāo)簽
第二個group里面還有g(shù)roup標(biāo)簽,對應(yīng)ns。
<group unless="$(eval robot_name == '')"><group ns="$(arg robot_name)">以imu_id話題為例,傳入robot_name為abc,查看話題列表顯示的就是abc/imu_id,這樣可防止話題名重名。
下面是之前寫的一個例子https://blog.csdn.net/qq_40828914/article/details/120977892
<group ns="turtlesim1"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group><group ns="turtlesim2"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group>此處我們創(chuàng)建了兩個分組,并以命名空間(namespace)標(biāo)簽來區(qū)分,其中一個名為turtulesim1,另一個名為turtlesim2,兩個分組中都有相同的名為sim的turtlesim節(jié)點(diǎn)。這樣可以讓我們同時啟動兩個turtlesim模擬器,而不會產(chǎn)生命名沖突。
總結(jié)
以上是生活随笔為你收集整理的ROS launch文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础 线程同步
- 下一篇: c++代码根据点位连线_邹军:数控车倒角