下面图片所示,可以正常启动gazebo世界,yolo启动正常,一直在等待图像,为什么yolo接收不到gazebo传过去的话题


下面图片所示,可以正常启动gazebo世界,yolo启动正常,一直在等待图像,为什么yolo接收不到gazebo传过去的话题


关注让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek
如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞
ros::Publisher image_pub = nh.advertise<sensor_msgs::Image>("gazebo_image_topic", 1);
- 而yolo订阅图像话题的代码可能是:
ros::Subscriber image_sub = nh.subscribe("gazebo_image_topic", 1, image_callback);
rosnode list查看是否有预期的节点,然后用rosnode info <node_name>查看节点详情和日志。sensor_msgs::Image格式,yolo也应该订阅相同格式的消息。如果不一致,可能需要进行格式转换。例如,可以使用ROS的message_filters库进行格式转换和同步,示例代码如下:#include <message_filters/subscriber.h>
#include <message_filters/synchronizer.h>
#include <message_filters/sync_policies/approximate_time.h>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/image_encodings.h>
typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::Image, sensor_msgs::Image> MySyncPolicy;
void callback(const sensor_msgs::ImageConstPtr& img1, const sensor_msgs::ImageConstPtr& img2)
{
// 处理图像
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "image_sync_example");
ros::NodeHandle nh;
message_filters::Subscriber<sensor_msgs::Image> sub1(nh, "topic1", 1);
message_filters::Subscriber<sensor_msgs::Image> sub2(nh, "topic2", 1);
message_filters::Synchronizer<MySyncPolicy> sync(MySyncPolicy(10), sub1, sub2);
sync.registerCallback(boost::bind(&callback, _1, _2));
ros::spin();
return 0;
}
希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。