![](https://img-blog.csdnimg.cn/dddf05177a454e508e4af6b6063ee3d5.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ROS2机器人入门到实战
文章平均质量分 78
ROS2机器人入门到实战
鱼香ROS
代表作:动手学ROS2,动手学机器人学,一行代码安装ROS/ROS2,解决rosdep问题
展开
-
【ROS2机器人入门到实战】使用API进行导航
ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号获取两驱版四驱版为方便交流,搭建了机器人技术问答社区:地址Navigation 2 对外提供了动作服务用于导航调用。动作通信是 ROS 2 四大通讯机制之一,前面我们并没有介绍,我们以导航调用为例来简单了解下它。动作通信和其名字一样,主要用于控制场景,它的优点在于其反馈机制,当客户端发送目标给服务端后,除了等待服务端处理完成,还可以收到服务端的处理进度。原创 2023-09-02 17:45:02 · 2667 阅读 · 1 评论 -
【ROS2机器人入门到实战】移动机器人导航进阶
假设现在我们要设计一个自动巡检的机器人,它的任务是在几个不同的目标位置循环移动并拍照。此时肯定不能再给机器人配一个人来使用 RViz 的工具来指定目标,然后观察机器人到点后再打开相机截图保存。在实际的机器人项目中,导航往往只是作为系统一个子模块,我们可以通过接口进行调用和状态监测。本节我们就来学习和导航之间的常用交互方法。原创 2023-09-02 17:43:47 · 1087 阅读 · 1 评论 -
【ROS2机器人入门到实战】进行单点与路点导航
通过这个插件可以取消导航任务,也可以设置多个目标点的导航,点击最下面的 Waypoint/Nav Through Poses Mode ,接着使用 Nav2 Goal 依次设置多个路点,比如下图中设置了五个路点,让机器人绕过咖啡桌再到左前方的目标点。接着我们来测试指定路点的导航,路点就是指路过的点,比如你要从家前往学校可以有多个路线,但你希望可以经过某家店买些东西,就可以指定要经过这家店。如果在机器人移动的过程中,放大图像,你将看到如下图所示的一条很短的蓝色线条,这个线条就是局部路径规划的结果。原创 2023-09-02 17:42:44 · 1405 阅读 · 0 评论 -
【ROS2机器人入门到实战】编写 Launch 并启动导航
有了参数,接着我们来编写一个 Launch 文件来传递参数并启动导航。在编写 launch 前,需要将slam部分建立好的地图保存拷贝一份到 src/fishbot_navigation2/maps 文件夹下。原创 2023-09-02 17:40:16 · 1387 阅读 · 3 评论 -
【ROS2机器人入门到实战】配置 Navigation 2 参数
除了修改话题和坐标系名称以保证数据的正确获取,在进行路径规划时还需要考虑机器人的大小即半径这一参数,如果半径设置的比真实的大,会造成窄的通道机器人过不去,如果过小则容易发生碰撞,因为是在基于地图做路径规划时才会考虑这一问题,所以机器人半径这一参数是在全局代价地图节点 global_costmap 和局部代价地图节点 local_costmap 进行配置的。分别修改两个代价地图节点。打开参数文件,可以看到有几百行的参数,不要害怕,这是因为将所有节点参数都放到同一个文件造成的,每一个节点的参数最多只有几十行。原创 2023-09-02 17:37:00 · 1286 阅读 · 0 评论 -
【ROS2机器人入门到实战】Navigation 2 介绍与安装
对于一个移动机器人来说,需要知道什么时候要进行路径规划,什么时候要执行脱困,和游戏中的角色行为相似,所以使用行为树来描述和管理机器人的行再合适不过了,Navigation 2 就是使用它进行机器人行为调度的。左边的模块是恢复器服务器,可以加载不同的恢复行为完成机器人的脱困。接着我们来了解下 Navigation 2 的内部,首当其充的是 BT Navigator Server 即行为树导航服务,通过输入的 XML 格式的行为树描述文件,调用下面三个服务器中中对应的模块完成对机器人的行为控制。原创 2023-09-02 13:41:09 · 1998 阅读 · 0 评论 -
【ROS2机器人入门到实战】地图保存与编辑
OccupancyGrid由一个.yaml格式的元数据文件,和.pgm图片格式的地图数据文件组成。从上节课建图后保存的文件也可以看出。不是说占据栅格地图每个栅格都有一个概率吗?为什么看不出来?立方体内和圆柱体内和墙之外的区域为什么是灰色的?一个栅格对应到图片上其实是一个像素,每一个像素的值在0-255之间,所以将像素值和占据率之间的映射即可,而像素值反应到图像上就是颜色的深浅,1.2图对应的像素颜色如下:建图的时候物体内和墙之外的区域机器人并没有探索到,没有数据参考就认为其值是未知的。除了。原创 2023-09-02 13:39:33 · 2406 阅读 · 0 评论 -
【ROS2机器人入门到实战】使用SLAM_TOOLBOX完成建图
SLAM 是通过传感器获取环境信息然后进行定位和建图。在 ROS 2 中,提供了很多的 SLAM 功能包,比如 slam_toolbox,cartographer_ros 和 rtabmap_slam 等。针对二维场景,其中 slam_toolbox 开箱即用,上手较为简单,就用它类来构建我们的第一张地图。原创 2023-09-02 13:37:30 · 4352 阅读 · 1 评论 -
【ROS2机器人入门到实战】建图前准备3-准备URDF
有了这样一个TF结构,我们的建图前的准备工作就差不多了。原创 2023-09-01 11:55:28 · 1070 阅读 · 2 评论 -
【ROS2机器人入门到实战】建图前准备2-发布 Odom 的 TF
有了 odom 到 base_link/base_footprint 之间的变换,接下来我们来搞定 base_link 到机器人各个组件之间的变换。原创 2023-09-01 11:54:20 · 2710 阅读 · 0 评论 -
【ROS2机器人入门到实战】建图前准备1-了解ROS标准REP105
REP-105规定了用于ROS的移动平台的坐标系的命名约定和语义含义。原创 2023-09-01 11:53:02 · 682 阅读 · 0 评论 -
【ROS2机器人入门到实战】可视化雷达点云-学会驱动雷达
激光雷达(Light Detection And Ranging),缩写LiDAR,翻译一下叫——激光探测与测距。激光雷达的原理也很简单,就像蝙蝠的定位方法一样,蝙蝠定位大家都知道吧,像下面这样子的回声定位。普通的单线激光雷达一般有一个发射器,一个接收器,发射器发出激光射线到前方的目标上,物品会将激光反射回来,然后激光雷达的接受器可以检测到反射的激光。通过计算发送和反馈之间的时间间隔,乘上激光的速度,就可以计算出激光飞行的距离,该计算方法成为TOF(飞行时间法Time of flight,也称时差法)原创 2023-09-01 11:51:13 · 1790 阅读 · 1 评论 -
【ROS2机器人入门到实战】FishBot建图与导航实现
本章我们主要学习FishBot建图与导航的实现,建图和导航主要使用的是开源框架进行实现,这里主要带大家在真机上进行配置和跑通。FishBot建图实现。FishBot导航实现。原创 2023-09-01 11:49:06 · 760 阅读 · 0 评论 -
【ROS2机器人入门到实战】拓展-源码编译Agent
通过上述步骤,我们成功地拓展了MicroROS的Agent功能包,实现了源码的编译和运行。通过MicroROS Agent,我们能够在资源受限的嵌入式系统中实现强大的ROS 2通信能力。原创 2023-09-01 11:44:59 · 701 阅读 · 1 评论 -
【ROS2机器人入门到实战】项目总结与扩展
上一节我们完成后,就可以通过话题获取到机器人的里程计,也可以通过话题控制机器人移动了。对于一个移动底盘来说,这两个话题就是最关键的两个,有了这两个就可以控制底盘完成移动。说了那么多,你可能不知道怎么做,没关系,小鱼写好了所有的代码,有了前面的基础,加上代码中的详细注释,看懂他们对你来说并不难。完成代码可以直接通过git进行克隆到本地。如果你的网络不错,也可以在线查看代码:https://github.dev/fishros/fishbot_motion_control_microros。原创 2023-09-01 11:44:06 · 663 阅读 · 1 评论 -
【ROS2机器人入门到实战】采用MicroROS发布里程计
有了控制话题和里程计话题,底盘部分就完成的差不多了,但是对于一个合格的底盘来说,其实还有很多待完善的地方,下一节我们就来说说可以怎么完善,以及完善的后的代码。原创 2023-09-01 11:43:08 · 830 阅读 · 0 评论 -
【ROS2机器人入门到实战】里程计计算-速度积分
ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号获取两驱版四驱版为方便交流,搭建了机器人技术问答社区:地址你好,我是小鱼,前面两节中我们完成机器人底盘正逆解的计算,我们通过机器人的运动学逆解完成了机器人实时的角速度和线速度的测量,那我们能不能利用对线速度和角速度的积分,计算机器人当前的位置呢?答案肯定是可以的,那么本节我们就来编写代码实现机器人的里程计。最后记得提交代码git add .git commit -m "feat(13.14):完成里程计计算-速度积分"原创 2023-09-01 11:41:06 · 1187 阅读 · 0 评论 -
【ROS2机器人入门到实战】目标速度控制-运动学逆解
没啥好说的,记得提交下代码git commit -m "feat(13.13):完成运动学逆解"代码提交也是有规范的,我们一起来学习下:https://fishros.org.cn/forum/topic/390我们采用用的比较多的Angular 规范其中 type(必选)、scope(可选)和 subject(必选)原创 2023-09-01 11:40:06 · 763 阅读 · 0 评论 -
【ROS2机器人入门到实战】实时速度计算-运动学正解
安装 Git:如果你的系统中没有 Git,可以通过以下命令进行安装:配置 Git:在使用 Git 之前,你需要设置用户名和邮箱地址,这样 Git 才能正确地记录你的提交信息。使用以下命令配置 Git:arduino将 “Your Name” 替换为你的姓名,“” 替换为你的邮箱地址。将文件添加到 Git 仓库:使用以下命令将文件添加到 Git 仓库:其中,“filename” 是要添加到 Git 仓库中的文件名。原创 2023-09-01 11:35:36 · 1077 阅读 · 0 评论 -
【ROS2机器人入门到实战】两轮差速机器人运动学介绍
你好,我是小鱼。本节我们来了解下两轮差速运动学。原创 2023-09-01 11:32:42 · 1485 阅读 · 0 评论 -
【ROS2机器人入门到实战】控制速度-PID控制器实现
PID控制器是一种广泛应用于工业控制、自动化控制等领域的控制算法,其名称来源于“比例-积分-微分”三个控制器参数,即Proportional(比例)、Integral(积分)、Derivative(微分)。PID控制器的基本原理是通过测量目标系统的反馈信号和期望输出信号之间的误差,根据一定的数学模型计算出控制信号,使目标系统能够稳定地达到期望输出。原创 2023-09-01 11:30:50 · 2671 阅读 · 0 评论 -
【ROS2机器人入门到实战】速度转换-机器人最大速度测量
本节我们完成了对电机速度的测量,下一节我们尝试利用PID动态的控制电机保持在某个转速。原创 2023-09-01 11:25:22 · 311 阅读 · 0 评论 -
【ROS2机器人入门到实战】脉冲测量与校准实验
你好,我是小鱼,有了上节的理论,这一节我们编写代码来尝试下是否能够读取到电机上编码器的脉冲数,并通过实验测试出小车的输出轴转速和编码器脉冲的比值。原创 2023-09-01 11:23:08 · 313 阅读 · 0 评论 -
【ROS2机器人入门到实战】从编码器说起-速度测量原理介绍
有了理论基础,下一节我们尝试编码验证。原创 2023-08-31 11:34:27 · 460 阅读 · 0 评论 -
【ROS2机器人入门到实战】做个遥控车-订阅ROS2 Twist
本节我们通过将小车接入MicroROS完成了一个遥控小车的开发。下一节我们开始使用编码器来测量轮子的转速。原创 2023-08-31 11:32:59 · 2055 阅读 · 0 评论 -
【ROS2机器人入门到实战】电机控制之使用开源库驱动多路电机
MCPWM中文名是电机控制脉宽调制器 (Motor Control Pulse Width Modulator ),是一款多功能 PWM 发生器,包含各种子模块,使其成为电机控制、数字电源等电力电子应用的关键元件。数字电机控制,例如有刷/无刷直流电机、RC 伺服电机基于开关模式的数字电源转换功率DAC,其中占空比相当于DAC模拟值计算外部脉冲宽度,并将其转换为其他模拟值,如速度、距离为磁场定向控制 (FOC) 生成空间矢量 PWM (SVPWM) 信号。原创 2023-08-31 11:30:09 · 1641 阅读 · 0 评论 -
【ROS2机器人入门到实战】电机控制之速度控制实验
本节我们通过简单的一个实验学习了如何通过PWM调节电机的PWM,但有一点需要注意,程序中使用了delay函数来控制PWM信号的占空比,这种方法在简单的应用场景下是可行的,但是在需要更高精度的控制场景下可能会产生问题。为了实现更高精度的PWM控制,我们可以采用ESP32的电机PWM控制单元,下一节我们就尝试使用这一开源库实现更精细化的控制。原创 2023-08-31 11:27:35 · 607 阅读 · 0 评论 -
【ROS2机器人入门到实战】电机控制之正反转实验
本节我们成功通过代码验证了上一节电机控制理论,下一节我们尝试通过PWM的占空比控制电机的转速。原创 2023-08-31 11:25:39 · 515 阅读 · 0 评论 -
【ROS2机器人入门到实战】从H桥说起-电机驱动原理介绍
正式编写代码前,我们先了解下电机驱动的原理,以便于我们了解我们如何才能通过代码控制电机的转速和正反转。原创 2023-08-31 11:23:42 · 406 阅读 · 0 评论 -
【ROS2机器人入门到实战】移动机器人底盘结构介绍
在雷达的头部分别有一个激光发射头和线性的CCD接收头。小鱼特意拆了个雷达,放张图给大家看看右边黑色的是发射头,左边是CCD接收头,发射头发射出的光属于波长大约在1000nm左右的红外光,肉眼是不可见的。FishBot所采用的这种激光雷达的测距原理是三角测距法从上图可以看出,当我们已知L(机械安装值)和d1(CCS测量值)和f(机械安装值)的情况下,我们可以得到D1的值,即激光雷达到被测物体的距离D1Ld2fd2D1f∗Ld2d2fLd2fD1L。原创 2023-08-31 11:21:44 · 1133 阅读 · 0 评论 -
【ROS2机器人入门到实战】FishBot控制系统搭建
本章主要从移动机器人底盘角度入手,带你了解一个真实机器人的结构,并在主控板上完成电机驱动,两轮差速运动学正逆解等代码,最终通过MicroROS将里程计发送给上位机,并订阅速度控制指令来控制电机运动。1.移动机器人底盘结构介绍2.让电机转起来-使用开源库驱动电机3.做个遥控车-订阅ROS2 Twist4.速度测量-学会使用编码器5.控制电机速度-PID控制器实现6.控制机器人速度-运动学逆解7.里程计计算-运动学正解与积分8.可视化里程计-发布Odometry。原创 2023-08-31 11:19:18 · 497 阅读 · 0 评论 -
【ROS2机器人入门到实战】可视化点云-雷达消息合成
使用指令,可以看到ROS2对雷达数据接口的定义。int32 sec本节我们成功实现了使用超声波和舵机模拟雷达数据,并将其合成scan发布到电脑上使用rviz2进行可视化。至此我们完成了ROS2硬件控制的所有课程。下面迎接你的将是移动机器人和机械臂开发课程,请做好准备,继续出发。原创 2023-08-31 11:16:34 · 811 阅读 · 0 评论 -
【ROS2机器人入门到实战】舵机+超声波循环扫描
你好,我是爱吃鱼香ROS的小鱼。本节我们尝试将超声波的舵机结合起来实现循环扫描功能。原创 2023-08-31 11:14:06 · 323 阅读 · 0 评论 -
【ROS2机器人入门到实战】控制舵机学会使用执行器
本节我们通过三方库完成了对舵机的控制,下一节我们正式将舵机和超声波结合起来,测量指定角度下的距离。原创 2023-08-31 11:12:21 · 446 阅读 · 0 评论 -
【ROS2机器人入门到实战】测量距离学会超声波传感器
本节我们成功实现使用超声波实现距离测量功能,下一节我们尝试使用第三方库驱动舵机。原创 2023-08-31 11:10:43 · 509 阅读 · 0 评论 -
【ROS2机器人入门到实战】简易雷达原理介绍
你好,我是爱吃鱼香ROS的小鱼。在正式开始制作我们的简易雷达前,我们先了解下原理。我们所说的雷达是一种测距设备,比如FishBot上搭载的雷达就可以实现360度的旋转测距——测量指定角度前方障碍物的距离。所以要实现一个简易雷达,我们必须要有一个可以测量距离的传感器,一个可以指定角度的电机。原创 2023-08-31 11:06:37 · 400 阅读 · 0 评论 -
【ROS2机器人入门到实战】ROS2硬件实战(自制简易雷达)
本章是ROS2硬件实战教程的实践章节,我们将通过自制一个简易雷达同时学习使用传感器、执行器和MicroROS。原创 2023-08-31 11:03:29 · 414 阅读 · 0 评论 -
【ROS2机器人入门到实战】榨干性能-使用双核运行MicroROS
所谓双核指的是ESP32单片机有两个内核,所有的外设都通过一个总线连接到两个内核上,也就是说,程序无论在哪个核上运行都可以操作硬件。在前面的单片机开发平台介绍中,小鱼曾介绍ESP32的官方开发平台ESP-IDF的核心其实是基于开源的FreeRTOS优化而来的,而ESP32-Arduino则是对ESP-IDF的进一步封装,所以毋庸置疑,ESP32-Ardunio也是支持FreeRTOS的。本节通过配置和启动新任务成功开启了另一内核并完成MicroROS相关的传输。原创 2023-08-31 10:55:47 · 708 阅读 · 0 评论 -
【ROS2机器人入门到实战】无线通讯-了解传输原理
本节开始,我们成功通过无线的方式将MicroROS连接到WIFI上来了,那问题来了,什么时候用串口模式,什么时候用WIFI模式呢?串口模式,适合当我们用树莓派等主控板在机器人上时,直接串口连接树莓派即可WIFI模式,像FishBot一样,直接无线驱动机器人,WIFI此时就很合适了。原创 2023-08-30 10:32:28 · 908 阅读 · 0 评论 -
【ROS2机器人入门到实战】做个时钟-系统时间同步
核心的时间同步代码就三行判断microros是否已经同步时间rmw_uros_sync_session 同步时间rmw_uros_epoch_millis 获取当前时间本节我们通过三个API完成了MicroROS时间同步功能的开发,最终并将当前时间在OLED上显示出来,但使用有线的方式过于麻烦,下一节我们尝试通过无线WIFI完成时间的同步与MicroROS的通信开发。原创 2023-08-30 10:29:41 · 699 阅读 · 0 评论