基于Pixhawk和ROS搭建自主无人车(一):底盘控制篇

参考

  • ArduPilot Development
  • 超维空间科技
  • 乐迪MiniPix车船使用说明书

1. 硬件篇

1.1 底盘构成一览

在这里插入图片描述

1.2 底盘接线示意

在这里插入图片描述

2. 软件篇

2.1 APM 固件下载

  • pixhawk 是硬件平台,PX4 是 pixhawk 的原生固件,APM(Ardupilot Mega)是硬件平台,Ardupilot 是 APM 的固件(也称 APM 固件),APM 固件支持硬件更多,无人车平台推荐使用 APM 固件
  • 本文使用 pixhawk 1 代硬件平台,因此下载的是 fmuv2 的固件(pixhawk 2 代则对应下载 fmuv3 固件)
    • 下载地址:https://firmware.ardupilot.org/Rover/stable-4.2.3/fmuv2/
    • 进入上述链接后只需下载 ardurover.apj 文件

2.2 Mission Planner 地面站设置

  • 1、加载已下载好的固件

    • 首先用 USB 线将 pixhawk 连接到电脑,然后点断开连接,进入 “安装固件 Legacy” 中选择加载自定义固件,最后加载 2.1 小节下载好的 ardurover.apj 文件即可
      在这里插入图片描述
  • 2、加速度计校准、指南针校准和遥控器校准按照提示操作即可,这里不再赘述

  • 3、适配差速底盘参数修改

    • 由于下载的固件默认车型是阿克曼转向(电机加舵机)的,因此针对差速转向的底盘需要修改参数:Position 1 设置成 ThrottleLeft(左轮),Position 3 设置成 ThrottleRight(右轮)
      在这里插入图片描述
  • 4、设置遥控器切换 pixhawk 控制模式

    • “当前 PWM” 后的 5 代表遥控器当前所处通道(可通过全局参数表中 MODE_CH 参数修改),0 表示当前对应的 PWM 值
    • 建议设置遥控器三段控制模式分别为:Hold 停车模式、Manual 手动模式和 Auto 自动模式
      在这里插入图片描述

在这里插入图片描述

  • 5、设置遥控器解锁和加锁

    在解锁之前,通常应该等待 pixhawk 状态指示灯变成闪烁蓝色(如果只打算使用手动模式)或闪烁绿色(适用于所有其他模式)

    • 解锁方式一:从遥控器操纵杆上解锁
      • 确保小车处于停车 Hold 模式,先将油门杆推至中点(0),然后将横滚转向摇杆完全打向右边(或左边),然后保持 2 秒,当 pixhawk 状态指示灯为蓝灯或者绿灯长亮,则代表解锁成功
    • 加锁方式一:从遥控器操纵杆上加锁
      • 首先确保小车处于停车 Hold 模式,先将油门杆推至中点(0),然后将横滚转向摇杆完全打向左边(或右边),保持 2 秒,当 pixhawk 状态指示灯为蓝灯或者绿灯闪烁,则代表加锁成功
    • 解/加锁方式二:Mission Planner 地面站界面解/加锁

3. 补充内容

3.1 控制模式介绍

  • 停车模式 Hold Mode

    • 在停车模式下打摇杆时,车不会响应,并保持停止状态,车轮指向前方
    • 停车模式常用于解锁跟加锁,因为在停车模式下,摇杆解锁跟加锁时,电机和舵机不会响应
    • 这个模式还可以起到失控保护作用,及时停车以防止车被损坏
  • 手动模式 Manual Mode

    • 在手动模式下,遥控器的转向和油门杆直接控制车辆的油门和转向输出,没有 PID 参与控制
    • 此模式不需要位置估计(即不需要 GPS)
    • 建议始终将一个遥控器模式开关位置分配给该模式
    • 在手动模式下,油门的变换率由 MOT_SLEW_RATE 这个参数来限制。该参数默认为 100,即油门可以在 1s 内从 0% 到 100% 变换;设置成 0 的,油门的变换率不受限制
  • 自动模式 Auto Mode

    • 在自动模式下,车会按照预先设置好的航点或者任务进行自动行驶,不需要人为手动干预。这些任务航点主要包括:自动行驶的航点、到达航点后触发的动作等
    • 自动模式需要良好的 GPS 定位才能切换进去,所以在解锁和起飞之前必须让 GPS 定位,可以通过查看 pixhawk 状态指示灯和 GPS 的 LED 灯来确认
  • 引导模式 Guided Mode

    • 在引导模式下,用户可以通过 Mission Planner 地面站手动控制小车行驶
    • 首先,通过数传模块连接飞控;然后,在 “飞行数据” 主界面的地图中,移动鼠标到指定的位置,右击鼠标,选择 ”飞行至此 ”;此时,小车会切换为引导模式,并朝向指定的点行驶;一旦到达目的地则停车
  • 返航模式 RTL Mode

    • RTL 代表返回到解锁的位置
    • 切换到 RTL 模式后,车辆将转弯并尝试直接返回到上次解锁的位置(除非从地面站修改了家的位置,否则会返航到最新解锁的位置)
    • 一旦车到达返航的位置时,它会保持在当前的位置
    • RTL_SPEED 参数用于设置车的返航速度(m/s),该参数默认为 0,此时车的返航速度由 WP_SPEED 决定
  • 智能返航 SmartRTL Mode

    • 和正常的返航模式一样,车会返回到家的位置,但它能原路返航,而不是直接朝着家的方向返航,所以智能返航在返航过程中,会自动避开遇到的障碍物,并不是直接朝着家的方向返航
    • 如果是车返航到达家的位置时,会停车并切断所有动力输出
    • 车在解锁时,一定要有良好的 GPS 定位,否则返航时不能切换进智能返航模式

