从虚拟机里安装Ubuntu到PX4的jmavsim/gazebo仿真

2024-03-29 15:18

本文主要是介绍从虚拟机里安装Ubuntu到PX4的jmavsim/gazebo仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2020.2.21
一场瘟疫把很多人都困在了家里,闲来无聊,打算学学PX4,又因为手头没有pixhawk实物,没法进行半实物仿真(硬件在环仿真),只能进行虚拟仿真。
而虚拟仿真的jMAVsim只有四旋翼模型,gazebo只支持在Ubuntu里运行,所以还是打算装一个Ubuntu。之前装过Ubuntu的双系统,感觉浏览网页,下载文件什么的各种不方便,于是决定用虚拟机来装一个Ubuntu。

下面是一些踩坑过程,记录下来方便以后查看。

安装ubuntu

先上网搜了下Ubuntu,发现有个win10自带的Ubuntu子系统,以为会比虚拟机好用一些,不自量力的想试一下,结果图形界面一直搞不出来,然后就果断放弃了。后来又百度了一下,果然没搜到有人在win10自带的linux子系统下 搭建PX4编译环境,庆幸自己及时放弃了。

所以还是回到虚拟机
先下载VMware(我下的是15.5),安装

然后网上找一个ubuntu的iso镜像,可以在国内源或者官网上下。我是在网易镜像站上下载的ubuntu16.04
链接:http://mirrors.163.com/ubuntu-releases/

然后安装ubuntu,这部分在网上有各种教程,就不细说了。。

我稀里糊涂用了它推荐的分区,没自定义分区(不过好像区别也不大,就一点,后面再说)

安装了之后,先把ubuntu的源换成国内的,这样下载速度会快一些。
我换的是阿里云的源,照着 https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b113jL5RS 一通操作,就完事了。

简单来说就是:
先打开这个文件(打开之前可以先备份) /etc/apt/sources.list

sudo gedit /etc/apt/sources.list

然后全删掉,换成

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial maindeb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates maindeb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universedeb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

(其实就是把网址全换了)
然后保存关掉就行了

搭建PX4的编译环境

官网教程:

https://dev.px4.io/v1.9.0/en/setup/dev_env_linux.html#jmavsimgazebo-simulation

在搭建环境之前先把用户添加到用户组,这一步如果不做会产生很多权限问题。还有需要注意的是不要用sudo去修复权限问题。。。

sudo usermod -a -G dialout $USER

注销账户然后重新登录才能生效

接下来官网上给了一个看起来非常省事的方法,就是直接运行.sh文件里的代码批量安装(但是中间出错了也挺麻烦)
主要是下面这几个
几个.sh文件以及它们之间的关系

运行的话就像这样⬇
运行.sh文件进行环境安装
这过程中遇到了两个问题:

这些.sh文件运行起来是这样的:
运行后一个的时候会先下载前一个,先把前面的安装上,再把多出来的包安装上。

我一开始想直接运行ubuntu_sim_nuttx,但是运行的时候无法连接网站,terminal直接崩溃,所以我就直接把这几个文件下载下来,先运行ubuntu_sim_common_deps.sh,然后把后面几个文件的后面几行代码复制到terminal里运行。

第二个问题是提示 python2.7 过期,(据说)ubuntu16.04 自带的是python2,所以运行.sh文件时安装的是python2.7以及相应的支持包,运行过程中会报很多错
所以需要再独立安装一下 python3,之后再安装相应的各种支持包,或者直接编译,根据报错信息缺啥装啥就行了。

这两个问题弄完之后,其他的问题可能就是arm-none-eabi工具链的问题,也是缺啥装啥就行。

接下来编译一下固件试试

在 ~/src/Firmware 文件夹下运行

make px4_fmu-v2_default

编译之前可以先make help一下,看看有哪些make命令

我编译成功之后是这样

在这里插入图片描述

