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

相关文章

本地搭建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 搭建步

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联