【从0制作自己的ros导航小车】
文章平均质量分 91
从下位机开始搭建自己的导航小车,非常适合新手,以及想了解差速模型进行导航的运动学相关知识。
geewonii️
这个作者很懒,什么都没留下…
展开
-
扩展【从0制作自己的ros导航小车】C++_ROS_QT5联合编译,简单界面为ROS开发增添交互
前面已经实现了导航功能,对于之后的一些开发,有交互能力是比较重要的,比如小车上连接一块屏幕,通过屏幕来选择模式,可视化等等。QT是不错的选择,但是需要做一些额外的工作,让QT与ROS能够建立联系,实现通信。本文基于linux操作系统搭建C++_ROS_QT5联合编译环境,让ros与qt数据互通起来,为之后的开发打下基础。环境是直接使用ubuntu20.04安装之后默认的一些比如cmake等等,自己只需要再安装一下完整的QT5、Vscode即可。原创 2024-08-08 17:30:26 · 1426 阅读 · 0 评论 -
①【从0制作自己的ros导航小车:介绍及准备】
本篇说明需要具备的知识和软硬件。可以不用全部具备,但基础要有,写的不是非常详细。本小车分为上位机与下位机两部分,上位机使用旭日x3派运行ros进行开发和算法实现,下位机使用stm32驱动底盘和传感器数据采集。一、知识①stm32部分(当然也可以使用其它控制类开发板,例如arduino,本专栏使用stm32):最好有开发基础,没有的话可以看江协科技的stm32基础教程,讲的很全面,不用全部看,前面可以都看,主要看定时器输入捕获、定时器编码器接口、oled、pwm等等。原创 2024-07-07 22:01:05 · 1504 阅读 · 5 评论 -
②【从0制作自己的ros导航小车:下位机篇】01、工程准备_标准库移植freertos
本系列下位机开发使用keilv5,开发时使用移植了freertos的标准库,如果是资源比较丰富的开发板,可以不用移植freertos,本系列用的是stm32f103c8t6,一共只有四个普通定时器,写代码时全部用了,高级定时器不知道为什么一直有问题,所以移植实时操作系统,控制代码执行频率,如果你的高级定时器可以使用,那也可以跳过这篇文章。原创 2024-07-28 22:27:54 · 1062 阅读 · 2 评论 -
③【从0制作自己的ros导航小车:下位机篇】02、电机驱动、转速读取、PID控制
实际上这个pid输出和速度是什么关系不必搞得很清楚,只需要知道设置了100为目标值之后,如果当前占空比低,也就是转速低,还未达到目标值,那么pid输出(pwm值)就大,当编码器反馈值越接近目标值时,pid输出就减小,以此类推从大幅度震荡到基本收敛。上面代码的简单解释:这里初始化了四个引脚作为TB6612的逻辑控制,由两个引脚的0或者1能使输出颠倒从而实现电机正反转,具体正反转自己试试就行,你的小车哪个方向是向前,哪个方向是向后也由你定,根据确定后的值修改motor_R_move等四个函数控制电机的正反转。原创 2024-07-28 20:17:33 · 1415 阅读 · 0 评论 -
④【从0制作自己的ros导航小车:下位机篇】03、mpu6050偏航角获取
我们可以通过IIC读取MPU6050加速度传感器数据和角速度传感器数据,但是后续的导航不是要这些数据,而是欧拉角中的偏航角,要得到欧拉角,要进行姿态解算,自己来姿态解算有点困难,可以使用DMP将原始数据直接转换为四元数输出,得到四元数之后,就可以很方便的计算出欧拉角,从而得到偏航角(YAW)。的方式读取mpu6050数据很简单(想了解底层寄存器操作的,可以看前面标出的软件iic对应的博客),但是读出来的数据不是我们后续导航要用到的偏航角,所以需要使用DMP库来读取数据并解算得到欧拉角(偏航、翻滚、俯仰)。原创 2024-07-29 10:13:36 · 1352 阅读 · 1 评论 -
⑤【从0制作自己的ros导航小车:上、下位机通信篇】上、下位机串口DMA通信
下位机的电机驱动、轮速读取、偏航角读取都已经完成,接下来就是上下位机的桥梁:串口通信。使用USB转TTL模块连接上位机(旭日x3派)和下位机(stm32),只需要连接RX、TX、GND即可。原创 2024-07-29 11:20:02 · 1507 阅读 · 7 评论 -
⑥【从0制作自己的ros导航小车:上位机篇】01、里程计与坐标变换发布
前面已经实现了上下位机的串口通信,现在可以在接收串口数据的程序中发布里程计数据和坐标变换了!原创 2024-07-30 09:59:47 · 1026 阅读 · 8 评论 -
⑦【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化
上节课完成了里程计数据与坐标变换发布,但是还没有测试,本节进行测试,测试之前需要知道一件事,上位机也就是开发板一般不做可视化用,因为太耗费系统资源,所以我们需要另一台安装了ros的设备来进行可视化,本项目使用虚拟机安装ubuntu20.04,在ubuntu中安装了ros1-noetic,尽量与板端的ros版本一致。那么此时需要做的就是让开发板中的ros与虚拟机中的ros进行通信,接下来进行设置和测试。原创 2024-07-30 10:07:39 · 1022 阅读 · 2 评论 -
⑧【从0制作自己的ros导航小车:上位机篇】03、添加urdf模型(发布各传感器与小车基坐标系之间的静态坐标变换)
上一篇已经可以在rviz中看到小车的位姿和里程计了,但是只有坐标系不太好看,本篇博客为小车添加urdf模型。小车各部件之间的坐标系位置关系是固定的,所以可以有两种策略发布这种静态坐标变换:①直接在launch文件中使用tf2节点发布各部件与base_footprint之间的静态坐标变换;②编写urdf文件,在launch文件中包含urdf文件,此时会自动发布各部件之间的静态坐标变化。为了可视化方便,本文使用第二种方法(只是弄个很简单的模型,可以自己写,使用xacro)原创 2024-07-31 09:02:55 · 1010 阅读 · 1 评论 -
⑨【从0制作自己的ros导航小车:上位机篇】04、使用gmapping建图
前面的文章已经能够实现在odom坐标系下显示小车模型和里程计数据了,本文加上激光slam必不可少的传感器雷达,先进行测试,然后直接开始建图!原创 2024-07-31 09:04:18 · 1274 阅读 · 3 评论 -
⑩【从0制作自己的ros导航小车:上位机篇】05、导航!
上篇已经将建好的地图保存了下来,这节读取地图结合amcl、move_base功能包实现最终导航!原创 2024-08-02 20:42:13 · 545 阅读 · 6 评论