ros編寫自己的msg Python

2021-09-28 16:00:45 字數 2462 閱讀 8346

這裡,假設我們的包名叫做test_py.

我們寫自己的msg檔案在該包的msg資料夾下。

test.msg

float32 data
然後,我們編寫自己的talker.py檔案如下:

#!/usr/bin/env python

import rospy

#from後邊是自己的包.msg,也就是自己包的msg資料夾下,test是我的msg檔名test.msg

from test_py.msg import test

def talker():

pub = rospy.publisher('chatter', test, queue_size=10)

rospy.init_node('talker', anonymous=true)

rate = rospy.rate(10) # 10hz

while not rospy.is_shutdown():

#temp為到時候要用於傳輸的資訊

temp = [1, 2]

#這裡test就像建構函式般使用,若有多個msg,那麼寫成test(a,b,c,d...)

rospy.loginfo(test(temp))

pub.publish(test(temp))

rate.sleep()

if __name__ == '__main__':

try:

talker()

except rospy.rosinterruptexception:

pass

listener.py**如下:

#!/usr/bin/env python

import rospy

from test_py.msg import test

def callback(data):

#傳過來的所有msg為data,其中data.後邊的變數看msg檔案寫,比如我的是float32 data,那麼我就是data.data

rospy.loginfo(data.data)

def listener():

rospy.init_node('listener', anonymous=true)

rospy.subscriber('chatter', test, callback)

rospy.spin()

if __name__ == '__main__':

listener()

這還沒玩,還要把檔案變成可執行檔案:

$ chmod +x talker.py

$ chmod +x listener.py

最後再貼上我的package檔案和cmakelists.txt檔案

package.xml檔案如下:

test_py

0.0.0

the test_py package

smile

todo

catkin

rospy

std_msgs

message_generation

rospy

std_msgs

message_runtime

注意:這裡的如果是原來的`

那麼catkin_make的時候,下邊的會報錯。

我的cmakelist.txt檔案如下:

cmake_minimum_required(version 2.8.3)

project(test_py)

find_package(catkin required components

rospy

std_msgs

message_generation

)add_message_files(

files

test.msg

)generate_messages(

dependencies

test_py

)#對於c++結點的cmakelists.txt檔案,include_dirs include和libraries test_py不能注釋,

#但是對於python,這兩行不注釋,catkin_make通不過

catkin_package(

#include_dirs include

#libraries test_py

catkin_depends rospy message_runtime

depends system_lib

)include_directories(

$)

探索了好久才發現的這些,如果對您有幫助的話,能不能給個贊哇~~~

謝謝老闆!!!

ros 編寫 helloworld 程式

ros 編寫 helloworld 程式 參考 1,先建立工作空間 catkin ws 參考 a,ros工作環境檢查 export grep ros b,將ros的配置文件加入到teminal啟動指令碼裡 source opt ros melodic setup.bash c,建立工程空間 mkdi...

ros 建立自己的msg

在使用ros訂閱話題訊息的時候,有些時候為了能夠進行資料型別的轉換或者想實現訊息的傳輸問題時,需要用到自己定義的.msg訊息型別。建立乙個msg檔案,再建立乙個.msg檔案 mkdir msg vi test.msg如下定義 float32 data uint16 size header heade...

編寫自己的TRACE

在編寫mfc程式時我們經常用trace輸出除錯資訊幫助除錯,但使用trace的前提條件必須是定義了 debug並且使用debug庫才行。有時候在寫某些外掛程式的時候,由於廠商只提供release版本的介面,於是只能把自己的工程中去掉 debug並還用非debug庫,雖然還屬於debug版,但 tra...