从零实现机器人自主避障
1. 编译工具安装
sudo apt update
sudo apt install python3-catkin-pkg python3-rosdep python3-rosinstall-generator python3-wstool python3-rosinstall build-essential
sudo rosdep init
rosdep update

2. 构建节点
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
ros2 pkg create turtlebot_suo --build-type ament_python --dependencies rclpy sensor_msgs geometry_msgstouch turtlebot_suo/turtlebot_suo/ob_avoid.py
chmod +x turtlebot_suo/turtlebot_suo/ob_avoid.py
# setup.py中定义ros2 run的入口entry_points={'console_scripts': ['ob_avoid = turtlebot_suo.ob_avoid:main',],},
cd ~/ros2_ws
colcon build --packages-select turtlebot_suo
source install/setup.bash

3. 避障程序
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twistclass ObstacleAvoidance(Node):def __init__(self):super().__init__('ob_avoid')self.publisher_ = self.create_publisher(Twist, 'cmd_vel', 10)self.subscription_ = self.create_subscription(LaserScan,'scan',self.laser_scan_callback,10)self.subscription_ def laser_scan_callback(self, msg):# 获取前方90度范围内的最小距离front_range = msg.ranges[0:45] + msg.ranges[-45:]min_distance = min(front_range)# 避障逻辑cmd_msg = Twist()if min_distance < 0.5:# 障碍物距离小于0.5米时左转cmd_msg.angular.z = 0.5self.get_logger().info('# 障碍物距离小于0.5米,左转.')else:# 默认按固定速度直行cmd_msg.linear.x = 0.2self.publisher_.publish(cmd_msg)def main(args=None):rclpy.init(args=args)node = ObstacleAvoidance()try:rclpy.spin(node)except KeyboardInterrupt:passfinally:node.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()
4. 效果
# 启动Gazebo仿真
roslaunch turtlebot3_gazebo turtlebot3_world.launch
# 启动避障节点(新终端)
ros2 run turtlebot_suo ob_avoid



