2 5 1 實操01 話題發布

2021-10-21 02:23:44 字數 3176 閱讀 5347

需求描述:編碼實現烏龜運動控制,讓小烏龜做圓周運動。

結果演示:

實現分析:

烏龜運動控制實現,關鍵節點有兩個,乙個是烏龜運動顯示節點 turtlesim_node,另乙個是控制節點,二者是訂閱發布模式實現通訊的,烏龜運動顯示節點直接呼叫即可,運動控制節點之前是使用的 turtle_teleop_key通過鍵盤 控制,現在需要自定義控制節點。

控制節點自實現時,首先需要了解控制節點與顯示節點通訊使用的話題與訊息,可以使用ros命令結合計算圖來獲取。

了解了話題與訊息之後,通過 c++ 或 python 編寫運動控制節點,通過指定的話題,按照一定的邏輯發布訊息即可。

實現流程:

通過計算圖結合ros命令獲取話題與訊息資訊。

編碼實現運動控制節點。

啟動 roscore、turtlesim_node 以及自定義的控制節點,檢視執行結果。

準備:先啟動鍵盤控制烏龜運動案例。

獲取話題:/turtle1/cmd_vel

通過計算圖檢視話題,啟動計算圖:

rqt_graph
或者通過 rostopic 列出話題:

rostopic list
**獲取訊息型別:**geometry_msgs/twist

rostopic type /turtle1/cmd_vel
獲取訊息格式:

rosmsg info geometry_msgs/twist
響應結果:

geometry_msgs/vector3 linear

float64 x

float64 y

float64 z

geometry_msgs/vector3 angular

float64 x

float64 y

float64 z

linear(線速度) 下的xyz分別對應在x、y和z方向上的速度(單位是 m/s);

angular(角速度)下的xyz分別對應x軸上的翻滾、y軸上俯仰和z軸上偏航的速度(單位是rad/s)。

建立功能包需要依賴的功能包: roscpp rospy std_msgs geometry_msgs

實現方案a:c++

/*

編寫 ros 節點,控制小烏龜畫圓

準備工作:

1.獲取topic(已知: /turtle1/cmd_vel)

2.獲取訊息型別(已知: geometry_msgs/twist)

3.執行前,注意先啟動 turtlesim_node 節點

實現流程:

1.包含標頭檔案

2.初始化 ros 節點

3.建立發布者物件

4.迴圈發布運動控制訊息

*/#include "ros/ros.h"

#include "geometry_msgs/twist.h"

int main(int argc, char *ar**)

return 0;

}

配置檔案此處略

實現方案b:python

#! /usr/bin/env python

""" 編寫 ros 節點,控制小烏龜畫圓

準備工作:

1.獲取topic(已知: /turtle1/cmd_vel)

2.獲取訊息型別(已知: geometry_msgs/twist)

3.執行前,注意先啟動 turtlesim_node 節點

實現流程:

1.導包

2.初始化 ros 節點

3.建立發布者物件

4.迴圈發布運動控制訊息

"""import rospy

from geometry_msgs.msg import twist

if __name__ == "__main__":

# 2.初始化 ros 節點

rospy.init_node("control_circle_p")

# 3.建立發布者物件

pub = rospy.publisher("/turtle1/cmd_vel",twist,queue_size=1000)

# 4.迴圈發布運動控制訊息

rate = rospy.rate(10)

msg = twist()

msg.linear.x = 1.0

msg.linear.y = 0.0

msg.linear.z = 0.0

msg.angular.x = 0.0

msg.angular.y = 0.0

msg.angular.z = 0.5

while not rospy.is_shutdown():

pub.publish(msg)

rate.sleep()

許可權設定以及配置檔案此處略

首先,啟動 roscore;

然後啟動烏龜顯示節點;

最後執行運動控制節點;

最終執行結果與演示結果類似。

補充資料1:

弧度:單位弧度定義為圓弧長度等於半徑時的圓心角。

**補充資料2:**偏航、翻滾與俯仰

座標系**:

偏航:俯仰:

翻滾:

Flink 專案案例實操01

專案詳情 基於實時計算,您可以輕鬆完成實時欺詐檢測系統。實時欺詐檢測系統能夠及時發現使用者高危行為並採取措施,降低損失。實時欺詐檢測 風控 系統流程如下 實時計算訂閱訊息佇列,過濾出感興趣的行為,比如 購買 領券 瀏覽等。實時計算計算把這個行為特徵化。實時計算通過udf呼叫外部乙個風險模型,判斷這次...

mysql分割槽實操

分成2步 2.將原表資料插入新錶 insert into 目標表 select from 表 create table met shopv2 order copy1 id int 11 not null auto increment,orderid varchar 20 character set ...

redis備份實操

終於發布了個人的第乙個課程 redis備份實操,位址 1 不能搞出問題 虛擬機器測試環境不擔心這個啊 2 任務得在夜間進行 白天業務高峰期,不適合做維護 3 必須考慮可用性,得把資料備份到其他的系統上。我的搞法是 1 準備乙個資料校驗環境,安裝上redis,用於備份檔案匯入。通過對比生產環境redi...