0
$\begingroup$

Rosanswers logo

~$ rostopic list

/cmd_vel
/control_vel
/encoder/odom
/imu/data
/imu_data
/md49_data
/md49_encoders
/pr2_base_odometry/odom
/ref_pose
/ref_vel
/robot_pose_ekf/odom_combined
/rosout
/rosout_agg
/tf
/tf_static
/vo

~$ rosnode info /robot_pose_ekf

Node [/robot_pose_ekf]
Publications: 
 * /robot_pose_ekf/odom_combined [geometry_msgs/PoseWithCovarianceStamped]
 * /rosout [rosgraph_msgs/Log]
 * /tf [tf2_msgs/TFMessage]

Subscriptions: 
 * /imu_data [unknown type]
 * /pr2_base_odometry/odom [unknown type]
 * /tf [tf2_msgs/TFMessage]
 * /tf_static [unknown type]
 * /vo [unknown type]

Services: 
 * /robot_pose_ekf/get_loggers
 * /robot_pose_ekf/get_status
 * /robot_pose_ekf/set_logger_level


contacting node http://192.168.43.230:42337/ ...
Pid: 3826
Connections:
 * topic: /rosout
    * to: /rosout
    * direction: outbound (38899 - 192.168.43.230:42576) [13]
    * transport: TCPROS
 * topic: /tf
    * to: /robot_pose_ekf
    * direction: outbound
    * transport: INTRAPROCESS
 * topic: /robot_pose_ekf/odom_combined
    * to: /kin_controller_3834_1590954489145
    * direction: outbound (38899 - 192.168.43.230:42588) [10]
    * transport: TCPROS
 * topic: /robot_pose_ekf/odom_combined
    * to: /dyn_controller_3855_1590954494644
    * direction: outbound (38899 - 192.168.43.230:42600) [11]
    * transport: TCPROS
 * topic: /tf
    * to: /robot_pose_ekf (http://192.168.43.230:42337/)
    * direction: inbound
    * transport: INTRAPROCESS
 * topic: /tf
    * to: /imu_to_base (http://192.168.43.204:39589/)
    * direction: inbound (51902 - 192.168.43.204:43869) [16]
    * transport: TCPROS
 * topic: /tf
    * to: /imu/i2c_imu_node (http://192.168.43.204:44281/)
    * direction: inbound (37934 - 192.168.43.204:42235) [17]
    * transport: TCPROS
 * topic: /tf
    * to: /base_odometry_node (http://192.168.43.230:43997/)
    * direction: inbound (53868 - 192.168.43.230:56183) [15]
    * transport: TCPROS

There are no response for this command

~$ rostopic echo /robot_pose_ekf/odom_combined

I want to echo the output of "robot_pose_ekf"


Originally posted by Ahmed_Desoky on ROS Answers with karma: 23 on 2020-05-31

Post score: 0


Original comments

Comment by Dragonslayer on 2020-05-31:
I had a similar issue the answer was to delete the "/" at the beginning of the topic name. rostopic echo robot_pose_ekf/odom_combined

Comment by Ahmed_Desoky on 2020-05-31:
There are no response also

Comment by Dragonslayer on 2020-05-31:
What does "rostopic hz ..." print? What does "rostopic info ..." print? "roswtf --all"?

Comment by Ahmed_Desoky on 2020-05-31:
This the launch file of the robot pose ekf

<launch>
<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
  <param name="output_frame" value="odom_combined"/>
  <param name="base_footprint_frame" value="base_footprint"/>
  <param name="freq" value="30.0"/>
  <param name="sensor_timeout" value="1.0"/>  
  <param name="odom_used" value="true"/>
  <param name="imu_used" value="true"/>
  <param name="vo_used" value="true"/>
  <remap from="odom" to="pr2_base_odometry/odom" />
</node>
</launch>

Comment by Ahmed_Desoky on 2020-05-31:
~$ rostopic hz /robot_pose_ekf/odom_combined

subscribed to [/robot_pose_ekf/odom_combined]
no new messages
no new messages
no new messages
no new messages
no new messages
no new messages

Comment by Ahmed_Desoky on 2020-05-31:
I have edited the post and have showed the :

rosnode info /robot_pose_ekf

Comment by Dragonslayer on 2020-05-31:
Does the tf work? rosrun tf view_frames - whats the output tree?

Comment by Dragonslayer on 2020-05-31:
Are the odom imu and vo actually publishing? What do their rostopic info say?

Comment by Ahmed_Desoky on 2020-05-31:
rosrun tf view_frames

https://drive.google.com/file/d/1Q6uNMweQiyzAyT2Naefa7H9jIXY01yNj/view?usp=sharing

Comment by Ahmed_Desoky on 2020-05-31:
Are the odom imu and vo actually publishing?

    /encoder/odom
    /imu/data
    /imu_data               >>>>>>>> No output 
    /md49_data
    /md49_encoders
    /pr2_base_odometry/odom         >>>> No output 
    /ref_pose
    /ref_vel
    /robot_pose_ekf/odom_combined      >>>>>>>> No output 
    /vo                                                      >>>>>>>> No output

Comment by Ahmed_Desoky on 2020-05-31:
What do their rostopic info say?

~$ rosnode info /robot_pose_ekf

Node [/robot_pose_ekf]
Publications: 
 * /robot_pose_ekf/odom_combined [geometry_msgs/PoseWithCovarianceStamped]
 * /rosout [rosgraph_msgs/Log]
 * /tf [tf2_msgs/TFMessage]

Subscriptions: 
 * /imu_data [unknown type]
 * /pr2_base_odometry/odom [unknown type]
 * /tf [tf2_msgs/TFMessage]
 * /tf_static [unknown type]
 * /vo [unknown type]

Services: 
 * /robot_pose_ekf/get_loggers
 * /robot_pose_ekf/get_status
 * /robot_pose_ekf/set_logger_level

the reminder of the rostopic info in the main post. I have edited the post and have showed the rostopic info, please take a look again to the main post

Comment by Ahmed_Desoky on 2020-05-31:
Are the launch file as is showed above is correct ?

Comment by Dragonslayer on 2020-05-31:
Moved to answer.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

It seems you dont feed the node with input and thus it never starts "working". Also your tf tree will not work (there are actually two), make a static transform from base_footprint to base_link in the appropriate launchfile. link text Take a look at the link to get an idea of static transform if you dont know about it yet (x, y, z etc. you can make all zero, making base_footrpint equal to base_link, if you are using a wheeled robot base). In the end If you get odom imu and vo (do you really need vo?) publishing and the tf tree linked up, it should work.


Originally posted by Dragonslayer with karma: 574 on 2020-05-31

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Dragonslayer on 2020-05-31:
By the way, for a launchfile try this:

<launch>
<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
  <param name="output_frame" value="odom_combined"/>
  <param name="base_footprint_frame" value="base_link"/>
  <param name="freq" value="30.0"/>
  <param name="sensor_timeout" value="1.0"/>  
  <param name="odom_used" value="true"/>
  <param name="imu_used" value="true"/>
  <param name="vo_used" value="false"/>
  <remap from="odom" to="encoder/odom" />
 <remap from="imu_data" to="imu/data" />
</node>
</launch>

Comment by Dragonslayer on 2020-05-31:
Try this launchfile the above will not work as encoder/odom uses base_footprint frame:

<launch>
<node pkg="tf" type="static_transform_publisher" name="static_transform" args="0 0 0 0 0 0 0  /base_footprint /base_link  100"/>


<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
  <param name="output_frame" value="odom_combined"/>
  <param name="base_footprint_frame" value="base_footprint"/>
  <param name="freq" value="30.0"/>
  <param name="sensor_timeout" value="1.0"/>  
  <param name="odom_used" value="true"/>
  <param name="imu_used" value="true"/>
  <param name="vo_used" value="false"/>
  <remap from="odom" to="encoder/odom" />
 <remap from="imu_data" to="imu/data" />
</node>
</launch>

Comment by Ahmed_Desoky on 2020-05-31:
I try to use the second launch file, and it gives this errors in the terminal window :

link text

and the rosnod info is

$ rosnode info /robot_pose_ekf

Node [/robot_pose_ekf]
Publications: 
 * /robot_pose_ekf/odom_combined [geometry_msgs/PoseWithCovarianceStamped]
 * /rosout [rosgraph_msgs/Log]
 * /tf [tf2_msgs/TFMessage]

Subscriptions: 
 * /encoder/odom [nav_msgs/Odometry]
 * /imu/data [sensor_msgs/Imu]
 * /tf [tf2_msgs/TFMessage]
 * /tf_static [unknown type]

and still there are no outputs foe robot_pose_ekf

Comment by Dragonslayer on 2020-06-01:
Sorry, the static transform publisher had a axis to many, try this:

<launch>
<node pkg="tf" type="static_transform_publisher" name="static_transform" args="0 0 0 0 0 0  /base_footprint /base_link  100"/>


<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
  <param name="output_frame" value="odom_combined"/>
  <param name="base_footprint_frame" value="base_footprint"/>
  <param name="freq" value="30.0"/>
  <param name="sensor_timeout" value="1.0"/>  
  <param name="odom_used" value="true"/>
  <param name="imu_used" value="true"/>
  <param name="vo_used" value="false"/>
  <remap from="odom" to="encoder/odom" />
 <remap from="imu_data" to="imu/data" />
</node>
</launch>

Comment by Ahmed_Desoky on 2020-06-01:
[ERROR] [1591037796.233442009]: Covariance specified for measurement on topic wheelodom is zero

[ERROR] [1591037796.233741326]: filter time older than odom message buffer
[ERROR] [1591037796.233884657]: filter time older than odom message buffer
^C[ERROR] [1591037796.330767126]: filter time older than odom message buffer
[ERROR] [1591037796.331129977]: Covariance specified for measurement on topic wheelodom is zero
[ERROR] [1591037796.331370539]: filter time older than odom message buffer
[ERROR] [1591037796.333372238]: filter time older than odom message buffer

Comment by Dragonslayer on 2020-06-01:
Never seen the topic wheelodom before in your posts whats that? The covariances have to fit of course but that has nothing to do with what this question is about. (for testing just make them tiny but non zero) The "filter time..." error is about unsynchronized topics, some data isnt coming in at all or not fast enough, as the timeout is 10 seconds, its likely not coming at all, most likely its the odometry problem causing this error as well. base_odometry_node is publishing odom on encoder/odom topic and the launchfile is remapping this.

Comment by Ahmed_Desoky on 2020-06-01:
rostopic echo /encoder/odom

header: seq: 33694 stamp: secs: 1591041155 nsecs: 601311323 frame_id: "encoder/odom" child_frame_id: "base_footprint" pose: pose: position: x: -316254.234024 y: 105513.04894 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.697199495245 w: 0.716877160907 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: 0.0986509230208 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: -0.0962888348611 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]

Comment by Dragonslayer on 2020-06-01:
The covariances are zero here as well. If those get populated correctly it should all work. So the actual question seems solved. link text Link to a simple start to get into the covariance matrix topic.

Comment by Ahmed_Desoky on 2020-06-01:
Thank you for you long long help.. I really appreciate that so much. Where can i put this covariance is a float[36] a 6x6 matrix?

[0.01  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.01  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]

Comment by Dragonslayer on 2020-06-01:
Your welcome. Dont forget to mark the answer preceding this comments as answered, so people find the comments as well, if it all works finally. You should measure the accuracy of your odometry to get real data for the matrix. This is just an example matrix, but good enough to find out if robot_pose_ekf fires up after all. Iam very sure that this will work now. Populating the matrix is done in the node that calculates the odometry and publishes the message, in your case its in the base_odometry_node as your earlier postet tf tree shows.

Comment by Ahmed_Desoky on 2020-06-02:
Thanks Dragonslayer' .

Really you have saved me.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.