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

【ROS2机器人入门到实战】

ROS2机器人入门到实战教程(鱼香ROS)

写在前面

  1. 当前平台文章汇总地址:ROS2机器人从入门到实战
  2. 获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取
  3. 教程配套机器人开发平台:两驱版| 四驱版
  4. 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn

(一)​ROS2入门篇

第 1 章 ROS2介绍与安装

基础篇-Linux基础
  • 1.Linux与Ubuntu系统介绍
  • 2.在虚拟机中安装Ubuntu
  • 3.玩转Ubuntu之常用指令
  • 4.玩转Ubuntu之编程工具
  • 5.玩转Ubuntu之常用软件
入门篇-ROS2介绍安装
  • 1.ROS2前世今生
  • 2.ROS与ROS2对比
  • 3.动手安装ROS2
  • 4.ROS2初体验
进阶篇-架构与中间件
  • 1.ROS2系统架构
  • 2.中间件DDS架构

第 2章 ROS第一个节点

基础篇-编程基础
  • 1.使用gcc编译ROS2节点
  • 2.使用make编译ROS2节点
  • 3.使用CMakeList.txt编译ROS2节点
  • 4.CMake依赖查找流程
  • 5.Python依赖查找流程
  • 6.Python工具之Setup
入门篇-动手使用ROS2
  • 1.ROS2节点介绍
  • 2.ROS2功能包与工作空间
  • 3.ROS2构建工具之Colcon
  • 4.使用RCLCPP编写节点
  • 5.使用RCLPY编写节点
进阶篇-ROS2系统
  • 1.面向对象编程思想
  • 2.使用面向对象方式编写ROS2节点
  • 3.Colcon使用进阶
  • 4.ROS2节点发现与多机通信

第3章 ROS2节点通信之话题与服务

基础篇-中间件
  • 1.从底层理解通信
  • 2.通信中间件之ZMQ
入门篇-话题与服务
  • 1.ROS2话题入门
  • 2.话题之RCLCPP实现
  • 3.话题之RCLPY实现
  • 4.ROS2服务入门
  • 5.服务之RCLCPP实现
  • 6.服务之RCLPY实现
  • 7.ROS2接口介绍
  • 8.自定义接口RCLCPP实战
  • 9.自定义接口RCLPY实战
进阶篇-中间件进阶
  • 1.原始数据类型与包装类型
  • 2.通信质量Qos配置指南
  • 3.DDS进阶之Fast-DDS环境搭建
  • 4.使用DDS进行订阅发布

第4章 ROS2通信之参数与动作

基础篇-控制概述
  • 1.开环控制与闭环控制
入门篇-参数与动作
  • 1.参数(Param)通信
  • 2.参数之RCLCPP实现
  • 3.参数之RCLPY实现
  • 4.动作(Action)通信与自定义接口
  • 5.动作之CPP实现
  • 6.动作之RCLPY实现
  • 7.通信机制对比总结
进阶篇-原理进阶
  • 1.ROS参数通信原理介绍
  • 3.生命周期节点

[第5章 ROS2常用工具]

入门篇-参数与动作
  • 1. 启动管理工具-Launch
  • 2.ROS2命令行工具
  • 3.数据可视化工具-RVIZ
  • 4.常用调试小工具-RQT
  • 5.数据录播工具-rosbag2
  • 6.兼容仿真工具-Gazebo

(二)机器人学篇

第 6 章 运动学基础

基础篇-数学基础
  • 1.矩阵与矩阵运算
  • 2.MiniConda与Jupyter介绍安装
  • 3.矩阵运算实战
入门篇-机器人运动学
  • 1.空间坐标描述
  • 2.空间坐标描述实战
  • 3.姿态的不同表示
  • 4.姿态转换实战
  • 5.齐次坐标变换
  • 6.齐次坐标变换实战
  • 7. 机器人运动学介绍

第 7章 ROS运动学

入门篇-机器人运动学
  • 1.tf2介绍
  • 2.学会使用RVIZ2-TF组件
  • 3.坐标变换发布监听Python实现
  • 4.坐标变换发布监听C++实现

