Hi,
As the questions says, I do not understand why do we need the static_transform_publisher when the urdf model of the robot with all sensors is properly defined in the urdf file. Doesn't loading the urdf places all the tf's correctly. If so, why do we need to remap frames most of the times for example when using hector_slam ? Can someone explain.
↧
Why do I need the static transform if my urdf is properly defined?
↧
Transforming PointCloud2
I would like to know if somebody knows what is the substitute for the function of transformPointCloud() for PointCloud2 data type as in this [question](http://answers.ros.org/question/71/how-to-transform-pointcloud2-with-tf). I've tried to go to the [link](http://www.ros.org/doc/api/pcl_ros/html/namespacepcl__ros.html) provided but it seems to be deprecated(I guess) as I cannot find in my autocompletion mode.
Thanks in advance.
↧
↧
Problem Moving the Robot in Rviz
I have written a urdf file for my differential drive mobile robot an want to make it move on rviz. I'm doing the tutorials on the book "Learning ROS for Robotic Programming" and used the codes and examples there, modifying them for myself.
So here is the urdf code;
This is the broadcaster code:
#include
#include
#include
int main(int argc, char** argv) {
ros::init(argc, argv, "tf_broadcaster");
ros::NodeHandle n;
tf::TransformBroadcaster broadcaster;
ros::Rate loop_rate(30);
double angle= 0;
// message declarations
geometry_msgs::TransformStamped odom_trans;
odom_trans.header.frame_id = "odom";
odom_trans.child_frame_id = "base_link";
while (ros::ok()) {
// (moving in a circle with radius 1)
odom_trans.header.stamp = ros::Time::now();
odom_trans.transform.translation.x = cos(angle);
odom_trans.transform.translation.y = sin(angle);
odom_trans.transform.translation.z = 0.0;
odom_trans.transform.rotation = tf::createQuaternionMsgFromYaw(angle);
//send transform
broadcaster.sendTransform(odom_trans);
loop_rate.sleep();
}
return 0;
}
I launch the urdf on rviz and the node, but I get the problem as;
No transform from [wheel_1] to [/base_link]
No transform from [wheel_2] to [/base_link]
I'm not very experienced on ROS and TF and couldn't figure out why there is no transform between two links, isn't urdf is for that?
↧
tf, translation between frames
Hi,
I have a setup with multiple target frames. Now I want to get the position of my last frame in relation to the world frame.
During execution typing
**rosrun tf tf_echo /world /LAST_LINK**
I receive exactly what I am looking for
**- Translation: [20.632, 0.000, -3.759]
- Rotation: in Quaternion [-0.574, -0.000, 0.819, 0.000]
in RPY [-0.000, 1.222, 3.142]**
How can I read these values in my program in order to perform further calculations from it?
↧
Run .launch file with arg from .launch file
I would like to use a master .launch file to run another .launch file, but with an arg.
Specifically, I am attempting to create a .launch file which would be equivalent to running:
roslaunch openni_launch openni.launch camera:=openni
This is what I am currently attempting for my .launch file:
The .launch file runs correctly and openni.launch works fine, but it does not seem to be running the arg camera:=openni. I can tell because I cannot view the tf topics in Rviz from openni_tracker.
I am currently using catkin in ROS Hydro with Ubuntu 12.04. I appreciate your help. Thank you.
↧
↧
How to transform tf::Vector3 with tf::TransformationListener?
I am trying to convert a `tf::Vector3` with `tf::TransfomationListener::transformVector(string("/base_link"), sourceV, targetV)`. What I get is the following:
*no known conversion for argument 2 from 'const tf::Vector3' to 'const Vector3Stamped& {aka const geometry_msgs::Vector3Stamped_>&}' *
Ok, so I figured I need a Stamped version of my vector. I tried this:
tf::Stamped sv(sourceV, ros::Time(), string("/odom"));
and got this:
*no known conversion for argument 2 from 'tf::Stamped' to 'const Vector3Stamped& {aka const geometry_msgs::Vector3Stamped_>&}'*
Then I realized that it is requesting `geometry_msgs::Vector3Stamped`. How come the transformation listener from `tf` doesn't take `tf::Vector3`?
Ok, then I tried to get the right type:
geometry_msgs::Vector3Stamped gV;
gV.vector = sourceV;
gV.header.stamp = ros::Time();
gV.header.frame_id = "/odom";
This resulted in:
*no match for 'operator=' (operand types are 'geometry_msgs::Vector3Stamped_>::_vector_type {aka geometry_msgs::Vector3_>}' and 'const tf::Vector3')*
In the end my code looked like this:
geometry_msgs::Vector3Stamped gV, tV;
gV.vector.x = sourceV.x();
gV.vector.y = sourceV.y();
gV.vector.z = sourceV.z();
gV.header.stamp = ros::Time();
gV.header.frame_id = "/odom";
getTransformListener()->transformVector(string("/base_link"), gV, tV);
targetV.setX(tV.vector.x);
targetV.setY(tV.vector.y);
targetV.setZ(tV.vector.z);
Even though I think this should be a one-liner without all that unnecessary object creation and assigment:
getTransformListener()->transformVector(string("/base_link"), sourceV, targetV);
**Question:**
Is the one-liner somehow possible? Is there another easy way to do this that I am missing?
↧
How to transform tf::Vector3 with tf::TransformListener::transformVector?
I am trying to convert a `tf::Vector3` with `tf::TransfomListener::transformVector(string("/base_link"), sourceV, targetV)`. What I get is the following:
*no known conversion for argument 2 from 'const tf::Vector3' to 'const Vector3Stamped& {aka const geometry_msgs::Vector3Stamped_>&}' *
Ok, so I figured I need a Stamped version of my vector. I tried this:
tf::Stamped sv(sourceV, ros::Time(), string("/odom"));
and got this:
*no known conversion for argument 2 from 'tf::Stamped' to 'const Vector3Stamped& {aka const geometry_msgs::Vector3Stamped_>&}'*
Then I realized that it is requesting `geometry_msgs::Vector3Stamped`. How come the transformation listener from `tf` doesn't take `tf::Vector3`?
Ok, then I tried to get the right type:
geometry_msgs::Vector3Stamped gV;
gV.vector = sourceV;
gV.header.stamp = ros::Time();
gV.header.frame_id = "/odom";
This resulted in:
*no match for 'operator=' (operand types are 'geometry_msgs::Vector3Stamped_>::_vector_type {aka geometry_msgs::Vector3_>}' and 'const tf::Vector3')*
In the end my code looked like this:
geometry_msgs::Vector3Stamped gV, tV;
gV.vector.x = sourceV.x();
gV.vector.y = sourceV.y();
gV.vector.z = sourceV.z();
gV.header.stamp = ros::Time();
gV.header.frame_id = "/odom";
getTransformListener()->transformVector(string("/base_link"), gV, tV);
targetV.setX(tV.vector.x);
targetV.setY(tV.vector.y);
targetV.setZ(tV.vector.z);
Even though I think this should be a one-liner without all that unnecessary object creation and assigment:
getTransformListener()->transformVector(string("/base_link"), sourceV, targetV);
**Question:**
Is the one-liner somehow possible? Is there another easy way to do this that I am missing?
↧
Is it possible to use a normal publisher in place of a TransformBroadcaster?
I'm just wondering whether a TransformBroadcaster does anything special that a normal publisher can't. Thanks
↧
tf tree is invalide because it contains a loop
I am trying to display my laserscan on rviz but its status flickers between Status:Ok and Status:Error because of Transform.
Transform [sender=/depthimage_to_laserscan]
For frame [camera_depth_frame]: No transform to fixed frame [base_footprint].
TF error: [The tf tree is invalid because it contains a loop.
Frame camera_rgb_optical_frame exists with parent camera_rgb_frame.
Frame camera_rgb_frame exists with parent base_link.
Frame base_footprint exists with parent odom.
Frame base_link exists with parent base_footprint.
Frame left_cliff_sensor_link exists with parent base_link.
Frame leftfront_cliff_sensor_link exists with parent base_link.
Frame right_cliff_sensor_link exists with parent base_link.
Frame rightfront_cliff_sensor_link exists with parent base_link.
Frame wall_sensor_link exists with parent base_link.
Frame camera_depth_frame exists with parent camera_rgb_frame.
Frame camera_depth_optical_frame exists with parent camera_depth_frame.
Frame camera_link exists with parent camera_rgb_frame.
Frame front_wheel_link exists with parent base_link.
Frame gyro_link exists with parent base_link.
Frame base_laser_link exists with parent base_link.
Frame laser exists with parent base_link.
Frame plate_0_link exists with parent base_link.
Frame plate_1_link exists with parent plate_0_link.
Frame plate_2_link exists with parent plate_1_link.
Frame plate_3_link exists with parent plate_2_link.
Frame rear_wheel_link exists with parent base_link.
Frame spacer_0_link exists with parent base_link.
Frame spacer_1_link exists with parent base_link.
Frame spacer_2_link exists with parent base_link.
Frame spacer_3_link exists with parent base_link.
Frame standoff_2in_0_link exists with parent base_link.
Frame standoff_2in_1_link exists with parent base_link.
Frame standoff_2in_2_link exists with parent base_link.
Frame standoff_2in_3_link exists with parent base_link.
Frame standoff_2in_4_link exists with parent standoff_2in_0_link.
Frame standoff_2in_5_link exists with parent standoff_2in_1_link.
Frame standoff_2in_6_link exists with parent standoff_2in_2_link.
Frame standoff_2in_7_link exists with parent standoff_2in_3_link.
Frame standoff_8in_0_link exists with parent standoff_2in_4_link.
Frame standoff_8in_1_link exists with parent standoff_2in_5_link.
Frame standoff_8in_2_link exists with parent standoff_2in_6_link.
Frame standoff_8in_3_link exists with parent standoff_2in_7_link.
Frame standoff_kinect_0_link exists with parent plate_2_link.
Frame standoff_kinect_1_link exists with parent plate_2_link.
Frame left_wheel_link exists with parent base_link.
Frame right_wheel_link exists with parent base_link.
Frame scan1 exists with parent cart_frame.
Frame scan2 exists with parent cart_frame. ]
How do I get rid of the error?
EDIT:
tf frames

↧
↧
tf cannot find boost thread library
I am trying to build ros hydro from source on ubuntu 12.04 it requires boost 1.46.1 but the version of boost installed on my machine is 1.48 so I downloaded boost 1.46.1 and installed it in a local folder. I also added skip-keys flag in rosdep to stop it from installing boost (because it would remove the newer version). After installing these dependencies I did ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release as mentioned here : http://wiki.ros.org/hydro/Installation/Source
this started building plain cmake and catkin packages but gave an error while building tf:
CMakeFiles/tf_monitor.dir/src/tf_monitor.cpp.o: In function `main':
tf_monitor.cpp:(.text.startup+0x3cf): undefined reference to `boost::thread::start_thread_noexcept()'
tf_monitor.cpp:(.text.startup+0x46f): undefined reference to `boost::thread::join_noexcept()'
I specified the boost library path using CMAKE_LIBRARY_PATH variable
cmake is able to find the local boost installation using this.
I also tried changing the CMakeCahe.txt file in tf package by specifying the location of libboost_thread.so but still no luck can someone please help .
↧
The transform between /map and /base_link
While I try the gmapping with turtlebot2+rplidar laser range, there is a problem, then I try the commod below:
$ rosrun tf tf_echo /map /base_link
when I control the turtlebot2 move back, the X axis data should decrease, but in my work, it increases. And this results in my error gmapping.
My rplidr gmapping launch file is based on the kinect gmapping files.
So I want to know what causes this and what should I do to avoid this? thank you very much!!
↧
Problem with leg_detector in People: Dropped 100:00% message so far
hi, all. I am trying to run [leg_detector](http://wiki.ros.org/leg_detector?distro=hydro) with indigo-devel branch which is a part of people in ROS wiki.
I found that "odom_combined" was set to be " fixed_frame" from source code. Following error is output. And no message is output both in topic /leg_tracker_measurements and /visualization_marker.
[ WARN] [1378817011.705600206]: MessageFilter [target=/odom_combined ]: Dropped 100.00% of messages so far. Please turn the [ros.leg_detector.message_notifier] rosconsole logger to DEBUG for more information.
I am using a Turtlebot2( i.e. kobuki) mounted with a hokuyo URG04LX.
Firstly, to solve this problem, I think the topic "odom_combined" is output by node "robot_pose_ekf". So I added "robot_pose_ekf" in launch file, but the problem still existed. Add since I am using Turtlebot2, the node "robot_pose_ekf" is confict with another node "mobile_base_nodelet_manager" which also manges the transform between "base_footprint" and "odom" in tf tree.
I also have changed "odom_combined" to be "laser_link" in all cpp and cfg files. And I deleted both devel and build directories and rebuild this workspace by running "catkin_make". The above error still existed.
Pleaase give me helpful advices. Thank you! @David lu
↧
Rosbag play stuck, tf issues?
I have a very peculiar issue here. When playing the well known bagfile rgbd_dataset_freiburg1_xyz.bag
and have rviz open, the clock gets stuck around 3.780429. If i play back with 10% speed, everything just plays fine.
Also without rviz open, everything just works fine.
As soon as I run a node that listens to tf that error seems to happen. So i guess it is something deeper than rviz...
Any ideas what might cause this issue or how to fix it?
---
↧
↧
Problem with tf tutorial
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rviz: Missing resource catkin
ROS path [0]=/opt/ros/fuerte/share/ros
ROS path [1]=/home/user/fuerte_workspace
ROS path [2]=/opt/ros/fuerte/stacks
ROS path [3]=/opt/ros/fuerte/lib
ROS path [4]=/opt/ros/fuerte/share
turtle_tf: Missing resource catkin
ROS path [0]=/opt/ros/fuerte/share/ros
ROS path [1]=/home/user/fuerte_workspace
ROS path [2]=/opt/ros/fuerte/stacks
ROS path [3]=/opt/ros/fuerte/lib
ROS path [4]=/opt/ros/fuerte/share
I get this error when I tried to do [tf/Tutorial/Introduction to tf].
Anyone else know how to solve this? Much appreciated.
↧
Fusing 2 sonars / pingers as continous sensors or 'GPS'
Picking up where I left [ekf_localization-node-not-responding](http://answers.ros.org/question/197404/ekf_localization-node-not-responding/), I am trying to fuse position in x and y from 2 sonars (Tritech Micron MK III) with (double integrated accelerometer) position from an IMU (xsens MTi 30).
This happens inside a rectangular pool, so each sonar
- will track a side wall and measure the absolute distance to it (one sonar looking at the short wall, the other at the long wall),
- we have a distance and a heading attached to it
- and report x and/or y position either to use as
- absolute position with x axis || long side of pool, y || short side of pool
- or relative position to the starting point (differential_integration == true)
(The point being trying to get a quicker update rate compared to doing machine vision on a full scan)
The problem now is: **How can I account for the sonar's offset from base_link** since **the measurements aren't really in the body frame?**
I could either
1. report the data with frame_id `odom` or `map`, but how could I account for the mounting offset especially when the sub is not aligned with the side walls.
1. would that be possible with a single instance of robot_localization, or should then tread them as 'GPS'?
2. report the data in a `Sonar1` and `Sonar2` frame and use the current heading of the sonar head (plus the fixed translation) to publish a transform from `Sonar1` to `base_link`
- This means that I will have to use the attitude solution to track the wall, but that's outside the scope of robot_localization.
I believe the latter is the better approach. Does this make sense or how could it be improved?
Thanks,
Rapha
↧
Problem setting up hector_slam (no map), please help
Hello,
I have been trying to make hector slam work on my turtlebot with a hokuyo 04lx laser.
I am using ROS fuerte, ubuntu 12.04.
Steps I followed:
1) Did rosmake to hector_slam package with no errors.
2) I already have a urdf of my turtlebot with laser installed. (I can use gmapping)
3) I did try the hector_turtlebot gazebo tutorials successfully.
I launched the files in this order.
1) turtlebot.launch file
2) hokuyo.launch file
3) hector_slam_launch tutorial.launch
The mapping_default.launch file is like this:
I can see the laser scan and robot model on rviz. But the fixed frame and target from gives error on /map topic. If I change both of them to /odom the laser scans are shown.
Also the Map field gives error. I cannot see the map being built.
Also on the terminal in the tutorial.launch file I get strange errors like this:
SUMMARY
========
PARAMETERS
* /hector_geotiff_node/draw_background_checkerboard
* /hector_geotiff_node/draw_free_space_grid
* /hector_geotiff_node/geotiff_save_period
* /hector_geotiff_node/map_file_base_name
* /hector_geotiff_node/map_file_path
* /hector_mapping/advertise_map_service
* /hector_mapping/base_frame
* /hector_mapping/laser_z_max_value
* /hector_mapping/laser_z_min_value
* /hector_mapping/map_frame
* /hector_mapping/map_multi_res_levels
* /hector_mapping/map_resolution
* /hector_mapping/map_size
* /hector_mapping/map_start_x
* /hector_mapping/map_start_y
* /hector_mapping/map_update_angle_thresh
* /hector_mapping/map_update_distance_thresh
* /hector_mapping/odom_frame
* /hector_mapping/pub_map_odom_transform
* /hector_mapping/scan_subscriber_queue_size
* /hector_mapping/scan_topic
* /hector_mapping/tf_map_scanmatch_transform_frame_name
* /hector_mapping/update_factor_free
* /hector_mapping/update_factor_occupied
* /hector_mapping/use_tf_pose_start_estimate
* /hector_mapping/use_tf_scan_transformation
* /hector_trajectory_server/source_frame_name
* /hector_trajectory_server/target_frame_name
* /hector_trajectory_server/trajectory_publish_rate
* /hector_trajectory_server/trajectory_update_rate
* /rosdistro
* /rosversion
* /use_sim_time
NODES
/
hector_geotiff_node (hector_geotiff/geotiff_node)
hector_mapping (hector_mapping/hector_mapping)
hector_trajectory_server (hector_trajectory_server/hector_trajectory_server)
rviz (rviz/rviz)
ROS_MASTER_URI=http://192.168.111.21:11311
core service [/rosout] found
process[rviz-1]: started with pid [16501]
process[hector_mapping-2]: started with pid [16502]
process[hector_trajectory_server-3]: started with pid [16563]
HectorSM map lvl 0: cellLength: 0.05 res x:2048 res y: 2048
HectorSM map lvl 1: cellLength: 0.1 res x:1024 res y: 1024
[ INFO] [1385693168.936804322]: HectorSM p_base_frame_: base_link
[ INFO] [1385693168.936939784]: HectorSM p_map_frame_: map
[ INFO] [1385693168.937028939]: HectorSM p_odom_frame_: odom
[ INFO] [1385693168.937128850]: HectorSM p_scan_topic_: hokuyo_scan
[ INFO] [1385693168.937212180]: HectorSM p_use_tf_scan_transformation_: true
[ INFO] [1385693168.937281717]: HectorSM p_pub_map_odom_transform_: true
[ INFO] [1385693168.937360377]: HectorSM p_scan_subscriber_queue_size_: 5
[ INFO] [1385693168.937426493]: HectorSM p_map_pub_period_: 2.000000
[ INFO] [1385693168.937492279]: HectorSM p_update_factor_free_: 0.400000
[ INFO] [1385693168.937555392]: HectorSM p_update_factor_occupied_: 0.900000
[ INFO] [1385693168.937628583]: HectorSM p_map_update_distance_threshold_: 0.400000
[ INFO] [1385693168.937708414]: HectorSM p_map_update_angle_threshold_: 0.060000
[ INFO] [1385693168.937776160]: HectorSM p_laser_z_min_value_: -1.000000
[ INFO] [1385693168.937842333]: HectorSM p_laser_z_max_value_: 1.000000
process[hector_geotiff_node-4]: started with pid [16620]
[ INFO] [1385693170.824508362]: No plugins loaded for geotiff node
[ INFO] [1385693170.824670229]: Geotiff node started
Got bus address: "unix:abstract=/tmp/dbus-2hLnz9fcNf,guid=bb9cbab66e8849381861c23a00000019"
Connected to accessibility bus at: "unix:abstract=/tmp/dbus-2hLnz9fcNf,guid=bb9cbab66e8849381861c23a00000019"
Registered DEC: true
Registered event listener change listener: true
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QComboBoxListView(0x1fd6e50) ""
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QComboBoxListView(0x205e6a0) ""
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
QSpiAccessible::accessibleEvent not handled: "8008" obj: QComboBoxListView(0x22dd9d0) ""
QSpiAccessible::accessibleEvent not handled: "8008" obj: QObject(0x0) " invalid interface!"
FIXME: handle dialog start.
FIXME: handle dialog end.
I do not understand what is this??
My TF tree and Rviz shot are attached here.
TF tree (https://www.dropbox.com/s/xr6ziffncbh0ptd/frames.pdf)
RViz-[Screenshot from 2013-11-29 11:31:31.png](/upfiles/1385694357981352.png)
Can someone help me point out the errors and how to solve it. Also how to solve the error I am getting on the terminal.
Thanks in advance!!
Ankit
↧
How to update map to odom with corrections from SLAM ?
Our basic goal is to publish a map to odom transform that corrects for the drift of our odometry. We have a localization algorithm that uses landmarks to give an absolute position wrt the map frame. Our problem so far has been with how to best achieve this using the tf library.
The strategy we are trying right now looks like:
//Get newPose
tf::Pose newPose = getPoseFromLandmarks();
//Get difference between current pose (which may be different than previous getPoseFromLandmarks because of odom updates) and newPose
tf::Transform poseDifference = currentPose.inverse() * newPose;
//Apply that difference to our current map to odom transfrom
tf::Transform newMapToOdom = poseDifference * currentMapToOdom;
//Now broadcast the transform and we're done
This was working fine up until we started calculating rotation in getPoseFromLandmarks(). When we apply rotation to the newPose, the poseDifference as well as the newMapToOdom values are not as we expect. It seems that the rotation happens before the translation (e.g. {x,y,z of poseDifference} != {x,y,z currentPose} - {x,y,z newPose}). This usually causes the corrections to accumulate and our x,y,z quickly goes to infinity.
We have tried every combination we could think of to make this work; right vs left multiply, changing what we inverse and where, calculating translation difference separately from rotation difference. The only successful strategy we have had is to manually calculate the difference in the pose origins, manually calculate the difference in the yaw of both poses (which works since we are only updating the robots yaw for now), and then manually apply these results to the currentMapToOdom transform.
//Get the difference in translation and yaw
poseDifference.setOrigin(newPose.getOrigin() - currentPose.getOrigin());
poseDifference.setRotation(tf::createQuaternionFromYaw(tf::getYaw(newPose.getRotation()) - tf::getYaw(currentPose.getRotation())));
//Apply the difference to correct mapToOdom
newMapToOdom.setOrigin(currentMapToOdom.getOrigin() + poseDifference.getOrigin());
newMapToOdom.setRotation(tf::createQuaternionFromYaw(tf::getYaw(currentMapToOdom.getRotation()) + tf::getYaw(poseDifference.getRotation())));
While this works, it feels really hacky and won't work roll/pitch corrections. It seems like there should be a more elegant way to achieve this with TF math, or maybe a better strategy for calculating the corrected mapToOdom transform?
Any help would be appreciated, thanks in advance.
↧
↧
RViz keep saying "No transform from [front_left] to [base_link]"
I have a package named sp1s, I added a URDF, as simple as below:
Here is the launch file I edited:
When I launch it by "roslaunch sp1s display.launch model:=urdf/sp1s.urdf", the Rviz keep saying "No transform from [front_left] to [base_link]".
I double checked my urdf content, I believe it caused by using joint type "continuous".
**I strongly believe its a bug. When I follow the urdf_tutorial by 'roslaunch urdf_tutorial display.launch model:=urdf/06-flexible.urdf gui:=True', it was showing fine. But I changed the 06-flexible.urdf simply by add one space at the last empty line, launch it again it would say same thing on RViz**
Why its happening, how to work around it?
↧
TF_OLD_DATA ignoring data from the past for frame odom
Hello everyone
I was using ROS hydro, however I updated Ubuntu and installed ROS indigo in my computer. I am writing to you because I am currently trying to make a robot which goes from an estimated point to an aim point, for this I need to use tf (to find the robots estimated position), but when I execute my program the following warnings appear
warn: worldfile /home/diego/MobileRobots/src/AIS_worlds/LBH_floor_1.world:43 : property [interval_real] is defined but not used (/tmp/buildd/ros-indigo-stage-4.1.1-2trusty-20141229-2215/libstage/worldfile.cc WarnUnused)
warn: worldfile /home/diego/MobileRobots/src/AIS_worlds/LBH_floor_1.world:40 : property [gui_movemask] is defined but not used (/tmp/buildd/ros-indigo-stage-4.1.1-2trusty-20141229-2215/libstage/worldfile.cc WarnUnused)
warn: worldfile /home/diego/MobileRobots/src/AIS_worlds/LBH_floor_1.world:44 : property [laser_return] is defined but not used (/tmp/buildd/ros-indigo-stage-4.1.1-2trusty-20141229-2215/libstage/worldfile.cc WarnUnused)
warn: worldfile /home/diego/MobileRobots/src/AIS_worlds/LBH_floor_1.world:25 : property [laser_return] is defined but not used (/tmp/buildd/ros-indigo-stage-4.1.1-2trusty-20141229-2215/libstage/worldfile.cc WarnUnused)
warn: worldfile /home/diego/MobileRobots/src/AIS_worlds/LBH_floor_1.world:42 : property [range_max] is defined but not used (/tmp/buildd/ros-indigo-stage-4.1.1-2trusty-20141229-2215/libstage/worldfile.cc WarnUnused)
warn: worldfile /home/diego/MobileRobots/src/AIS_worlds/LBH_floor_1.world:44 : property [resolution] is defined but not used (/tmp/buildd/ros-indigo-stage-4.1.1-2trusty-20141229-2215/libstage/worldfile.cc WarnUnused)
[ INFO] [1422453286.760958942]: found 1 position and laser(1)/camera(0) pair in the file
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 0.5 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
I can cope with this if this it's just a simple problem or something with no importance (the map is loading perfectly), however the warning of TF_OLD_DATA is appearing at every 0.1s, Additionally I suspect that the robot is not receiving estimated position correctly:
[ INFO] [1422454423.865170946, 13.100000000]: POS estimated_x = 33.027127, aim_X= 33.800000, estimated_y =7.292175, aim_Y= -40.000000, dist = 47.298490
[ INFO] [1422454423.865415347, 13.100000000]: POS estimated_x = 33.027127, aim_X= 33.800000, estimated_y =7.292175, aim_Y= -40.000000, dist = 47.298490
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.3 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
[ INFO] [1422454423.968773001, 13.200000000]: POS estimated_x = 33.027127, aim_X= 33.800000, estimated_y =7.292175, aim_Y= -40.000000, dist = 47.298490
[ INFO] [1422454423.969095065, 13.200000000]: POS estimated_x = 33.079496, aim_X= 33.800000, estimated_y =7.323241, aim_Y= -40.000000, dist = 47.328725
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.4 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
[ INFO] [1422454424.062837413, 13.300000000]: POS estimated_x = 33.079496, aim_X= 33.800000, estimated_y =7.323241, aim_Y= -40.000000, dist = 47.328725
[ INFO] [1422454424.063056251, 13.300000000]: POS estimated_x = 33.079496, aim_X= 33.800000, estimated_y =7.323241, aim_Y= -40.000000, dist = 47.328725
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.5 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
[ INFO] [1422454424.125706916, 13.400000000]: POS estimated_x = 33.079496, aim_X= 33.800000, estimated_y =7.323241, aim_Y= -40.000000, dist = 47.328725
[ INFO] [1422454424.125956666, 13.400000000]: POS estimated_x = 33.079496, aim_X= 33.800000, estimated_y =7.323241, aim_Y= -40.000000, dist = 47.328725
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.6 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
[ INFO] [1422454424.225232356, 13.500000000]: POS estimated_x = 33.079496, aim_X= 33.800000, estimated_y =7.323241, aim_Y= -40.000000, dist = 47.328725
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.7 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
[ INFO] [1422454424.225467356, 13.500000000]: POS estimated_x = 33.136469, aim_X= 33.800000, estimated_y =7.345865, aim_Y= -40.000000, dist = 47.350514
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.8 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
[ INFO] [1422454424.328012308, 13.600000000]: POS estimated_x = 33.136469, aim_X= 33.800000, estimated_y =7.345865, aim_Y= -40.000000, dist = 47.350514
[ INFO] [1422454424.328320071, 13.600000000]: POS estimated_x = 33.136469, aim_X= 33.800000, estimated_y =7.345865, aim_Y= -40.000000, dist = 47.350514
[ INFO] [1422454424.427263374, 13.700000000]: POS estimated_x = 33.136469, aim_X= 33.800000, estimated_y =7.345865, aim_Y= -40.000000, dist = 47.350514
[ INFO] [1422454424.427495187, 13.700000000]: POS estimated_x = 33.136469, aim_X= 33.800000, estimated_y =7.345865, aim_Y= -40.000000, dist = 47.350514
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 13.9 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
Warning: TF_OLD_DATA ignoring data from the past for frame odom at time 14 according to authority unknown_publisher
Possible reasons are listed at http://wiki.ros.org/tf/Errors%20explained
at line 260 in /tmp/buildd/ros-indigo-tf2-0.5.7-0trusty-20141230-0040/src/buffer_core.cpp
And finally, the robot does not stop when it has to.
Can anyone please help me with this?
↧
StampedTransform getting Position instead of Relative Position
HI,
I am trying to log some data. The code works like intended except I am receiving the Relative Position instead of the Position.
tf::StampedTransform transformOdom;
current_time = ros::Time::now();
try {
listener.waitForTransform( "odom","base_footprint", ros::Time(0), ros::Duration(10.0));
listener.lookupTransform( "odom", "base_footprint",ros::Time(0), transformOdom);
}
catch (tf::TransformException &ex) {
ROS_ERROR("%s",ex.what());
}
//For debugging purposes
ROS_INFO_STREAM("X pose " << transformOdom.getOrigin().x() );
ROS_INFO_STREAM("Y pose " << transformOdom.getOrigin().y());
fileToWrite.open ("log.txt", ios_base::app);
fileToWrite << "X: " << transformOdom.getOrigin().x() << " Y: " << transformOdom.getOrigin().y()<< "\n";
fileToWrite.close();

Does anyone know how to get the position of the robot instead of the relative position?
Thanks,
choog
↧