ROS第一次课作业分享

ROS第一次课作业分享

2021年夏季学期学院开设了ROS的相关课程,最近在复习相关知识,正好做一下整理。下面是第一次作业的要求:

  • 编写一个ROS节点,具备以下功能:
  • 读取小海龟仿真器的/turtle1/pose话题;
  • 每次读取出新的位置后,计算上一次的位置与本次位置的距离,并累加求和;
  • 持续刷新显示小海龟走过的距离总和;
  • 启动小海龟仿真器和小海龟的键盘控制节点,随机控制小海龟运动,并不停的刷新小海龟走过的路径总和;
  • 将自己运行时的小海龟界面和持续刷新显示路径总和的终端窗口一起显示并截图,放在word文件中上交。程序源码也放word里。

修改后的pose_subscriber.cpp文件如下:

#include <ros/ros.h>
#include "turtlesim/Pose.h"

double sum = 0;
double x;
double y;
double delta;
int count = 1;

void poseCallback(const turtlesim::Pose::ConstPtr& msg)
{
	if(!count)
	{
		delta = sqrt((x - msg->x) * (x - msg->x) + (y - msg->y) * (y - msg->y));
		x = msg->x;
		y = msg->y;
		sum = sum + delta;
		ROS_INFO("sum: %lf", sum);
	}
	else
	{
		x = msg->x;
		y = msg->y;
		count=0;
	}
	
}



int main(int argc, char **argv)
{
	ros::init(argc, argv, "pose_subscriber");
	ros::NodeHandle n;
	ros::Subscriber pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);
	ros::spin();
	return 0;
}

依次每个窗口输入即可

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
rosrun learning_topic pose_subscriber

将光标放在rosrun turtlesim turtle_teleop_key那个界面,键盘操纵小海龟移动。

posted @ 2022-03-18 18:05  静候佳茵  阅读(369)  评论(0编辑  收藏  举报