3.2 pixhawk 状态指示灯解析

在这里插入图片描述

3.3 安全开关灯解析

在这里插入图片描述

3.4 解锁故障解析

  • check firmware or FRAME_CLASS:请选择机架类型
  • 3D Accel calibration needed:加速度计需要校准
  • safe switch:安全开关未关闭,长按至灯长亮
  • RC not calibrated:遥控器没有校准
  • Baro not healthy:气压计不健康
  • Alt disparity:气压计与惯性导航系统的高度不一致超过 2 米以上,这一消息通常是短暂的,当飞行控制器首次插入或如果它接收到一个硬的颠簸发生,如果没有消失,加速度计或许需要校准,或者气压计有故障
  • Compass not healthy:罗盘不健康
  • Compass not calibrated:罗盘没有校准
  • Compass offsets too high:罗盘偏移值太大,也许是附近有金属或者其他干扰
  • Check mag field:所感测的磁场在该区域中的磁场是 35%高于或低于预期值,需要重新校准罗盘
  • Compasses inconsistent:内部和外部的罗盘指向不同的方向(从大于 45 度),通常是 GPS 外置罗盘放置位置不一致
  • GPS Glitch:GPS 故障,当选择的飞行模式需要 GPS 定位,或者开启地理围栏,此时 GPS 没有定位会有此提示
  • Need 3D Fix:全球定位系统没有三维固定,当选择的飞行模式需要 GPS 定位,或者开启地理围栏,此时 GPS 没有定位会有此提示
  • Bad Velocity:飞行器的速度(根据惯性导航系统)是 50cm 以上的,可能导致这包括飞行器实际移动或被抛起,坏的加速度计校准,GPS 更新在低于预期的 5HZ
  • High GPS HDOP:GPS 精度低于高于 2.0,可以在首页查看 GPS 精度实时变化数据
  • INS not calibrated:加速度计没有校准
  • Accels not healthy:加速度计不健康,可能硬件问题,可能发生在刷新固件没有重启
  • Accels inconsistent:加速度计不一致超过 1m/s/s
  • Gyros not healthy:陀螺不正常,可能硬件问题,可能发生在刷新固件没有重启
  • Gyro cal failed:陀螺仪校准未能捕捉偏移,这个由于启动校准时候移动了飞控,在红蓝闪烁就是校准时刻
  • Gyros inconsistent:陀螺不一致超过 20deg/sec
  • Check Board Voltage:检查板上电压,应该在 4.3V 到 5.8V 之间,如果通过 USB 供电,请尝试更换端口或者线缆
  • Ch7&Ch8 Opt cannot be same:7/8 通道不能设置一致
  • Check FS_THR_VALUE:3 通道最低值太接近失控保护值
  • Check ANGLE_MAX:控制飞控的最大倾斜角度设定在 10 度以下的 angle_max 参数(即 1000)或 80 度以上(即 8000)
  • ACRO_BAL_ROLL/PITCH:acro_bal_roll:参数高于自稳 Roll P 和/或 acro_bal_pitch 参数高于自稳 Pitch P 值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/311495.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++里main函数int main(int argc, char **argv)

C里main函数int main(int argc, char **argv), 这两个参数argc和argv分别是什么

安全帽/反光衣检测AI智能分析网关V4如何查看告警信息并进行处理?

智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备,目前拥有3种型号(8路/16路/32路),支持Caffe / DarkNet / TensorFlow / PyTorch / MXNet / ONNX / PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

9个icon图标网站,海量免费矢量图标库!

​划到最后“阅读原文”——领取工具包(超过1000工具,免费素材网站分享和行业报告) Hi,我是胡猛夫~,专注于分享各类价值网站、高效工具! 更多内容,更多资源,欢迎交流!公…

MacOS安装Miniforge、Tensorflow、Jupyter Lab等(2024年最新)

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。 1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员… 2、这几年,我整理了很多IT技术相关的教程给大家&#xff0…

应用案例 | 基于三维机器视觉的自动化无序分拣解决方案

