本文主要是介绍从零搭建自主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无人车的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!