[Amovlab] 开源项目

  • 从0开始的无人机仿真平台搭建
    • 1. 基础环境
      • 1.1 新建本地代码仓库
      • 1.2 编译
        • 添加路径(记得 将Path To Prometheus替换成你的文件路径)
      • 1.3 安装ROS所需的其他插件或者库
        • 安装Mavros功能包
        • 安装rtabmap
        • 安装Octomap:
        • 激光SLAM依赖项安装(视情况安装):
      • 1.4 配置Prometheus_PX4
        • 环境配置
        • 编译BUG记录
        • Prometheus_PX4 编译成功!
        • 初次编译(使用 jMAVSim 模拟器)
        • 安装 PX4 Autopilot
        • 环境配置
        • 警告的解决办法
        • Gazebo模拟器在PX4上编译成功的关键点:
        • Install && Make
        • 更改cmake记录
      • 1.5 PX4 gazebo 编译成功!
        • 安装QGroundControl
          • 准备环境
          • Install
          • 初始化界面
    • 2. 无人机的仿真调试

从0开始的无人机仿真平台搭建

你好! 这是一篇无人机开源仿真平台的学习笔记, 如果你对无人机感兴趣的话,可以仔细阅读这篇文章,了解一下相关的基本知识。

1. 基础环境

这里采用Ubuntu18.04 + CUDA 11.7,ROS 1-melodic.
如果你没有安装ROS,请参考:Ubuntu18.04 melodic 安装与下载ROS。

1.1 新建本地代码仓库

git clone https://gitee.com/amovlab/Prometheus.git
cd Prometheus/
# 赋予编译权限
sudo chmod 777 ./compile_all.sh
./compile_all.sh

1.2 编译

需修改Prometheus/Modules/object_detection/CMakeLists.txt 的第156行(注释掉),不然会卡在下载环节,
手动下载SiamRPNVOT.model(提取码:2ckt ),然后放在Prometheus/Modules/object_detection/src/siam_rpn_lib路径下。
编译成功!

引用一篇知乎笔记

  • 特别强调说明:

目前每个模块都是一个独立的ros包,编译脚本会负责全部或部分编译模块代码,每个包的命名规则为prometheus_xxx因此如果你只做控制或者只做视觉,只需要编译对应的脚本即可,极大降低开发难度(比如你编译的时候你不感兴趣的代码报错了,也许这个报错你完全不需要考虑)

  • 编译脚本说明:

compile_all.sh默认编译项目中所有代码,因此编译时请确认每个模块都没有报错compile_control.sh则只编译控制部分代码,若只需要使用控制部分代码,运行./compile_control.sh即可,其他编译脚本其自行查阅理解

添加路径(记得 将Path To Prometheus替换成你的文件路径)
echo "source (Path To Prometheus)/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

如果你同时安装了ROS1ROS2请参考下面代码修改bashrc文件:

# source /opt/ros/eloquent/setup.bash
echo "ROS melodic (1) or ROS2 eloquent (2)?"
read edition
if [ "$edition" -eq "1" ];thensource /opt/ros/melodic/setup.bash  # source ~/catkin_ws/devel/setup.bashecho using ros1 melodicsource "/home/ps/data/project/amovlab/Prometheus/devel/setup.bash"
elsesource /opt/ros/eloquent/setup.bash echo using ros2 eloquent
fi

1.3 安装ROS所需的其他插件或者库

安装Mavros功能包
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod 777 ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh

安装rtabmap
sudo apt-get install ros-melodic-rtabmap*
安装Octomap:
sudo apt-get install ros-melodic-octomap-*
激光SLAM依赖项安装(视情况安装):

安装cartographer:

sudo apt-get install ros-melodic-cartographer*

1.4 配置Prometheus_PX4

在阿木开源项目的手册中:

prometheus_px4是Prometheus项目配套使用的PX4固件,Prometheus项目的仿真模块依赖PX4固件以及sitl_gazebo
ros功能包。(如果是配置Prometheus到真实无人机上那不需要配置prometheus_px4,因为这个是用于虚拟仿真的,真实无人机不需要)
但是实际参照手册安装make amovlab_sitl_default gazebo这一步时,会出现CMAKE的编译错误

