没有调用回调函数 我尝试在C++中实现ROS GoTooCalm,这里是代码 #包括“ros/ros.h” #包括“几何图形\u msgs/Twist.h” #包括“几何图形/Pose2D.h” #包括“turtlesim/Pose.h” 甲鱼{ 公众: 海龟(整数argc,字符**argv){ ros::init(argc,argv,“mover”); ros::nodehandlen; pose=turtlesim::pose(); pub=n.advision(“/turtle1/cmd_vel”,100); sub=n.subscribe(“/turtle1/pose”,100,&Turtle::Update,this); } 无效更新(constturtlesim::Pose::ConstPtr&msg){ ROS_信息(“接收的姿势:x=%f y=%f\n”,消息->x,消息->y); 姿势=*味精; } void move2goal(){ turtlesim::Pose goalPose=turtlesim::Pose(); std::cout
我想你误解了睡眠的作用。与没有调用回调函数 我尝试在C++中实现ROS GoTooCalm,这里是代码 #包括“ros/ros.h” #包括“几何图形\u msgs/Twist.h” #包括“几何图形/Pose2D.h” #包括“turtlesim/Pose.h” 甲鱼{ 公众: 海龟(整数argc,字符**argv){ ros::init(argc,argv,“mover”); ros::nodehandlen; pose=turtlesim::pose(); pub=n.advision(“/turtle1/cmd_vel”,100); sub=n.subscribe(“/turtle1/pose”,100,&Turtle::Update,this); } 无效更新(constturtlesim::Pose::ConstPtr&msg){ ROS_信息(“接收的姿势:x=%f y=%f\n”,消息->x,消息->y); 姿势=*味精; } void move2goal(){ turtlesim::Pose goalPose=turtlesim::Pose(); std::cout,c++,c++14,ros,robotics,gazebo-simu,C++,C++14,Ros,Robotics,Gazebo Simu,我想你误解了睡眠的作用。与spin不同,它实际上并不执行所有ROS通信事件。它只是为了方便准确睡眠。请参阅 幸运的是,修复非常简单,只需添加一个spinOnce: while( distance(goalPose) >= d && ros::ok()) { // (..) ros::spinOnce(); loop_rate.sleep(); } 适合我。请添加您的主函数。``intmain(intargc,char**argv){Turtle-Turtle=
spin
不同,它实际上并不执行所有ROS通信事件。它只是为了方便准确睡眠。请参阅
幸运的是,修复非常简单,只需添加一个spinOnce
:
while( distance(goalPose) >= d && ros::ok()) {
// (..)
ros::spinOnce();
loop_rate.sleep();
}
适合我。请添加您的主函数。``intmain(intargc,char**argv){Turtle-Turtle=Turtle(argc,argv);Turtle.move2lgool();}```有一个
cin
。你输入了什么?代码走了多远?你把调试语句放在其他地方了吗?你的问题会从这样的细节中受益匪浅。cin语句用于获取目标位置(x,y)从控制台。我在更新回调函数中添加了一条调试语句,在循环的末尾添加了一条调试语句。顺便说一句,我尝试实现了这条语句,但是python实现中没有spinOnce()。哦,有趣!也许python中的睡眠工作方式不同?这确实非常令人困惑。