自动驾驶——两轮差速机器人基于PID模型构建与跟踪控制(针对于ROS工程下的下位机后附linux下c++代码,Github源码链接)

AGV移动机器人PID运动控制 PID算法是控制行业最经典、最简单、而又最能体现反馈控制思想的算法,PID算法利用反馈来检测偏差信号,并通过偏差信号来控制被控量。而控制器本身就是比例、积分、微分三个环节的加和。其功能框如图1所示:考虑在某个特定的时刻t,此时输入量为rin(t),输出量为rout(t),于是偏差就可计算为err(t)=rin(t)-rout(t)。于是PID的基本控制规律就可以表示为如下公式:其中Kp为比例带,TI为积分时间,TD为微分时间。 阅读详情

        上几次介绍了两轮差速机器人的数学模型参见我的博客差速转向机器人数学模型_Jack Ju的博客-CSDN博客_差速转向和只做了关于航向角的闭环PID控制两轮差速机器人基于PID控制下轨迹跟踪_Jack Ju的博客-CSDN博客_pid轨迹跟踪。

      今天这篇文章前几篇会更深入、更具有工程性。

      首先,有一个问题我一直有些模糊,最近考虑到工程实现,所以想了一下。ROS标准的Twist速度信息会向下位机发送一个速度V和角速度w,然后我们需要用v和w去控制两个电机。之前的博客已经推导过,利用运动学反解即可,有如下关系

v_{r}=v_{c}+\frac{w_{c}l}{2}

v_{l}=v_{c}-\frac{w_{c}l}{2}

至此,这个博客的核心就说完啦。

  别小看这两个公式,vr和vl可以认为是控制电机转速的PWM大小,这样的话就有理有根据的把v和w转换成两个电机的转速信息,妙!

然后我们就要对距离进行比例控制有:

             v=k_{1} \times \sqrt{(x-x_goal)^{2}+(y-y_goal)^{2}}

对航向角控制

          w=k_{1} \times (\theta -arctan(\frac{(y-y_goal)}{(x-x_goal)}))

好了,这是我加入的两个闭环控制,显然,你会发现,越靠近目标点,速度越慢。仿真结果相对于上一次真的是好太多,设定终点时(10,10),见下图所示,一点不差走到那里,之前的差不多(10.21,10.21.)是有偏差的。

两轮差速机器人基于PID模型构建与跟踪控制(针对于ROS工程下的下位机后附linux下c++代码)_Jack Ju的博客-CSDN博客_差速pid

 具体的工程源码参见我的Github:GitHub - JackJu-HIT/TrajectoryControl: 用于无人船轨迹跟踪控制

 %%%第一个航向角pid控制器,输出w
    %%%计算当前与目标的朝向误差
        theta_goal=atan((y_goal-y)/(x_goal-x));
        theta_error=theta-theta_goal;
        error_sum=error_sum+theta_error;
        w=-k*(theta_error)+ki*error_sum+kd*(theta_error-pre_error);
        pre_error=theta_error;
 
   %%%%第二个距离的pid控制器,输出v     
        dist=((x-x_goal)^2+(y-y_goal)^2)^(1/2);
        v=k2*dist;
        
 %%%%控制输入,左电机和右侧电机。
 
 vr=v+w*L/2;%控制输入需要你去更改//
 vl=v-w*L/2;%控制输入需要你去更改
 
 
 
 %%%%process model
 
 %%%运动模型
 v=(vl+vr)/2;%中心速度
 w=(vr-vl)/L;
 x=x+v*cos(theta)*T;
 y=y+v*sin(theta)*T;
 theta=theta+w*T;

  上述是我设计的两个PID控制器,用于追踪目标的,设定起点和终点,他会自己寻求一条路线。C++版完整代码请参见我的github:GitHub - JackJu-HIT/ImuGpsGuiding: 利用IMU和GPS从指定起点到指定终点,基于ROS框架。

   但是对于高更加复杂的情况不知道是我没想到还是pid确实有局限性,下一次准备研究MPC控制器。

        如果觉得文章还不错,可以关注下我的微信公众号:                                                                                                                                                                                20200710

                                                                                                                                                                                        鞠春宇

                                                                                                                                                                                         于研究室