(三)建模仿真篇

第 8 章 机器人建模

入门篇-机器人建模
  • 1.URDF统一机器人建模语言
  • 2.RVIZ2可视化URDF模型
  • 3.创建一个两轮差速模型
  • 4.通过JointStates控制RVIZ2关节

第 9章 机器人仿真

入门篇-机器人运动学
  • 1.机器人仿真介绍
  • 2.为机器人URDF模型注入物理属性
  • 3.在Gazebo加载机器人模型
  • 4.Gazebo仿真插件之两轮差速
  • 5.Gazebo仿真插件之IMU
  • 6.Gazebo仿真插件之激光雷达
  • 7.Gazebo仿真环境搭建
进阶篇
  • 1.Gazebo仿真插件之超声波

(四)Nav2导航篇

第 10 章 SLAM建图

基础篇-图像基础
  • 1.图像常见格式及存储
  • 2.栅格地图介绍
入门篇-SLAM建图
  • 1.SLAM前世今生
  • 2.Carto介绍及安装
  • 3.配置FishBot进行建图
进阶篇-Carto与地图
  • 1.ROS2地图加载与编辑

第 11章 Nav2导航仿真实战

入门篇-Nav2导航入门
  • 1.Nav2导航框架介绍与安装
  • 2.为FishBot配置Nav2
  • 3.使用FishBot进行自主导航
  • 4.使用Nav2导航API进行导航

(五)ROS2硬件控制篇

第 13 章 嵌入式开发之点灯开始

基础篇-嵌入式开发介绍与环境搭建
  • 1.什么是单片机MCU
  • 2.单片机开发平台
  • 3.搭建PlateFormIO开发环境
  • 4.PIO工程结构&构建方式
  • 5.第一个HelloWorld工程
  • 6.串口通信-接收实验
入门篇-从点灯开始学起
  • 1.点灯基础-看懂LED驱动电路
  • 2.完成点灯-学会GPIO输出
  • 3.完成点灯-学会GPIO输入
  • 4.电池电压测量-学会使用ADC
进阶篇-学会使用第三方库
  • 1.学会安装第三方开源库
  • 2.使用开源库驱动IMU
  • 3.学会面向对象编程-封装IMU驱动
  • 4.使用开源库驱动OLED
  • 5.通讯协议小课堂-I2C通信
  • 6.I2C通信实验-点亮OLED

第 14章 接入ROS2-MicroROS

基础篇-第一个MicroROS节点
  • 1.MicroROS介绍与服务安装
  • 2.你的第一个MicroROS节点
入门篇-在嵌入式平台实现话题与服务通信
  • 1.话题订阅-控制LED
  • 2.话题发布-上传电量信息
  • 3.服务实现-两数相加
进阶篇-MicroROS原理与使用进阶
  • 1.控制OLED-自定义消息接口
  • 2.做个时钟-系统时间同步
  • 3.无线通讯-了解传输原理
  • 4.榨干性能-使用双核进行MicroROS

第 15章 ROS2硬件实战(自制建议雷达)

  • 1.简易雷达原理介绍
  • 2.使用超声波测量距离
  • 3.使用pwm控制舵机角度
  • 4.实现循环扫描测量
  • 5.ROS雷达消息合成与分布

(六)FishBot移动机器人开发篇

第 16 章 移动机器人控制系统搭建

  • 1.移动机器人底盘结构介绍
  • 2.从H桥说起-电机驱动原理介绍
  • 3.电机控制之正反转实验
  • 4.电机控制之速度控制实验
  • 5.电机控制之使用开源库驱动多路电机
  • 6.做个遥控车-订阅ROS2 Twist
  • 7.从编码器说起-速度测量原理介绍
  • 8.脉冲测量与校准实验
  • 9.速度转换-机器人最大速度测量
  • 10.控制速度-PID控制器实现
  • 11.两轮差速机器人运动学介绍
  • 12. 实时速度计算-运动学正解
  • 13.目标速度控制-运动学逆解
  • 14.里程计计算-速度积分
  • 15.采用MicroROS发布里程计
  • 16.项目总结与扩展
  • 17.拓展-源码编译Agent

