This package is a visualization tool for easier Rviz marker plotting.
- Tested on Ubuntu 16.04 LTS & ROS kinetic
- tf2_geometry_msgs
Build this package under your catkin workspace, run demo node and Rviz (frame: ros_viz_tools
, topic: demo_marker
) for a quick look:
roslaunch ros_viz_tools demo_node.launch
Currently support:
- Cube list
- Sphere list
- Line Strip
- Line List
- Cylinder
- Cube
- Sphere
- Arrow
- Text
- Frame (Axes-type Pose)
Set catkin package dependencies in your CMakeLists.txt
and package.xml
,
# CMakeLists.txt
find_package(catkin REQUIRED COMPONENTS
...
ros_viz_tools
)
<!-- package.xml -->
<?xml version="1.0"?>
<package format="2">
...
<depend>ros_viz_tools</depend>
...
</package>
Include the header file in your codes,
#include "ros_viz_tools/ros_viz_tools.h"
Initialize a RosVizTools
instance named markers
,
ros::NodeHandle n;
std::string topic = "demo_marker";
ros_viz_tools::RosVizTools markers(n, topic);
Create a new marker and append it to markers
. Let's take cube list marker for example.
// set marker frame id, namespace and id
std::string frame_id = "ros_viz_tools";
std::string ns = "cube_list";
int id = 0;
You can initialize a new marker by two approaches:
// intialize new marker by calling static member function in RosVizTools directly (recommended)
visualization_msgs::Marker marker = ros_viz_tools::RosVizTools::newCubeList(0.5, ns, id, ros_viz_tools::WHITE, frame_id);
// or by accessing the function through the instance
visualization_msgs::Marker marker = markers.newCubeList(0.5, ns, id, ros_viz_tools::WHITE, frame_id);
If the new marker involves a list (cube list, sphere list, line list or line strip), you also need to set a point list.
// modify marker, cube list, for example, also needs a point list.
for (int i = 0; i < 10; ++i) {
geometry_msgs::Point p;
p.x = i;
p.y = pow(p.x, 2.0);
p.z = 1.0;
marker.points.push_back(p);
std_msgs::ColorRGBA color = ros_viz_tools::newColorRGBA(randRGB(e), randRGB(e), randRGB(e));
marker.colors.push_back(color);
}
Append new marker to RosVizTools
instance markers
:
// append to markers
markers.append(marker);
At the end, call publish()
function.
markers.publish();
Then you can open Rviz and see the markers published in the frame ros_viz_tools
and topic demo_marker
. Don't forget clear your markers at the beginning of every loop:
markers.clear();
You can see demo_node.cpp for better understanding of the usage for each marker type.
To support colorful marker plotting, ros_viz_tools
also defines functions and class for easier color settings. Now there are two approaches supported for generating colors:
- function
newColorRGBA
(also with some pre-defined colors incolor.h
) or - class
ColorMap
(Seedemo_node.cpp
for examples)
This repository licensed under the MIT License.