ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Problem solved. Let me summarize all my questions and their respective answers:

  1. Is the turtlebot odometry really provided by the robot_pose_ekf node? In case it isn't, what node should I be looking for?
    • Not exactly. robot_pose_ekf receives odometry from three different sources and combines them using a kalman filter. Nevertheless, the turtlebot package is designed in such a way that the turtlebot driver odometry (from the encoders on the wheels and its gyroscope) can be sent to the ekf module (this is done by launching this module, which can be done either manually, with rosrun, or in a launch file, as suggested by @tfoote and @mjcarroll). In short: robot_pose_ekf is not specific to turtlebot, therefore it must receive the odometry from the robot.
  2. If so, I suppose there's a specific turtlebot node that provides robot_pose_ekf with the required data (from the robot's sensors). In this case, which module is it?
    • As said before, the turtlebot driver is responsible for retrieving odometry data from this robot. Specifically, this is done in the turtlebot_node.py file (from the turtlebot_node package).
  3. Still considering robot_pose_ekf is responsible for the turtlebot odometry, is it only capable of dealing with three different sensors? Perhaps I could create a similar node using the OpenCV Kalman Filter class, and publish the filtered odometry to one of the "odom" or "odom_frame" channels, if that's the correct way of dealing with it.
    • Currently (when my question was published), robot_pose_ekf was only able to deal with three different input channels (i.e. "sensors"). However, I originally thought that turtlebot was retrieving odometry data from the kinect (for instance, with a particle filter), but I was wrong. Thus, there was an "idle slot" (the "vo" channel) in the ekf that could be used by my sensor, which is what I did.
  4. Does robot_pose_ekf convert odometry from the sensor frame to the robot frame?
    • When this question was published, the robot_pose_ekf did not. Therefore, I had to convert my data, which specifies the sensor position in the sensor frame (according to the position of the first measurement) to the robot position in the robot frame (again, according to the first measurement). To evaluate my new code, I did another experiment, which resulted in this path.