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

Autoware lidar_euclidean_cluster_detect not publishing anything

asked 2019-12-10 01:10:16 -0500

syigzaw gravatar image

Ubuntu 16.04, ROS distro: Kinetic, ROS version: 1.12.14, Autoware version: 1.12.0

The only relevant documentation I found on this package is here: https://gitlab.com/autowarefoundation...

I'm playing a pcap file which is publishing to /points_raw, rviz is showing the points, but when I go into the Computing tab of the Runtime Manager and select lidar_euclidean_cluster_detect, nothing happens. I tried changing some of the parameters it has, like changing the input_points_node parameter to /points_raw, but nothing's worked. Is there something from the parameters I'm missing, or do I need to look in a completely different area? Thanks in advance for your help.

edit retag flag offensive close merge delete

Comments

@syigzaw - What frame is your lidar data being published in?

Josh Whitley gravatar image Josh Whitley  ( 2019-12-16 16:00:10 -0500 )edit

I don't quite know what you mean by which frame. If you mean which topic, then the lidar data is being published on /points_raw. I also set lidar_euclidean_cluster_detect input_points_node parameter to /points_raw, to make sure it's listening to the right topic.

syigzaw gravatar image syigzaw  ( 2019-12-16 16:18:45 -0500 )edit

Is the node actually running? Maybe an error message was shown just after you clicked it on runtime manager. If it’s running can you see the topic points_cluster being published?

amc-nu gravatar image amc-nu  ( 2019-12-16 16:23:31 -0500 )edit

@syigzaw - Most messages (including sensor_msgs/PointCloud2) includes a std_msgs/Header which has the field frame_id. This determines the "frame of reference" in which the sensor data are being published. To find out which frame your sensor data are currently using, start replaying the data and run rostopic echo /points_raw | grep 'frame_id'. The likely problem that you're having is that the lidar_euclidian_cluster_detect node doesn't understand how to transform data from the frame in which your points are being published to the output frame (by default, the output frame is velodyne). It uses the tf package and transforms which are being published in order to do this. If your data are being published with a frame_id of velodyne, then no transform is necessary. However, if your data are being published in another frame then a transform has to be calculated and if no static transform from your frame to the ...(more)

Josh Whitley gravatar image Josh Whitley  ( 2019-12-16 16:26:53 -0500 )edit

@amc-nu - points_cluster shows in the list if I run rostopic list, so that shows that lidar_euclidean_cluster_detect is running, it's just not publishing anything to that topic. @Masimus5684 - the frame ID is velodyne

syigzaw gravatar image syigzaw  ( 2019-12-16 16:42:28 -0500 )edit

points_cluster shows in the list, so that shows that lidar_euclidean_cluster_detect is running

That’s not necessary true. Can you run instead rosnode list confirm it’s there and then rosnode info lidar_euclidean_cluster_detect?

amc-nu gravatar image amc-nu  ( 2019-12-16 17:01:10 -0500 )edit

# rosnode list /detection/lidar_detector/cluster_detect_visualization_01

/lidar_euclidean_cluster_detect

/rosout

/runime_manager_321_1575958087940

/rviz_1575958429925805053

/velodyne_nodelet

/velodyne_nodelet_manager

/velodyne_nodelet_manager_driver

syigzaw gravatar image syigzaw  ( 2019-12-16 17:05:16 -0500 )edit

# rosnode info lidar_euclidean_cluster_detect


Node [/lidar_euclidean_cluster_detect]

Publications:

  • /cluster_centroids [autoware_msgs/Centroids]

  • /detection/lidar_detector/cloud_clusters [autoware_msgs/CloudClusterArray]

  • /detection/lidar_detector/objects [autoware_msgs/DetectedObjectArray]

  • /points_cluster [sensor_msgs/PointCloud2]

  • /points_ground [sensor_msgs/PointCloud2]

  • /points_lanes [sensor_msgs/PointCloud2]

  • /rosout [rosgraph_msgs/Log]

Subscriptions:

  • /points_raw [sensor_msgs/PointCloud2]

  • /tf [unknown type]

  • /tf_static [unknown type]

Services:

  • /lidar_euclidean_cluster_detect/get_loggers

  • /lidar_euclidean_cluster_detect/set_logger_level

contacting node http://sf-pc11:38340/ ...

