ApolloAuto / apollo

An open autonomous driving platform
Apache License 2.0
25.29k stars 9.73k forks source link

Perception module without radar input #9432

Closed lukasthede closed 2 years ago

lukasthede commented 5 years ago

Hello,

I am trying to launch apollo 3.0 alongside the carla simulator (version 0.9.5) using a ros-bridge. Because carla has no radar sensors I need to run perception without radar input. I tried to simply run the perception module without the radar input, but I am not getting any output from the perception module.

System information

Steps to reproduce the issue:

This is the output of the perception.ERROR logfile:

Log file created at: 2019/08/18 19:44:39
Running on machine: in_dev_docker
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0818 19:44:39.202108 18440 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0203257 timeout was 0.02.. Frames: 
E0818 19:44:39.202376 18440 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.133334279
E0818 19:44:39.202404 18440 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.133334279
E0818 19:44:39.203400 18439 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0217531 timeout was 0.02.. Frames: 
E0818 19:44:39.203501 18439 lidar_process_subnode.cc:109] failed to get trans at timestamp: 18.233334284
E0818 19:44:39.225363 18436 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0209913 timeout was 0.02.. Frames: 
E0818 19:44:39.225489 18436 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.133334279
E0818 19:44:39.225518 18436 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.133334279
E0818 19:44:39.227353 18440 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0235697 timeout was 0.02.. Frames: 
E0818 19:44:39.227409 18440 lidar_process_subnode.cc:109] failed to get trans at timestamp: 18.266667619
E0818 19:44:39.249418 18438 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0222965 timeout was 0.02.. Frames: 
E0818 19:44:39.249536 18438 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.166667614
E0818 19:44:39.249564 18438 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.166667614
E0818 19:44:39.264683 18440 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0202286 timeout was 0.02.. Frames: 
E0818 19:44:39.264820 18440 lidar_process_subnode.cc:109] failed to get trans at timestamp: 18.300000954
E0818 19:44:39.273399 18436 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0206513 timeout was 0.02.. Frames: 
E0818 19:44:39.273509 18436 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.200000949
E0818 19:44:39.273571 18436 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.200000949
E0818 19:44:39.285406 18440 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0202003 timeout was 0.02.. Frames: 
E0818 19:44:39.285498 18440 lidar_process_subnode.cc:109] failed to get trans at timestamp: 18.333334289
E0818 19:44:39.298480 18437 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.020729 timeout was 0.02.. Frames: 
E0818 19:44:39.298539 18437 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.166667614
E0818 19:44:39.298571 18437 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.166667614
E0818 19:44:39.319046 18439 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.0201663 timeout was 0.02.. Frames: 
E0818 19:44:39.319176 18439 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.233334284
E0818 19:44:39.319209 18439 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.233334284
E0818 19:44:39.360236 18440 transform_input.cc:69] Cannot transform frame: world to frame localization , err: Lookup would require extrapolation into the future.  Requested time 18.200000949 but the latest data is at time 0.000000000, when looking up transform from frame [localization] to frame [world]. canTransform returned after 0.0204881 timeout was 0.02.. Frames: Frame long_camera exists with parent short_camera.
Frame short_camera exists with parent velodyne64.
Frame velodyne64 exists with parent novatel.
Frame velodyne16 exists with parent novatel.
Frame radar exists with parent short_camera.
Frame radar_front exists with parent velodyne64.
Frame localization exists with parent world.
E0818 19:44:39.360510 18440 tl_preprocessor_subnode.cc:293] TLPreprocessorSubnode failed to query pose ts:18.200000949
E0818 19:44:39.360550 18440 tl_preprocessor_subnode.cc:264] camera_selection failed to get car pose, ts:18.200000949
E0818 19:44:39.381309 18437 transform_input.cc:69] Cannot transform frame: world to frame localization , err: Lookup would require extrapolation into the future.  Requested time 18.266667619 but the latest data is at time 0.000000000, when looking up transform from frame [localization] to frame [world]. canTransform returned after 0.0205229 timeout was 0.02.. Frames: Frame long_camera exists with parent short_camera.
Frame short_camera exists with parent velodyne64.

