ROS中subscribe接受时用boost::bind为回掉函数传参报错???

#include
#include
#include
#include
#include
#include
#include
#include
#include
//ros::NodeHandle ph;

void callBack(const geometry_msgs::Twist twist, ros::Publisher& path_pub)
{
// ros::Publisher path_pub = ph.advertise("trajectory", 1, true);
nav_msgs::Path path;

ros::Time current_time, last_time;
current_time = ros::Time::now();
    last_time = ros::Time::now();

    path.header.stamp=current_time;
     path.header.frame_id="odom";

ros::Rate loop_rate(1);

double x=0.0;
double y = 0.0;
    double th=0.0;

while (ros::ok())
{
    double temp_x;
            double temp_y;
    double dt=0.1;
    temp_x = twist.linear.x * dt; 
    x += temp_x;
            temp_y=twist.linear.y * dt;
    y+=temp_y;

    geometry_msgs::PoseStamped this_pose_stamped;

    this_pose_stamped.pose.position.x = x;
    this_pose_stamped.pose.position.y = y;

    geometry_msgs::Quaternion goal_quat = tf::createQuaternionMsgFromYaw(th);
    this_pose_stamped.pose.orientation.x = goal_quat.x;
    this_pose_stamped.pose.orientation.y = goal_quat.y;
    this_pose_stamped.pose.orientation.z = goal_quat.z;
    this_pose_stamped.pose.orientation.w = goal_quat.w;

    this_pose_stamped.header.stamp=current_time;
    this_pose_stamped.header.frame_id = "odom";
    path.poses.push_back(this_pose_stamped);

            path_pub.publish(path);
    ros::spinOnce();               // check for incoming messages

    last_time = current_time;
    loop_rate.sleep();
}

}

int main(int argc, char **argv)
{
ros::init(argc, argv, "showpath");
ros::NodeHandle ph;
//接受消息
ros::Publisher path_pub = ph.advertise("trajectory", 1, true);

    ros::Subscriber sub=ph.subscribe<geometry_msgs::Twist>("cmd_vel", 1,boost::bind(callBack, _1, path_pub));

// ros::Subscriber sub=ph.subscribe("cmd_vel", 1,callBack);
ros::spin();
return 0;

}
图片说明图片说明


解决了吗?