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

mirzashah's profile - activity

2020-12-08 08:34:24 -0500 received badge  Good Answer (source)
2020-09-21 22:54:44 -0500 received badge  Good Answer (source)
2019-02-25 08:17:30 -0500 received badge  Good Answer (source)
2019-02-08 04:53:31 -0500 received badge  Nice Answer (source)
2018-01-04 04:38:36 -0500 received badge  Good Answer (source)
2017-01-20 02:36:36 -0500 received badge  Good Answer (source)
2016-12-11 03:00:05 -0500 received badge  Nice Answer (source)
2016-05-13 07:42:04 -0500 received badge  Good Answer (source)
2015-12-02 08:21:22 -0500 received badge  Nice Answer (source)
2015-08-20 21:17:53 -0500 received badge  Nice Answer (source)
2015-06-01 03:48:19 -0500 received badge  Nice Answer (source)
2015-05-28 22:21:45 -0500 marked best answer Does anybody make and sell stickers with the ROS logo and related products/brands/companies?

Where can I get stickers for ROS, related products, and the companies that produce them?

I suddenly have a great desire to put stickers on my laptop after living in Silicon Valley for sometime now. I also want to stick them on my robots and STOP signs. Does anybody make and sell stickers with the ROS logo and related products/brands/companies? I would love to have stickers for the things like OpenCV, Turtlebot, OSRF, Gazebo, Willow Garage, Yujin, Kobuki, OpenNI, Clearpath, etc.

Bonus points for scratch N' sniff

2015-05-18 20:52:12 -0500 answered a question IMU drift causing robot to drift in RVIZ

I've had the same issue of yaw drift with this IMU (also with 'use_mag' set to false) and never had much of a chance to dig into it. All IMUs drift over time, but I'm surprised how quickly this one starts to drift even after calibration. Unfortunately robot_pose_ekf doesn't take /cmd_vel as an input to see that the robot is not being commanded to move (rather it depends solely on wheel odometry for that through topic /odom and the IMU /imu) so the ekf doesn't really help.

So far I've had two..scratch that...THREE hacky solutions to solve this problem which are suboptimal:

1) Repetitive calibration: Call rosservice /imu/calibrate which will stop the drifting temporarily. Do this whenever the robot is still (very important!) and on flat ground. I had the robot call this service automatically when it detects drift or after a certain timeout threshold. This works well enough for my use case to get the job done....but slight drift will still happen over time regardless. If you're performing SLAM or static map localization (e.g. AMCL), the robot will correct its position in the map frame anyway automatically....so doesn't matter if odom is a little wacky.

OR

2) Ignore the yaw if you have another sensor measuring yaw: On the base I'm using, there's a very good single-axis gyro which is fused into the wheel odometry by its ROS driver. I would prefer having that yaw versus the drifting one generated through the IMU + robot_pose_ekf -- though I would still like to keep the roll and pitch components from the phidgets. You can either adjust the imu driver code or write a filter node for /imu to change the covariance matrix so the error is high for Z-axis (which corresponds to the yaw component) in the phidgets IMU so that robot_pose_ekf will weight the yaw from the wheel odometry (with the good gyro) more heavily. The other option which doesn't require changing IMU stuff is to write a node that subscribes to both the wheel odometry (/odom) and to the fused result (/odom_combined) that's generated by robot_pose_ekf (which incorporates /odom and /imu). You want to then take the x,y,z,roll,pitch, linV, angV.x, angV.y components from /odom_combined and then take yaw and angV.z from /odom and now publish to a new topic...let's say /odom_final...which is the odometry all your nodes should use. The new node should also publish the transform between /odom and /base_footprint....you should make sure that the same transform from robot_pose_ekf is ignored (you can do this by remapping tf to tf_garbage in robot_pose_ekf).

OR

3) Just thought of this one and it doesn't require having another gyro. Write a filter node just like in option 2 that takes as input the command velocity (/cmd_vel), the raw wheel odometry (/odom), and the ekf smoothed odometry (/odom_combined). If the latest commanded velocity is ... (more)

2015-05-07 18:14:01 -0500 received badge  Famous Question (source)
2015-01-12 06:10:40 -0500 received badge  Enthusiast
2014-07-01 10:20:47 -0500 received badge  Taxonomist
2014-01-28 17:28:32 -0500 marked best answer Why is tutorial code isolated from the package code?

One of the things that threw me off with ROS code organization was that the code for package tutorials is in a separate repository from the package code. Intuitively, it would make sense to have a directory within the package called "tutorials" just as we often have a "test" directory for unit tests.

Why is tutorial code isolated from the package code? Is it bad practice to combine the two?

2014-01-17 09:20:48 -0500 received badge  Notable Question (source)
2013-12-16 14:45:46 -0500 commented question Pluginception: Build Factory

Wait where's the plugin XML file for OscillationCostFunction...that's probably what's wrong

2013-12-16 14:43:09 -0500 commented question Pluginception: Build Factory

Ah ok, so DWAPlannerROS is creating a DWAPlanner inside of it which itself has a plugin classloader for creating the OscillationCostFunction which is a TrajectoryCostFunciion...

2013-12-16 14:35:44 -0500 commented question Pluginception: Build Factory

I understand now what you mean. Everything looks good it terms of your package.xml, CMakeLists.txt and plugin XML. However, your error message is interesting nwo that I read it a second time -- you try to create a DWAPlannerROS but its trying to lookup the factory for OscillationCostFunction. Does that mean the DWAPlannerROS plugin has a classloader inside of it that tries to load that cost function boject?

2013-12-14 06:38:32 -0500 received badge  Great Answer (source)
2013-12-13 12:42:02 -0500 commented question Pluginception: Build Factory

Other things to check -- make sure the plugin name is correct in your plugin xml file and corresponds with what you're attempting to load.

2013-12-13 12:40:31 -0500 commented question Pluginception: Build Factory

Hey David, I can try to help you debug this. What do you mean when you say "in isolation"? First thing to check is after sourcing your environment, check LD_LIBRARY_PATH to see if it's pointing to the right place and has the right ordering. Then make sure the library with the respective class (dwa_local_planner::OscillationCostFunction) actually exists.