环境配置
git clone https://gitee.com/amovlab/prometheus_px4.git
source prometheus_px4/Tools/setup/ubuntu.sh
cd prometheus_px4
git submodule update --init --recursive
# 这里有一个坑,如果你Ubuntu上安装了anaconda的话,官方安装toml empy jinja2 packaging的方式被我注释掉了,因为会装到anaconda的虚环境里,gazebo编译的时候找不到!
# pip3 install --user toml empy jinja2 packaging
sudo -H python3 -m pip install --user toml empy jinja2 packaging -i https://pypi.douban.com/simplecd prometheus_px4
# 这里有一个坑,官方的编译指令是不带sudo的,但是如果你没有给文件夹赋权就会报错
make amovlab_sitl_default gazebo_p450
# 加上sudo就OK了
sudo make amovlab_sitl_default gazebo_p450
编译BUG记录

编译不成功这个时候敲黑板了!先看一下bug:

[813/817] Linking CXX executable bin/px4
FAILED: external/Stamp/sitl_gazebo/sitl_gazebo-build /home/ps/data/project/amovlab/prometheus_px4/build/px4_sitl_default/external/Stamp/sitl_gazebo/sitl_gazebo-build
cd /home/ps/data/project/amovlab/prometheus_px4/build/px4_sitl_default/build_gazebo && /usr/local/bin/cmake --build /home/ps/data/project/amovlab/prometheus_px4/build/px4_sitl_default/build_gazebo -- -j 30
ninja: build stopped: subcommand failed.
Makefile:231: recipe for target 'px4_sitl' failed
make: *** [px4_sitl] Error 1

BUG

  • 网络上参考的解决方法:
sudo -H python3 -m pip install kconfiglib

然而我这,该方法没有效果,
上述BUG目前还未解决,推测是gazebo和PX4之间公用的插件版本不匹配,因为笔者是先装好了gazebo,但是gazebo模拟器在此PX4平台上有点问题。网上的其他朋友经验里是一直反复重装PX4,总有一次能成功,我试了很多次,没成功,不知道如何是好了,先放着吧。

后记
上述BUG们,通过修改cmake版本(详见后文的<更改cmake记录>)、相关指令(已在前文说明),以及tmp/bloary二进制编译库成功解决的。

Prometheus_PX4 编译成功!
sudo make amovlab_sitl_default gazebo_p450

初次编译(使用 jMAVSim 模拟器)

继续前进!
由于prometheus_px4是在PX4上二次开发的, 参考PX4 自动驾驶用户指南,于是乎,编译成功了:

make px4_sitl jmavsim

安装 PX4 Autopilot

由于上述PX4编译失败,于是决定编译一下另一个版本的PX4,感受下区别在哪。

环境配置
 git clone https://github.com/PX4/PX4-Autopilot.gitgit clone https://github.com//Firmware.git  # [已弃用,后文放链接]mv PX4-Autopilot PX4_Firmwaregit clone --recursive https://github.com/google/bloaty.git /tmp/bloaty \&& cd /tmp/bloaty && cmake -GNinja . && ninja bloaty && cp bloaty /usr/local/bin/ \&& rm -rf /tmp/*

直接编译版本: PX4_Firmware.zip(918.1 MB)

如果bloaty出现下载失败,建议切到文件路径/tmp/bloaty下逐个下载:

Cloning into '/tmp/bloaty'...
remote: Enumerating objects: 3170, done.
remote: Counting objects: 100% (652/652), done.
remote: Compressing objects: 100% (149/149), done.
remote: Total 3170 (delta 545), reused 502 (delta 497), pack-reused 2518
Cloning into '/tmp/bloaty/third_party/capstone'...
fatal: unable to access 'https://github.com/aquynh/capstone.git/': Failed to connect to github.com port 443: Connection timed out
fatal: clone of 'https://github.com/aquynh/capstone.git' into submodule path '/tmp/bloaty/third_party/capstone' failed
Failed to clone 'third_party/capstone'. Retry scheduled
Cloning into '/tmp/bloaty/third_party/demumble'...
Cloning into '/tmp/bloaty/third_party/googletest'...
fatal: unable to access 'https://github.com/google/googletest.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
fatal: clone of 'https://github.com/google/googletest.git' into submodule path '/tmp/bloaty/third_party/googletest' failed
Failed to clone 'third_party/googletest'. Retry scheduled
Cloning into '/tmp/bloaty/third_party/protobuf'...
fatal: unable to access 'https://github.com/protocolbuffers/protobuf.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
fatal: clone of 'https://github.com/protocolbuffers/protobuf.git' into submodule path '/tmp/bloaty/third_party/protobuf' failed
Failed to clone 'third_party/protobuf'. Retry scheduled
fatal: unable to access 'https://github.com/google/googletest.git/'
Failed to clone 'third_party/googletest' a second time, aborting
# 然后再次执行cmake -GNinja . ninja bloatycp bloaty /usr/local/bin/rm -rf /tmp/*

