1. 无人机在较大空间如体育馆试飞时,失控直接往上一直飞 这种情况一般是激光雷达定位异常,影响MID360激光雷达定位效果的因素: ①飞行场地 px4在融合激光雷达定位的情况下,激光雷达在开阔场地获取不到边界信息,容易导致雷达定位异常。 ②环境光照条件 激光雷达通常使用激光脉冲进行距离测量,并依赖反射回来的信号来构建环境的三维图像。在极端的光照条件下,如强烈的阳光或夜间低光环境,激光雷达的性能可能会受到影响。 ③物体表面的反射特性 激光雷达的工作原理依赖于从物体表面反射回来的激光信号,因此物体的表面特性直接影响雷达的探测效果。光滑、平坦的表面(如镜面或水面)可能会导致激光信号的反射方向不稳定,影响传感器的信号接收和定位精度。 ④积热问题 MID360 激光雷达在工作时会产生一定的积热,主要来源于激光发射器、处理器和电源系统。温度过高时,激光雷达的电子元件可能会出现不稳定,导致系统崩溃或运行异常。特别是在多传感器融合的系统中,积热可能会影响传感器之间的协同工作,造成系统整体性能下降。
2. 在实机上运行程序时出现如下报错

首先确认NX和飞控数据线是否连接无误,如果连接正常打开终端输入sudo chmod 777 /dev/ttyACM0。如果都解决不了则将飞控连接地面站,参数中搜索SYS_COMPANION确认波特率是否和tutorial_basic/launch/mavros.launch中设置的波特率一致。
3. 在实机上运行程序时出现如下报错

可能是文件权限不够,可以通过以下命令为文件添加执行权限:
chmod + x /文件路径/文件
4. 在仿真环境中运行gazebo时出现如下报错

虚拟机系统内存不足,尝试修改虚拟机内存配置。
5. 在仿真环境中运行gazebo时出现如下报错

系统检测到时间戳的不正常变化,导致时间同步器无法正常工作。可能是系统时间发生了变化,保证ROS时间和系统时间一致。
6. 在仿真环境飞机飞行过程中,飞机已经飞到第四个点,rqt中图像还显示的是第一个点 这种情况是画面延迟,如果没识别飞机会停在第一个点而不是飞往后面的点。
7. 在实机拆桨运行run_craic_task.launch时出现如下报错

在使用霍夫变换时,调用detect函数出现了minRadius_ 和 maxRadius_ 参数的值不符合要求的情况。minRadius_ 必须大于0,而且 maxRadius_ 必须大于 minRadius_。
8. 在实机上启动摄像头节点时,摄像头打不开并出现如下报错

节点 qr_detector 的进程崩溃并退出,qr_detector.py文件内代码可能有问题,可能需调出日志查看更详细原因。
9. 实机上运行qr_detector.launch时出现如下报错