​ 近年来,电商行业蓬勃发展,订单的海量化、订单类型的碎片化,使物流行业朝着“多品种、无边界、分类广”的方向迅速发展。根据许多研究机构的预测,电子商务销售额预计将以每年两位数的速度增长,推动整个行业的规模不…

【排序】快速排序(C语言实现)

文章目录 前言1. Hoare思想2. 挖坑法3. 前后指针法4. 三路划分5. 快速排序的一些小优化5.1 三数取中常规的三数取中伪随机的三数取中 5.2 小区间优化 6. 非递归版本的快排7. 快速排序的特性总结 前言 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其…

Leetcode 416 分割等和子集

题意理解: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 即将数组的元素分成两组,每组数值sum(nums)/2 若能分成这样的两组,则返回true,否则返回false 本质上…

国标28181平台的手机视频监控客户端的电子地图功能对比

目 录 一、手机客户端 1、概述 2、具体功能简述 二、电子地图功能 1、经纬度定位 2、附近设备 3、实时浏览功能 4、录像回放 5、缩放功能 三、手机web客户端和CS客户端上的电子地图功能对比 1、对比表 2、测距(PC客户端功能) 3…

【分布式技术】rsync远程同步服务

目录 一、rsync(远程同步) 二、实操rsync远程文件同步 准备一个服务端192.168.20.18以及一个客户端192.168.20.30 1、服务端搭建:先完成服务端配置,启动服务 rsync拓展 1、关于rsyncd服务的端口号 2、rsync和scp的区别 2、测…

在qemu虚拟机环境下,使用kgdb调试kernel

enable kgdb的情况下,使用qemu启动kernel 1,需要先在内核配置中增加kgdb的支持 2,启动qemu虚拟机时,增加参数-s -S,这两个参数会使得kernel在启动之后遇到的第一个指令等待gdb连接 例子: /qemu-project…

爬虫之牛刀小试(三):爬取中国天气网全国天气

天气网: import requests from bs4 import BeautifulSoup import time from pyecharts.charts import Bar from pyecharts import options as optsurl_hb http://www.weather.com.cn/textFC/hb.shtml url_db http://www.weather.com.cn/textFC/db.shtml url_hd …

RocketMQ Dashboard可视化工具

RocketMQ Dashboard 将 RocketMQ的相关指标展示在web页面 ,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。 官方文档地址:RocketMQ Dashboard | RocketMQ 目录 1.下载安装 1.1 系统要求: 1.2 源码安装 1.3 访问页面 2.功…

微信小程序地图展示区轮廓+展示指定地区标点气泡

需求:显示当前地区所有的学校列表:名称。区域显示区域名称下面所属学校数量 根据用户缩小放大当前区域(大于12显示区,小于12显示当前区学校列表),获取:regionchange的type:end数据&…

中央处理器CPU(1)----指令周期和微程序

前言:由于期末复习计算机组成效率太慢所以抽时间写一下文章总结一下思路,理解不是很深,欢迎各位不吝赐教。 由于时间不是很充分,所以有些考点由于我们不考试,一笔带过了。 我这是期末复习总结,不是考研知识…

【BIAI】Lecture 7 - EEG data analysis

EEG data analysis 专业术语 EEG 脑电图 excitatory postsynaptic potential(EPSP)兴奋性突触后电位 inhibitory postsynaptic potential(IPSP) 抑制性突触后电位 action potential 动作电位 dipoles 偶极子 Pyramidal neurons 椎体细胞 Axon 轴突 Dendrite 树突 Synapse 突触…

python 识别验证码图片

描述:利用cv2和百度的aipocr 识别有噪点的验证码图,百度aip需要自己注册,把密钥替换为自己的即可 百度智能云 测试用的图片 # encoding: utf-8 from PIL import Image # 调用百度OCR接口识别验证码 from aip import AipOcr class preserv…

R语言下载安装及VScode配置

文章目录 1. R 下载和安装1.1 下载1.2 安装 2. VSCODE 配置2.1 安装R拓展2.2 安装R语言辅助功能包2.3 DEBUG 1. R 下载和安装 1.1 下载 网址:https://www.r-project.org/ 选择一个镜像地址下载 选择对应的版本 一般选择base即可 1.2 安装 下载安装包后按提示安装…

2.【CPP】入门(宏||内联函数||拷贝构造||析构函数||构造函数)

0x01.引言 1.实现一个宏函数ADD #define ADD(x,y) ((x)(y))//宏是预编译阶段完成替换,注意括号2.宏的优缺点 优点: 1.增强代码的复用性 2.宏函数不用建立栈帧,提高性能 缺点: 1.不方便调试 2.没有安全检查 0x02.内联函数 1.以空…

SpringCloud系列篇:核心组件之熔断器组件

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 前言 在微服务架构中,一个应用往往由多个服务组成,这些服务之间相互依赖,依赖关系错综复杂。 例…

three.js 关键帧动画

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right"…