yujinrobot / kobuki_desktop

Visualisation and simulation tools for Kobuki
http://www.ros.org/wiki/kobuki_desktop
37 stars 58 forks source link

Invert contact normal only if the robot is the first colliding object #67

Closed corot closed 3 years ago

corot commented 3 years ago

Contact normal goes from second to first colliding model, so we need to invert it only if the robot is the first This is most of the times the case (that's why it mostly work), but not always, e.g.

Collision between[lack_table_11::link::collision] and [thorp::base_footprint::base_footprint_fixed_joint_lump__base_collision]
0  Position:9.05951 2.63089 0.0163409
   Normal:-0.991845 -0.127448 -0
   robot_heading:-2.95965
   global_contact_angle:-3.0138
   relative_contact_angle:-0.0541515
   0   1   0
1  Position:9.05951 2.63089 0.0166435
   Normal:-0.991845 -0.127448 0
   robot_heading:-2.95965
   global_contact_angle:-3.0138
   relative_contact_angle:-0.0541515
   0   1   0
2  Position:9.0595 2.63089 0.0153666
   Normal:-0.991845 -0.127448 0
   robot_heading:-2.95965
   global_contact_angle:-3.0138
   relative_contact_angle:-0.0541515
   0   1   0

image

But here robot comes first:

Collision between[thorp::base_footprint::base_footprint_fixed_joint_lump__base_collision] and [turtlebot3_house::Wall_93::Wall_93_Collision]
0  Position:12.225 3.41991 0.0160865
   Normal:-1 3.67321e-06 -0
   robot_heading:0.0589247
   global_contact_angle:-3.67321e-06
   relative_contact_angle:-0.0589284
   0   1   0
1  Position:12.225 3.41991 0.0160865
   Normal:-1 3.67321e-06 -0
   robot_heading:0.0589247
   global_contact_angle:-3.67321e-06
   relative_contact_angle:-0.0589284
   0   1   0

image