ROS ros melodic 座標變換

2021-10-08 16:31:06 字數 1778 閱讀 9389

ros版本 ros-melodic

部分tf樹變換為:

map->odom->base_footprint->base_link->laser

全域性路徑規劃出來的路徑點一般是在map下的,區域性路徑規劃器在發布速度控制指令一般是在odom下的,所以需要經map下的路徑點轉換到odom下。

用到兩個tf2的函式。

呼叫函式 geometry_msgs::transformstamped

lookuptransform。

原始碼在buffer.h中:

/** \brief 獲得兩個座標系間的變換關係.

* \param target_frame 目標座標系

* \param target_time 時間戳,0為最新

* \param source_frame 源座標系

* \param source_time 時間戳,0為最新

* \param fixed_frame 參考係

* \param timeout 超時設定

* \return 變換關係

*/virtual geometry_msgs::transformstamped

lookuptransform

(const std::string& target_frame,

const ros::time& target_time,

const std::string& source_frame,

const ros::time& source_time,

const std::string& fixed_frame,

const ros::duration timeout)

const

;

此時呼叫形式

tf的型別為tf2_ros::buffer.

geometry_msgs::transformstamped transform = tf.

lookuptransform

("odom"

,ros::

time()

,"map"

,ros::

time()

,"map"

,ros::

duration

(0.5))

;

變數transform儲存的即為map到odom的變換關係。

以乙個全域性路徑上的點pose點為例,將pose變換後得到pose_new.

呼叫函式tf2::dotransform。

原始碼在convert.h中:

\ 功能:模板化函式進行轉換

\ 引數 data_in要轉換的資料。

\ 引數 data_out對輸出資料的引用。

\ 引數 transform應用於data_in以填充data_out的變換。

template

<

class

t>

void

dotransform

(const t& data_in, t& data_out,

const geometry_msgs::transformstamped& transform)

;

呼叫:

tf2::

dotransform

(pose, pose_new, plan_to_global_transform)

;

此時的pose_new就轉換到odom系下了。

MFC 螢幕座標 視窗座標 邏輯座標 物理座標

int nwidth getsystemmetrics sm cxscreen 螢幕寬度 int nheight getsystemmetrics sm cyscreen 螢幕高度 int cx getsystemmetrics sm cxfullscreen int cy getsystemmet...

單個點座標座標轉換

需要js版本可以移步coordtransform lng 128.543 lat 37.065 result3 wgs84 to gcj02 lng,lat wgs84座標系 火星座標系 result4 gcj02 to wgs84 lng,lat 火星座標系 wgs84座標系 中文位址到火星座標系...

CocosCreator 本地座標世界座標轉換

之前困擾過,學習了幾篇文章和動手實際操作了一下.理清楚了,其實很簡單.如下圖所示 player為乙個空物體座標 197,77 子物體star是圖中的星星.座標 0,0 指令碼zuobiao.ts繫結在canvas上.startworldpos 把player節點下的星星節點轉化為世界座標.由於星星座...