差速机器人的纯轨迹跟踪仿真(Matlab) 差速机器人的纯轨迹跟踪仿真(Matlab) 刚入门,有的地方不对,烦请大家指正。 目录差速机器人的纯轨迹跟踪仿真(Matlab)1 差速机器人运动模型1.1 运动学分析建模1.2 差速机器人的运动状态方程2 控制器设计:(pure pursuit)纯轨迹算法3程序源码(Matlab)3.1 分为几个步骤3.2 代码3.3 效果 1 差速机器人运动模型 1.1 运动学分析建模 运动特性为两轮差速驱动,其底部后方两个同构驱动轮的转动为其提供动力,前方的随动轮起支撑作用并不推动其运动,如图1两轮差速驱动示意图所示 阅读详情

相关推荐

Webots+ROS 2机器人仿真:从零搭建可落地的数字孪生骨架

机器人仿真不是图形动画,而是物理行为、传感器模型与控制逻辑的精确映射。理解Webots的物理引擎原理(基于ODE封装)、ROS 2节点与仿真器的实时通信机制(共享内存+step循环),是构建高保真仿真的基础。其技术价值在于实现‘仿真即开发’——Python/C++插件接口与实机驱动高度一致,支持PID闭环、激光雷达集成、编码器反馈等工业级功能,无缝支撑SLAM、导航与行为决策验证。典型应用场景包括高校教学调试、AGV算法预验证、NASA级火星车方案推演。本文聚焦Webots与ROS 2 Humble协同下的

xpp02的专栏 509

智能车浅谈——方向控制篇

智能车方向控制浅谈——自动控制原理角度,解析智能车转向控制中的舵机转向原理以及差速原理。

qq_41954556的博客 4万+

ROS 2机器人开发MVP:从Gazebo仿真到实机部署全链路实践

ROS 2是当前智能机器人系统开发的主流中间件框架,其核心价值在于通过标准化通信机制(Topic/Service/Action)与模块化架构(如Nav2导航栈、SLAM建图、Gazebo仿真)实现算法与硬件解耦。理解ROS 2不仅需掌握节点通信原理,更需落地于真实工程闭环——包括micro-ROS对MCU的轻量接入、YAML驱动的传感器动态标定、Nav2插件化行为树调度,以及Gazebo物理精度调优等关键技术环节。该方案以GitHub开源项目为载体,提供可复现、可裁剪、可量产的最小可行系统(MVP),覆盖高

weixin_34174322的博客 400

从PID到MPC:ROS2差速机器人动态轨迹跟踪控制实战指南

在移动机器人的运动控制中,轨迹跟踪精度往往决定任务成败。传统PID控制器仅基于当前误差进行反馈调节,面对曲率变化的动态轨迹时,容易出现明显的相位滞后与横向误差累积。模型预测控制(MPC)则通过系统模型预测未来状态,在滚动优化中兼顾约束与多变量协调,从原理上解决了PID“看不见未来”的天然局限。MPC技术能够将速度限制、加速度边界等物理约束直接纳入优化问题,适用于差速轮机器人、AGV及自动驾驶等需要高精度动态跟踪的应用场景。在ROS2环境下,开发者可基于运动学模型构建线性时变MPC,并结合OSQP求解器实现低

weixin_34124651的博客 600

零基础转行机器人工程师:六个月实操路线与避坑指南

机器人技术是机械、电气、控制、计算机等多学科交叉的工程领域,其核心在于通过感知、规划与执行构建智能系统。对于零基础或文科背景的转行者而言,理解系统架构与工具链是第一步。C++与Python作为主流编程语言,支撑着从算法原型到工业级部署的整个链路;而ROS2作为机器人开发的事实标准框架,提供了节点通信、坐标变换等关键机制,成为连接理论与工程实践的桥梁。通过系统学习运动学、轨迹规划,并结合Gazebo仿真与真实硬件项目,转行者可以在六个月内构建出可验证的工程能力。本文基于行业常见胜任力模型,梳理了从工具选型、分

weixin_33798152的博客 487

开源机器人Microduck破百万美元:从技术拆解到商业化实践

