无人机在动捕环境中实验的一般步骤
1、装机飞控和机载电脑之间的连接2、给机载电脑下载vrpn的包以ubuntu20.04LTS-ROS-noetic为例1安装VRPN库sudo apt install ros-noetic-vrpn2拉取并编译vrpn_client_ros节点代码mkdir -p ~/vrpn_client_ros/src cd ~/vrpn_client_ros/src git clone https://github.com/ros-drivers/vrpn_client_ros.git cd ~/vrpn_client_ros catkin_make3、给机载电脑安装mavros1安装sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras2测试roslaunch mavros px4.launch3有以下报错运行sudo /opt/ros/kinetic/lib/mavros/install_geographiclib_datasets.sh4、写一个.sh脚本文件一键启动1首先开动捕cd ~/vrpn_client_ros source devel/setup.bash roslaunch vrpn_client_ros sample.launch server:192.168.1.100其中192.168.1.100是动捕的ip地址2把动捕的位置转给mavrosrosrun topic_tools relay /vrpn_client_node/BIU380/pose /mavros/vision_pose/pose3 启动mavros(针对px4和apm的控各有不同)roslaunch mavros px4.launch fcu_url:/dev/ttyUSB0:921600 gcs_url:udp://192.168.1.100 roslaunch mavros apm.launch fcu_url:/dev/ttyUSB0:921600 gcs_url:udp://192.168.1.100其中192.168.1.100是电脑的ip地址,其中的gcs_url:udp://192.168.1.100指的是MAVROS要把数据发送给谁—— 也就是**地面控制站GCS**的 IP 地址。这个 IP 应该是你“地面站电脑”也就是你当前使用 NoMachine 远程控制机载电脑的这台电脑的 IP 地址在你这台电脑上如果你用的是 QGroundControl 等工具也要确保它监听的是这个端口默认是 14550查看电脑ip的方法①winR 输入cmd打开命令提示符窗口输入ipconfig在本地连接部分找到IPv4地址② 控制面板-网络和Internet-查看网络状态和任务-点自己连接的网-详细信息里的IPv4地址进一步的在属性里Internet协议版本4TCP/IPv4可以改ip3一个完整的版本cd ~/vrpn_client_ros source devel/setup.bash roslaunch vrpn_client_ros sample.launch server:192.168.1.100 sleep 1 rosrun topic_tools relay /vrpn_client_node/BIU380/pose /mavros/vision_pose/pose sleep 1 roslaunch mavros px4.launch fcu_url:/dev/ttyUSB0:921600 gcs_url:udp://192.168.1.100 sleep 1;5、根据选择不同的控制器px4 or apm进行一些参数调整让位置信息的来源是动捕动捕的定位通过/mavros/vision_pose/pose的ROS话题发送给飞控飞控收到这些动捕数据后并不是直接使用而是也利用EKF融合了imu最终飞控实际融合结果可以在/mavros/local_position/pose话题中读到在起飞之前要先检查local_position/pose的方向是否正确坐标应该是北东地NEDapm飞控读之前要先启动数据流rosservice call /mavros/set_stream_rate ..... # message_rate 设置100 on_off 设置为true1PX4EKF2_AID_MASK设置成24(现在是EKF2_EV_CTRL一般四个都选默认值15)EKF2_HGT_MODE设置成VisionMAV_O_RATE设置成0 B/sMAV_0_MODE设置成OnboardMAV_0_RATE设置成0 B/sSER_TEL1_BAUD设置成921600 8N1MPC_XY_VEL_MAX 1.00m/s 速度限幅设置完这些参数后要重启飞控2APM不知道具体是哪个反正是下面这些都改了才奏效GPS_TYPE 0AHRS_GPS_USE 0AHRS_EKF_TYPE3EK3_ENABLE1EK2_ENABLE0COMPASS_USE0COMPASS_USE20COMPASS_USE30VISO_TYPE1 # mavlinkEK3_SRC1_POSXY6EK3_SRC1_POSZ6EK3_SRC1_YAW6 # 使用动捕四元数的偏航角EK3_SRC1_VELXY0EK3_SRC1_VELZ0EK3_SRC2_YAW6 # 可能非必须EK3_SRC3_YAW6 # 可能非必须切掉vision后报PreArm: VisOdom: not healthy这个警告才说明定位用了vision的定位怎么看飞控有没有接收到动捕的定位信息呢打开地面站QGC或者missionplannerQGC里看MAVLINK控制台看有没有VISION消息massionplanner里control function, 然后Link inspector, 嗯看里面有没有VS消息