当前位置: 首页 > 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;在图像上滑动并取周围像素的平均值来…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...