下一步就是在jMAVsim仿真一下

在 ~/src/Firmware 文件夹下

make px4_sitl jmavsim

遇到了错误:

com.jogamp.opengl.GLException: X11GLXDrawableFactory - Could not initialize shared resources 
for X11GraphicsDevice[type .x11, connection :0, unitID 0, handle 0x0, owner false, 
ResourceToolkitLock[obj 0x64632a71, isOwner false, <22939c47, 5577a0b5>
[count 0, qsz 0, owner <NULL>]]]

从网上找的一张图片,当时的错误我忘了截图了

解决办法:
在.bashrc文件中设置环境变量“export SVGA_VGPU10=0”

sudo gedit ~/.bashrc

在最后一行添加“export SVGA_VGPU10=0”
在这里插入图片描述

然后这次终于通过编译了,起飞试一下

我以为会有一个新的px4命令行窗口,其实就是在terminal的窗口继续输入指令

commander takeoff

在这里插入图片描述

下面继续弄gazebo仿真

在 ~/src/Firmware 文件夹下

make px4_sitl gazebo

这次在编译的时候我遇到的问题是:

virtual memory exhausted: Cannot allocate memory

看起来是内存不够用了,不过内存不够可以用swap来凑,可以看一下内存和swap空间

free -m

会显示这个

              total        used        free      shared  buff/cache   available
Mem:           2943         648         764          12        1530        1956
Swap:           974           0         974

单位是M,也就是说内存大概是3g,swap大概是1g

这时候没自定义安装Ubuntu的问题就出来了,我的swap只有1G,内存这种东西可以在虚拟机外面直接设置,但是swap需要在Ubuntu里扩充。

这里我用的是增加swap文件的方法(而不是扩充分区)

swap扩容文件的添加与删除过程如下:

  • 添加swap文件进行扩容的方法

首先创建一个swap文件夹,并在里面再创建一个文件swapfile

cd /
sudo mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1M count=2048

swap容量=bs*count,也就是说上一条命令创建了2G的swap文件

接着把生成的文件转化成swap文件

sudo mkswap swapfile

接着激活swap空间

sudo swapon swapfile

然后设置成开机自动挂载
先备份文件 /etc/fstab:

sudo cp /etc/fstab /etc/fstab.bak

然后将swapfile路径内容写入到/etc/fstab文件当中,在最后一行添加

/swap/swapfile none swap sw 0 0

这时候再用free -m 命令看一下swap空间

              total        used        free      shared  buff/cache   available
Mem:           2943         630        1699           9         614        2039
Swap:          3022           0        3022

可以看到swap变成了3G


  • 这里也介绍一下删除swap空间的方法

首先先停用swap文件

sudo swapoff -v /swapfile

然后打开fstab文件修改

sudo gedit /etc/fstab

删除之前添加的那一行

然后再删除swap文件就行了

sudo rm /swap/swapfile

扩充了swap空间之后,终于编译通过,gazebo也大功告成!
在这里插入图片描述

同样是起飞试一下:

commander takeoff

在这里插入图片描述

暂时完结!!

目前还是小白一个,接下来利用仿真来调试程序的部分争取也继续上传。

接下来的计划是用Windows中的Matlab修改并生成px4代码,然后再在Ubuntu里进行虚拟仿真

这篇关于从虚拟机里安装Ubuntu到PX4的jmavsim/gazebo仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858927

相关文章

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

电脑软件不能安装到C盘? 真相颠覆你的认知!

《电脑软件不能安装到C盘?真相颠覆你的认知!》很多人习惯把软件装到D盘、E盘,刻意绕开C盘,这种习惯从哪来?让我们用数据和案例,拆解背后的3大原因... 我身边不少朋友,在使用电脑安装软件的时候,总是习惯性的把软件安装到D盘或者E盘等位置,刻意避开C盘。如果你也有这样的习惯,或者不明白为什么要这么做,那么我

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