PIP环境配置
sudo apt install python-pip
pip install pyquaternion
解决键盘操控问题
bug记录
px4报错
可能是因为虚拟机未联网
hostname -I
检查是否有IP地址 ,如果没有
reboot
或者
# 1. 停止network-manager服务
sudo service network-manager stop
# 2. 删除/var/lib/NetworkManager/NetworkManager.state文件
sudo rm /var/lib/NetworkManager/NetworkManager.state
# 3. 启用network-manager服务
sudo service network-manager start
indoor1.launch报错
[ERROR] [1696755605.331327, 1814.801000]: Spawn service failed. Exiting.
执行以下代码给予权限
chmod +x /home/drone/catkin_ws/src/gazebo_ros_pkgs/gazebo_ros/scripts/spawn_model
gazebo运行报错
killall -9 gzclient
killall -9 gzserver
彻底关闭gazebo,重试
生成随机地图
没有robocup.launch文件:
重新下载XTDrone后
cp -r ~/XTDrone/sitl_config/launch/* ~/PX4_Firmware/launch/
需要的行为如上面代码,但是可以直接下载到对应代码后,用xftp传输到虚拟机上,cp到对应目录,避免重复编译
VINS安装过程问题
cmake切换高低版本问题
cmake压缩包:网址
cmake 指定版本方法:
3.1.2版本:
wget https://cmake.org/files/v3.13/cmake-3.1.2-Linux-x86_64.tar.gz
tar -xzvf cmake-3.1.2-Linux-x86_64.tar.gz
sudo mv cmake-3.1.2-Linux-x86_64 /opt/cmake-3.1.2
sudo ln -sf /opt/cmake-3.1.2/bin/* /usr/bin/
cmake --version
可见版本为3.13.0
切回版本同理
sudo ln -sf /opt/cmake-3.23.1/bin/* /usr/bin/
ceres使用历史版本(不然VINS编译报错)
删除原版本
sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -r /usr/local/include/ceres /usr/local/lib/libceres.a
下载新版本
https://codeload.github.com/ceres-solver/ceres-solver/tar.gz/refs/tags/1.14.0
电脑下载上传至虚拟机,或者git clone
依赖项安装
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
或者按照说明文档安装
然后按照说明文档安装VINS-fusion(切换高版本cmake)
cp -r ~/XTDrone/sensing/slam/vio/VINS-Fusion ~/catkin_ws/src/
mkdir ~/catkin_ws/scripts/
cp ~/XTDrone/sensing/slam/vio/xtdrone_run_vio.sh ~/catkin_ws/scripts/
cd ~/catkin_ws
catkin build
yaml配置
注意按照使用文档他在yaml中添加了pose_graph_save_path,而在后文中有重复内容,所以需要把前面重复的删掉,后面改为对应虚拟机名字的地址
imu_topic: "/iris_0/imu_gazebo"
image0_topic: "/iris_0/stereo_camera/left/image_raw"
image1_topic: "/iris_0/stereo_camera/right/image_raw"
output_path: "/home/drone/catkin_ws/vins_output"
pose_graph_save_path: "/home/drone/catkin_ws/vins_output/pose_graph/" # save and load path
比赛的时候应该要把虚拟机的名字改成对于比赛虚拟机的名字
查看节点关系:
rosrun rqt_graph rqt_graph
rostop查看
rosparam list
rostopic list
rosmsg show 话题名
无人机配置
传感器配置
如果使用它robocup.launch原始的配置,那默认选择为typhoon_h480,则编辑地址为
gedit ~/PX4_Firmware/Tools/sitl_gazebo/models/typhoon_h480
这样它默认会出现6台一模一样配置的无人机,如果要添加自己要的对应无人机,地址为
gedit PX4_Firmware/launch/robocup.launch
可见代码如下
<!-- typhoon_h480_1 -->
<group ns="typhoon_h480_1">
<!-- MAVROS and vehicle configs -->
<arg name="ID" value="1"/>
<arg name="ID_in_group" value="1"/>
<arg name="fcu_url" default="udp://:24541@localhost:34581"/>
<!-- PX4 SITL and vehicle spawn -->
<include file="$(find px4)/launch/single_vehicle_spawn_xtd.launch">
<arg name="x" value="3"/>
<arg name="y" value="-3"/>
<arg name="z" value="0"/>
<arg name="R" value="0"/>
<arg name="P" value="0"/>
<arg name="Y" value="0"/>
<arg name="vehicle" value="typhoon_h480"/>
<arg name="sdf" value="typhoon_h480"/>
<arg name="mavlink_udp_port" value="18571"/>
<arg name="mavlink_tcp_port" value="4561"/>
<arg name="ID" value="$(arg ID)"/>
<arg name="ID_in_group" value="$(arg ID_in_group)"/>
</include>
将其中
<arg name="vehicle" value="typhoon_h480"/>
<arg name="sdf" value="typhoon_h480"/>
value改为你对应的飞机名,如indoor里面的
<arg name="vehicle" value="iris"/>
<arg name="sdf" value="iris_2d_lidar"/>
传感器直接对照
gedit PX4_Firmware/Tools/sitl_gazebo/models/iris_2d_lidar/iris_2d_lidar.sdf
进行添加和修改。
激光范围太小,所以需要视觉/3D激光
10.11记录
cd catkin_ws/src/VINS-Fusion/config/xtdrone_sitl/
这个文件夹放xtdrone_sitl里的文件(见群里发的)
cd catkin_ws/src/VINS-Fusion/vins_estimator/launch/
这个文件夹里放VINS_launch里的文件(同名替换)
cd PX4_Firmware/Tools/sitl_gazebo/models/typhoon_h480
这个文件夹放typhoon_h480.sdf这个文件,到此传感器配置结束