本來想在linux上自己一步步搭建 px4的**gazebo程式的,查了資料發現docker已經打包好了,就直接找到這個目錄,跟著一步一步的安裝
px4 docker
但是在安裝的過程中,有一些學習和踩坑如下:
1curl -fssl get.docker.com -o get-docker.sh
有關curl的使用
-fssl 相當於合併幾個命令 -f -s -s -l
sudo sh get-docker.sh
執行完上面那一步,進入src/firmware 目錄下,再輸下面的命令(其他目錄下執行會報fatal錯誤)
我上面那樣操作不行的原因是 我執行git命令的時候報了這個錯
fatal: not a git repository (or any of the parent directories): .git
3cd firmware
4xhost +
這個命令的解釋
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 ::rw \ -v /tmp/.x11-unix:/tmp/.x11-unix:ro \ -e display=:0 \ -p 14556:14556/udp \ --name=:
參考docker run的命令
–env 指定環境變數
-v 指定容器內目錄與宿主機目錄共享(: 之前是宿主機資料夾,之後是容器需共享的資料夾),
rw代表
這個時候只有docker的寫可以同步到宿主主機上面去,宿主主機寫不同步到docker。而且一旦宿主主機
上寫了修改了對映檔案,那麼docker裡面再怎麼寫都不再同步到宿主主機了
-v 共享本地unix埠,訪問x11 的顯示介面(docker執行gui軟體的配置方法)
ro代表
這個時候docker內也不能寫,宿主主機寫了也不同步進去了,相當於建立的時候拷貝乙份不可改變的配
置進來而已。
-e 修改環境變數display,對映到主機的0埠
6cd src/firmware
進入容器裡面的 這個資料夾
7 執行make px4_sitl_default gazebo
8 再執行make px4_sitl_default gazebo
(2)在docker宿主機關閉x11驗證
sudo vim /etc/lightdm/lightdm.conf
#增加 xserver-allow-tcp=true
sudo systemctl restart lightdm
xhost + #每次重新開機後都要執行
9 成功執行起來
PX4原始碼分析4 PX4軟體結構
px4自動駕駛儀軟體可分為三大部分 實時作業系統 中介軟體和飛行控制棧。提供posix style的使用者操作環境,進行底層的任務排程。px4中介軟體執行於作業系統之上,提供裝置驅動和乙個微物件請求 micro object request broker,uorb 用於駕駛儀上執行的單個任務之間的非...
PX4原始碼分析5 PX4啟動流程
上電之後程式入口為firmware nuttx nuttx arch arm src stm32 stm32 start.c中的 start函式,負責stm32晶元的底層初始化,包括是時鐘,gpio等。start函式呼叫firmware nuttx nuttx sched os start.c中的o...
學習PX4前言
剛開始接觸px4原始碼很懵,覺得難,主要原因是以前看微控制器 邏輯很好理解,所以就進入了乙個誤區,把px4也像微控制器一樣去理解,如果你抱著搞懂px4,跟搞懂微控制器花一樣的時間成本去學習的心態,那確實很難 一條明明要走一天的路,你只花乙個小時去走 靜下心下來,會發現px4這座山其實並不陡,只是單純...