相关文章:
从零实现机器人自主避障
1. 编译工具安装 sudo apt update sudo apt install python3-catkin-pkg python3-rosdep python3-rosinstall-generator python3-wstool python3-rosinstall build-essential sudo rosdep init rosdep update2. 构建节点 mkdir -p ~/ros2_ws/src cd ~/ros2_ws ros2 pkg creat…...
《筑牢元宇宙根基:AI与区块链的安全信任密码》
在科技浪潮汹涌澎湃的当下,元宇宙已不再是科幻作品中的遥远构想,而是逐渐步入现实,成为人们热议与探索的前沿领域。从沉浸式的虚拟社交,到创新的数字经济模式,元宇宙的发展前景广阔,潜力无限。但要让元宇宙…...
深入探索 DeepSeek 在数据分析与可视化中的应用
在数据驱动的时代,快速且准确地分析和呈现数据对于企业和个人都至关重要。DeepSeek 作为一款先进的人工智能工具,凭借其强大的数据处理和可视化能力,正在革新数据分析的方式。 1. 数据预处理与清洗 在进行数据分析前,数据预处理…...
【Nacos】从零开始启动Nacos服务(windows/linux)
文章目录 前言前置条件官方网址一、Nacos下载1.1 选择Nacos版本1.2 下载 二、解压2.1 解压到某个文件夹 三、 启动3.1 方式一:直接使用命令启动3.1.1 进入bin文件夹3.1.2 进入命令行工具3.1.3 执行命令 3.2 方式二:修改配置文件后启动3.2.1 修改启动脚本…...
即插即用Transformer、扩散模型、机器人规划、长文本检索增强生成 | Big Model Weekly 第57期...
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 ProTransformer: Robustify Transformers via Plug-and-Play Paradigm 近年来,基于Transformer的架构在机器学习的各个领域占据了主导地位。本文介绍了一种新颖的鲁棒性注意力机制,旨…...
FPGA DSP:Vivado 中带有 DDS 的 FIR 滤波器
本文使用 DDS 生成三个信号,并在 Vivado 中实现低通滤波器。低通滤波器将滤除相关信号。 介绍 用DDS生成三个信号,并在Vivado中实现低通滤波器。低通滤波器将滤除较快的信号。 本文分为几个主要部分: 信号生成:展示如何使用DDS&am…...
DeepSeek各模型现有版本对比分析
文章目录 一、基础模型系列:V1 到 V3 的演进二、专用模型系列:推理与多模态三、版本选型与商业化趋势 DeepSeek作为最近特别火爆的模型,本文将对DeepSeek现有的主要版本进行对比分析,涵盖参数规模、训练数据、功能改进、应用场景和性能表现等…...
ASP.NET Core Clean Architecture
文章目录 项目地址一、项目主体1. CQRS1.1 Repository数据库接口1.2 GetEventDetail 完整的Query流程1.3 创建CreateEventCommand并使用validation 2. EFcore层2.1 BaseRepository2.2 CategoryRepository2.3 OrderRepository 3. Email/Excel导出3.1 Email1. Email接口层 4. 定义…...
紫光同创开发板使用教程(二):sbit文件下载
sbit文件相当于zynq里面的bit文件,紫光的fpga工程编译完成后会自动生成sbit文件,因工程编译比较简单,这里不在讲解工程编译,所以我这里直接下载sbit文件。 1.工程编译完成后,可以看到Flow列表里面没有报错,…...
【Python爬虫(58)】从0到1:Scrapy实战爬取大型新闻网站
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
1. 自定义组件基础
相关资源: 📎day10 图片素材.zip 1. 自定义组件基础 概念:在ArkUI中由框架直接提供的称为系统组件 -> Column,Button等,由开发者定义的称为自定义组件 作用:自定义组件可以对 UI和业务逻辑进行封装&…...
MySQL MHA 部署全攻略:从零搭建高可用数据库架构
文章目录 1.MHA介绍2.MHA组件介绍3.集群规划4.服务器初始化5.MySQL集群部署5.1 安装MySQL集群5.2 配置一主两从5.3 测试MySQL主从5.4 赋予MHA用户连接权限 6.安装MHA环境6.1 安装MHA Node6.2 安装MHA Manager 7.配置MHA环境8.MySQL MHA高可用集群测试8.1 通过VIP连接MySQL8.2模…...
Spring Boot3+Vue2极速整合:10分钟搭建DeepSeek AI对话系统
前言 在生成式AI技术蓬勃发展的今天,大语言模型已成为企业智能化转型和个人效率提升的核心驱动力。作为国产大模型的优秀代表,DeepSeek凭借其卓越的中文语义理解能力和开发者友好的API生态,正在成为构建本土化AI应用的首选平台。 本文将以S…...
浅谈 Redis 主从复制原理(二)
大家好,我是此林。 【浅谈 Redis 主从集群原理(一) 】 上一篇文章中,说到了 Redis 主从复制的全量同步和增量同步,repl_baklog 复制缓冲区,以及 slave 挂掉之后数据同步的措施。 下面介绍的上一篇遗留问…...
elf_loader:一个使用Rust编写的ELF加载器
本文介绍一个使用Rust实现的ELF加载器。 下面是elf_loader的仓库链接: github: https://github.com/weizhiao/elf_loaderhttps://github.com/weizhiao/elf_loader crates.io: https://crates.io/crates/elf_loaderhttps://crates.io/cra…...
连接Sql Server时报错无法通过使用安全套接字层加密与 SQL Server 建立安全连接
文章目录 一. 前言二. 解决方案 方案1方案2 三. 总结 一. 前言 在《数据库原理》这门课的实验上,需要使用SQL Server,然后使用jdbc连接sql server突然报错为:SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertific…...
Qt常用控件之日历QCalendarWidget
日历QCalendarWidget QCalendarWidget 是一个日历控件。 QCalendarWidget属性 属性说明selectDate当前选中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek设置每周的第一天是周几(影响日历的第一列是周几)。gridVisible是否显示日历…...
Java——抽象类
在Java中,抽象类(Abstract Class) 是一种特殊的类,用于定义部分实现的类结构,同时允许子类提供具体的实现。抽象类通常用于定义通用的行为或属性,而将具体的实现细节留给子类。 1. 抽象类的定义 语法&…...
Linux CentOS 上 Ollama 的安装与部署:从入门到实践
Linux CentOS 上 Ollama 的安装与部署:从入门到实践 随着人工智能技术的快速发展,大语言模型(LLMs)的应用场景越来越广泛。Ollama 作为一个轻量级的 AI 模型管理工具,为开发者提供了便捷的模型部署和管理解决方案。本文将详细介绍如何在 Linux CentOS 系统上安装和部署 O…...
超级详细Spring AI运用Ollama大模型
大模型工具Ollama 官网:https://ollama.com/ Ollama是一个用于部署和运行各种开源大模型的工具; 它能够帮助用户快速在本地运行各种大模型,极大地简化了大模型在本地运行的过程。用户通过执行几条命令就能在本地运行开源大模型,如Lama 2等; 综上&#x…...
Django项目设计一个简单CRUD
在Django中实现一个学生类(Student)的CRUD(创建、读取、更新、删除)操作需要几个步骤,包括定义模型、创建视图、设置URL、以及配置模板。以下是一个基本的实现步骤: 1. 创建Django项目和应用 首先&#x…...
0083.基于springboot+uni-app的社区车位租赁系统小程序+论文
一、系统说明 基于springbootuni-app的社区车位租赁系统小程序,系统功能齐全, 代码简洁易懂,适合小白学编程。 现如今,信息种类变得越来越多,信息的容量也变得越来越大,这就是信息时代的标志。近些年,计算机科学发展…...
计算机视觉行业洞察--影像行业系列第一期
计算机视觉行业产业链的上下游构成相对清晰,从基础技术研发到具体应用场景的多个环节相对成熟。 以下是我结合VisionChina经历和行业龙头企业对计算机视觉行业产业链上下游的拆解总结。 上下游总结 上游产业链分为软硬件两类,视觉的硬件主要指芯片、…...
网页请求腾讯云环境的云函数
背景:uniapp,做一个管理后台 需求:在PC端网页请求云环境的云函数 npm npm install cloudbase/js-sdk -S 在APP中,封装匿名登陆,因为未登录时无法请求云函数 app.vue <script>import Vue from vueimport cl…...
【深度学习量化交易15】基于miniQMT的量化交易回测系统已基本构建完成!AI炒股的框架初步实现
我是Mr.看海,我在尝试用信号处理的知识积累和思考方式做量化交易,应用深度学习和AI实现股票自动交易,目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。 AI怎么炒股?就是通过量化交易。 近期D…...
使用大语言模型(Deepseek)构建一个基于 SQL 数据的问答系统
GitHub代码仓库 架构 从高层次来看,这些系统的步骤如下: 将问题转换为SQL查询:模型将用户输入转换为SQL查询。 执行SQL查询:执行查询。 回答问题:模型根据查询结果响应用户输入。 样本数据 下载样本数据…...
QT闲记-工具栏
工具栏通常用来放置常用的操作按钮,如QPushButton,QAction等。可以放置在顶部,底部,左侧,右侧,并且支持拖曳,浮动。 1、创建工具栏 通常通过QMainWindow 提供的addToolBar()来创建,它跟菜单栏一样,如果需要工具栏,一般情况下,我们设置这个类的基类为QMainWindow。 …...
JAVA最新版本详细安装教程(附安装包)
目录 文章自述 一、JAVA下载 二、JAVA安装 1.首先在D盘创建【java/jdk-23】文件夹 2.把下载的压缩包移动到【jdk-23】文件夹内,右键点击【解压到当前文件夹】 3.如图解压会有【jdk-23.0.1】文件 4.右键桌面此电脑,点击【属性】 5.下滑滚动条&…...
网络安全之探险
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 因为工作相关性,看着第三方公司出具的网络安全和shentou测试报告就想更深入研究一下,于是乎开始探索网络安全方面的知识,度娘、…...
基础dp——动态规划
目录 一、什么是动态规划? 二、动态规划的使用步骤 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 三、试题讲解 1.最小花费爬楼梯 2.下降路径最小和 3.解码方法 一、什么是动态规划? 动态规划(Dynamic Programming&…...
