marker_creation.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Eigen/Geometry>
4 #include <geometry_msgs/PoseStamped.h>
5 #include <std_msgs/ColorRGBA.h>
6 #include <visualization_msgs/Marker.h>
7 
8 namespace urdf {
9 class Geometry;
10 }
11 
12 namespace rviz_marker_tools {
13 
14 enum Color : uint8_t
15 {
16  BLACK = 0,
17  BROWN = 1,
18  BLUE = 2,
19  CYAN = 3,
20  GREY = 4,
21  DARK_GREY = 5,
22  GREEN = 6,
24  MAGENTA = 8,
25  ORANGE = 9,
26  PURPLE = 10,
27  RED = 11,
28  PINK = 12,
29  WHITE = 13,
30  YELLOW = 14,
31 };
32 std_msgs::ColorRGBA getColor(Color color, double alpha = 1.0);
33 std_msgs::ColorRGBA& setColor(std_msgs::ColorRGBA& color, Color color_id, double alpha = 1.0);
34 
35 std_msgs::ColorRGBA& interpolate(std_msgs::ColorRGBA& color, const std_msgs::ColorRGBA& other, double fraction);
36 std_msgs::ColorRGBA& brighten(std_msgs::ColorRGBA& color, double fraction);
37 std_msgs::ColorRGBA& darken(std_msgs::ColorRGBA& color, double fraction);
38 
39 geometry_msgs::Pose composePoses(const geometry_msgs::Pose& first, const Eigen::Isometry3d& second);
40 geometry_msgs::Pose composePoses(const Eigen::Isometry3d& first, const geometry_msgs::Pose& second);
41 
46 visualization_msgs::Marker& makeXYPlane(visualization_msgs::Marker& m);
48 visualization_msgs::Marker& makeXZPlane(visualization_msgs::Marker& m);
49 visualization_msgs::Marker& makeYZPlane(visualization_msgs::Marker& m);
50 
52 visualization_msgs::Marker& makeCone(visualization_msgs::Marker& m, double angle);
53 
54 visualization_msgs::Marker& makeSphere(visualization_msgs::Marker& m, double radius = 1.0);
55 
57 visualization_msgs::Marker& makeCylinder(visualization_msgs::Marker& m, double diameter, double height);
58 
60 visualization_msgs::Marker& makeBox(visualization_msgs::Marker& m, double x, double y, double z);
61 
63 visualization_msgs::Marker& makeMesh(visualization_msgs::Marker& m, const std::string& filename, double sx = 1.0,
64  double sy = 1.0, double sz = 1.0);
65 inline visualization_msgs::Marker& makeMesh(visualization_msgs::Marker& m, const std::string& filename, double scale) {
66  return makeMesh(m, filename, scale, scale, scale);
67 }
68 
70 visualization_msgs::Marker& makeArrow(visualization_msgs::Marker& m, const Eigen::Vector3d& start_point,
71  const Eigen::Vector3d& end_point, double diameter, double head_length = 0.0);
72 
74 visualization_msgs::Marker& makeArrow(visualization_msgs::Marker& m, double scale = 1.0, bool tip_at_origin = false);
75 
77 visualization_msgs::Marker& makeText(visualization_msgs::Marker& m, const std::string& text);
78 
80 visualization_msgs::Marker& makeFromGeometry(visualization_msgs::Marker& m, const urdf::Geometry& geom);
81 
82 template <typename T>
83 void appendFrame(T& container, const geometry_msgs::PoseStamped& pose, double scale = 1.0,
84  const std::string& ns = "frame", double diameter_fraction = 0.1) {
85  visualization_msgs::Marker m;
86  makeCylinder(m, scale * diameter_fraction, scale);
87  m.ns = ns;
88  m.header = pose.header;
89 
90  // x-axis
91  m.pose = composePoses(pose.pose, Eigen::Translation3d(scale / 2.0, 0, 0) *
92  Eigen::AngleAxisd(M_PI / 2.0, Eigen::Vector3d::UnitY()));
93  setColor(m.color, RED);
94  container.push_back(m);
95 
96  // y-axis
97  m.pose = composePoses(pose.pose, Eigen::Translation3d(0, scale / 2.0, 0) *
98  Eigen::AngleAxisd(M_PI / 2.0, Eigen::Vector3d::UnitX()));
99  setColor(m.color, GREEN);
100  container.push_back(m);
101 
102  // z-axis
103  m.pose = composePoses(pose.pose, Eigen::Translation3d(0, 0, scale / 2.0) * Eigen::Isometry3d::Identity());
104  setColor(m.color, BLUE);
105  container.push_back(m);
106 }
107 
108 } // namespace rviz_marker_tools
rviz_marker_tools
Definition: marker_creation.h:12
rviz_marker_tools::getColor
std_msgs::ColorRGBA getColor(Color color, double alpha=1.0)
Definition: marker_creation.cpp:135
rviz_marker_tools::WHITE
@ WHITE
Definition: marker_creation.h:29
rviz_marker_tools::RED
@ RED
Definition: marker_creation.h:27
rviz_marker_tools::LIME_GREEN
@ LIME_GREEN
Definition: marker_creation.h:23
rviz_marker_tools::brighten
std_msgs::ColorRGBA & brighten(std_msgs::ColorRGBA &color, double fraction)
Definition: marker_creation.cpp:123
rviz_marker_tools::GREY
@ GREY
Definition: marker_creation.h:20
rviz_marker_tools::makeSphere
visualization_msgs::Marker & makeSphere(visualization_msgs::Marker &m, double radius=1.0)
rviz_marker_tools::makeFromGeometry
visualization_msgs::Marker & makeFromGeometry(visualization_msgs::Marker &m, const urdf::Geometry &geom)
create marker from urdf::Geom
rviz_marker_tools::makeYZPlane
visualization_msgs::Marker & makeYZPlane(visualization_msgs::Marker &m)
rviz_marker_tools::interpolate
std_msgs::ColorRGBA & interpolate(std_msgs::ColorRGBA &color, const std_msgs::ColorRGBA &other, double fraction)
Definition: marker_creation.cpp:111
rviz_marker_tools::makeCylinder
visualization_msgs::Marker & makeCylinder(visualization_msgs::Marker &m, double diameter, double height)
create a cylinder along z-axis
rviz_marker_tools::composePoses
geometry_msgs::Pose composePoses(const geometry_msgs::Pose &first, const Eigen::Isometry3d &second)
Definition: marker_creation.cpp:141
rviz_marker_tools::PURPLE
@ PURPLE
Definition: marker_creation.h:26
rviz_marker_tools::makeMesh
visualization_msgs::Marker & makeMesh(visualization_msgs::Marker &m, const std::string &filename, double sx=1.0, double sy=1.0, double sz=1.0)
create a mesh marker
rviz_marker_tools::BLACK
@ BLACK
Definition: marker_creation.h:16
rviz_marker_tools::GREEN
@ GREEN
Definition: marker_creation.h:22
rviz_marker_tools::makeCone
visualization_msgs::Marker & makeCone(visualization_msgs::Marker &m, double angle)
create a cone of given angle along the x-axis
rviz_marker_tools::appendFrame
void appendFrame(T &container, const geometry_msgs::PoseStamped &pose, double scale=1.0, const std::string &ns="frame", double diameter_fraction=0.1)
Definition: marker_creation.h:83
rviz_marker_tools::makeArrow
visualization_msgs::Marker & makeArrow(visualization_msgs::Marker &m, const Eigen::Vector3d &start_point, const Eigen::Vector3d &end_point, double diameter, double head_length=0.0)
create an arrow with a start and end point
rviz_marker_tools::makeBox
visualization_msgs::Marker & makeBox(visualization_msgs::Marker &m, double x, double y, double z)
create a box with given dimensions along x, y, z axes
rviz_marker_tools::ORANGE
@ ORANGE
Definition: marker_creation.h:25
rviz_marker_tools::CYAN
@ CYAN
Definition: marker_creation.h:19
rviz_marker_tools::darken
std_msgs::ColorRGBA & darken(std_msgs::ColorRGBA &color, double fraction)
Definition: marker_creation.cpp:130
urdf
Definition: marker_creation.h:8
rviz_marker_tools::DARK_GREY
@ DARK_GREY
Definition: marker_creation.h:21
rviz_marker_tools::makeXZPlane
visualization_msgs::Marker & makeXZPlane(visualization_msgs::Marker &m)
rviz_marker_tools::BLUE
@ BLUE
Definition: marker_creation.h:18
rviz_marker_tools::Color
Color
Definition: marker_creation.h:14
rviz_marker_tools::BROWN
@ BROWN
Definition: marker_creation.h:17
rviz_marker_tools::MAGENTA
@ MAGENTA
Definition: marker_creation.h:24
rviz_marker_tools::setColor
std_msgs::ColorRGBA & setColor(std_msgs::ColorRGBA &color, Color color_id, double alpha=1.0)
Definition: marker_creation.cpp:10
rviz_marker_tools::YELLOW
@ YELLOW
Definition: marker_creation.h:30
rviz_marker_tools::PINK
@ PINK
Definition: marker_creation.h:28
rviz_marker_tools::makeText
visualization_msgs::Marker & makeText(visualization_msgs::Marker &m, const std::string &text)
create text marker
rviz_marker_tools::makeXYPlane
visualization_msgs::Marker & makeXYPlane(visualization_msgs::Marker &m)
create planes with corners (-1,-1) - (+1,+1)


rviz_marker_tools
Author(s): Robert Haschke
autogenerated on Thu Feb 27 2025 03:39:19