< >
Home » PX4开发指南 » PX4开发指南-13.11.室内 / 虚拟 GPS

PX4开发指南-13.11.室内 / 虚拟 GPS

FAKE GPS

此页面显示如何使用mocap数据来虚拟gps。

  • 设置如下:需要一台安装了所需的软件+ ROS + vicon_bridge的A计算机,并通过网络将此数据发送到B计算机上。 在B计算机上,同时安装ROS + MAVROS。 在MAVROS中有一个脚本,用于模拟mocap数据中的gps数据。 然后在B计算机中将数据通过3DR radiometry发送到pixhawk。 注意:A计算机和B计算机可以是同一台计算机。

Prerequisites

  • MOCAP system (in this example, VICON is used)

  • Computer with ROS, MAVROS and Vicon_bridge

  • 3DR radiometry set

步骤

Step 1

  • 确保A计算机与B计算机位于同一个网络中(可能需要无线网卡)。 在A计算机上创建两个文件:“launch_fake_gps.sh”和“launch_fake_gps_distorted.sh

  • 将以下两行添加到“launch_fake_gps.sh”文件中,并用B计算机的IP地址替换xxx.xxx.x.xxx(您可以通过在终端中键入“ifconfig”获取IP地址)。

export ROS_MASTER_URI=http://xxx.xxx.x.xxx:11311
roslaunch vicon_bridge vicon.launch $@
  • 接下来,将以下两行添加到“launch_fake_gps_distorted.sh”文件中,并将B计算机的IP地址替换xxx.xxx.x.xxx。
export ROS_MASTER_URI=http://xxx.xxx.x.xxx:11311
rosrun vicon_bridge tf_distort $@
  • Put markers on your drone and create a model in the MOCAP system (later referred to as yourModelName).

Step 2

  • 在B计算机运行
 $ roscore

Step 3

  • 在A计算机打开两个新的终端,分别运行以下代码
 $ sh launch_fake_gps.sh


 $ sh launch_fake_gps_distorted.sh

Step 4

  • 在B计算机运行
 $ rosrun rqt_reconfigure rqt_reconfigure
  • 此时应该打开一个新窗口,您可以在其中选择“tf_distort”。 使用此工具,您可以编辑参数以修改MOCAP数据。

  • 模拟我们需要使用的GPS:

    • publish rate = 5.0Hz

    • tf_frame_in = vicon/yourModelName/yourModelName (e.g. vicon/DJI_450/DJI_450)

    • delay = 200ms

    • sigma_xy = 0.05m

    • sigma_z = 0.05m

Step 5

  • 将您的pixhawk连接到QGroundControl中。 打开 PARAMETERS -> System 和 将 SYS_COMPANION 设置为 257600 (启用 magic 模式)。

  • 接下来,打开 PARAMETERS -> MAVLink并将MAV_USEHILGPS设置为1(启用HIL GPS)。

  • 打开 PARAMETERS -> Attitude Q estimator 和将ATT_EXT_HDG_M 设置为 2 (use heading from motion capture)。

  • 最后, 打开 PARAMETERS -> Position Estimator INAV和 将 INAV_DISAB_MOCAP 设置为 1 (disable mocap estimation)。

注意:如果找不到上述参数,请查看PARAMETERS -> default Group

Step 6

  • 在目录打开文件 "mocap_fake_gps.cpp"。其路径为:yourCatkinWS/src/mavros/mavros_extras/src/plugins/mocap_fake_gps.cpp

  • Replace DJI_450/DJI_450 in

 mocap_tf_sub = mp_nh.subscribe("/vicon/DJI_450/DJI_450_drop", 1, &MocapFakeGPSPlugin::mocap_tf_cb, this);
  • with your model name (e.g. /vicon/yourModelName/yourModelname_drop). The "_drop" will be explained in the next step.

Step 7

  • 在step 5中, 启用了heading from motion capture 。因此,pixhawk不使用原来的方向设置,而是采用运动捕捉系统的方式。 因为3DR辐射测量设备不够快,我们必须限制我们的MOCAP数据的速率。 故执行以下操作

    $ rosrun topic_tools drop /vicon/yourModelName/yourModelName 9 10

  • 这意味着,从 /vicon/yourModelName/yourModelName的话题中,百分之九十的信息将被删除并发布在/vicon/yourModelName/yourModelName_drop话题下。

Step 8

  • Connect the 3DR radiometry with the pixhawk TELEM2 and the counter part with your computer (USB).

Step 9

  • 打开catkin_ws工作空间,执行以下命令
 $ catkin build
  • 接着执行
 $ roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:57600
  • 如果你的pixhawk的绿色灯闪烁,说明已获取到GPS数据。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: px4开发指南