最近开始搭建PX4环境,搭建是需要从github下载工程,然后使用语句git submodule update --init --recursive更新工程子模块,但往往由于网络原因这一步需要很久,甚至会失败。因为github是外网,在上面下载代码会受到很大限制,往往会出现下面的问题:
即无法连接到github,查阅了相关资料后,我发现了解决更新子模块失败的方法:
1.打开你下载的PX4源码,即Firmware文件夹,找到其中的.gitmodules,如下图:
2…gitmodules有以上格式,path代表其要更新的子模块位置,url代表从哪个地方下载源码,既然github连接困难,就将url中所有github.com改为github.com.cnpmjs.org,改完后保存
3.保存后CRTL+ALT+T打开终端,然后cd到Firmware文件夹下,运行git submodule sync,将改动更新
4.更新完后,再次运行submodule update --init --recursive,就可以完成PX4子模块更新
后续补充
在后来翻看PX4源码后,我发现除了Firmware主目录文件夹下有.gitmodules文件,在某些子模块也存在,同理,我们也需要修改这些.gitmodules文件,具体做法补充如下
cd PX4源码文件夹/src/drivers/uavcan/libuavcan
gedit .gitmodules
修改.gitmodules文件,将该文件改为如下
[submodule "dsdl"]
path = dsdl
url = https://github.com.cnpmjs.org/UAVCAN/dsdl
branch = legacy-v0
[submodule "libuavcan/dsdl_compiler/pyuavcan"]
path = libuavcan/dsdl_compiler/pyuavcan
url = https://github.com.cnpmjs.org/UAVCAN/pyuavcan
将子模块更新网站从github.com改为github.com.cnpmjs.org,然后运行
git submodule update --init
接下来,按同样的步骤修改以下文件夹中的.gitmodules文件,每次修改完文件,需要利用git submodule update --init更新一下
需要修改的文件目录如下
cd PX4源码文件夹/src/drivers/uavcan/libuavcan
cd PX4源码文件夹/Tools/jMAVSim
cd PX4源码文件夹/Tools/sitl_gazebo
cd PX4源码文件夹/platforms/qurt/dspal
cd PX4源码文件夹/src/drivers/uavcan/libuavcan/libuavcan/dsdl_compiler/pyuavcan
cd PX4源码文件夹/Tools/sitl_gazebo/external/OpticalFlow