在WSL2上运行PX4,按照官网教程一步一步做,每次都卡在最后一步,PX4端一直waiting。。。卡了一下午加一晚上,最后终于连上了!!喜大普奔!!!我总结了一下几种连不上的原因:
1.主机IP和WSL2 IP设置不正确
一定一定要仔细检查这两个地址是否设置正确!!
1.查看主机IP
主机IP也就是在AirSim setting 文件中设置的LocalHostIp。在主机命令行输入,以下代码
ipconfig
以太网适配器 vEthernet (WSL)” 中的 “IPV4 地址” 即为主机地址。
2.查看WSL2 IP
WSL2 IP也就是AirSim setting 文件中设置的ControlIp。在 Linux 命令行中输入
ip address show
即可查看 WSL2 的 IP 地址,eth0 inet 后面的就是WSL2的IP地址。
可以分别在Windows端和Linux端试试是否可以相互ping通。
ping + IP
2.电脑防火墙是否允许通过
如果IP地址设置正确,但是ping不通,那就是防火墙的问题了,可能通信被防火墙隔离了。去设置一下允许通过的应用即可(百度即可),我采用了简单粗暴的方法—用的时候直接把防火墙关闭。
3.忘记在rcS文件中添加
更改 Linux 中的 文件:
home/PX4/PX4-Autopilot/ROMFS/px4fmu_common/init.d-posix/rcS
阅读官方文档中的 “PX4 SITL with WSL2”,如果没有以下内容,则可能连不上,将它们加入到该文件中:(要不要添加看PX4版本,有些版本就不用添加)
# If PX4_SIM_HOST_ADDR environment variable is empty use localhost.
if [ -z "${PX4_SIM_HOST_ADDR}" ]; then
echo "PX4 SIM HOST: localhost"
simulator start -c $simulator_tcp_port
else
echo "PX4 SIM HOST: $PX4_SIM_HOST_ADDR"
simulator start -t $PX4_SIM_HOST_ADDR $simulator_tcp_port
fi
4.PX4版本错误
我的问题最后就是这个原因!!如果前几个都试过了不行的话,那恭喜你,要重新git checkout 其他版本了。
官网在PX4 in SITL - AirSim中提到了,And find the latest stable release fromhttps://github.com/PX4/PX4-Autopilot/releasesand checkout the source code matching that release, for example:
git checkout v1.11.3
我就照着这么做了,但是后来发现是因为这个example v1.11.3版本的问题,这个版本到最后出现了一直等待的情况,最后我又去重新git checkout 其他版本1.12.3就可以连上了。
git checkout v1.12.3