Setting up a pure GPS IMU flying camera system

asked 2019-03-15 16:47:14 -0600

FelixH gravatar image

updated 2019-03-15 17:10:59 -0600

I am trying to setup a camera system that will log its position. The system will be passive, and is attached to an airplane. The system has a GPS sensor as well as an IMU. I want to use transforms to interpolate the camera positions. The basics nodes work but i'm quite confused with regards to coordinate transforms.

The system contains: A IMU node that provides fused imu msgs with the help of imu_complementary_filter. A ublox_gps node is providing sensor_msgs/NavSatFix. This gets fed into a gps_common - utm_odometry_node.

So far so good now the trouble starts. I defined the following transforms:

  <node pkg="tf2_ros" type="static_transform_publisher" name="imu_link_broadcaster" args="0 0 0 0 0 0 1 base_link imu_link" />
  <node pkg="tf2_ros" type="static_transform_publisher" name="rgb_camera_link_broadcaster" args="0 0 0 0 0 0 1 base_link rgb_camera_link" />

The issue is that i don't know how to configure the utm_odometry_node

  <node pkg="gps_common" type="utm_odometry_node" name="utm_odometry_node" output="screen">
     <remap from="fix" to="/gps/fix"/>
     <param name="frame_id" value="** what to put in here?**"/>
     <param name="child_frame_id" value="** and here? **"/>

Now i would like to fuse the gps odometry with the imu robot_localization - ukf_localization_node. (I would actually prefer to use a navsat_transform_node but this needs odometry and gps and i cannot really provide both) This requires me to configure a ton of things. The biggest issue is that i don't know how to setup the frames:

    map_frame: map             # Defaults to "map" if unspecified
    odom_frame: odom            # Defaults to "odom" if unspecified
    base_link_frame: base_link  # Defaults to "base_link" if unspecified
    world_frame: odom           # Defaults to the value of odom_frame if unspecified

The main issue being that i don't have a map frame (i don't think i need one as well). All i want is that it provides an world frame to base_link transform. Also it asks me that some other transform should provide the tf odom -> base_link. What should this be?

The next question is do i have to publish the 0, 0 lat long world frame myself?

edit retag flag offensive close merge delete

Comments should make it clear what to define as frame_id and child_frame_id. You can probably ignore the child_frame_id for thr twist message since velocity information from gps is mostly useless anyway. Set frame_id to whatever the name of your global frame is, e.g. "utm" or "world". This is also your map frame btw.

Humpelstilzchen gravatar image Humpelstilzchen  ( 2019-03-18 07:00:20 -0600 )edit