开源机器人并非“免费玩具”,其本质是将设计资料、源代码与电路图等核心资产开放共享,让开发者能够自由修改与再分发。一个完整的开源机器人项目通常由硬件层、软件层、数据与算法层以及开源协议构成,其中ROS 2作为分布式通信中间件,负责组织各模块间的数据流,SLAM、路径规划与运动控制等算法则在真实硬件上实现智能运行。这类项目的技术价值在于大幅降低机器人开发与二次开发的门槛,因此被广泛应用于高校教学、科研验证、极客原型制作及企业预研等场景。当一款开源机器人产品累计销售额突破百万美元,意味着其已经从极客玩具演进为教育

CSDN头条 467

ROS 2机器人全栈开发实战:从GitHub到实机部署

ROS 2是现代机器人系统的核心中间件,其模块化架构与实时通信能力支撑着SLAM建图、自主导航、多机协同等关键技术。理解其底层原理需掌握节点通信机制、TF坐标变换、QoS策略及与硬件(如ESP32、Jetson Nano)的深度耦合逻辑。技术价值在于将复杂机器人功能解耦为可验证、可裁剪、可复现的标准化组件,显著降低工程落地门槛。典型应用场景涵盖服务机器人清洁导航、农业植保路径规划、工业巡检语义SLAM等。本文基于一个完整开源项目,深入解析GitHub仓库中ROS 2、Nav2、Gazebo、Cartogra

weixin_33924770的博客 374

开源扫地机器人:全栈机器人工程实践沙盒

机器人系统本质上是嵌入式硬件、实时控制、多传感器融合与ROS2中间件深度耦合的复杂体。理解其原理需从底层驱动(如STM32定时器与PWM)、通信协议(UART二进制帧)、感知建模(SLAM点云补偿)到决策调度(nav2行为树)逐层贯通。开源扫地机器人作为可触摸、可调试、可复现的实体平台,将抽象概念具象为物理动作与代码映射——它既是嵌入式开发的真实练兵场,也是ROS2工业级应用的入门载体。尤其适合高校教学、工程师进阶及跨领域技术验证,让学习者在解决‘建图错乱’‘电机抖动’‘TF丢失’等真实问题中,构建端到端系

weixin_33796205的博客 412

从零搭建小米CyberDog ROS2控制系统:环境、编译与二次开发

机器人控制系统通常由感知、决策、执行三层链路构成,而ROS2作为开放源码的机器人操作系统,凭借基于DDS的发布订阅模型和灵活的QoS策略,成为多传感器融合与实时控制场景下的关键通信骨架。在四足机器人领域,借助开源SDK和仿真平台(如Gazebo),开发者无需接触底层电机驱动,即可在应用层快速搭建和验证控制逻辑。以小米CyberDog为例,其官方开放的ROS2接口覆盖状态订阅、运动指令、仿真支持等核心能力,配合colcon构建工具与rviz2可视化工具,能够完成从系统配置、源码编译到数据流观察的完整闭环。本文

weixin_34198453的博客 477

ROS2 Humble实战避坑指南:Ubuntu 22.04环境构建与DDS通信调试

ROS2并非传统操作系统,而是一套基于DDS(Data Distribution Service)的分布式实时通信框架,其稳定性高度依赖底层环境匹配与QoS策略协同。理解ROS2本质需从DDS原理切入——它通过节点发现、序列化、QoS匹配实现跨进程/跨设备数据交互,技术价值在于支持工业级确定性通信与异构平台协同。典型应用场景涵盖机器人导航(Nav2)、嵌入式端微控制器(Micro-ROS on ESP32-S3)、仿真与真机部署等。然而真实开发中,90%问题源于Ubuntu 22.04与ROS2 Humbl

weixin_33767813的博客 419

399美元开源机器人Microduck:从复现到自研的完整指南

开源机器人正成为机器人开发的重要载体,它将AI模型与物理硬件结合,让个人开发者也能以低成本进入具身智能领域。一个完整的开源机器人项目通常包含机械、电子、软件和文档四层结构,理解其设计原理是复现与二次开发的基础。基于ROS 2与仿真工具,开发者可以在虚拟环境中验证运动控制和感知算法,再迁移到真实平台。这类平台广泛应用于机器人导航、SLAM、路径规划和多机器人协同等研究场景。本文以Hugging Face发布的399美元开源机器人Microduck为线索,系统介绍开源机器人项目的评估方法、环境搭建、最小闭环实现

weixin_34274029的博客 442

Ubuntu 22.04 + ROS 2 Jazzy 下 MVSim 轻量级机器人仿真部署指南

