rate.sleep()说明

本文介绍了一个使用ROS进行消息发布的示例代码,详细解释了如何设置发布频率为每秒10条消息,并通过sleep机制确保发布间隔稳定。同时展示了如何利用stringstream进行字符串拼接来构建动态的消息内容。
ros::Rate rate(10) //发布频率

while (ros::ok())

{

count++;

std::stringstream ss;

//字符串拼接

ss<<"hello ---->"<<count;

msg.data=ss.str();

//msg.data="hello";

pub.publish(msg);

//添加日志

ROS_INFO("发布的数据:%s",ss.str().c_str());

rate.sleep();//休眠0.1s

}

其实就是每秒10条消息,所以一条消息0.1s;而如果执行完小于0.1s,就sleep一下,直到0.1s再继续走

def move2(distance) : v_pub2 = rospy.Publisher("cmd_vel", Twist, queue_size=10) rate = rospy.Rate(100) goal_distance = distance vel = Twist() if abs(goal_distance)>0.2: vel.linear.x = 0.4 * (goal_distance / abs(goal_distance)) else: vel.linear.x = 0.05 * (goal_distance / abs(goal_distance)) # vel.linear.x = 0.2 * (goal_distance / abs(goal_distance)) vel.linear.y = 0.0 vel.angular.z = 0.0 linear_duration = abs(goal_distance / vel.linear.x) ticks = int(linear_duration * 100) for j in range(ticks): v_pub2.publish(vel) rate.sleep() vel.linear.x = 0.0 vel.angular.z = 0.0 for i in range(10): v_pub2.publish(vel) rate.sleep() return def move4(distance) : v_pub2 = rospy.Publisher("cmd_vel", Twist, queue_size=10) rate = rospy.Rate(100) goal_distance = distance vel = Twist() vel.linear.x = 0.6 * (goal_distance / abs(goal_distance)) vel.linear.y = 0.0 vel.angular.z = 0.0 linear_duration = abs(goal_distance / vel.linear.x) ticks = int(linear_duration * 100) for j in range(ticks): v_pub2.publish(vel) rate.sleep() vel.linear.x = 0.0 vel.angular.z = 0.0 for i in range(10): v_pub2.publish(vel) rate.sleep() return def move1(distance): global findObject,a v_pub3 = rospy.Publisher("cmd_vel", Twist, queue_size=10) rate = rospy.Rate(100) goal_distance = distance vel = Twist() vel.linear.x = 0.0 vel.linear.y = 0.1 * (goal_distance / abs(goal_distance)) vel.angular.z = 0.0 linear_duration = abs(goal_distance / vel.linear.y) ticks = int(linear_duration * 100) for j in range(ticks): v_pub3.publish(vel) if findObject and obj_caught[a]==0: break rate.sleep() vel.linear.x = 0.0 vel.linear.y = 0.0 vel.angular.z = 0.0 for i in range(10): v_pub3.publish(vel) rate.sleep() return def move3(distance): global findQR v_pub3 = rospy.Publisher("cmd_vel", Twist, queue_size=10) rate = rospy.Rate(100) goal_distance = distance vel = Twist() vel.linear.x = 0.0 vel.linear.y = 0.1 * (goal_distance / abs(goal_distance)) vel.angular.z = 0.0 linear_duration = abs(goal_distance / vel.linear.y) ticks = int(linear_duration * 100) for j in range(ticks): v_pub3.publish(vel) if findQR: break rate.sleep() vel.linear.x = 0.0 vel.linear.y = 0.0 vel.angular.z = 0.0 for i in range(10): v_pub3.publish(vel) rate.sleep() return解释以上代码的作用及功能
03-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值