缺少pyzbar模块,可以使用以下命令安装:
sudo pip install pyzbar && sudo apt install libzbar-dev
10. 代码中有两种速度控制的方法,一种是 move_base_cmd_vel_cb(),一种是 get_pid_vel(),这两种速度控制有何区别? 1)回调函数控制(基于外部命令的速度控制) ● 应用场景:这是基于外部输入的控制方式,通常用于通过传感器、用户输入或外部系统发送速度命令。 ● 工作原理:通过回调函数 move_base_cmd_vel_cb 接收外部发送的速度命令(geometry_msgs::Twist),并更新机器人当前的速度指令。 ● 控制方式:外部系统发送一个 Twist 消息,其中包含机器人的线性速度(linear.x, linear.y, linear.z)和角速度(angular.x, angular.y, angular.z)。 ● 直接赋值:接收到速度命令后,直接将其赋值给 move_base_twist,控制机器人按照外部系统指定的速度进行运动。 2)PID 控制(基于位置与航向的控制) ● 应用场景:这是用于自我调整的控制策略,通常用于机器人自动导航或者自主运动时,控制机器人在三维空间内的位置和朝向。 ● 工作原理:PID 控制器使用位置误差(err)和航向误差(y_err)来计算目标速度。 ● 位置误差:计算目标位置和当前机器人位置之间的差距,并根据误差大小计算所需的线性速度(ret.linear.x、ret.linear.y、ret.linear.z)。 ● 航向误差:计算机器人当前朝向与目标朝向之间的误差,并通过 PID 控制来调整角速度(ret.angular.z)。 ● PID 调节:利用位置误差和航向误差的比例(P)、误差的累积(I)、误差的变化速率(D)来生成速度命令。这种方式通过不断修正误差,逐步逼近目标位置。 ● 重置机制:如果时间间隔大于某个阈值(如 0.2 秒),误差和误差累积将被重置,以避免控制误差过大。
11. twist.twist.angular.z 是什么含义? twist.twist.angular.z 表示的是无人机的角速度,它主要控制无人机的旋转(偏航角度的变化)。旋转的目的是让无人机能够调整其航向,确保它朝着正确的方向飞行。
12. std::max(-1.57, std::min(1.57, -current_rpy.z)); -1.57这个值似乎是π/2,控制角度的目的是什么? 这行代码的作用是将 -current_rpy.z 的值限制在 -π/2 到 +π/2(即 -1.57 到 +1.57)之间。这个范围通常用于限制旋转角度,防止旋转过大,确保运动系统(例如机器人、飞行器等)在旋转控制时不发生过度旋转。
13. 在仿真上改了yolov5和霍夫圆检测的代码以及替换replace(部分代码的gpu版本)报了下面的错误 修改相关代码及替换replace均是在实机完成,以降低实机的cpu性能占用,在仿真环境中没有性能限制,因此不需要替换及修改。
14. std::max(-0.5,std::min(0.5,working_altitude- current_pose.pose.position.z));这句代码似乎是为了控制速度,但是,线速度为max(-0.5,min(0.5,1.0-高度))的含义究竟是什么? 这行代码的含义是根据目标高度 working_altitude 和当前高度 current_pose.pose.position.z 的差值来控制速度,确保速度在 -0.5 到 0.5 之间。如果差值大于 0.5(目标高度和当前高度差距较大),则最大上升速度为 0.5。如果差值小于 -0.5(目标高度低于当前高度太多),则最大下降速度为 -0.5。通过这个限制,系统能够平稳地控制上升和下降速度,避免速度过快导致不稳定或难以控制。
15.twist.twist.angular.z = std::max(-1.57, std::min(1.57, -current_rpy.z)); 似乎是通过闭环反馈让UAV朝着指定方向? 闭环控制:无人机通过不断调整姿态(偏航角)来朝着目标方向旋转,这通常是通过一个控制器(如PID控制器)实现的。 角速度限制:std::max(-1.57,std::min(1.57, -current_rpy.z)) 是一个用于限制角速度的代码片段,确保 UAV 的旋转不会过快或过慢,确保控制系统的稳定性。 朝着目标方向调整:通过反馈控制,UAV 会逐渐减小误差,最终朝着指定的方向(目标姿态)调整。
16. twist.twist.linear.z = std::max(-0.5, std::min(0.5, working_altitude – current_pose.pose.position.z));似乎是让无人机高度通过闭环反馈达到working_altitude?
这行代码的确是在通过闭环反馈控制机制调节无人机的高度,使其达到目标高度(working_altitude)。通过闭环反馈,无人机会根据当前的高度和目标高度之间的误差,自动调节垂直速度,以确保目标高度的稳定性。速度的限制确保了无人机的上升和下降不会过快,从而提高了飞行的安全性和稳定性。
17. 不使用GPS也可以解锁无人机的参数修改
在地面站——“参数”中搜索以下两个参数并修改: CBRK_IO_SAFETY: 22027 COM_PREARM_MODE: always 注意:修改后无人机通电后即可解锁 18. 运行roslaunch tutorial_catapult catapult_driver.launch时报错(缺少rosserial)
rosserial库的作用:让投放装置固件和上位机通信 逐个输入以下命令后即可解决:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-noetic-rosserial-python
19. 实机中测试看不到rqt画面?
可能有以下两个原因: 1)未开启摄像头,需要先启动摄像头节点再打开rqt,打开一个终端运行:
roslaunch tutorial_vision simple_camera_driver.launch
2)使用了ssh远程连接,在ssh远程连接时是看不到rqt的,将屏幕直连上位机才可看到rqt画面。
20. 在实机测试中无法识别二维码?
实机中需在tutorial_vision/scripts/qr_detector.py 中加滤波处理: 中值滤波:cv_image = cv2.medianBlur(cv_image,5) 高斯滤波:cv_image = cv2.GaussianBlur(cv_image,(5,5),0) 加在qr_detector.py的下图位置:
21. 在gabezo运行run_2025craic的launch文件,他最后一直卡在圆圈前,一直显示“Begin Calculate Ring Center Position.”是什么情况?
仿真环境中的点云数据是gazebo模拟的,没有实机中雷达点云数据准确,因为可能不能正确识别圆环圆心,但在实机中存在真实的雷达点云,因此效果会比仿真好。
22. 请问 yolo 图像识别在仿真能正常识别,在实机就是识别不了是什么情况?
在现实环境存在许多噪声与干扰,识别环境更加复杂,需要训练效果更好的模型并在代码中做万一识别不了也能继续任务的处理。
23. 训练数据集时出现如下报错,cifar100也放在指定路径下了怎么解决?
cifar100数据集未完全解压(文件数很多),建议将zip放在指定路径解压,并确认完全解压后(文件夹右上角会有转圈显示)再训练。
24. tutorial文件编译打开后rviz里面没有点云数据是啥原因?
因为代码中是将雷达点云数据在本地上传后rviz中才会出现点云,但上传后的代码中包含了本地ubuntu用户名。解决办法:将tutorials/tutorial_gazebo/models/livox_mid360路径下的model.sdf中的第69行/home后的用户名改为当前用户名(jetson)。
24. 在实机中执行roslaunch tutorial_basic mavros.launch时出现如下报错是什么问题?
飞控与上位机连接的串口失效了(/dev/ttyACM0不存在)。检查飞控右上角的连线端口是否松动(如下图)或将次端口重新拔插,然后打开一个终端,输入 ls /dev/ttyACM0 看下有没有此串口。
25. 在实机上执行代码时遇到如下报错?
将catkin_ws/src下的build devel文件夹删除并打开一个终端输入catkin_make 重新编译后再执行。
26. 在实机上编译时碰到时钟检测错误的警告?
上位机在重启后如果没有连接wifi,时间会重置,造成之前修改或编译的时间和当前系统时间冲突,导致编译不能生效。有两种解决办法: 1)给上位机连接wifi(连网)让系统时间和实际时间一致 2)通过命令设置当前系统时间,命令行输入:
sudo date -s "2025-06-18 15:55:00" #""内为当前时间