注意了,这里 cmake -GNinja . 也可能遇到如下错误或者警告:

警告的解决办法
cmake -GNinja -Wno-dev

这里也需要注意System re2 not found, using bundled version:

Gazebo模拟器在PX4上编译成功的关键点:
cd third_party/re2
make
make test
sudo make install
make testinstall
cd ../capstone/
make
make install
# 然后再次切换到/tmp/bloaty/,执行下面语句
cmake -GNinja -Wno-dev
# 然后把编译好的二进制库bloaty拷贝到指定位置
cd ..
sudo cp -r bloaty /usr/local/bin/   # 文件递归拷贝
sudo rm -rf /tmp/*   # 大功告成,可以删到这个临时的仓库了
ls /usr/local/bin/bloaty/   # 检查一下拷贝是否成功

注意了啊,敲黑板!上述步骤决定了你gazebo模拟器能否编译通过。
建议gazebo编译出问题的重头再来一遍。
cmake成功图示(只截图了底部几行):

Install && Make
cd PX4-Autopilot/
git submodule update --init --recursive
sudo apt update  # 本来用的中科大源,奈何找不到包,于是更换阿里源
sudo apt upgrade  # 顺便升级一下包
sudo bash ./Tools/setup/ubuntu.sh

gazebo官方文档
暂时忽略下面的错误:
敲黑板!记住这两个cmake路径,因为cmake3.17根3.23的安装过程非常不一样!3.17不会自动生成这两个路径下的文件夹,后期我们要自己复制过去。

/usr/local/share/cmake-3.23
/usr/local/bin/cmake
更改cmake记录

CMAKE版本更换为3.17 :下载地址。
cmake修改参考:文档。

 sudo chmod +x cmake-3.17.2-Linux-x86_64.shsudo ./cmake-3.17.2-Linux-x86_64.sh# 切换到cmake3.17的安装路径cd /your path to cmake/cmake-3.17.2-Linux-x86_64/bin  sudo cp cmake /usr/local/bin/cd /your path to share/cmake-3.17.2-Linux-x86_64/sharesudo cp -r cmake-3.17 /usr/local/share/sudo gedit ~/.bashrc# 在bashrc最后一行添加下面的指令,记得改成你自己的cmake路径
export PATH="/Your path to cmake/cmake-3.17.2-Linux-x86_64/bin:$PATH"
source ~/.bashrc

1.5 PX4 gazebo 编译成功!

结束了上述踩坑记录之后,再次

cd
git clone https://github.com/PX4/Firmware
mv Firmware PX4_Firmware
cd PX4_Firmware/
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive
sudo make px4_sitl_default gazebo

更改cmake版本之后成功编译gazebo!!!
在此环境基础的前提下,
一会再试试阿木的开源项目!!!

安装QGroundControl

到这里,要想实现对机器人的控制还需要安装QGroundControl。

QGroundControl为PX4或ArduPilot动力飞行器提供完整的飞行控制和飞行器设置。它为初学者提供了简单直接的使用,同时仍然为有经验的用户提供高端功能支持。
控制器安装步骤如下:

sudo usermod -a -G dialout $USER

准备环境
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
sudo apt install libfuse2 -y
Install

下载工具包:QGroundControl.AppImage

chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage

涉及的知识点很多,推荐大家有空读一读官方文档。

初始化界面

2. 无人机的仿真调试

在阿木开源项目的手册中:认识一下gazebo模拟器仿真的定位。

(未完待续…)
跟踪仿真:BUG记录

[UAV] 无人机仿真平台搭建相关推荐

  1. 无人机仿真之搭建仿真平台-SITL、gazebo、ROS

    文章目录 无人机仿真之仿真平台搭建 前言 ardupilot-SITL---APM飞控 安装 启动仿真 简单仿真 结合gazebo仿真软件的3D环境仿真 环境安装 示例 多无人机仿真 终端操作无人机的 ...

  2. Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(XTDrone的)

    摘自:https://www.ngui.cc/51cto/show-23557.html Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建 编程学习 · 2020/7/12 1 ...

  3. darknet_ros安装的以及在PX4无人机仿真平台的目标检测

    darknet_ros的安装以及在PX4无人机仿真平台的目标检测 参考资料: https://github.com/leggedrobotics/darknet_ros https://gitee.c ...

  4. matlab火箭模型,基于Matlab/Simulink的新型火箭建模与仿真平台搭建

    2018 年 11 月第 14 卷 第 4 期 系 统 仿 真 技 术 System Simulation Technology Nov. ,2018 Vol. 14,No. 4 中图分类号: TP3 ...

  5. 百度Apollo仿真仿真平台搭建-附1

    百度Apollo仿真仿真平台搭建-附1 1 Apollo版本升级 2 参考书籍 3 运行Apollo仿真代码 1 Apollo版本升级 Apollo由版本V3.5升级到V6.0(Ubuntu18.04 ...

  6. ROS学习(3)——仿真平台搭建

    最近需要学习多机器人协同控制的相关知识,在古月居看到博主小黑鸭的文章,和我学习的内容很相似,实验室里用的移动机器人都是ROBOTIS公司的Turtlebot3,就参考博主的文章进行了学习. 参考文章: ...

  7. XTDrone无人机仿真平台

    XTDrone无人机仿真平台 背景 XTDrone 展示 背景 近年来,无人机的智能化程度不断提高,集群的规模不断增大,在这种背景下,良好的无人机通用仿真平台的重要性越发凸显.相较于无人车和地面机器人 ...

  8. FPGA图像仿真平台搭建,模拟摄像头时序---开源代码

    FPGA图像处理中,有些时候写算法的时候,需要查看图像算法处理之后的效果如何,来验证自己算法的正确性,可能身边没有板子,我们可以通过仿真结果,来验证算法的正确性. 源文件免费下载:FPGA图像处理仿真 ...

  9. Gazebo——仿真平台搭建(基于Ubuntu20.04)

    目录 Gazebo安装配置 创建仿真环境 仿真使用 Rviz查看摄像头采集的信息 Kinect仿真 问题解决: 1.gazebo--SpawnModel: Failure - model name m ...

最新文章

  1. 那些年借“云”出海的日子
  2. UBUNTU下gedit编辑器出现中文乱码现象
  3. 中国殡葬行业投资战略建议与前景策略分析报告2022-2028年版
  4. ArcGIS中的WKID(转)
  5. dotnet 找不到控制生成器_真的有自媒体原创文章生成器吗?
  6. Android音视频开发(2)常用的系统播放器MediaPlayer
  7. UI设计干货|抽屉导航(汉堡菜单)模板素材
  8. VB一个可以改变箭头方向的气泡提示
  9. 【maven】聚合工程
  10. 书籍-分布式系统常用技术及案例分析
  11. el-tree多选获取选中的节点ID
  12. Polar Si9000如何选择模型计算射频线宽?
  13. 汉语言文学如何利用计算机思维,计算机在应用于汉语言文学时产生的优势与局限.PDF...
  14. 驱动精灵的护眼大师屏保非常不错
  15. 计算机基础知识实验课教案,高职《计算机网络基础》实验课程教学设计
  16. 论文阅读:CVPR2021 | Involution: Inverting the Inherence of Convolution for Visual Recognition
  17. CS 251 Assignment 12 知识点总结与注意
  18. 在Java中将二进制数转化成十进制数
  19. 关于目前流行的 Redis 可视化管理工具的详细评测
  20. Java整合Python方法总结

热门文章

  1. vue 移动端H5微信支付和支付宝支付
  2. 实现Office的COM插件
  3. 计算机上显示F怎么取消,联想笔记本如何关闭Fn功能键 怎么取消电脑的f
  4. 康托展开详解 -csdn博客
  5. MATLAB虫害检测农业应用设计
  6. flex是什么及flex布局语法
  7. mysql为什么需要中间件_为什么要用数据库中间件
  8. tshark命令小结
  9. 人力资源战略规划新思考
  10. 啤酒灌装机的控制器西门子S7-200SMART