Esempio n. 1
0
void MapWidget::setViewOnRobot(std::string robot_id)
{
	if (active_view_on_robot_ == robot_id)
	{
		return;
	}

	RobotGraphicsItem* robot = getRobot(robot_id);

	QPointF position;
	double heading;

	getRobotPosition("/"+robot_id+"/base_link", position, heading);

	graphicsView_->setTransform(QTransform());

	graphicsView_->centerOn(position.x(),position.y());

	// graphicsView_->scale(1, -1);
	graphicsView_->scale(56, -56);

	active_view_on_robot_ = robot_id;
}
Esempio n. 2
0
Obstacle
SSLPathPlanner::getRobotAsObstacle (uint8_t team, uint8_t id, const geometry_msgs::Vector3& vel,
                                    const geometry_msgs::Vector3& acc)
{
  Obstacle obstacle = getRobotAsObstacle (team, id);
  //assuming linear velocity in one control cycle which is about 20ms.
  tf::Vector3 x_curr;
  tf::vector3MsgToTF (getRobotPosition (team, id), x_curr);

  tf::Vector3 v_curr;
  tf::vector3MsgToTF (vel, v_curr);

  tf::Vector3 acc_cmd;
  tf::vector3MsgToTF (acc, acc_cmd);

  tf::Vector3 x_next = x_curr + v_curr * ssl::config::TIME_STEP_SEC + 0.5 * acc_cmd * ssl::config::TIME_STEP_SEC
      * ssl::config::TIME_STEP_SEC;

  obstacle.circles.push_back (Circle_2 (Point_2 (x_next.x (), x_next.y ()), ssl::config::ROBOT_BOUNDING_RADIUS));

  //TODO fill in between these circles with a rectangular polygon
  // skipping this for now since, a robot in 20ms can move at most 6cm while moving with 3m/s
  return obstacle;
}
Esempio n. 3
0
void MapWidget::tfListenerProcess() 
{
	QPointF position;
	double heading = 0.0;

	bool shadow_changed = false;

	std::stringstream stream;

	while (ros::ok() && !tf_listener_thread_.interruption_requested()) 
	{
		if (getRobotPosition("/agent1/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent1", position, heading);
		}

		if (getRobotPosition("/agent2/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent2", position, heading);
		}

		if (getRobotPosition("/agent3/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent3", position, heading);
		}

		if (getRobotPosition("/agent4/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent4", position, heading);
		}

		if (getRobotPosition("/agent5/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent5", position, heading);
		}

		if (getRobotPosition("/agent6/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent6", position, heading);
		}

		if (getRobotPosition("/agent7/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent7", position, heading);
		}

		if (getRobotPosition("/agent8/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent8", position, heading);
		}

		if (getRobotPosition("/agent9/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent9", position, heading);
		}

		if (getRobotPosition("/agent10/base_link", position, heading)) {

			drawShadow(position,heading);

			shadow_changed = true;

			emit tfChangedSignal("agent10", position, heading);
		}

		if (true == shadow_changed)
		{
			shadow_changed = false;

			emit mapChangedSignal(map_shadow_);
		}

		boost::this_thread::sleep(boost::posix_time::milliseconds(200));
	}//while
}