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

[Autoware] Inclined localizer, wrong detected obstacle height

asked 2019-06-13 04:32:47 -0500

javcursor gravatar image

updated 2019-06-17 05:26:26 -0500

Hi everyone,

I have needed to incline my localizer, in Setup tab I have:

x = 2.2, y = 0, z = 1.86, roll = 0.0, pitch = 0.2138, yaw = 0.0

I have my map and I can navigate it well, but the euclidean_cluster_detect resulting bounding boxes are inclined and the height limits are not well applied. Also aren’t well obstacles from velocity_set

I have seen in lidar_euclidean_cluster_detect/ cluster.cpp line 259

tf::Quaternion quat = tf::createQuaternionFromRPY(0.0, 0.0, rz);

None inclination has been considered, if I put pitch = -0.2138, I can see bounding boxes as they should be but the z position calculated isn't is good.

I pass under a roof that is at 3 meter with respect to base_link and with a height limit above the sensor of 0.3 meter to search obstacles it mark it as obstacle.

I can see using Veloview (after configure x, y, z, and pitch) correct values of x,y,z from this roof.

Any help?

Screenshots: url

Ubuntu 16.04 Ros Kinetic Autoware 1.9

edit retag flag offensive close merge delete

2 Answers

Sort by » oldest newest most voted

answered 2019-06-19 02:08:21 -0500

javcursor gravatar image

updated 2019-06-19 05:55:47 -0500

Ok, I will try it.

If I didn't understood wrong, I've to do the tf from localizer (Velodyne) to base_link

 <!-- base_link_to_localizer -->
   <arg name="x" default="2.2"/>
   <arg name="y" default="0"/>
   <arg name="z" default="1.86"/>
   <arg name="yaw" default="0"/>
   <arg name="pitch" default="0.2138"/> 
   <arg name="roll" default="0"/>
   <arg name="frame_id_baselink2localizer" default="base_link"/>
   <arg name="child_frame_id_baselink2localizer" default="velodyne"/>
   <arg name="period_in_ms" default="10"/>
   <node type="static_transform_publisher" pkg="tf" name="base_link_to_localizer" args="$(arg x) $(arg y) $(arg z) $(arg yaw) $(arg pitch) $(arg roll) $(arg frame_id_baselink2localizer) $(arg child_frame_id_baselink2localizer) $(arg period_in_ms)"/>

And the new one ("lidar"), is it with respect to localizer?

 <!-- localizer_to_lidar -->
   <arg name="x_lidar" default="0"/>
   <arg name="y_lidar" default="0"/>
   <arg name="z_lidar" default="0"/>
   <arg name="yaw_lidar" default="0"/>
   <arg name="pitch_lidar" default="-0.2138"/>
   <arg name="roll_lidar" default="0"/>
   <arg name="frame_id_localizer2lidar" default="velodyne"/>
   <arg name="child_frame_id_localizer2lidar" default="lidar"/>
   <arg name="period_in_ms_lidar" default="10"/>
   <node type="static_transform_publisher" pkg="tf" name="localizer_to_lidar" args="$(arg x_lidar) $(arg y_lidar) $(arg z_lidar) $(arg yaw_lidar) $(arg pitch_lidar) $(arg roll_lidar) $(arg frame_id_localizer2lidar) $(arg child_frame_id_localizer2lidar) $(arg period_in_ms_lidar)"/>

With this new tf, cluster points height should be similar to the height obtained with Veloview?




I've tried it and if I'm doing it well I don't get the expected result

new screenshots

edit flag offensive delete link more

answered 2019-06-18 19:49:34 -0500

amc-nu gravatar image

One way of solving this is registering a new "corrected" coordinate frame in the tf tree (let's call it lidar) with the desired pitch (have a look at the ROS tf package). Once this is done, just set the clustering param output_frame to use your new corrected frame lidar in the launch file or through Runtime Manager. The boxes will be transformed for you inside the code.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2019-06-13 04:32:47 -0500

Seen: 285 times

Last updated: Jun 19 '19