qq_42978799 2019-07-17 19:07 采纳率: 0%
浏览 725

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;

}
图片说明图片说明


  • 写回答

1条回答

  • weixin_42149161 2021-04-26 18:05
    关注

    解决了吗?

     

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办