How can I fix this issue? Thanks in advance!

youhanmo commented 5 years ago

HI, Did you find the ad_rss directory when building perception model?

lukasthede commented 5 years ago

Sorry for the late reply! What is the ad_rss directory?

I build apollo using the build_opt_gpu flag, installed cuda and nvidia driver and I am running apollo in a nvidia-docker. I tried to follow https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_perception_module_on_your_local_computer.md but as I am using apollo 3.0 the I could not find the launchfiles. Therefore I tried to find the apollo 3.0 equivalents, instead of static_transform-launch I am starting broadcast_extrinsics.sh, afterwards I am launching the perception and prediction modules from dreamview.

After launching apollo (+modules: localization, routing, planning, perception, prediction, control) I am getting the following tf tree: apollo-tf-tree

Then after starting carla and the carla-apollo-ros-bridge the tf-tree looks like this: carla-apollo-tf-tree

The error message in the perception log: E0906 10:35:22.061379 13492 transform_input.cc:44] Cannot transform frame: novatel to frame velodyne64 , err: . canTransform returned after 0.1 timeout was 0.1.. Frames: Frame velodyne64 exists with parent novatel. Frame long_camera exists with parent short_camera. Frame short_camera exists with parent velodyne64. Frame radar exists with parent short_camera. Frame radar_front exists with parent velodyne64. Frame velodyne16 exists with parent novatel. E0906 10:35:22.061477 13492 lidar_process_subnode.cc:109] failed to get trans at timestamp: 5.533333621

I already tried increasing the timeout in the perception config file from 40 to 100, but the module still cant transform novatel to velodyne64, even though it states that the frame velodyne64 exists with parent novatel.

lukasthede commented 5 years ago

I figured out that the /tf and /tf_static info are recieved fine when listening outside the docker environment. When running rosrun tf view_frames outside the docker I recieve the tf-tree above, but when I run the same command inside the docker the output states that no tf data were recieved. I also tried to listen to the tf for novatel to velodyne64 with rosrun tf tf_echo and rosrun tf tf_monitor. Both returned valid tf data when run outside of the docker but did not return anything when I ran them inside the docker environment.

Next I checked weather rostopic info /tf and rosnode info ... would find the tf topic or the nodes publishing the tf info. Both commands returned the info about the tf connections. So while I am not able to receive any tf data the nodes and topics of the tf structure are visible inside the docker.

I am starting the apollo docker environment with bash docker/scripts/dev_start.sh:

${DOCKER_CMD} run -it \
        -d \
        --privileged \
        --name apollo_dev \
        ${MAP_VOLUME_CONF} \
        --volumes-from ${LOCALIZATION_VOLUME} \
        --volumes-from ${YOLO3D_VOLUME} \
        -e ROS_MASTER_URI=http://172.17.0.1:11311 \
        -e ROS_IP=172.17.0.1 \
        -e DISPLAY=$display \
        -e DOCKER_USER=$USER \
        -e USER=$USER \
        -e DOCKER_USER_ID=$USER_ID \
        -e DOCKER_GRP="$GRP" \
        -e DOCKER_GRP_ID=$GRP_ID \
        -e DOCKER_IMG=$IMG \
    ${EXTRA_VOLUMES} \
        $(local_volumes) \
        --net host \
        -w /apollo \
        --add-host in_dev_docker:127.0.0.1 \
        --add-host ${LOCAL_HOST}:127.0.0.1 \
        --hostname in_dev_docker \
        --shm-size 2G \
        --pid=host \
        -v /dev/null:/dev/raw1394 \
        $IMG \
        /bin/bash

Why am I not able to receive tf data inside of the docker environment?

daohu527 commented 2 years ago

Closed due to inactivity. If the problem persists, pls feel free to reopen it or create a new one and refer to it.