使用boost :: bind(C ++)通过相同的(ROS)回调写入向量

时间:2013-06-10 17:05:12

标签: c++ boost ros

我正在使用ROS主题,以便从模拟器中获取一些图像流。 我的想法如下:我有“n”个视觉传感器,我想宣布n个订阅者(通过一个for循环)读取不同的主题并调用相同 callback:将整数传递给cb我将能够填充图像矢量(每个图像都在不同的主题上收到)。

这是我的代码:

vector <IplImage*> Images;

void newImageTrigger_trgI(const sensor_msgs::ImageConstPtr& msg, int i)
{
 cv_bridge::CvImagePtr cv_ptr;


try
{

    cv_ptr = cv_bridge::toCvCopy(msg, enc::BGR8);

    Images[i] = cv_ptr->image;


}
catch (cv_bridge::Exception& e)
{
    ROS_ERROR("cv_bridge exception: %s", e.what());
}

}


 int main( int argc, char** argv )
 {


ros::init(argc, argv, "ImageProcessing");
ros::NodeHandle n;

    std::vector<ros::Subscriber> sub;
for (int i = 1; i < 6; i++)
{
    string str_i=string_converter(i);
     sub[i] = n.subscribe("/vrep/visionSensorData"+str_i, 1,...   //ERROR
       boost::bind(&newImageTrigger_trgI, _1, i));
     }

      .....

显然:// ERROR

中的“无效参数”

有人可以帮助我吗?...我认为这是关于boost :: bind功能的 感谢

1 个答案:

答案 0 :(得分:0)

在这种情况下,需要为error_msgs :: Image类型显式实例化错误行中的subscribe函数:

sub[i] = n.subscribe<sensor_msgs::Image>("/vrep/visionSensorData"+str_i, 1, boost::bind(&newImageTrigger_trgI, _1, i));