MVSim 是面向 ROS 2 算法验证的轻量级移动机器人仿真器,基于 MRPT 物理引擎构建,主打低开销、高响应、易定制特性。其核心原理是将仿真抽象为可编程的数据发生器,通过 XML 配置驱动传感器模型(如 /scan、/imu)与运动学行为,绕过重型仿真器(Gazebo/Webots)的复杂建模与物理计算开销。技术价值在于支撑快速闭环验证——例如修改 noise_stddev 即可注入激光雷达噪声,5 秒内复现 SLAM 鲁棒性测试。典型应用场景包括 AGV 路径规划离线验证、树莓派等边缘设备仿真底座、

dflkg8956的专栏 513

MicroDuck:基于Rust的边缘具身机器人确定性运行时

具身机器人在边缘设备上的可靠运行,核心在于实时性、内存安全与可验证升级能力。Rust的所有权系统与借用检查机制,天然支撑无锁并发、零堆分配和编译期内存边界控制;其静态分析能力可将WASM模块的栈深度、内存访问模式等资源消耗转化为数学可证的确定性契约。这种‘静态评测’范式,使系统能在ESP32等资源受限平台实现微秒级控制抖动抑制、热升级不中断、断电状态自恢复等工业级韧性。本文深入解析MicroDuck如何以Rust为基石,重构边缘智能执行层的技术底座。

weixin_34205826的博客 358

零基础机器人学习路线:从ROS2仿真到真机实战完整指南

机器人软件开发涉及感知、规划与控制等多个环节,初学者往往因为资料庞杂而难以形成系统路径。ROS 2 作为机器人分布式通信的事实标准,串联了传感器数据处理、运动控制与决策模块,是入门必须掌握的核心工具链。借助 Gazebo、Webots 等仿真平台,学习者可以在无硬件环境下验证算法,降低试错成本。从激光 SLAM 建图导航到机械臂 MoveIt 视觉抓取,再到 Arduino、树莓派与 Jetson 的硬件选型,完整的学习路径能够帮助开发者快速建立工程化思维。本文从零基础视角出发,结合仿真优先、工具链驱动的策

weixin_34242509的博客 450

自动驾驶—两轮差速机器人基于PID控制下轨迹跟踪

机器人轨迹跟踪一般有两种方式,一是基于PID,二是基于MPC模型预测控制方法。本文主要介绍了PID控制,这里我只采用了航向角的控制,对速度没有控制,因为,我认为,小车只要能到达目标点即可,复杂的我后续再分析分析以及还有在无人驾驶中比较有名的·MPC控制。 因为是在Matlab做的实验验证,首先你需要一个建立一个两轮差速模型,详情见我上一次的机器人差速模型博客:https://blog.csdn.net/qq_40464599/article/details/107176589; ...

qq_40464599的博客 2万+

两轮差速底盘的运动模型分析:运动控制与里程计解算2018-11-03 by wsc

详细分析了两轮差速底盘的运动控制原理,通俗易懂。并多角度介绍了里程计解算的方式

ROS 2 Humble + Gazebo Fortress AGV仿真环境搭建实战指南

AGV(自动导引车)仿真环境是移动机器人算法验证与系统集成的关键前置环节,其本质是ROS 2中间件、物理引擎与多体动力学模型的深度协同。ROS 2 Humble作为首个LTS版本,依托Fast DDS实现高实时通信;Gazebo Fortress则以Ignition Physics 6和SDF 1.8为核心,提供毫米级碰撞精度与硬限位控制能力。二者强绑定构成工业级AGV仿真的技术基座,支撑差速/全向底盘建模、多传感器融合(激光雷达、IMU、编码器)、货叉机构运动仿真等典型场景。本文聚焦Ubuntu 22.0

weixin_33868027的博客 477

KUKA-外部自动运行模板程序——个人设计模式&思路

用于说明KUKA与西门子PLC外部自动交互模板的设计思路与使用流程

qq_39024187的博客 5570
上一篇: 自动驾驶—两轮差速机器人基于PID控制下轨迹跟踪
下一篇: 虚拟机下ubuntu系统强制关机再次重启无法进入linux系统并提示The root filesystem on /dev/sda1 requires a manual fsck
柏贤
博客等级 码龄9年 1038粉丝 183原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值