先看展示视频https://www.bilibili.com/video/BV18P411U7m2/?spm_id_from=333.337.search-card.all.click
https://www.bilibili.com/video/BV1vT411B7oj/?spm_id_from=333.999.0.0
gitee链接
https://gitee.com/Canada-a/my_drone.git
使用说明:
## 直接下载压缩包drone_ws到主目录编译就行或者git clone
git clone步骤:
在主目录下打开终端,输入:
git clone https://gitee.com/Canada-a/my_drone.git
然后进入my_drone里面
把drone_ws这个工作空间复制或者移动到主目录下进行编译就行。
cd drone_ws
catkin_make
## 该代码是在T265 PX4 ROS MOVEBASE LD06雷达下的自主导航规划无人机
## 使用方法:
* 先要配置T265定位,这个可以在网上搜,可以参考`https://www.bilibili.com/video/BV16o4y177fV/?spm_id_from=333.788`
`https://blog.csdn.net/qq_38768959/article/details/127775815?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169898636816800225538514%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169898636816800225538514&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-127775815-null-null.142^v96^pc_search_result_base6&utm_term=px4%20t265&spm=1018.2226.3001.4187` 这两个
* 定位可以了后,记得开启你对应的雷达驱动,就可以运行这个功能包里的程序了
## my_nav功能包使用
#先把drone_ws/src/my_nav/config目录下的costmap_common_params.yaml文件打开,修改
observation_sources的参数
scan: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true}把
sensor_frame:以及topic:的内容修改成你对应的雷达的坐标系和话题即可。
# launch文件 ##记住cartographer算法要自己配,如果不想建图且能导航的话直接用下面的noslam_nav.launch ,要想建图导航的话要自己配好slam算法包
* carto_slam.launch 这个是启动cartographer算法的,但是是后台运行,没有rviz。
* map.launch 这个是用cartographer建图的,可以直接用
* move_base.launch 这个配置的movebase的文件,不用管
* nav_demo_indoor3.launch 这个是一边建图一边导航的
* noslam_nav.launch 这个挺有意思的,就是不需要建图又可以局部导航的文件,具体效果可看` https://www.bilibili.com/video/BV18P411U7m2/?spm_id_from=333.337.search-card.all.click`
* sim.launch 这个是配合px4仿真使用的
# src文件
* ros_nav.cpp 这个很重要,这个是把movebase的规划速度给到px4底层控制的代码,实机和xtdrone仿真的区别就在这了,具体可看代码注释
* send_goal.cpp 这个是可以多航点自己导航的代码,就是不用rviz打点,我这里只给了一个点,具体的可以自己分析代码自己加自己想要的点上去就行了,就不在这过多赘述了
## 操作命令步骤
* 在启动完mavros和t265后,运行如下
* * 以不建图导航为例子
* cd ~/drone_ws
* source devel/setup.bash
* roslaunch my_nav noslam_nav.launch
* 再开一个终端启动movebase和px4转换节点
* rosrun my_nav ros_nav
* * 然后飞机会自己起飞到0.6m左右的高度悬停,这时候rviz里打点导航就可以了
## 扩展
其实不一定非得要t265,用单线雷达定位以及气压定高也可以的,只是需要把雷达的slam建图位置给搞出来给飞控做ekf融合也行。用vins也可以的,只是要把vins里程计给飞控做下融合就行,方法就是把里程计发布到`mavros/vision_pose/pose`这个话题就行。