第 17章 FishBot建图与导航实现

FishBot建图实现
  • 1.可视化雷达点云-学会驱动雷达
  • 2.建图前准备1-了解ROS标准REP105
  • 3.建图前准备2-发布odom的TF
  • 4.建图前准备3-准备URDF
  • 5.使用SLAM_TOOLBOX完成建图
  • 6.地图保存与编辑
FishBot导航实现
  • 1.Nav2介绍与安装
  • 2.配置Navigation2参数
  • 3.编写Launch并启动导航
  • 4.进行单点与路点导航

第 18章 移动机器人导航进阶

  • 1.使用API进行导航

相关文章:

【ROS2机器人入门到实战】

ROS2机器人入门到实战教程(鱼香ROS) 写在前面 当前平台文章汇总地址&#xff1a;ROS2机器人从入门到实战获取完整教程及配套资料代码&#xff0c;请关注公众号<鱼香ROS>获取教程配套机器人开发平台&#xff1a;两驱版| 四驱版为方便交流&#xff0c;搭建了机器人技术问…...

Nuxt3框架局部文件引用外部JS/CSS文件的相关配置方法

引入外部JS&#xff1a; <script setup>useHead({script: [ {type: "text/javascript",src: https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js}]}) </script>useHead只能与组件的setup和生命周期钩子一起使用 如果需要将js放置body区…...

Docker 可视化面板 ——Portainer

Portainer 是一个非常好用的 Docker 可视化面板&#xff0c;可以让你轻松地管理你的 Docker 容器。 官网&#xff1a;Portainer: Container Management Software for Kubernetes and Docker 【Docker系列】超级好用的Docker可视化工具——Portainer_哔哩哔哩_bilibili 环境 …...

Java 教育局民办教育信息服务与监管平台

1) 项目背景 按照《中华人民共和国民办教育促进法》和《中华人民共和国政府信息公开条例》的相关规定&#xff0c;为满足学生和家长、社会各界获取权威信息的需求&#xff0c;着力解决服务老百姓最后一公里问题&#xff0c;达到宣传民办教育和引导家长择校的效果&#xff0…...

小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过

名词解释 POC&#xff1a;验证漏洞存在的代码&#xff1b; EXP&#xff1a;利用漏洞的代码&#xff1b; payload&#xff1a;漏洞利用载荷&#xff0c; shellcode&#xff1a;漏洞代码&#xff0c; webshell&#xff1a;特指网站后门&#xff1b; 木马&#xff1a;强调控制…...

Pytorch D2L Subplots方法对画图、图片处理

问题代码 def show_images(imgs, num_rows, num_cols, titlesNone, scale1.5): #save """绘制图像列表""" figsize (num_cols * scale, num_rows * scale) _, axes d2l.plt.subplots(num_rows, num_cols, figsizefigsize) axes axes.flatten…...

MATLAB算法实战应用案例精讲-【目标检测】YOLOV5(补充篇)

目录 算法原理 YOLOv5数据集训练 软硬件背景: 数据集准备 配置文件 模型训练...

WPF中可视化树和逻辑树的区别是什么

在WPF中&#xff0c;用户界面元素被组织成树形结构。这种结构主要分为两种&#xff1a;逻辑树&#xff08;Logical Tree&#xff09;和可视化树&#xff08;Visual Tree&#xff09;。它们在设计上各有特点和用途。 逻辑树&#xff08;Logical Tree&#xff09; 逻辑树是WPF中…...

小迪安全笔记(2)——web应用架构搭建漏洞HTTP数据包代理服务器

Web应用环境架构类 开发语言&#xff1a;php、java、python、ASP、ASPX等程序源码&#xff1a;用的人多了&#xff0c;就成CMS了。中间件容器&#xff1a;IIS、Apache、Nginx、Tomcat、Weblogic、Jboos、glasshfish等数据库类型&#xff1a;Access、Mysql、Mssql、Oracle、Redi…...

[AI]ChatGPT4 与 ChatGPT3.5 区别有多大

