从零搭建自主Pix无人车

2024-03-14 05:20
文章标签 搭建 无人 自主 pix

本文主要是介绍从零搭建自主Pix无人车,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、PIX飞控参数设置
  • 二、pix和nano接线
  • 三、ROS通信设置
  • 四、MAVROS控制接口的调用
  • 五、opencv
  • 六、控制参数调整

前言

本教程的适用对象:
零基础
研究无人车的学生或爱好者

硬件:
Pixhawk 2.4.8
差速小车底盘
Wifi电台
6通道遥控器
M8N GPS
12v锂电池
火凤凰有刷电调
以上成本约1000到1500元

Jetson nano
激光雷达
摄像头
以上成本约2000

软件:
APM4.2.3 rover
QGC 4.2

实现的功能
自动巡线
自动避障
ROS控制
视觉识别
其他

废话不多说,先上视频(感兴趣可以关注b站,后续视频更精彩)

开源PIX无人车室内巡线

ros+pixhawk无人车建图导航

由于最近时间紧,先列目录,后面有时间了继续完成

一、PIX飞控参数设置

首先要确保飞控的波特率和ros一致,不然无法连接mavros,我这里使用telem2,波特率921600
在这里插入图片描述

其次要根据室内还是室外来选择定位数据的来源,这个可以参考apm的wiki,总之就是飞控要有定位信息,这样才能控制车的速度/位置。
除此以外飞控的PID也是比较重要的参数,调PID的教程网上也很多这里就不赘述了。

如果使用视觉定位的话,需要修改如下参数:

AHRS_EKF_TYPE = 3 
EK2_ENABLE = 0 
EK3_ENABLE = 1 
EK3_SRC1_POSXY = 6
EK3_SRC1_POSZ = 1 
EK3_SRC1_VELXY = 6
EK3_SRC1_VELZ = 6
EK3_SRC1_YAW = 6 
GPS_TYPE = 0
VISO_TYPE = 1

除此以外,也可把飞控IMU的频率调高一些,默认频率太低了
在这里插入图片描述

二、pix和nano接线

飞控就使用任意一个串口即可,nano也使用任意的串口都可以,nano的引脚定义如下:
在这里插入图片描述
我这里使用UART2
在这里插入图片描述
将tx,rx,gnd接到飞控串口上

在这里插入图片描述

三、ROS通信设置

ros通信的设置比较简单,如果是px4固件就设置px4.launch,如果是apm固件就设置apm.launch。
本文使用的是apm固件,所以使用apm.launch
需要注意端口和波特率,端口我这里采用uart2,对应的端口号为ttyTHS1.
波特率遥控飞控对应,我这里是921600
具体就是在下图的位置编辑端口和波特率
请添加图片描述
然后启动launch文件

roslaunch mavros apm.launch

正常的话会出现下面的提示
请添加图片描述

如果启动时报权限错误,就给相应的端口赋予权限

四、MAVROS控制接口的调用

经过上述设置后,启动apm.launch就可以将飞控连接到mavros了,如下
在这里插入图片描述
apm使用mavros和px4类似,因为这两者都是使用mavlink协议,所以很多接口都是通用的,但是也有一些细微的差别需要注意,例如px4中使用的时offboard模式,而apm中使用的是guided模式,体现在代码的差别就是下面的差别:

   if( current_state.mode != "GUIDED" && (ros::Time::now() - last_request > ros::Duration(5.0))){if( set_mode_client.call("GUIDED") && offb_set_mode.response.mode_sent){ROS_INFO("GUIDED enabled");}last_request = ros::Time::now();}if(ros::Time::now() - last_request > ros::Duration(5.0))break;mavros_setpoint_pos_pub.publish(setpoint_raw);ros::spinOnce();rate.sleep();

至于其他的接口的调用则是基本与PX4类似,这里就不赘述了,网上有很多的资料,需要注意的是,在控制时,需要设置正确的typemask,这也是为了防止出现不恰当的控制组合,具体可以参考wiki。

五、opencv

六、控制参数调整

这篇关于从零搭建自主Pix无人车的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/807316

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

Spring Cloud GateWay搭建全过程

《SpringCloudGateWay搭建全过程》:本文主要介绍SpringCloudGateWay搭建全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Spring Cloud GateWay搭建1.搭建注册中心1.1添加依赖1.2 配置文件及启动类1.3 测

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析