Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all 521 articles
Browse latest View live

ekf_localization_node core dumping

$
0
0
Still setting up ekf_localization_node here -- I'm playing back and processing my bag, but getting this error, whether I run from a lauch file with params or with no params from rosrun, $ rosrun robot_localization ekf_localization_node ekf_localization_node: ../nptl/pthread_mutex_lock.c:350: __pthread_mutex_lock_full: Assertion `(-(e)) != 3 || !robust' failed. Aborted (core dumped) The error only occurs when by bag is playing, otherwise the node sits silently. There's no log file or rosout messages so I'm not sure how to locate the problem, any suggestions ? FURTHER DETAILS: System info: PARAMETERS * /rosdistro: indigo * /rosversion: 1.11.10 on Xubuntu 14.04 LTS. Sample geometry/gps message, header: seq: 200 stamp: secs: 1431535613 nsecs: 57244062 frame_id: '' child_frame_id: '' pose: pose: position: x: -2.90984643623 y: -3.69588956097 z: -3.51702306711 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 covariance: [1.218219225942454, 0.006998948102184068, 0.17239271800594577, 0.0, 0.0, 0.0, 0.006998948102183846, 1.2159598403645349, 0.14679821372057594, 0.0, 0.0, 0.0, 0.17239271800594574, 0.14679821372057594, 4.825820933693012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] twist: twist: linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Sample /imu message: --- header: seq: 105 stamp: secs: 1431535415 nsecs: 50663948 frame_id: base_imu_link orientation: x: 0.026096916629 y: -0.0692553241391 z: -0.248199192676 w: 0.96587774163 orientation_covariance: [0.0025, 0.0, 0.0, 0.0, 0.0025, 0.0, 0.0, 0.0, 0.0025] angular_velocity: x: -0.09 y: -0.04 z: 0.02 angular_velocity_covariance: [0.02, 0.0, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.02] linear_acceleration: x: 0.666884609375 y: 0.117595390625 z: 9.37468921875 linear_acceleration_covariance: [0.04, 0.0, 0.0, 0.0, 0.04, 0.0, 0.0, 0.0, 0.04] Launch file, [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false][false, false, false, false, false, true, false, false, false, false, false, true, true, false, false] Update: To try to isolate the cause, I tried recording my data into smaller bags, and found that it's the presence of tf data in the bag that causes it. ie, this leads to the error, rosbag record assemble clock imu /imu_node/parameter_descriptions /imu_node/parameter_updates /odometry/gps tf but this does not: rosbag record assemble clock imu /imu_node/parameter_descriptions /imu_node/parameter_updates /odometry/gps so what could be going on? AFAIK the ekf node isn't using tf info, so why does the error depend on it? I also get the same error swiching efk to ukf.

Transformation Tree Required for Octomap_server

$
0
0
Hello Everyone, I am using Kinect to generate the point cloud, it is publishing pointcloud in /camera_link frame, then i want to use `octomap_server` for generating occupancy grid. According to the documentation there is a need to provide tf from sensor to the static frame. I dont have any idea for required tf for using Kinect and octomap_server. I thought of creating static /tf for kinect ---> baselink, dynamic odom ----> baselink, and then baselink ---> map. Am I doing wrong? plz tell me the actual /tf transformation and robot setup required for running octomap_server using kinect.

Heading estimation with GPS heading

$
0
0
I'm tuning a kalman filter for position estimation of an outdoor robot, and I'm seeing significant compass interference which is producing significant errors in the final position estimate. My other sensors are: 3-axis gyro, 3-axis accel, GPS and a wheel speed sensor. I'm considering an approach where I estimate heading based mostly on GPS heading while my vehicle is moving, instead of relying heavily on the compass for heading. Has anyone else tried this, either with one of the existing ROS kalman filter nodes or with a custom filter?

no matching function for call to 'fromMsg(geometry_msgs::TransformStamped_::_transform_type, tf2::Transform&)' tf2::fromMsg(buffer.lookupTransform(targetFrame, sourceFrame, time).transform, targetFrameTrans);

