【发布时间】:2018-11-14 13:02:32
【问题描述】:
我已经能够将 alexa 集成到 ROS,并且一般来说它可以工作,问题是当我向 alexa 发送命令并发布一个主题时,turtlebot 一直在听它,例如,当我说前进,这没什么大不了的,因为我可以简单地告诉turtlebot停下来,但是当我说左转或右转时我觉得有点问题,因为它一直在左转或右转,我不知道如何解决这个问题.
我发布的消息类型=几何消息/扭曲
我的想法:
1- 创建一个订阅者,它只订阅一段时间,然后在发布新命令时关闭并订阅。
缺点:前进比边路需要更长的时间,所以可能解决不了问题
2- 创建一个订阅者,在发布新消息时,只有一条消息关闭并订阅。
缺点:只前进一次,不会解决这个问题,只会产生完全相反的问题
我看到第二种情况我可以使用它,但我不确定如何使用。
ros::topic::waitForMessage(..)
我目前为订阅者提供的代码是这样的。
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
void cmd_vel_callback(const geometry_msgs::Twist& vel_cmd)
{
ROS_INFO("I heard: [%f]", vel_cmd.linear.y);
std::cout << "Twist Received " << std::endl;
}
int main( int argc, char* argv[] )
{
ros::init(argc, argv, "turtl" );
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("/cmd_vel", 1000, cmd_vel_callback);
while( n.ok() )
{
ros::spin();
}
return 1;
}
【问题讨论】: