持续更新......
写在前面:
(1)如果存在rosdep问题参考Ubuntu20.04ROS rosdep update超时失败解决方法_npu2018302257的博客-CSDN博客
(2)如果存在一些github.com或者是raw.githubusercontent.com等其他一些好像网络的问题,在这个网页搜索,并以xxx.xxx.xxx.xxx github.com的格式写入 sudo gedit /etc/hosts
sudo /etc/init.d/networking restart
(3)如果git clone 的时候出现failed之类的可以该一下dns:sudo gedit /etc/resolv.conf
改为以下,再刷新一下dns服务
nameserver 8.8.8.8
nameserver 114.114.114.114
(4)提前配置静态ip,后续可以摆脱ip动态分配带来的不便
一、仿真环境
my QGC env:双系统下的ubuntu20+ros noetic(anaconda也可以装一个)
(巨人的肩膀):PX4 User Guide
1. 安装QGC
QGC - QGroundControl - Drone Control
2.仿真步骤,还参考了:
【无人机】PX4,ROS,Ubuntu20仿真运行_lunei的博客-CSDN博客
整理:
最先安装GeographicLib,时间很长,失败了就多试几次!!
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步很慢
# 安装px4 的仿真配置
git clone https://github.com/PX4/Firmware.git
git checkout v1.11.3
cd Firmware
git submodule update --init --recursive #中断了就重复这一句
cd Tools/setup
sudo ./ubuntu.sh #pip安装会慢,可以编辑一下该文件,在pip 安装那一行末尾加 -i
# https://pypi.tuna.tsinghua.edu.cn/simple
#安装mavros
cd
sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras
sudo apt-get install python3-catkin-tools python3-rosinstall-generator -y
rosinstall_generator --rosdistro noetic mavlink | tee /tmp/mavros.rosinstall
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j16
rosdep install --from-paths src --ignore-src -y
catkin build
source devel/setup.bash #可以写到~/.bashrc 中
#尝试仿真小例子
cd src
catkin_create_pkg offboard_pkg roscpp std_msgs geometry_msgs mavros_msgs
cd offboard_pkg/src
gedit offboard_node.cpp#网上一搜就有
cd ..
gedit CMakeLists.txt
#add_executable(offboard_node src/offboard_node.cpp)
#target_link_libraries(offboard_node ${catkin_LIBRARIES})
cd ~/catkin_ws
catkin build
catkin init
source devel/setup.bash
cd /Firmware
make px4_sitl gazebo_iris
roscore
打开QGroundControl
新开终端执行
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
#roslaunch mavros px4.launch fcu_url:="udp://:14540@192.168.1.196:14557"
rosrun offboard_pkg offboard_node
offboard 测试起飞
二、实物
主要搭建框架(参考px4 user guide):从ground station和vehicle来记录:
Ground station:
经过仿真的环境,基本环境已经搭建好了
vehicle
(1)查看固件是否需要重新刷新
若原本就是px4就不需要刷新<跳过这一小段> ,我的飞控pixhawk 2.4.8一开始刷固件是APM,许多px4的参数都没有,px4固件在这https://github.com/PX4/PX4-Autopilot/releases/tag/v1.11.0
所以需要重新刷px4固件,还不能刷太新的,会有问题,步骤参考,入门视频20分钟入门,利用QGC下载px4固件、校准传感器,注意事项_哔哩哔哩_bilibili:或者加载固件 | PX4 自动驾驶用户指南
点击选择advanced setting的最后一项,加载固件(我的是realse版本):px4fmu-v2-1.9.0.px4
烧录后对每一项进行校准,使得summury 的灯都是绿的。
注意会遇到的错误(在Qgc显示diconnect的时候,可以尝试重启电脑或者是重新烧录固件<diconnect 也可以烧录固件的>):如果仍然不能解锁可以连接地面站看看有啥报错
如果报错mag#0 fail uncalibrated :说明传感器校准有误,重新校准即可。校准选项有4个,分别为accel、gyro、mag、level、airspeed(加速计、陀螺仪、磁罗盘、水平仪和空速计)。
解锁的时候记得打开安全开关。
完成后可以装桨测试一下,下面还是要拿桨的。
(2)机载板配置:jetsonnano ,一开始配置环境的时候连上鼠标键盘,其中视频对我的帮助很大https://www.youtube.com/watch?v=Brkk0ZmnGgs
连线:按照视频的步骤,连接pixhawk 2.4.8 的telem2 端口到串口pin8、10、gnd引脚,其中接口可以自己焊一个。rx连tx,tx连rx ,共地,因为烧录的是realense版本,在QGC需要对px4 参数SYS_COMPANION设置为921600,打开telem2串口传输设置。
连接之后,修改/dev/ttyTHS1权限,用cat看看有没有乱码传过来 ,波特率是可以通过usb或者数传连接地面站进行修改的。
launch设置:jetsonnano上装的是ubuntu18系统+ros,其中mavros已经安装
在/opt/ros/melodic/share/mavros中的launch中,复制px4.launch中,新建一个mypx4.launch,对"fcu_url"与“gcs_url"进行修改。
<launch>
<!-- vim: set ft=xml noet : -->
<!-- example launch script for PX4 based FCU's -->
<arg name="fcu_url" default="/dev/ttyTHS1:921600" />
<arg name="gcs_url" default="udp://@192.168.0.108:14550" /> <!--QGC-->
<arg name="tgt_system" default="1" />
<arg name="tgt_component" default="1" />
<arg name="log_output" default="screen" />
<arg name="fcu_protocol" default="v2.0" />
<arg name="respawn_mavros" default="false" />
<include file="$(find mavros)/launch/node.launch">
<arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" />
<arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />
<arg name="fcu_url" value="$(arg fcu_url)" />
<arg name="gcs_url" value="$(arg gcs_url)" />
<arg name="tgt_system" value="$(arg tgt_system)" />
<arg name="tgt_component" value="$(arg tgt_component)" />
<arg name="log_output" value="$(arg log_output)" />
<arg name="fcu_protocol" value="$(arg fcu_protocol)" />
<arg name="respawn_mavros" default="$(arg respawn_mavros)" />
</include>
</launch>
测试:(注意,开始测试的时候先不要装桨)
(1)ros主从机设置
参考:ROS主从机配置_月夕花晨KaCa的博客-CSDN博客
一遍成功的ROS主从机详细配置_zhanghm1995的博客-CSDN博客_ros主从机设置
这里的主机指的是:ground station
(2)ground station 启动roscore
ssh连接jeston nano,sudo adduser $USER xxx,并在开放串口的权限,roslaunch启动 mypx4.launch,在电脑端可以发现地面站已经被连接了,若没有连接上查看launch文件的ip地址是否对应,其次检查QGC下的application Setting下的udp link端口设置,rostopic echo /mavros/state 应该可以看到这些,如果看不到,检查master端下从机的hostname和ip。
(务必在gps信号良好的时候)接管切换测试:打开安全开关,解锁,打开offboard 模式(如果没有gps信号地面站会显示拒绝打开,这可能是因为EKF2_GPS_CHECK 参数设置),有错误提示但是能飞。
地面站端电脑,开启键盘控制节点,键盘接管,可以控制后,关闭节点,关闭offboard模式,回到遥控接管,上锁,查看日志有啥问题。
运行过程终端报错:遥控器切换的,但是如果是程序控制的话是没有影响
failsafe enabled: no offboard (PX4 has a number of safety features to protect and recover your vehicle if something goes wrong)
错误整理:OMG,真的有些错误困扰了我很多天或这很多个小时,但是真的一下子就解决了!!!!
1. offboard 模式突然进不去
这时候,我怀疑了很多很多,因为是有提示CMD:Unexpected command 176, result 1
我查了好多,没查到结果,最后我检查了一下发现是网络配置问题。超级注意修改一下/etc/hosts文件,主从机的配置问题!
2.FCU: Preflight Fail: High Accelerometer Bias
不用多查了,直接对Accelerometer重新进行标定
3. imu帧率提高失败
刷了1.9固件之后发现,飞控传回来的imu帧率只有十帧,用mavlink也没有提升上去。
不用多查了,串口参数配置问题,mav_0_config=102,mav_0_mode=0