David,<div><br></div><div>I took a look at this and believe I have found the problem. Basically, the robot_pose_ekf is not checking whether the orientation is valid before attempting to use it; this is causing the quaternionMsgToTF call to attempt to transform a quaternion that is all 0's. I created a ticket for the robot_pose_ekf to check the covariance for the flag as specified in sensor_msgs/Imu and do something about receiving an IMU message that does not have a valid orientation (<a href="https://code.ros.org/trac/ros-pkg/ticket/4347">https://code.ros.org/trac/ros-pkg/ticket/4347</a>).</div>
<div><br></div><div>Beyond that bug, I don't think the Wiimote can be used with the robot_pose_ekf as is right now. The ekf only uses the IMU for it's estimate of 3D orientation, not angular velocities or linear accelerations (see <a href="http://www.ros.org/wiki/robot_pose_ekf#Subscribed_Topics">http://www.ros.org/wiki/robot_pose_ekf#Subscribed_Topics</a>). Since the Wiimote does not provide an estimate of orientation, it will never be able to give the ekf usable data anyways. You could probably write some sort of separate filter node to estimate the orientation from the angular velocities and linear accelerations, and then feed that orientation estimate into the ekf, but I can't say whether you will actually get good results from that or not.</div>
<div><br></div><div>- Eric</div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br><div class="gmail_quote">On Wed, Aug 18, 2010 at 8:26 PM, David Lu!! <span dir="ltr"><<a href="mailto:davidlu@wustl.edu">davidlu@wustl.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Has anyone done integration of the Wii MotionPlus data to get a pose<br>
estimate? I tried using robot_pose_ekf, but haven't found the right<br>
configuration yet.<br>
<br>
Currently, tis giving me this:<br>
MSG to TF: Quaternion Not Properly Normalized<br>
<br>
Here's my launch file:<br>
 <launch><br>
  <node pkg="robot_pose_ekf" type="robot_pose_ekf"<br>
name="robot_pose_ekf" output="screen"><br>
    <param name="freq" value="30.0"/><br>
    <param name="sensor_timeout" value="1.0"/><br>
    <param name="publish_tf" value="true"/><br>
    <param name="odom_used" value="false"/><br>
    <param name="imu_used" value="true"/><br>
    <param name="vo_used" value="false"/><br>
    <remap to="/imu/data" from="/imu_data" /><br>
  </node><br>
  <node pkg="wiimote" type="wiimote_node.py" name="wiimote" /><br>
 </launch><br>
_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
</blockquote></div><br></div>