21 #include <ISM/utility/GeometryHelper.hpp> 29 const std::map<
int, std::vector<ISM::VoteSpecifierPtr>> track_index_to_votes)
32 ISM::TracksPtr overall_tracks = ISM::TracksPtr(
new ISM::Tracks(tracks->tracks));
33 overall_tracks->tracks.insert(overall_tracks->tracks.end(), ism_object_tracks->tracks.begin(), ism_object_tracks->tracks.end());
46 for (
const std::pair<
int, std::vector<ISM::VoteSpecifierPtr>>& votes : track_index_to_votes)
48 int index = votes.first;
56 for (ISM::VoteSpecifierPtr vote : votes.second)
58 if (ISM::GeometryHelper::isSelfVote(vote))
60 ISM::TrackPtr track = tracks->getTrackByTypeAndId(vote->objectType, vote->observedId);
63 if(static_cast<size_t>(index) >= track->objects.size())
65 std::cout <<
"Index: " << index <<
"exceeds objects size" << std::endl;
68 ref = track->objects[index];
77 std::cout <<
"no reference for " << pattern_name
78 <<
" at the track-index " << votes.first <<
"\n";
83 for (
const ISM::VoteSpecifierPtr& vote : votes.second)
86 ISM::TrackPtr track = tracks->getTrackByTypeAndId(vote->objectType, vote->observedId);
92 if(static_cast<size_t>(index) >= track->objects.size())
94 std::cout <<
"Index: " << index <<
"exceeds objects size" << std::endl;
98 obj = track->objects[index];
104 ISM::PosePtr expected_object_pose = ISM::GeometryHelper::getSourcePose(ref->pose, ISM::GeometryHelper::getSourcePoint(ref->pose, vote->refToObjectQuat, vote->radius), vote->refToObjectPoseQuat);
106 if (ISM::GeometryHelper::poseEqual(expected_object_pose, obj->pose))
119 std::cout <<
"Vote from: " << vote->objectType <<
" with ID: " << vote->observedId
120 <<
" at track-index: " << index <<
" couldn't be drawn!\n";
122 #ifdef VOTE_DIFFERENCE 123 double position_difference = ISM::GeometryHelper::getDistanceBetweenPoints(expected_object_pose->point, obj->pose->point);
124 double orientation_difference = ISM::GeometryHelper::getAngleBetweenQuats(expected_object_pose->quat, obj->pose->quat);
125 std::cout <<
"VOTE_DEBUG_INFO -position deviation: " << position_difference
126 <<
" -angle deviation: " << orientation_difference << std::endl << std::endl;
133 return return_markers;
139 double color_step_size = 240.0 / (tracks->tracks.size() + 1);
140 for (
size_t i = 0; i < tracks->tracks.size(); i++)
145 color_step_size = 120.0 / (ism_object_tracks->tracks.size());
146 for (
size_t i = 0; i < ism_object_tracks->tracks.size(); i++)
void publishCollectedMarkers()
void addVisualization(const std::string pattern_name, const ISM::TracksPtr tracks, const ISM::TracksPtr ism_object_tracks, const std::map< int, std::vector< ISM::VoteSpecifierPtr >> track_index_to_votes)
static ColorRGBA hsvToRGBA(double hue, double saturation, double value)
void initObjectToColorMap(ISM::TracksPtr tracks, ISM::TracksPtr ism_object_tracks)
std::map< std::string, std::map< std::string, std_msgs::ColorRGBA > > object_to_color_map_
visualization_msgs::MarkerArray MarkerArray
static Marker createArrowMarkerToPoint(ISM::PointPtr fromPoint, ISM::PointPtr to, std::string baseFrame, std::string markerNamespace, int id, float xScale, float yScale, float zScale, ColorRGBA color, double markerLifetime)
void addMarker(visualization_msgs::Marker marker)
visualization_msgs::MarkerArray generateModelMarkers(std::string pattern_name, const ISM::TracksPtr tracks, const std::map< int, std::vector< ISM::VoteSpecifierPtr >> track_index_to_votes)
static Marker createLine(ISM::PointPtr fromPoint, ISM::PointPtr toPoint, float width, int id, std::string baseFrame, std::string markerNamespace, std_msgs::ColorRGBA color, double markerLifetime)