同步操作将从 一摩尔大米/Fast-Drone-250 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
从零制作自主空中机器人
本文档是视频教程从零制作自主空中机器人的配套文档,四旋翼无人机具有一定的安全风险,请同学们严格遵守安全规范,对自己的安全负责。
[TOC]
本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让它可以在未知的环境中自由避障穿行。本次课程所涉及的所有代码、硬件设计全部开源,严禁商用与转载,版权与最终解释权由浙江大学FASTLAB实验室所有。 本次课程的重心主要落在自主空中机器人的搭建、代码部署及调试上,关于自主空中机器人的一些理论基础,例如动力学模型,路径搜索,轨迹规划,地图构建等内容,高飞老师在深蓝学院有非常详尽而深入浅出的课程,本次课程就不再赘述。
机器人本体相关配件及焊接用工具详见purchase_list.xlsx,对硬件选型有相关疑问请看 番外一:硬件选型
请烧录本git项目下的/firmware/px4_fmu-v5_default.px4
固件,这个固件是官方1.11.0版本固件编译而来,如有需要可以自行编译。实测1.13版本固件存在BUG,不建议使用,更老的固件版本未经测试。
在飞控的sd卡的根目录下创建/etc/extras.txt
,写入
mavlink stream -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 200
mavlink stream -d /dev/ttyACM0 -s HIGHRES_IMU -r 200
以提高imu发布频率
修改机架类型为 Generic 250 Racer
,代指250mm轴距机型。如果是其他尺寸的机架,请根据实际轴距选择机架类型
修改dshot_config
为dshot600
修改CBRK_SUPPLY_CHK
为894281 执行这步跳过了电源检查,因此左侧栏的电池设置部分就算是红的也没关系
修改CBRK_USB_CHK
为197848
修改CBRK_IO_SAFETY
为22027
修改SER_TEL1_BAUD
为921600
修改SYS_USE_IO
为0(搜索不到则不用管)
检测电机转向前确保没有安装螺旋桨!!!!
修改电机转向:进入mavlink控制台
dshot reverse -m 1
dshot save -m 1
修改1
为需要反向的电机序号
第一次试飞请务必找有自稳模式下飞行经验的飞手协助,只飞过大疆无人机的飞手99%无法飞好!
http://mirrors.aliyun.com/ubuntu-releases/20.04/
下载 ubuntu-20.04.4-desktop-amd64.iso
https://cn.ultraiso.net/
/
(主分区)剩余所有容量sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) 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-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
realsense-viewer
sudo apt-get install ros-noetic-mavros
cd /opt/ros/noetic/lib/mavros
sudo ./install_geographiclib_datasets.sh
3rd_party.zip
压缩包./autogen.sh && ./configure && make && sudo make install
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install
sudo apt-get install ros-noetic-ddynamic-reconfigure
git clone https://github.com/ZJU-FAST-Lab/Fast-Drone-250
cd Fast-Drone-250
catkin_make
source devel/setup.bash
roslaunch ego_planner single_run_in_sim.launch
sudo dpkg --i ***.deb
sudo apt install terminator
sudo apt install ros-noetic-plotjuggler
sudo apt install ros-noetic-plotjuggler-ros
rosrun plotjuggler plotjugller
sudo apt install net-tools
ifconfig
sudo apt install openssh-server
ping 192.168.**.**
sudo gedit /etc/hosts
192.168.**.** fast-drone
ping fast-drone
ssh fast-drone@fast-drone
(ssh 用户名@别名
)src/planner/plan_manage/launch/single_run_in_exp.launch
下的:
map_size
:当你的地图大小较大时需要修改,注意目标点不要超过map_size/2fx/fy/cx/cy
:修改为你的深度相机的实际内参(下一课有讲怎么看)max_vel/max_acc
:修改以调整最大速度、加速度。速度建议先用0.5试飞,最大不要超过2.5,加速度不要超过6flight_type
:1代表rviz选点模式,2代表waypoints跟踪模式src/planner/plan_manage/launch/advanced_param_exp.xml
下的:
resolution
:代表栅格地图格点的分辨率,单位为米。越小则地图越精细,但越占内存。最小不要低于0.1obstacles_inflation
:代表障碍物膨胀大小,单位为米。建议至少设置为飞机半径(包括螺旋桨、桨保)的1.5倍以上,但不要超过resolution
的4倍。如果飞机轴距较大,请相应改大resolution
src/realflight_modules/px4ctrl/config/ctrl_param_fpv.yaml
下的:
mass
:修改为无人机的实际重量hover_percent
:修改为无人机的悬停油门,可以通过px4log查看,具体可以参考文档 如果你的无人机是和课程的一模一样的话,这项保持为0.3即可。如果更改了动力配置,或重量发生变化,或轴距发生变化,都请调整此项,否则自动起飞时会发生无法起飞或者超调严重的情况。gain/Kp,Kv
:即PID中的PI项,一般不用太大改动。如果发生超调,请适当调小。如果无人机响应较慢,请适当调大。rc_reverse
:这项使用乐迪AT9S的不用管。如果在第十一课的自动起飞中,发现飞机的飞行方向与摇杆方向相反,说明需要修改此项,把相反的通道对应的值改为true。其中throttle如果反了,实际实验中会比较危险,建议在起飞前就确认好,步骤为:
roslaunch mavros px4.launch
rostopic echo /mavros/rc/in
检查飞控mavros连接正常
ls /dev/tty*
,确认飞控的串口连接正常。一般是/dev/ttyACM0
sudo chmod 777 /dev/ttyACM0
,为串口附加权限roslaunch mavros px4.launch
rostopic hz /mavros/imu/data_raw
,确认飞控传输的imu频率在200hz左右检查realsense驱动正常
roslaunch realsense2_camera rs_camera.launch
rqt_image_view
/camera/infra1/image_rect_raw
,/camera/infra2/image_rect_raw
,/camera/depth/image_rect_raw
话题正常VINS参数设置
进入realflight_modules/VINS_Fusion/config/
驱动realsense后,rostopic echo /camera/infra1/camera_info
,把其中的K矩阵中的fx,fy,cx,cy填入left.yaml
和right.yaml
在home目录创建vins_output
文件夹
修改fast-drone-250.yaml
的body_T_cam0
和body_T_cam1
的data
矩阵的第四列为你的无人机上的相机相对于飞控的实际外参,单位为米,顺序为x/y/z,第四项是1,不用改
VINS外参精确自标定
sh shfiles/rspx4.sh
rostopic echo /vins_fusion/imu_propagate
vins_output/extrinsic_parameter.txt
里的内容替换到fast-drone-250.yaml
的body_T_cam0
和body_T_cam1
建图模块验证
sh shfiles/rspx4.sh
roslaunch ego_planner single_run_in_exp.launch
roslaunch ego_planner rviz.launch
自动起飞:
sh shfiles/rspx4.sh
rostopic echo /vins_fusion/imu_propagate
roslaunch px4ctrl run_ctrl.launch
sh shfiles/takeoff.sh
,如果飞机螺旋桨开始旋转,但无法起飞,说明hover_percent
参数过小;如果飞机有明显飞过1米高,再下降的样子,说明hover_percent
参数过大Ego-Planner实验
roslaunch ego-planner single_run_in_exp.launch
sh shfiles/record.sh
roslaunch ego_planner rviz.launch
如果实验中遇到意外怎么办!!!
case 1
: VINS定位没有飘,但是规划不及时/建图不准确导致无人机规划出一条可能撞进障碍物的轨迹。如果飞手在飞机飞行过程中发现无人机可能会撞到障碍物,在撞上前把6通道拨回上侧,此时无人机会退出轨迹跟随模式,进入VINS悬停模式,在此时把无人机安全着陆即可case 2
:VINS定位飘了,表现为飞机大幅度颤抖/明显没有沿着正常轨迹走/快速上升/快速下降等等,此时拨6通道已经无济于事,必须把5通道拨回中位,使无人机完全退出程序控制,回到遥控器的stablized模式来操控降落case 3
:无人机已经撞到障碍物,并且还没掉到地上。此时先拨6通道,看看飞机能不能稳住,稳不住就拨5通道手动降落case 4
:无人机撞到障碍物并且炸到地上了:拨5通道立刻上锁,减少财产损失case 5
:绝招 反应不过来哪种case,或者飞机冲着非常危险的区域飞了,直接拨7通道紧急停桨。这样飞机会直接失去动力摔下来,对飞机机身破坏比较大,一般慢速情况下不建议。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。