Setting up a pure GPS IMU flying camera system
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 imucomplementaryfilter. A ubloxgps node is providing sensormsgs/NavSatFix. This gets fed into a gpscommon - utmodometry_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 utmodometrynode
<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? **"/>
</node>
Now i would like to fuse the gps odometry with the imu robotlocalization - ukflocalizationnode. (I would actually prefer to use a navsattransform_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 baselink transform. Also it asks me that some other transform should provide the tf odom -> baselink. What should this be?
The next question is do i have to publish the 0, 0 lat long world frame myself?
Asked by FelixH on 2019-03-15 16:44:15 UTC
Comments
http://docs.ros.org/api/nav_msgs/html/msg/Odometry.html 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.
Asked by Humpelstilzchen on 2019-03-18 07:00:20 UTC