$
0
0
Hello, I am currently trying to cross compile the [robot-localization](http://wiki.ros.org/robot_localization) package for a custom made OS with yocto. I managed to cross compile the other dependencies but I got a problem with this one. I did 2 modifications in the CMakelists.txt from origin, you can see mine here [http://pastebin.com/XYy53Cfs](http://pastebin.com/XYy53Cfs). During compilation, it stops at 70%. I think there is a problem with the tf2-geometry-msgs library. It is included but the issue is in the fromMsg method. [ 70%] Building CXX object CMakeFiles/ros_filter_utilities.dir/src/ros_filter_utilities.cpp.o /home/david/Documents/NEOCORTEX-OS/build/tmp/work/armv6-vfp-poky-linux-gnueabi/robot-localization/2.2.1-r0/robot_localization-2.2.1/src/ros_filter_utilities.cpp: In function 'bool RobotLocalization::RosFilterUtilities::lookupTransformSafe(const tf2_ros::Buffer&, const string&, const string&, const ros::Time&, tf2::Transform&)': /home/david/Documents/NEOCORTEX-OS/build/tmp/work/armv6-vfp-poky-linux-gnueabi/robot-localization/2.2.1-r0/robot_localization-2.2.1/src/ros_filter_utilities.cpp:80:104: error: no matching function for call to 'fromMsg(geometry_msgs::TransformStamped_>::_transform_type, tf2::Transform&)' tf2::fromMsg(buffer.lookupTransform(targetFrame, sourceFrame, time).transform, targetFrameTrans); ^ /home/david/Documents/NEOCORTEX-OS/build/tmp/work/armv6-vfp-poky-linux-gnueabi/robot-localization/2.2.1-r0/robot_localization-2.2.1/src/ros_filter_utilities.cpp:80:104: note: candidates are: In file included from /home/david/Documents/NEOCORTEX-OS/build/tmp/work/armv6-vfp-poky-linux-gnueabi/robot-localization/2.2.1-r0/robot_localization-2.2.1/src/ros_filter_utilities.cpp:36:0: [...] make: *** [all] Error 2 ERROR: oe_runmake failed WARNING: exit code 1 from a shell command. In the cpp file try { tf2::fromMsg(buffer.lookupTransform(targetFrame, sourceFrame, time).transform, targetFrameTrans); } Thanks

TF_NAN_INPUT errors from use of ekf_localization_node

$
0
0
Whenever I use ekf_localization_node in my project, I get this error:
Error:   TF_NAN_INPUT: Ignoring transform for child_frame_id "base_footprint" from authority "unknown_publisher" because of a nan value in the transform (-nan -nan -nan) (-nan -nan -nan -nan)
         at line 240 in /tmp/buildd/ros-indigo-tf2-0.5.11-0trusty-20150522-1835/src/buffer_core.cpp
I don't get it when I put all values of the (currently only) input of the node to false, but as soon as I put a 'true' at the position for (e.g.) the x input, it shows up again. I am using wheel odometry of a Kobuki for this input. Here is a sample odometry message:
header: 
  seq: 20227
  stamp: 
    secs: 1435652980
    nsecs: 60858344
  frame_id: odom
child_frame_id: base_footprint
pose: 
  pose: 
    position: 
      x: 0.0
      y: 0.0
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
  covariance: [0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7976931348623157e+308, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7976931348623157e+308, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.7976931348623157e+308, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05]
twist: 
  twist: 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
---
This is the launchfile I am currently trying to use for the ekf_localization_node: http://pastebin.com/SPrXDD53

robot_localization odom and utm frames

$
0
0
Hi. I'm working with the package robot_localization, i use navsat and ekf nodes, the output topic is correct. I wanted to ask two questions, first, it is possible to obtain odometry filtered in UTM? Edit2 I want to actually send out an odometry message with the UTM frame, i have to write a node. The other question is that i have a GPS in other position that not is (0,0,0) of base link, it is placed on one side of the robot one meter from the center of base link. Thanks

robot_localization

$
0
0
I am trying to use robot_localization package to stimate the position of my robot. First I am going to explain what I have. Sensors: IMU publishing sensor_msgs::Imu publishing in /imu_rectificada topic. The IMU frame is ENU, 0 degrees when Y is in Norht and Z is up. I will fill the covariance once the node is working. --- header: seq: 191036 stamp: secs: 1434547057 nsecs: 229000000 frame_id: /imu orientation: x: -0.628702991434 y: -0.315484655538 z: 0.321512012361 w: 0.633902097503 orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] angular_velocity: x: -0.0138241518289 y: -0.0111814923584 z: 0.0322032161057 angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] linear_acceleration: x: -0.0442927330732 y: -9.97963142395 z: 0.102352119982 linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] --- Wheel odometry publishing nav_msgs::Odometry in /odom topic. It starts at 0 position. --- header: seq: 110736 stamp: secs: 1434546465 nsecs: 469210289 frame_id: /odom child_frame_id: /base_link pose: pose: position: x: 276.840007856 y: 0.0 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 covariance: [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] twist: twist: linear: x: 0.1 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 covariance: [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] --- tf: I publish the transform */odom -> /base_link* only with the information of odometry, so it doesnt have any global information. I cloud change this with the information of the imu, but actually im not interested in global positioning. Here my first question, where should I set the transform for the IMU, I am trying with a transform */base_link -> /imu* where imu_frame is just base_link_frame but with the rotation reported from the IMU. **Q1**: Is it good the transform I am publishing with the odometry? Where should I set the transform for the IMU? My launch file is: [false, false, false, false, false, flase, true, true, false, false, false, true, false, false, false][false, false, false, true, true, true, false, false, false, true, true, true, true, true, true] **Q2**: With all this I am getting an error message: [FATAL] [1434542899.231523445]: Could not read sensor update configuration for topic odom0 (type: 7, expected: 7). Error was type error I don't know what I'm missing, but I have tried simulating the publishers, i have used rosbags and the hardware, and it throw always the same error. It looks like the tipe of the message its not the correct, but I am using the types from the documentation. Thanks for every answer that could help me, and sorry if my english is not very good. -------------------------------------------------------------------------------------------------------------------------------------------------------------- **UPDATE** Thanks you very much for the quick response. I have changed all this and now I only publish the transform */base_link -> /imu*, there is not error but robot_localization is not working, there is not tf or odometry messages. With before configuration im getting an advice in */diagnostic* topic: - level: 2 name: ukf_localization: Filter diagnostic updater message: Erroneous data or settings detected for a robot_localization state estimation node. hardware_id: none values: - key: Z_configuration value: Neither Z nor its velocity is being measured. This will result in unbounded error growth and erratic filter behavior. - And I have added to odom0 the z velocity component in simulation, and I have changed the parameters in the way that z_velocity is read from odom0. Now the advice has disappeared but robot_localization is still not working, diagnostic topic say : "The robot_localization state estimation node appears to be functioning properly." PD: I have checked if the nodes are conected by the right topics and they are. -------------------------------------------------------------------------------------------------------------------------------------------------------------- **UPDATE 2** I have it running, thanks you. Last thing, it is not necessary, but I would like to integrate the linear accelerations, when I set the parameter of acceleration to true the stimated position start to fly. This happen even if the parameter "imu0_remove_gravitational_acceleration" is true. -------------------------------------------------------------------------------------------------------------------------------------------------------------- **UPDATE 3** Hello another time, I tried to use "robot_localization" in the real robot, and the estimation is not correct. I have tried a lot of configurations. I am going to upload my bags and my lunch file. This first [bag](https://www.dropbox.com/s/kk9v175n9058hjo/terreno_exterior.bag?dl=0) file is just the sensors measures. Then I use an [intermediate node](https://www.dropbox.com/s/omkqisxeuqh6ga4/topic_pipe.cpp?dl=0) and I get this [bag](https://www.dropbox.com/s/x5mzefnfmget3kz/terreno_exterior_conv.bag?dl=0) file. I am using this [launch](https://www.dropbox.com/s/v28o8eezcpdmdzo/ukf_relative32.launch?dl=0) with some different configurations and I cannot do it work. Thank you very much for your answers

Integrate a NovAtel ProPak-V3 using nmea_navsat_drivers

$
0
0
I'm working on using a NovAtel ProPack V3 to obtain raw GPS data but I'm currently not getting any data from it using the nmea_navsat_drivers. I've run the driver using the launch file from the robot_localization tutorial page and trough the rosrun command that's listed in nmea wiki but no luck. I configured the port and baud accordingly but no luck yet. My first guess is that I might have to change the code somehow to get it to work but I don't know where to start. Another problem is that maybe the GPS is not configured properly hardware wise which is something that I will be looking at later today. Thanks **Edit 1:** Apparently there's a node that I'm missing in between the information that the NovAtel is sending and what the nmea drivers needs. I don't know if anyone knows about it

Setting robot_localization properlly - 2nd odom not working

$
0
0
Since [this post](http://answers.ros.org/question/207117/robot_localization-with-gps-imu/) I have added a magnetometer to the system in order to get a world-referenced yaw/heading estimate as well as a barometer for better altitude estimations. **First problem [solved]** However, I'm still doing some tests on ground, so what I have been doing lately is to feed a fixed altitude (1.2m) as a new odometry msg (*nav_msgs/Odometry*), instead of using the altitude calculated from the barometer. *After correcting a small problem with the msg stamp the altitude started to be used by the filter. Since then I have added a velocity to the same odometry msg and it seems to be working. I'm going to edit the post to reflect this changes.* Right now the launch file used to test the "*fake*" odometry msg is: [false, false, true, false, false, false, true , false, false, false, false, false, false, false, false][false, false, false, true , true , true, false, false, false, true , true , true , true , true , true ][1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9] **Second problem [acceleration data is too noisy]:** Even though in this launch file I'm using the acceleration data from the IMU, I came to the conclusion that it is too noisy and I'm better off not adding it to the filter. ![image description](/upfiles/14359518116432193.png) So I have been running some tests without using the accelerations from the IMU, however this should mean that the estimation of the linear velocity is basically relying **on the GPS alone**, right? **First doubt [pose quaternion is obtained from gyro + accel + mag]:** On the other hand I don't know if I should be using roll, pitch, yaw and respective angular velocities, since the roll, pitch and yaw are obtained from the angular velocities and acceleration using the Madgwick filter. **Second doubt [which data to use in the filter]:** Another doubt I have is about the use of roll, pitch and yaw. Since the direction of movement of the vehicle is governed by it's orientation (yaw) and it's supposed to have a somewhat planar movement, should I still add the roll and pitch to the filter? In fact, if I only add the yaw I get a warning on the `diagnostics` topic, about not using roll/pitch and having `two_d_mode` set to false. This is the kind of output I'm getting right now when performing a rectangular path (GPS + IMU): ![image description](/upfiles/14359533551858354.png) EDIT1: Here is a sample of the IMU topict: header: seq: 95 stamp: secs: 1436025714 nsecs: 71387649 frame_id: imu orientation: x: 0.00455226427862 y: -0.0462875419141 z: -0.604611424228 w: 0.79467713799 orientation_covariance: [0.0006250000000000001, 0.0, 0.0, 0.0, 0.0006250000000000001, 0.0, 0.0, 0.0, 0.0006250000000000001] angular_velocity: x: 0.0883323171029 y: 0.0558238933806 z: 0.631249659415 angular_velocity_covariance: [5.26445e-06, 0.0, 0.0, 0.0, 0.00152884, 0.0, 0.0, 0.0, 0.00289536] linear_acceleration: x: 0.26405090332 y: 0.641865234375 z: 10.1003961182 linear_acceleration_covariance: [0.00840479, 0.0, 0.0, 0.0, 0.00127959, 0.0, 0.0, 0.0, 0.218029] The odometry/gps output: header: seq: 17 stamp: secs: 1434470351 nsecs: 400000095 frame_id: odom child_frame_id: '' pose: pose: position: x: -0.000307746231556 y: 0.0145109614241 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 covariance: [11.713630260079219, 0.06028916405309637, 0.0, 0.0, 0.0, 0.0, 0.06028916405309642, 9.061369739920782, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] twist: twist: linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Right now the second odometry topic is a "blank" odometry msg with *z* set to a fixed value (1.20 in this case): header: seq: 461 stamp: secs: 1436214275 nsecs: 734612605 frame_id: odom child_frame_id: base_link pose: pose: position: x: 0.0 y: 0.0 z: 1.2 orientation: x: 0.0 y: 0.0 z: 0.0 w: 0.0 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] twist: twist: linear: x: 1.1 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] In this test I use GPS (x,y), *fake_odometry* (z) and IMU (yaw, yaw velocity). [Bagfile of the with GPS + IMU + fake odometry z](https://drive.google.com/open?id=0B_zsaNN59TNkfm9kakVRT2lvbDZ1RXFnQnJWQ2kycFowN29HbVdCVVQ2emNFdjdIUWhiUjA) However, for some reason I get a different result from before (as seen below). It seems like adding the odometry msg with the fixed z is changing the orientation somehow.. ![image description](/upfiles/14362914268437694.png)

How do you implement GPS using robot_localization

$
0
0
I'm a bit new to ROS and I'm unsure how to implement GPS into the project I'm working on. So far I know that I can use robot_localization to get GPS but how would that be implemented ? Edit 1: Thanks for the reply, Yes I have, I've been working on it for a couple of days and it's starting to make sense now. I'm still struggling on some stuff such as how to use the nmea drivers. In the robot_localization tutorials you make a launch file but the nmea wiki it is possible to just use rosrun to get things up and running. Do you first use rosrun to make the connection with the hardware and then launch the launch file to start getting all of the data? Another thing is that I will not be using any odometry data for my localization project. What files do I need to edit so that the code won't be calling for any odometry data? thanks

ekf odom and compass robot_localization

$
0
0
Hi! I have a compass sensor and a odom sensor, this start in the position 0,0,0. The compass it's in the correct position but when i echo the odometry filtered It is delaying it will respect the GPS signal. Any answer? EDIT 1: This is a rosbag with the sensor topics https://www.dropbox.com/s/6kwbd1yaxixpf8m/rosbag.bag?dl=0 This is a tree graph, nodes graph and rviz capture. ![image description](/upfiles/14369658929634892.png) ![image description](/upfiles/1436965901265340.png) Red color /odometry/filtered and green color position/GPS ![image description](/upfiles/14369659105826195.png) ![image description](/upfiles/1436965997979675.png) The position GPS is in absolute coordinates. The ekf launch is this, with the base link compass transformation: [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false][false, false, false, false, false, true, false, false, false, false, false, false, false, false, false][0.05, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.025, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.025, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.015][1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9] Edit 2: Hi Tom: I already solved my problem , the error was that i wasnt including the time stamp in the topics, now the system is working well!! Regards

Robot_Localization: IMU doesn't update position

$
0
0
Hi, I'm using the robot_localization package with my phidgetspatial 3/3/3. I know I need more sensors than just an IMU for localization, but as I wait for those to be shipped to me I decided to play with the package and the imu. When I run my launch file, it starts up the imu node, the localization node, and a static transform. When I rostopic echo odometry/filtered, I see the correct output. With one exception. The linear twist never changes from 0, 0, 0, and the position in pose never changes from 0, 0, 0. My orientation and angular velocity appear to change appropriately as I move the imu around, but the position and linear velocity are reported as zeros. Please help. I've included relevant parts of my launch file, but I can't upload it. Not enough points. Edit: Additionally, my imu/data_raw does report linear acceleration [false, false, false, true, true, true, false, false, false, true, true, true, true, true, true][0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.015][1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9]

Linear velocity drift robot_localization with imu

$
0
0
Hi all, I am using robot_localization to fuse odometry and imu measurements. While my robot is standing still, the estimated pose blows up towards the x and/or y direction and the velocity increases steadily. I believe this is because my IMU messages are reporting that there is acceleration in the x-y direction when there is not. The acceleration that is seen on the imu axes are from gravity because on my robot it is impossible to mount the imu perfectly level. The angle is accurately reflected in the orientation. Odometry message: header: seq: 180 stamp: secs: 0 nsecs: 0 frame_id: odom child_frame_id: base_link pose: pose: position: x: -4.57017288436e-23 y: -1.37577341871e-27 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 covariance: [0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2] twist: twist: linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 covariance: [0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2] IMU message: header: seq: 3565 stamp: secs: 1437400985 nsecs: 945771932 frame_id: base_imu_link orientation: x: 0.0115444314118 y: 0.0118909824299 z: 0.0816176668022 w: 0.996525908899 orientation_covariance: [0.0025, 0.0, 0.0, 0.0, 0.0025, 0.0, 0.0, 0.0, 0.0025] angular_velocity: x: -0.07 y: 0.0 z: -0.0 angular_velocity_covariance: [0.02, 0.0, 0.0, 0.0, 0.02, 0.0, 0.0, 0.0, 0.02] linear_acceleration: x: -0.210292734375 y: 0.2711971875 z: 9.72747539062 linear_acceleration_covariance: [0.04, 0.0, 0.0, 0.0, 0.04, 0.0, 0.0, 0.0, 0.04] robot_localization message header: seq: 14858 stamp: secs: 1437401408 nsecs: 104844999 frame_id: odom child_frame_id: base_link pose: pose: position: x: 752.873872865 y: -960.277044656 z: 0.0 orientation: x: 0.0 y: 0.0 z: -0.0129782931114 w: 0.999915778407 covariance: [1235363.2798552709, 0.09966583512707781, 0.0, 0.0, 0.0, 0.00012219044159253388, 0.09966583492106752, 1235363.2253877113, 0.0, 0.0, 0.0, 8.345895540980487e-05, 0.0, 0.0, 4.997912991703062e-07, -1.6226536599895273e-14, -1.1710583642991047e-14, 0.0, 0.0, 0.0, -1.6226536599895264e-14, 4.995829440611683e-07, -9.105011207999492e-19, 0.0, 0.0, 0.0, -1.1710583642991045e-14, -9.10501120799949e-19, 4.995829440617729e-07, 0.0, 0.00012219044159253388, 8.345895540980487e-05, 0.0, 0.0, 0.0, 0.0012374751044356635] twist: twist: linear: x: 3.37509526949 y: -4.67673415559 z: 0.0 angular: x: 0.0 y: 0.0 z: -5.79267445233e-07 covariance: [14.94177991668064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.94177991668064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.996870776051403e-07, -9.835971518024234e-24, -7.493838037842533e-24, 0.0, 0.0, 0.0, -9.835971518024234e-24, 4.987529858182264e-07, -2.2678308703831656e-27, 0.0, 0.0, 0.0, -7.493838037842532e-24, -2.267830867073473e-27, 4.987529858182264e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0026566693199961485] Robot localization launch [true, true, false, false, false, true, true, false, false, false, false, true, false, false, false][false, false, false, true, true, true, false, false, false, true, true, true, true, true, true] Can anyone help me figure out what's going on here? This is the exact problem robot_localization is supposed to help solve. Thanks for any help you can provide! By the way, I am using the Sparkfun Razor 9Dof IMU and the associated ROS node. I went through all of the setup and calibration steps that are listed on their wiki. ---UPDATE--- I realized the problem is bigger than the IMU, robot_localization isn't even using my odometry messages. I verified that odometry messages are publishing and that robot_localization is subscribing to them. I can see the connection. But the ekf doesn't update for my odometry messages. Why?

How to get base_footprint from 3D base-Link?

$
0
0
Hi all, I am using robot_localization, which gives me a tf odom->base_link in 3D. For the purposes of mapping and navigation, I would like to create a frame base_footprint that preserves the x-y location of base_link and the yaw. I looked around but I couldn't find a package that does this. I assume this has to be a standard thing since so many robots use base_footprint. Am I missing something? Do I need to make a node to just do this? Thanks for your help!

robot_localization has consistent delay

$
0
0
Hi all, I am using robot_localization and gmapping, and I am having problems. I am fusing odometry and imu measurements with the ekf node included with robot_localization. When the robot spins in place, the odometry and the imu both report approximately the correct value as soon as the robot starts spinning. The ekf node, however, does not reflect the turn until ~2 seconds after the robot starts spinning. I have tried this multiple times and with multiple different speeds, and I get the same consistent ~2 second delay. I tried to double my filtering frequency from 30 to 60 Hz to try and fix the problem, but it didn't work. Is this a bug with robot_localization or could this somehow be in my setup? There doesn't seem to be anything in the parameters that would cause this. Thanks in advance

ekf_localization does not publish odometry

$
0
0
I got this output at terminal. Echoing odometry/filtered does not produce anything. I am using fovis as odometry source [ WARN] [1438250290.975116879]: Could not obtain transform from /odom to odom. Error was Invalid argument "/odom" passed to lookupTransform argument source_frame in tf2 frame_ids cannot start with a '/' like: echoing /diagnostics gives this: status: - level: 0 name: ekf_localization: Filter diagnostic updater message: The robot_localization state estimation node appears to be functioning properly. hardware_id: none values: [] - level: 2 name: ekf_localization: odometry/filtered topic status message: No events recorded. hardware_id: none values: - key: Events in window value: 0 - key: Events since startup value: 0 - key: Duration of window (s) value: 10.199988 - key: Actual frequency (Hz) value: 0.000000 - key: Minimum acceptable frequency (Hz) value: 25.200000 - key: Maximum acceptable frequency (Hz) value: 35.200000 --- What does it mean? My launchfile: [true, true, true, true, true, true, true, true, true, true, true, true, false, false, false][false, false, false, false, false, false, true, false, false, false, false, false, false, false, false][true, true, true, true, true, true, false, false, false, false, false, false, false, false, false][false, false, false, false, false, false, true, true, true, true, true, true, false, false, false][false, false, false, false, false, false, false, false, false, false, false, true, false, false, false][0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, dfg0, 0.015][1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9]

new update robot_localization

$
0
0
I have so time work with this package, last week i update this in other work_space and started to do test with old bags. I was surprised because a observation, now the front of base_link its Y???? Before was X. This is a modification? I link my rosbag https://www.dropbox.com/s/1kkzfjnf0bicn59/lunes6_3_corrected.bag?dl=0 This is the roslaunch to launch the packages, each in it work space: [ true, true, false, false, false, false, false, false, false, false, false, false, false, false, false][false, false, false, true, true, true, false, false, false, true, true, true, true, true, true][0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.015][1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1e-9][42.169228, -8.684592, 0.0, map, base_link] -New package ![This is the two captures that i discovered that changes in the frame](/upfiles/14383382746834771.png) -Old package ![image description](/upfiles/1438338310723350.png)

odom_config parameter in robot_localization

$
0
0
In [this](http://wiki.ros.org/robot_localization/Tutorials/Sensor%20Configuration) tutorial from the robot_localization package, the show a parameter called odom0_config.[true, true, false, false, false, true, true, false, false, false, false, true, false, false, false][false, false, false, false, false, true, false, false, false, false, false, true, true, false, false] In this case X position, Y position, X velocity, X acceleration, yaw, and yaw velocity are set to true. I tried to find the association between those booleans and the variables X Y and Yaw but I couldn't see any logical association. Is that structure for the odom_config defined anywhere?

robot_localization delayed yaw response

$
0
0
Our robot has wheel odometry and an IMU (gyro plus accelerometers) and we are migrating from robot_pose_ekf to robot_localization. We expect to add additional IMUs as well as gps once this base configuration is working. I am sending test data to robot_localization as follows: vx = 0.1 imu.angular_velocity = 0.05 for the first 30 seconds, then -0.1 for 30 sec and then 0.2 acclerometers are all set to 0 All the other inputs are excluded using "false" entries in the sensor selection matrix. We do not specify an absolute yaw value because we are not directly measuring one. robot_localization diganostics notices this and outputs a warning that Yaw is not being sent and that can result in unbounded errors. The output from robot_localization agrees with the input for x linear twist (0.1) and the z angular twist initially agrees with imu.angular_velocity, but when imu.angular_velocity changes (at 30 seconds), the z angular twist output from robot_localization persists as the original value. This remains the case at 60 seconds when the input changes again, the output is still around the original input value. When first setting up robot_localization, I did not change the covariance matrix and, in that case, the z angular twist output would stay near 0 for the first 5 seconds or so and then jump to equal the imu.angular_velocity. When I modified the covariance matrix, increasing the value for vYaw, then the output jumps much sooner to the input value. However, when the input value changes, the output does not. I would attach the robot_localization.launch file and a bag file, but ros.answers does not support those file types for upload, only image files. two_d_mode is set true. differential and relative modes are set false. Here are the frame settings and sensor selection matrices: [false, false, false, false, false, false, true, false, false, false, false, false, false, false, false][false, false, false, false, false, false, false, false, false, false, false, true, true, true, true]

How to use robot_localization with ar_track_alvar?

$
0
0
I'm looking for a way to use visually detected markers from the [`ar_track_alvar`](http://wiki.ros.org/ar_track_alvar) module as measurements for the `ekf_localization_node` from the [`robot_localization`](http://wiki.ros.org/robot_localization) module. It seems like `robot_localization` has no message type for observed markers. Sure, I can invert an observed marker pose and use the result as pseudo-observed robot pose. But how to come up with realistic covariance information, which is needed for the message of type [PoseWithCovarianceStamped](http://docs.ros.org/api/geometry_msgs/html/msg/PoseWithCovarianceStamped.html)? A marker gives me distance and direction (or x, y, z in a local coordinate frame). So my derived pose and orientation will be highly correlated and its covariance matrix singular. Is that a reasonable approach?
If not, how to combine these nodes the right way?
Are there any resources and tutorials you can suggest? (I googled a lot, but couldn't find one.) **Edit:** I'm thinking of implementing an [Unscented Transform (UT)](https://en.wikipedia.org/wiki/Unscented_transform) for deriving the pose uncertainty from pixel uncertainty. In other contexts I had positive experiences with the UT. What do you think?
Viewing all 521 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>