从零搭建自主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

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步