[ Ros自定义消息msg ] : Ros中添加自定义消息(传统方式+ros库方式)+正确导入程序中

前言

由于比赛的需要,ros的话题通信需要使用自定义消息类型,按照常规的方法将生成的msg文件导入项目中,如果想要将自己的消息类型放到ros的库中,这样就可以在所有工作空间中像导入ros中的 from geometry_msgs.msg import Point 一样使用自定义的消息,不用再执行创建msg文件,非常方便,具体方法是直接导入ros的python库中

ros自定义消息类型

创建msg文件

首先创建一个msg为后缀的文件,例如,其中bigcar_yolo是我的在src目录下的包名,你可以自行创建

假如我需要定义一个msg文件,包含Point()类型和string类型,那么我可以在文件中添加

geometry_msgs/Point obpoint
string data

配置CMakeLists.txt

将文件添加到cmakelists,在cmakelists文件中添加以下,其中gesture.msg是你创建的msg

add_message_files(
  FILES
  gesture.msg
)

关联包

generate_messages(
  DEPENDENCIES
  std_msgs
  geometry_msgs
)

其中  std_msgs  geometry_msgs 根据你的msg文件中的数据类型添加

添加依赖

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  geometry_msgs
  message_generation
)

message_generation十分重要

编译包

catkin_package(
 CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)

message_runtime十分重要

配置package.xml

  <exec_depend>message_runtime</exec_depend>
  <build_depend>message_generation</build_depend>

最后catkin_make编译运行

将msg文件导入程序中使用

C++版

按照图片打开你的该路径 devel/include/包名,就会看到和msg文件同名的头文件

在你的项目中直接像这样

#include <bigcar_yolo/gesture.h>

如果提示includepath错误

这按照路径打开 c_cpp_properties.json文件

把你的include路径像这样加进去

就ok了。

Python版

按照路径打开devel/lib/python3/dist-packages/包名

打开setting.json文件

像这样添加

最后导入

from bigcar_yolo.msg import gesture

将msg文件导入ros的python库

上图中有一个默认的路径

    "/opt/ros/noetic/lib/python3/dist-packages"

这个路径是从我们默认的ros中的python库中找文件,因此我们想要将文件添加到其中的话,需要打开这个路径

我选择了std_msgs这个包打开

发现里面用到的数据类型,比如float32,bool,uint8都在这里,这就是我们平时使用from std_msgs.msg import XXX 的具体位置。

将自定义文件导入该库

按照路径打开devel/lib/python3/dist-packages/包名

找到这两个文件

注意__init__.py中应该有 from ._gesture import *

右键打开所在文件夹,由于复制到ros中需要管理员权限,在当前目录打开终端

像这样

 sudo cp _gesture.py /opt/ros/noetic/lib/python3/dist-packages/std_msgs/msg

然后你就会在 /opt/ros/noetic/lib/python3/dist-packages/std_msgs/msg 目录下看到

说明导入成功

最后找到上图中的__init__.py

sudo gedit __init__.py

加入前面提到的from ._gesture import *

最后在程序中直接使用

from std_msgs.msg import gesture

大功告成!

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值