PX4 docker gazebo 安装踩坑记

本来想在Linux上自己一步步搭建 px4的仿真gazebo程序的,查了资料发现docker已经打包好了,就直接找到这个目录,跟着一步一步的安装
PX4 docker

但是在安装的过程中,有一些学习和踩坑如下:
1
curl -fsSL get.docker.com -o get-docker.sh
有关curl的使用
-fsSL 相当于合并几个命令 -f -s -S -L
sudo sh get-docker.sh

2
mkdir src
cd src
git clone https://github.com/PX4/Firmware.git
生面这一步一定跟着做,下载速度非常慢,我本来直接训练下载的zip文件解压后移到 src下面 但是这样为后面埋坑了
加快git clone的方法
运行完上面那一步,进入src/Firmware 目录下,再输下面的命令(其他目录下运行会报fatal错误)

git submodule update --init --recursive 下载也是很慢,我是直接去GitHub把子模块下载下来放到相应的文件夹里面去

这一步的解释是:
当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来
的,此时,只需执行如下命令:
git submodule update --init --recursive
即可将子模块内容下载下来后工程才不会缺少相应的文件。
参考这个 git submodule 的使用
我上面那样操作不行的原因是 我执行git命令的时候报了这个错
fatal: not a git repository (or any of the parent directories): .git

3 cd Firmware

4 xhost +
这个命令的解释
xhost 是用来控制X server访问权限的,这个命令将允许别的用户启动的图形程序将图形显示在当前屏幕上.。通常当你从hostA登陆到hostB上运行hostB上的应用程序时,做为应用程序来说,hostA是client,但是作为图形来说,是在hostA上显示的,需要使用hostA的Xserver,所以hostA是
server.因此在登陆到hostB前,需要在hostA上运行xhost +,来使其它用户能够访问hostA的Xserver.
xhost + 是使所有用户都能访问Xserver.
xhost + ip使ip上的用户能够访问Xserver.
xhost + nis:user@domain使domain上的nis用户user能够访问
xhost + inet:user@domain使domain上的inet用户能够访问。

5docker run -it --privileged \ --env=LOCAL_USER_ID="$(id -u)" \ -v <host_src>:<container_src>:rw \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -e DISPLAY=:0 \ -p 14556:14556/udp \ --name=<local_container_name> <container>:<tag> <build_command>
参考docker run的命令

–env 指定环境变量
-v 指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹),
rw代表
这个时候只有docker的写可以同步到宿主主机上面去,宿主主机写不同步到docker。而且一旦宿主主机
上写了修改了映射文件,那么docker里面再怎么写都不再同步到宿主主机了
-v 共享本地unix端口,访问X11 的显示接口(docker运行GUI软件的配置方法)
ro代表
这个时候docker内也不能写,宿主主机写了也不同步进去了,相当于创建的时候拷贝一份不可改变的配
置进来而已。
-e 修改环境变量DISPLAY,映射到主机的0端口
6 cd src/firmware
进入容器里面的 这个文件夹

7 运行make px4_sitl_default gazebo
报错c++: internal compiler error: Killed (program cc1plus) 查资料发现内存不够
点这儿看怎么增加内存,里面有一个命令有错,但是不执行那一步就行,或者可以看评论
8 再运行 make px4_sitl_default gazebo
报错
Can’t open display
也就是docker容器没有成功调动主机的GUI显示界面
然后百度了一堆教程 修改了一堆文件 最后好了 也不知道哪一个有用
自己猜的应该是下面两部管用
(1)安装xserver
$ sudo apt install x11-xserver-utils
许可所有用户都可访问xserver
xhost +

(2)在docker宿主机关闭X11验证
sudo vim /etc/lightdm/lightdm.conf
#增加 xserver-allow-tcp=true
sudo systemctl restart lightdm
xhost + #每次重新开机后都要运行
9 成功运行起来

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jaffe—fly

古人学问无遗力,少壮工夫老始成

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值