当前位置: 首页 > news >正文

ROS实现简单避障

        通过ros中的topic话题通讯机制,依靠速度话题/cmd_vel和激光雷达的测距反馈,实现避开障碍物。

#!/usr/bin/env python3
# coding=utf-8import rospy
from sensor_msgs.msg import LaserScan
# 传感器消息类型 LaserScan翻译为激光扫描
from geometry_msgs.msg import Twist# 几何消息类型 geometry翻译为几何 Twist翻译为转动、扭转def LidarCallback(message):# 声明全局变量,用来发送速度的消息,控制消息global velocity_publisher# count变量用来控制避障时,机器人转向的时间global count# 得到机器人正前方的障碍物距离,并输出distance = message.ranges[180]rospy.loginfo("距离前方障碍物还有%.2fm", distance)# 此刻是避障调整代码执行,只调整角度,调整完了直接推出函数,不会发布速度,所以说是静止调整好了角度再运行的if count > 0:count = count - 1return# 创建速度控制的消息velocity_command = Twist()# 如果距离前方障碍物距离小于1.5m,则给count赋值为35,激光雷达的扫描频率大概是11hz,相当于角度调整了3.5s左右# 调整的是旋转的角度以避开障碍,0.3rad/sif distance < 1.5:velocity_command.angular.z = 0.3count = 35# 如果没有到达避障的位置,则正常的向前方以0.15m/s的速度直行else:velocity_command.linear.x = 0.15# 不管是调整还是正常直行,都需要发布速度给机器人,来控制速度velocity_publisher.publish(velocity_command)if __name__ == '__main__':# 初始化ros节点并发出警告,表明节点开始运行rospy.init_node("easy_avoid_node")rospy.logwarn("easy_avoid_node start running")# 创建激光雷达的订阅者对象lidar_subscriber = rospy.Subscriber("/scan", LaserScan, LidarCallback, queue_size=10)# 创建速度发布者对象count = 0velocity_publisher = rospy.Publisher("/cmd_vel", Twist, queue_size=10)# 控制节点,一直运行rospy.spin()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何利用「搭贝」进销存系统锁住库存
  • Code Llama: Open Foundation Models for Code论文阅读
  • STM32外部中断事件控制器-EXTI
  • 【AI学习】在魔塔社区玩Ollama:部署GLM4和CodeGeeX4
  • 切换JDK版本
  • CSS3页面布局-三栏-固定宽度布局
  • TCP协议(1)
  • Ubuntu上搭建Nginx环境
  • Golang | Leetcode Golang题解之第368题最大整除子集
  • 面试被面试官问:3D目标检测预处理优化策略有哪些?
  • 计算机网络模型
  • kafak集群搭建-基于zookeeper方式
  • 七牛云文件存储
  • 大模型在应用开发安全左移实践
  • 【C/C++】Sleep()函数详解
  • SegmentFault for Android 3.0 发布
  • 2017届校招提前批面试回顾
  • android图片蒙层
  • C++入门教程(10):for 语句
  • CentOS6 编译安装 redis-3.2.3
  • Git初体验
  • iOS 颜色设置看我就够了
  • javascript 哈希表
  • MySQL的数据类型
  • nfs客户端进程变D,延伸linux的lock
  • node 版本过低
  • Puppeteer:浏览器控制器
  • vue--为什么data属性必须是一个函数
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 警报:线上事故之CountDownLatch的威力
  • 利用jquery编写加法运算验证码
  • 免费小说阅读小程序
  • 前端存储 - localStorage
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 正则表达式
  • HanLP分词命名实体提取详解
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • !$boo在php中什么意思,php前戏
  • #、%和$符号在OGNL表达式中经常出现
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $.each()与$(selector).each()
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (07)Hive——窗口函数详解
  • (31)对象的克隆
  • (6)STL算法之转换
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (函数)颠倒字符串顺序(C语言)