ERROR: Communication with node[http://sf-pc11:38340/] failed!

syigzaw gravatar image syigzaw  ( 2019-12-16 17:05:42 -0500 )edit

Seems you’re running in a multiple machines

Have a look at this https://answers.ros.org/question/3406...

amc-nu gravatar image amc-nu  ( 2019-12-16 17:11:23 -0500 )edit

@amc-nu The comments are starting to get hidden now so I didn't see your comment until now. It's all running in one docker container, connected to by several different terminals. I set it up by running

$ ./run.sh -r kinetic -t local

When running roslaunch runtime_manager runtime_manager.launch, some of the info I got was:

started roslaunch server http://sf-pc11:39524/ ROS_MASTER_URI=http://localhost:11311

syigzaw gravatar image syigzaw  ( 2019-12-16 17:46:55 -0500 )edit

what command did you use in the second terminal (after launching runtime manager in the first one)?

amc-nu gravatar image amc-nu  ( 2019-12-16 19:56:28 -0500 )edit

I entered the docker container by running

$ docker exec -it <container-id> bash

I did this multiple times, in order to: play the pcap file, open rviz, and echo various topics

syigzaw gravatar image syigzaw  ( 2019-12-16 20:06:29 -0500 )edit

Can you echo ROS_IP and ROS_MASTER_URI inside the container? I think the problem might be related to networking in docker, your hostname (sf-pc) is very probably not being resolved inside the container. Manually setting ROS_IP and ROS_MASTER_URI to your system IP will do the trick ( because of https://gitlab.com/autowarefoundation...)

amc-nu gravatar image amc-nu  ( 2019-12-16 20:21:12 -0500 )edit

Another question would be, do you have running roscore on the host? That also might be causing conflicts.

amc-nu gravatar image amc-nu  ( 2019-12-16 20:23:09 -0500 )edit

# echo $ROS_IP

localhost

# echo $ROS_MASTER_URI

http://localhost:11311

Initially, echo $ROS_IP didn't output anything, but because you showed me this: https://answers.ros.org/question/3406... I set ROS_IP to equal localhost

syigzaw gravatar image syigzaw  ( 2019-12-16 20:48:42 -0500 )edit

I'm not running roscore outside the docker container.

I changed ROS_IP to equal one of the addresses that were outputted by hostname -I, and I set it's value across all terminals I'm working on. Now running:

$ rosnode info lidar_euclidean_cluster_detect

Node [/lidar_euclidean_cluster_detect]

Publications:

  • /cluster_centroids [autoware_msgs/Centroids]

  • /detection/lidar_detector/cloud_clusters [autoware_msgs/CloudClusterArray]

  • /detection/lidar_detector/objects [autoware_msgs/DetectedObjectArray]

  • /points_cluster [sensor_msgs/PointCloud2]

  • /points_ground [sensor_msgs/PointCloud2]

  • /points_lanes [sensor_msgs/PointCloud2]

  • /rosout [rosgraph_msgs/Log]

Subscriptions:

  • /points_no_ground [unknown type]

  • /tf [unknown type]

  • /tf_static [unknown type]

Services:

  • /lidar_euclidean_cluster_detect/get_loggers

  • /lidar_euclidean_cluster_detect/set_logger_level

syigzaw gravatar image syigzaw  ( 2019-12-16 21:06:53 -0500 )edit

contacting node http://129.97.69.75:44442/ ...

Pid: 12441

Connections:

  • topic: /rosout

    • to: /rosout

    • direction: outbound

    • transport: TCPROS

  • topic: /points_cluster

    • to: /rostopic_12754_1576551654652

    • direction: outbound

    • transport: TCPROS

  • topic: /detection/lidar_detector/objects

    • to: /detection/lidar_detector/cluster_detect_visualization_01

    • direction: outbound

    • transport: TCPROS

syigzaw gravatar image syigzaw  ( 2019-12-16 21:07:28 -0500 )edit

I just saw that the subscriptions were wrong so I changed it:

Subscriptions:

  • /points_raw [sensor_msgs/PointCloud2]

  • /tf [unknown type]

  • /tf_static [unknown type]

syigzaw gravatar image syigzaw  ( 2019-12-16 21:18:28 -0500 )edit

Ok, it's almost working! It's now publishing to:

/points_cluster

/detection/lidar_detector/objects

/detection/lidar_detector/objects_markers

/detection/lidar_detector/cloud_clusters

Now, in RVIZ, it's saying that /detection/lidar_detector/objects is unvisualizable. This is really strange, since it's now being published to. I'm able to visualize /detection/lidar_detector/objects_markers and /points_cluster, but I can't visualize /detection/lidar_detector/cloud_clusters and /detection/lidar_detector/objects (the topic I want to visualize).

syigzaw gravatar image syigzaw  ( 2019-12-16 21:36:30 -0500 )edit

The ones you can view are /detection/lidar_detector/objects_markers and /points_cluster which the markers are obtained from /detection/lidar_detector/objects with the help of /detection/lidar_detector/cluster_detect_visualization_01

amc-nu gravatar image amc-nu  ( 2019-12-16 23:06:04 -0500 )edit

I see, I may have been mistaken about the use of /detection/lidar_detector/objects. Is there a way to visualize bounding boxes in rviz?

https://gitlab.com/autowarefoundation...

Here it says "Rectangluar bounding boxes and polygonal bounds are then fit to the cluster pointclouds." But bounding boxes aren't mentioned anywhere else in that readme.

syigzaw gravatar image syigzaw  ( 2019-12-17 00:35:31 -0500 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2019-12-17 10:48:41 -0500

syigzaw gravatar image

The solution is to find your internal IP address, I did this using hostname -I. Take an address from the output and enter export ROS_IP=<address> across all terminals. After that, restart the runtime manager and whatever scripts you need to run.

Thanks to @amc-nu for helping me with this question.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2019-12-10 01:10:16 -0500

Seen: 538 times

Last updated: Dec 17 '19