網(wǎng)站制作NEWS
tf2系列教程(十四):在ROS 2中添加固定坐標(biāo)系(C++)
在ROS 2中,教程十四將指導(dǎo)您如何通過(guò)C++編程為系統(tǒng)添加一個(gè)固定坐標(biāo)系。這個(gè)教程特別適合初學(xué)者,旨在擴(kuò)展您之前小烏龜示例的知識(shí),展示tf2的強(qiáng)大功能。
14.1 添加固定坐標(biāo)系的理由在于,對(duì)于許多任務(wù),基于傳感器或鏈接的本地坐標(biāo)系思考更為方便。tf2允許用戶為這些對(duì)象定義獨(dú)立的坐標(biāo)系,并處理坐標(biāo)變換。
14.2 在ROS 2的坐標(biāo)變換樹(shù)中,坐標(biāo)系之間遵循樹(shù)狀結(jié)構(gòu),不允許形成閉環(huán)。在現(xiàn)有示例中,world、turtle1和turtle2構(gòu)成坐標(biāo)系層級(jí)。為了添加新坐標(biāo)系,您需要選擇一個(gè)現(xiàn)有坐標(biāo)系作為父級(jí),例如,將要在小烏龜turtle1中添加的“胡蘿卜”坐標(biāo)系carrot1。
14.3 通過(guò)在小烏龜turtle1的C++源代碼中實(shí)現(xiàn),首先創(chuàng)建一個(gè)名為fixed_frame_tf2_broadcaster.cpp的文件。代碼中包含了必要的頭文件,如geometry_msgs的TransformStamped,rclcpp庫(kù)的rclcpp.hpp,以及tf2_ros中的TransformBroadcaster。固定坐標(biāo)系廣播器類(lèi)FixedFrameBroadcaster定義了構(gòu)造函數(shù)、計(jì)時(shí)器以及回調(diào)函數(shù),用于定期發(fā)送坐標(biāo)變換信息,其中carrot1坐標(biāo)系僅在y軸上相對(duì)于turtle1偏移2米。
14.4 要運(yùn)行坐標(biāo)系廣播器節(jié)點(diǎn),您需要在learning_tf2_fixed_frame_demo.launch.py啟動(dòng)文件中增加新的節(jié)點(diǎn),啟動(dòng)后,通過(guò)turtle_teleop_key節(jié)點(diǎn)控制小烏龜,觀察第二只小烏龜是否跟隨carrot1坐標(biāo)系的移動(dòng),同時(shí)使用tf2_echo檢查坐標(biāo)變換的正確性。
通過(guò)這個(gè)教程,您將學(xué)會(huì)如何在ROS 2的環(huán)境中添加固定坐標(biāo)系,并利用tf2的機(jī)制實(shí)現(xiàn)坐標(biāo)系之間的變換跟蹤。
多重隨機(jī)標(biāo)簽