ROS—interactive Markers-可交互式Markers

rviz官網教程:這裏,其中3-5屬於交互式Markers的教程。
visualization_msgs

Basic Controls
interactiveMarkerServer:創建一個實例對象,將所有的InteractiveMarker messages都傳給這個對象:

boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server;

frameCallBack():設置一個timer,用於實現base_link和moving_frame之間的tf座標系變換:

void frameCallback(const ros::TimerEvent&)
{
  static uint32_t counter = 0;
  static tf::TransformBroadcaster br;
  tf::Transform t;
  ros::Time time = ros::Time::now();
  
  t.setOrigin(tf::Vector3(0.0, 0.0, sin(float(counter)/140.0) * 2.0));
  t.setRotation(tf::Quaternion(0.0, 0.0, 0.0, 1.0));
  br.sendTransform(tf::StampedTransform(t, time, "base_link", "moving_frame"));
  
  t.setOrigin(tf::Vector3(0.0, 0.0, 0.0));
  t.setRotation(tf::createQuaternionFromRPY(0.0, float(counter)/140.0, 0.0));
  br.sendTransform(tf::StampedTransform(t, time, "base_link", "rotating_frame"));
  counter++;
}

processFeedback():用於當收到feedback時,將詳細信息打印在終端:

void processFeedback( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback ){...}
...
server->setCallback(int_marker.name, &processFeedback);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章