ChatGPT 3.5 注册已经不需要手机了&#xff0c;直接邮箱认证就可以&#xff0c;这可真算是好消息&#xff0c;坏消息是 ChatGPT 4 还是要收费。 那么 GPT-3.5 与 GPT-4 区别有多大呢&#xff0c;下面简单测试一下。 以从 TDengine 订阅数据为例&#xff0c;TDengine 算是不太小…...

node实战——koa实现文件上传

文章目录 ⭐前言⭐koa实现文件上传⭐foxapi测试⭐总结⭐结束⭐前言 大家好,我是yma16,本文分享关于node实战——node实战——koa实现文件上传。 本文适用对象:前端初学者转node方向,在校大学生,即将毕业的同学,计算机爱好者。 node系列往期文章 node_windows环境变量配置…...

C++中的this指针

C中的this指针 this 实际上是成员函数的一个形参&#xff0c;在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的&#xff0c;它并不出现在代码中&#xff0c;而是在编译阶段由编译器默默地将它添加到参数列表中。 this指针是类的指针&#xff0c…...

分析日志的一般套路

日志文件很多怎么快速查看&#xff1f; 整机日志一般会有统一的文件名命名规则&#xff08;如包含时间点&#xff09;&#xff0c;可以根据问题现象时间点大致定位到相应的文件根据日志文件的修改时间属性&#xff0c;定位到相应的文件根据时间点全文件夹搜索内容&#xff0c;…...

使用Flink处理Kafka中的数据_题库子任务_Java语言实现

2024年职业院校技术大赛-高职大数据应用开发赛项专题。 使用Flink处理Kafka中的数据_题库子任务1、2、3_Java语言实现使用Flink处理Kafka中的数据_题库子任务4、5、6_Java语言实现使用Flink处理Kafka中的数据_题库子任务7、8、9_Java语言实现...

k8s运维管理

node管理 node隔离与恢复 1.使用patch命令 #实现node隔离调度 kubectl patch node node1 -p {"spec":{"unschedulable":true}} #节点信息多了一项SchedulingDisabled node1 Ready,SchedulingDisabled <none> 7d3h v1.18.20 #解除 kubectl …...

【最新Tomcat】IntelliJ IDEA通用配置Tomcat教程(超详细)

前言 IntelliJ IDEA是一个强大的集成开发环境&#xff0c;能够大大简化Java应用程序的开发和部署过程。而Tomcat作为一个流行的Java Web服务器&#xff0c;其与IntelliJ IDEA的整合能够提供便捷的开发环境&#xff0c;让开发人员更专注于代码的创作与优化。 在配置IntelliJ IDE…...

安装2023最新版PyCharm来开发Python应用程序

安装2023最新版PyCharm来开发Python应用程序 Install the Latest JetBrains PyCharm Community to Develop Python Applications Python 3.12.0最新版已经由其官网python.org发布&#xff0c;这也是2023年底的最新的版本。 0. PyCharm与Python 自从1991年2月20日&#xff0…...

【c++随笔13】多态

【c随笔13】多态 多态性&#xff08;Polymorphism&#xff09;在面向对象编程中是一个重要概念&#xff0c;它允许以统一的方式处理不同类型的对象&#xff0c;并在运行时动态确定实际执行的方法或函数。一、什么是多态性&#xff1f;1、关键概念&#xff1a;C的多态性2、多态定…...

数据结构【DS】图的应用

图的连通性问题 最少边数 最多边数 无向图非连通 &#x1d48e;&#x1d7ce; &#x1d48e;&#x1d48f;−&#x1d7d0;∗(&#x1d48f;−&#x1d7cf;)/&#x1d7d0; 无向图连通 &#x1d48e;&#x1d48f;−&#x1d7cf; &#x1d48e;&#x1d48f;∗(&#…...

图像滤波处理

滤波处理是图像处理中常用的技术之一&#xff0c;用于去除图像中的噪声、平滑图像、边缘检测等。以下是几种常见的滤波处理方法&#xff1a; 1. 均值滤波 (Mean Filtering) 原理&#xff1a; 均值滤波使用一个固定大小的滤波器&#xff0c;在图像上滑动并取周围像素的平均值来…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...