0
$\begingroup$

Rosanswers logo

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/autoware.ai/core_perception/tree/master/lidar_euclidean_cluster_detect

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.


Originally posted by syigzaw on ROS Answers with karma: 13 on 2019-12-10

Post score: 1


Original comments

Comment by Josh Whitley on 2019-12-16:
@syigzaw - What frame is your lidar data being published in?

Comment by syigzaw on 2019-12-16:
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.

Comment by amc-nu on 2019-12-16:
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?

Comment by Josh Whitley on 2019-12-16:
@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 velodyne frame is being published, this lookup will fail.

Comment by syigzaw on 2019-12-16:
@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

Comment by amc-nu on 2019-12-16:\

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?

Comment by syigzaw on 2019-12-16:
# 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

Comment by syigzaw on 2019-12-16:
# 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!

Comment by amc-nu on 2019-12-16:
Seems you’re running in a multiple machines

Have a look at this https://answers.ros.org/question/34064/communication-error-between-two-nodes-on-two-distributed-machines/

Comment by syigzaw on 2019-12-16:
@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

Comment by amc-nu on 2019-12-16:
what command did you use in the second terminal (after launching runtime manager in the first one)?

Comment by syigzaw on 2019-12-16:
I entered the docker container by running

$ docker exec -it bash

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

Comment by amc-nu on 2019-12-16:
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/autoware.ai/docker/blob/master/generic/run.sh#L161)

Comment by amc-nu on 2019-12-16:
Another question would be, do you have running roscore on the host? That also might be causing conflicts.

Comment by syigzaw on 2019-12-16:
# 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/34064/communication-error-between-two-nodes-on-two-distributed-machines/ I set ROS_IP to equal localhost

Comment by syigzaw on 2019-12-16:
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

Comment by syigzaw on 2019-12-16:
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

Comment by syigzaw on 2019-12-16:
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]

Comment by syigzaw on 2019-12-16:
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).

Comment by amc-nu on 2019-12-17:
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

Comment by syigzaw on 2019-12-17:
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/autoware.ai/core_perception/tree/master/lidar_euclidean_cluster_detect

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.

Comment by amc-nu on 2019-12-17:
Those are already visible in detection/lidar_detector/objects_markers (polygonal bounds)

Comment by syigzaw on 2019-12-17:
Ok, so other than the polygonal bounds, is there any way to get 3D bounding boxes? I'm trying to get the same thing that is shown here https://www.youtube.com/watch?v=Tma2DKMxt4Y

In that video, which is using an earlier version of Autoware, the bounding boxes are published to /bounding_boxes, but that topic is no longer being published to in my version. Are 3D bounding boxes completely not published anymore?

Comment by amc-nu on 2019-12-17:
These are not shown anymore by the visualizer for Euclidean detection, you’ll need to use tracking to provide the correct pose. If you have anymore questions please open them. Your original question about the node not working is cleared. I’ll appreciate if you answer your own question on what exactly did you do.

Comment by syigzaw on 2019-12-17:
Ok, thank you very much for your help, and thanks for being patient with me for all the questions I had.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by syigzaw with karma: 13 on 2019-12-17

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

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