ROS带有sensor_msgs的自定义消息/订阅服务器的图像问题

mkuse

我有一条自定义消息-

sensor_msgs/Image im
float32 age
string name

我可以为该消息成功编写一个发布者,并且看起来运行正常。但是,订户有问题。

#include <ros/ros.h>

#include <custom_msg/MyString.h>
#include <custom_msg/MyImage.h>

#include <image_transport/image_transport.h>
#include <sensor_msgs/Image.h>

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <cv_bridge/cv_bridge.h>


void custom_image_rcvd( const custom_msg::MyImage& msg )
{
    ROS_INFO_STREAM( "msg::: Name:"<< msg.name << " Age:"<< msg.age );

    cv::Mat im =  cv_bridge::toCvShare(  msg.im, "bgr8" )->image ;
    cv::imshow("viewz", im );
    cv::waitKey(30);
}

int main( int argc, char ** argv )
{
    ros::init(argc, argv, "custom_subscriber");
    ros::NodeHandle nh;

    ros::Subscriber sub2 = nh.subscribe( "custom_image", 2, custom_image_rcvd );

    ros::spin();
}

当我尝试catkin_make这样做时,出现以下错误。

/home/eeuser/ros_workspaces/HeloRosProject/src/custom_msg/subsc.cpp: In function ‘void custom_image_rcvd(const MyImage&)’:
/home/eeuser/ros_workspaces/HeloRosProject/src/custom_msg/subsc.cpp:22:57: error: no matching function for call to ‘toCvShare(const _im_type&, const char [5])’
/home/eeuser/ros_workspaces/HeloRosProject/src/custom_msg/subsc.cpp:22:57: note: candidates are:
/opt/ros/hydro/include/cv_bridge/cv_bridge.h:198:17: note: cv_bridge::CvImageConstPtr cv_bridge::toCvShare(const Image&, const boost::shared_ptr<const void>&, const string&)
/opt/ros/hydro/include/cv_bridge/cv_bridge.h:198:17: note:   no known conversion for argument 2 from ‘const char [5]’ to ‘const boost::shared_ptr<const void>&’
/opt/ros/hydro/include/cv_bridge/cv_bridge.h:171:17: note: cv_bridge::CvImageConstPtr cv_bridge::toCvShare(const ImageConstPtr&, const string&)
/opt/ros/hydro/include/cv_bridge/cv_bridge.h:171:17: note:   no known conversion for argument 1 from ‘const _im_type {aka const sensor_msgs::Image_<std::allocator<void> >}’ to ‘const ImageConstPtr& {aka const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&}’
make[2]: *** [custom_msg/CMakeFiles/subscribe.dir/subsc.cpp.o] Error 1
make[1]: *** [custom_msg/CMakeFiles/subscribe.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

我能分辨出的就是这种msg.im类型_im_typesensor_msgs::Image_<ContainerAllocator>我似乎无法理解这部分。

如何从此自定义消息中正确检索我的图像?

您必须仔细查看的签名toCvShare从错误消息中可以看出,此函数有两个重载:

cv_bridge::CvImageConstPtr cv_bridge::toCvShare(const Image&, const boost::shared_ptr<const void>&, const string&)

cv_bridge::CvImageConstPtr cv_bridge::toCvShare(const ImageConstPtr&, const string&)

因此,该函数需要Image一个指向某个对象(第一种情况)或一个ImageConstPtr(第二种情况)加号指针但是,您仅传递了Image,因此这两个选项都不匹配。

如果我正确理解API文档,则在第一种情况下,第二个参数应该是指向包含该图像的消息的指针。尝试以下代码:

void custom_image_rcvd(const custom_msg::MyImageConstPtr& msg)
{
    ROS_INFO_STREAM("msg::: Name:" << msg->name << " Age:" << msg->age);

    cv::Mat im =  cv_bridge::toCvShare(msg->im, msg, "bgr8")->image;
    cv::imshow("viewz", im);
    cv::waitKey(30);
}

请注意,我更改toCvShare了回调的调用以及签名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有sensor_msgs / Image Publisher的ROS自定义消息

来自分类Dev

带有sensor_msgs / Image Publisher的ROS自定义消息

来自分类Dev

roslibjs - 订阅带有自定义消息的主题

来自分类Dev

如何创建自定义订阅服务器?

来自分类Dev

带有自定义标头的节点JS调用GRPC服务器

来自分类Dev

带有自定义打包的无服务器框架

来自分类Dev

来自带有 Lambda 的 API 网关的无服务器离线自定义错误

来自分类Dev

带有彩色下拉图像的自定义微调器

来自分类Dev

具有自定义URL的WAMP服务器

来自分类Dev

带有自定义消息的吐司

来自分类Dev

如何将带有自定义标头的任意JSON数据发送到REST服务器?

来自分类Dev

自定义TableView-Cell(来自服务器的数据)选择带有附件更改的多个值

来自分类Dev

如何将带有自定义标头的任意JSON数据发送到REST服务器?

来自分类Dev

带有自定义HTTP POST请求和响应的jQuery Datatables服务器端分页

来自分类Dev

使用带有密码短语参数的自定义端口和私钥来进行服务器到服务器的复制

来自分类Dev

Serilog:写入自定义字段而不会弄脏“消息”字段(mssql服务器)

来自分类Dev

自定义服务器操作以发送触发消息

来自分类Dev

我如何使Jenkins服务器即使成功构建也发送自定义消息

来自分类Dev

Admin On Rest 在更新后显示来自服务器的自定义消息

来自分类Dev

android +通用图像加载器:在Google Map中显示带有图像的自定义标记

来自分类Dev

带有自定义服务器身份验证的Ember简单身份验证(凭据未定义)

来自分类Dev

带有自动滑动和按钮的自定义 jquery 图像滑块中的 setInterval 问题

来自分类Dev

在Spring MVC项目中使用带有自定义消息转换器的springdoc

来自分类Dev

ws:outbound-gateway自定义拦截器,带有消息头

来自分类Dev

自定义页面布局仅在本地服务器上有效

来自分类Dev

并非所有CD服务器都共享Sitecore自定义缓存

来自分类Dev

没有自定义服务器的可选动态路由-NextJS-9.5.2

来自分类Dev

具有自定义CA的客户端服务器TLS

来自分类Dev

带有自定义消息的Node-Redis psubscribe

Related 相关文章

  1. 1

    带有sensor_msgs / Image Publisher的ROS自定义消息

  2. 2

    带有sensor_msgs / Image Publisher的ROS自定义消息

  3. 3

    roslibjs - 订阅带有自定义消息的主题

  4. 4

    如何创建自定义订阅服务器?

  5. 5

    带有自定义标头的节点JS调用GRPC服务器

  6. 6

    带有自定义打包的无服务器框架

  7. 7

    来自带有 Lambda 的 API 网关的无服务器离线自定义错误

  8. 8

    带有彩色下拉图像的自定义微调器

  9. 9

    具有自定义URL的WAMP服务器

  10. 10

    带有自定义消息的吐司

  11. 11

    如何将带有自定义标头的任意JSON数据发送到REST服务器?

  12. 12

    自定义TableView-Cell(来自服务器的数据)选择带有附件更改的多个值

  13. 13

    如何将带有自定义标头的任意JSON数据发送到REST服务器?

  14. 14

    带有自定义HTTP POST请求和响应的jQuery Datatables服务器端分页

  15. 15

    使用带有密码短语参数的自定义端口和私钥来进行服务器到服务器的复制

  16. 16

    Serilog:写入自定义字段而不会弄脏“消息”字段(mssql服务器)

  17. 17

    自定义服务器操作以发送触发消息

  18. 18

    我如何使Jenkins服务器即使成功构建也发送自定义消息

  19. 19

    Admin On Rest 在更新后显示来自服务器的自定义消息

  20. 20

    android +通用图像加载器:在Google Map中显示带有图像的自定义标记

  21. 21

    带有自定义服务器身份验证的Ember简单身份验证(凭据未定义)

  22. 22

    带有自动滑动和按钮的自定义 jquery 图像滑块中的 setInterval 问题

  23. 23

    在Spring MVC项目中使用带有自定义消息转换器的springdoc

  24. 24

    ws:outbound-gateway自定义拦截器,带有消息头

  25. 25

    自定义页面布局仅在本地服务器上有效

  26. 26

    并非所有CD服务器都共享Sitecore自定义缓存

  27. 27

    没有自定义服务器的可选动态路由-NextJS-9.5.2

  28. 28

    具有自定义CA的客户端服务器TLS

  29. 29

    带有自定义消息的Node-Redis psubscribe

热门标签

归档