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

pryre's profile - activity

2017-01-30 01:32:32 -0500 asked a question How fast should IMU readings be sent through ROS?

As a preface, I'm using an MPU6050 with a update rate of 1000Hz. The connection is done using MAVLINK (there is a small amount of data overhead), and while I can transmit the readings at full speed to ROS, it limits the remaining bandwidth quite a lot.

My final goal is to use this data to help with some data fusion/pose estimation for a UAV.

If I want to pass the IMU data to a filter/estimator of some description, would it be best to transmit the data as fast as possible?

Can I afford to drop packets?

Or perhaps integrate them so I can send the data at 500Hz instead of 1kHz?

2017-01-27 22:01:10 -0500 commented answer Publish at the time of a vector

You should be able to do something along the lines of this: https://gist.github.com/pryre/323fde0...

I can't compile it right now, don't have access to a stable machine. It should be transferable to your application though.

2017-01-27 01:54:18 -0500 received badge  Popular Question (source)
2017-01-26 19:55:06 -0500 answered a question Publish at the time of a vector

You have two main options; use rosbag, or generate the messages manually. Either way, if you want to treat that data as if the experiment was being run (as in, you wanted it treated as if you were back in time running the live), then you can set the "use_sim_time" parameter to true, which will make RVIZ (and anything else that uses ros::Time, which is just about everything except tf) act like the experiment was running live.

Option 1: rosbag. With rosbag, you can record data from a topic into a file, and then replay it, and ROS will worry about all the timing issues. There is plenty of information about rosbag, so I'll leave this here.

Option 2: Manually. Assuming you have recorded the data from an external source (outside of ROS), or the experiment is unrepeatable for whatever reason, you could use a node to both generate clock messages and publish your data. Jumping ahead, I am assuming you already have your data imported into a node of some sort (in a vector or something). Your best bet would be to set up a publisher for the /clock message (you can manually create a time message and just send your recorded time as this), then set up a publisher for your data and have it populate the fields as usual (you can use ros::Time::now() as usual for this, or set the stamp header manually, it shouldn't matter if your /clock messages are sent correctly). From here, you would just want to use ros::Time::sleep(dt), where dt is the difference in time between your recorded timestamps.

2017-01-26 19:23:23 -0500 commented question Downgrade ROS kinetic due to broken packages?

Could you give some examples of the packages you are using? When you say compile, are you talking about sourcing them and building them through catkin?

If it is taking too much of your time, consider a reinstall to Indigo (if it has the packages you need). There is not too much of a loss.

2017-01-26 19:23:23 -0500 commented question dynamixel_controllers

Can you successfully change the angles using the Windows software package that Dynamixel supply?

2017-01-26 19:23:22 -0500 asked a question How fast should IMU readings be sent to ROS?

As a preface, I'm using an MPU6050 with a update rate of 1000Hz. The connection is done using MAVLINK (there is a small amount of data overhead), and while I can transmit the readings at full speed to ROS, it limits the remaining bandwidth quite a lot.

My final goal is to use this data to help with some data fusion/pose estimation for a UAV.

If I want to pass the IMU data to a filter/estimator of some description, would it be best to transmit the data as fast as possible?

Can I afford to drop packets?

Or perhaps integrate them so I can send the data at 500Hz instead of 1kHz?