This page introduces the usage of display_virtual_lines, including how to display virtual walls in rviz.
Choose any one below:
mkdir -p catkin_ws/src cd catkin_ws/src |
catkin_init_workspace |
cd .. catkin_make |
source devel/setup.bash |
roslaunch slamware_ros_sdk slamware_ros_sdk_server_node.launch ip_address:=10.6.128.141 // Station mode // If in AP mode, the IP address is 192.168.11.1 |
roslaunch slamware_ros_sdk view_slamware_ros_sdk_server_node.launch |
roslaunch slamware_ros_sample display_virtual_lines.launch |
ros::init(argc, argv, "display_virtual_lines_node"); ros::NodeHandle n; ros::Publisher pub = n.advertise<visualization_msgs::Marker>("visualization_marker", 10); ros::Subscriber sub = n.subscribe<slamware_ros_sdk::Line2DFlt32Array>("/slamware_ros_sdk_server_node/virtual_walls", 30, virtualWallCallback); |
visualization_msgs::Marker lines; |
void virtualWallCallback(const slamware_ros_sdk::Line2DFlt32Array::ConstPtr & msg) { lines.points.clear(); size_t cnt = msg->lines.size(); for (size_t i = 0; i < msg->lines.size(); ++i) { geometry_msgs::Point p1; p1.x = msg->lines[i].start.x; p1.y = msg->lines[i].start.y; p1.z = 0.2; geometry_msgs::Point p2; p2.x = msg->lines[i].end.x; p2.y = msg->lines[i].end.y; p2.z = 0.2; lines.points.push_back(p1); lines.points.push_back(p2); } } |
lines.id = 1; lines.header.frame_id = "slamware_map"; lines.type = visualization_msgs::Marker::LINE_LIST; lines.ns = "lines"; lines.action = visualization_msgs::Marker::ADD; lines.pose.orientation.w = 1.0; lines.scale.x = 0.1; lines.color.r = 1.0; lines.color.a = 1.0; |
ros::Rate r(30); while(running) { lines.header.stamp = ros::Time::now(); pub.publish(lines); r.sleep(); } |