0.TF初体验

http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf

1.Writing a tf broadcaster (C++)

在接下来的两个教程中,我们将编写代码来重现tf入门教程中的演示。 之后,以下教程将重点介绍使用更高级的tf功能扩展演示。
在开始之前,您需要为此项目创建一个新的ros软件包。 在沙盒文件夹中,创建一个名为learning_tf的程序包,该程序包取决于tf,roscpp,rospy和turtlesim:

 $ cd %YOUR_CATKIN_WORKSPACE_HOME%/src$ catkin_create_pkg learning_tf tf roscpp rospy turtlesim

roscd之前,请构建您的新软件包:

 $ cd %YOUR_CATKIN_WORKSPACE_HOME%/$ catkin_make$ source ./devel/setup.bash

2.How to broadcast transforms

本教程教您如何将坐标系广播到tf。 在这种情况下,我们要广播海龟移动时不断变化的坐标系。
首先创建源文件。 转到我们刚刚创建的包:

 $ roscd learning_tf

2.1 代码
转到src /文件夹并启动您最喜欢的编辑器,将以下代码粘贴到名为src / turtle_tf_broadcaster.cpp的新文件中。

   1 #include <ros/ros.h>2 #include <tf/transform_broadcaster.h>3 #include <turtlesim/Pose.h>4 5 std::string turtle_name;6 7 8 9 void poseCallback(const turtlesim::PoseConstPtr& msg){10   static tf::TransformBroadcaster br;11   tf::Transform transform;12   transform.setOrigin( tf::Vector3(msg->x, msg->y, 0.0) );13   tf::Quaternion q;14   q.setRPY(0, 0, msg->theta);15   transform.setRotation(q);16   br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", turtle_name));17 }18 19 int main(int argc, char** argv){20   ros::init(argc, argv, "my_tf_broadcaster");21   if (argc != 2){ROS_ERROR("need turtle name as argument"); return -1;};22   turtle_name = argv[1];23 24   ros::NodeHandle node;25   ros::Subscriber sub = node.subscribe(turtle_name+"/pose", 10, &poseCallback);26 27   ros::spin();28   return 0;29 };

2.2 代码解释

#include <tf/transform_broadcaster.h>

tf包提供了TransformBroadcaster的实现,以帮助简化发布转换的任务。 要使用TransformBroadcaster,我们需要包含tf / transform_broadcaster.h头文件。

 static tf::TransformBroadcaster br;

在这里,我们创建一个TransformBroadcaster对象,稍后将使用它通过电线发送转换。

tf::Transform transform;
transform.setOrigin( tf::Vector3(msg->x, msg->y, 0.0) );
tf::Quaternion q;
q.setRPY(0, 0, msg->theta);

在这里,我们创建一个Transform对象,并将信息从2D乌龟姿势复制到3D变换中。

  transform.setRotation(q);

在这里,我们设置旋转。

  br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", turtle_name));

这是真正的工作完成的地方。 使用TransformBroadcaster发送转换需要四个参数。
首先,我们传递转换本身。
现在,我们需要给要发布的转换添加时间戳,我们只需将其标记为当前时间ros :: Time :: now()。
然后,我们需要传递所创建链接的父框架的名称,在本例中为“ world”
最后,我们需要传递正在创建的链接的子框架的名称,在这种情况下,这就是乌龟本身的名称。

注意:sendTransform和StampedTransform的父级和子级顺序相反。

2.3Running the broadcaster
现在我们已经创建了代码,让我们首先对其进行编译。 打开CMakeLists.txt文件,并在底部添加以下行:

add_executable(turtle_tf_broadcaster src/turtle_tf_broadcaster.cpp)
target_link_libraries(turtle_tf_broadcaster ${catkin_LIBRARIES})

建立你的包; 在catkin工作区的顶部文件夹中:

 $ catkin_make

如果一切顺利,则在devel / lib / learning_tf文件夹中应该有一个名为turtle_tf_broadcaster的二进制文件。
如果是这样,我们准备为该演示创建启动文件。 使用您的文本编辑器,创建一个名为start_demo.launch的新文件,并添加以下行:

  <launch><!-- Turtlesim Node--><node pkg="turtlesim" type="turtlesim_node" name="sim"/><node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/><!-- Axes --><param name="scale_linear" value="2" type="double"/><param name="scale_angular" value="2" type="double"/><node pkg="learning_tf" type="turtle_tf_broadcaster"args="/turtle1" name="turtle1_tf_broadcaster" /><node pkg="learning_tf" type="turtle_tf_broadcaster"args="/turtle2" name="turtle2_tf_broadcaster" /></launch>

首先,请确保您已停止上一教程中的启动文件(使用ctrl-c)。 现在,您可以开始自己的乌龟 broadcaster 演示了:

 $ roslaunch learning_tf start_demo.launch

2.4 Checking the results
现在,使用tf_echo工具检查乌龟姿势是否确实正在广播到tf:

 $ rosrun tf tf_echo /world /turtle1

这应该向您显示第一只乌龟的姿势。 使用箭头键在乌龟周围行驶(确保您的终端窗口处于活动状态,而不是模拟器窗口处于活动状态)。 如果运行tf_echo进行世界和乌龟2之间的转换,则不会看到转换,因为第二只乌龟还没有出现。 但是,一旦我们在下一个教程中添加了第二个乌龟,乌龟2的姿势将被广播到tf。

3.Writing a tf listener (C++)

在先前的教程中,我们创建了一个tf广播器,将乌龟的姿势发布到tf。 在本教程中,我们将创建一个tf侦听器以开始使用tf。
3.1如何创建一个TF监听器
首先创建源文件:

 $ roscd learning_tf

3.2代码
启动您喜欢的编辑器,然后将以下代码粘贴到名为src / turtle_tf_listener.cpp的新文件中。

   1 #include <ros/ros.h>2 #include <tf/transform_listener.h>3 #include <geometry_msgs/Twist.h>4 #include <turtlesim/Spawn.h>5 6 int main(int argc, char** argv){7   ros::init(argc, argv, "my_tf_listener");8 9   ros::NodeHandle node;10 11   ros::service::waitForService("spawn");12   ros::ServiceClient add_turtle =13     node.serviceClient<turtlesim::Spawn>("spawn");14   turtlesim::Spawn srv;15   add_turtle.call(srv);16 17   ros::Publisher turtle_vel =18     node.advertise<geometry_msgs::Twist>("turtle2/cmd_vel", 10);19 20   tf::TransformListener listener;21 22   ros::Rate rate(10.0);23   while (node.ok()){24     tf::StampedTransform transform;25     try{26       listener.lookupTransform("/turtle2", "/turtle1",27                                ros::Time(0), transform);28     }29     catch (tf::TransformException &ex) {30       ROS_ERROR("%s",ex.what());31       ros::Duration(1.0).sleep();32       continue;33     }34 35     geometry_msgs::Twist vel_msg;36     vel_msg.angular.z = 4.0 * atan2(transform.getOrigin().y(),37                                     transform.getOrigin().x());38     vel_msg.linear.x = 0.5 * sqrt(pow(transform.getOrigin().x(), 2) +39                                   pow(transform.getOrigin().y(), 2));40     turtle_vel.publish(vel_msg);41 42     rate.sleep();43   }44   return 0;45 };

3.3代码解释

#include <tf/transform_listener.h>

tf包提供了TransformListener的实现,以帮助简化接收转换的任务。 要使用TransformListener,我们需要包含tf / transform_listener.h头文件。

tf::TransformListener listener;

在这里,我们创建一个TransformListener对象。 创建侦听器后,它将开始通过网络接收tf转换,并将其最多缓冲10秒钟。 TransformListener对象的作用域应为持久性,否则它的缓存将无法填充,并且几乎每个查询都会失败。 一种常见的方法是使TransformListener对象成为类的成员变量。

  try{listener.lookupTransform("/turtle2", "/turtle1",ros::Time(0), transform);}

在这里,实际的工作已经完成,我们向侦听器查询特定的转换。 让我们看一下四个参数:
1.我们希望从框架/ turtle1转换到框架/ turtle2。
2.我们想要转变的时间。 提供ros :: Time(0)只会为我们提供最新的可用转换。
3.我们存储结果转换的对象。
所有这些都包装在try-catch块中,以捕获可能的异常。

vel_msg.angular.z = 4.0 * atan2(transform.getOrigin().y(),transform.getOrigin().x());
vel_msg.linear.x = 0.5 * sqrt(pow(transform.getOrigin().x(), 2) +pow(transform.getOrigin().y(), 2));

在这里,该变换用于根据乌龟2与乌龟1的距离和角度计算新的线性和角速度。 新的速度将在主题“ turtle2 / cmd_vel”中发布,并且模拟器将使用该速度来更新turtle2的运动。
3.4Running the listener
现在我们已经创建了代码,让我们首先对其进行编译。 打开CMakeLists.txt文件,并在底部添加以下行:

add_executable(turtle_tf_listener src/turtle_tf_listener.cpp)
target_link_libraries(turtle_tf_listener ${catkin_LIBRARIES})

在catkin工作区的顶部文件夹中构建软件包:

  $ catkin_make

如果一切顺利,则在devel / lib / learning_tf文件夹中应该有一个名为turtle_tf_listener的二进制文件。

如果是这样,我们已经准备好为该演示添加启动文件。 使用文本编辑器,打开名为start_demo.launch的启动文件,并将下面的节点块合并到块内:

<launch>...<node pkg="learning_tf" type="turtle_tf_listener"name="listener" /></launch>

首先,请确保您已停止上一教程中的启动文件(使用ctrl-c)。 现在,您可以开始完整的乌龟演示了:

 $ roslaunch learning_tf start_demo.launch

如图效果:
在这里插入图片描述

4.Adding a frame (C++)

在之前的教程中,我们通过添加tf广播器和tf监听器来重新创建了乌龟演示。 本教程将教您如何向tf树添加额外的帧。 这与创建tf广播器非常相似,并且将显示tf的某些功能。

4.1 Why adding frames
对于许多任务,更容易在本地框架内进行思考,例如 在激光扫描仪中心的框架中更容易推断出激光扫描的原因。 tf允许您为系统中的每个传感器,链接等定义本地框架。 并且,tf将处理所有引入的额外帧转换。

4.2 Where to add frames
tf建立框架的树结构; 它不允许框架结构中存在闭环。 这意味着一帧只有一个单亲,但可以有多个孩子。 当前,我们的tf树包含三个框架:world,turtle1和turtle2。 两只乌龟是世界的孩子。 如果要向tf添加新帧,则需要将三个现有帧之一作为父帧,并且新帧将成为子帧。

4.3 How to add a frame
在我们的乌龟示例中,我们将向第一只乌龟添加一个新框架。 该框架将成为第二只乌龟的“胡萝卜”。首先创建源文件。 转到我们为之前的教程创建的包:

 $ roscd learning_tf

4.3.1 代码
启动您喜欢的编辑器,然后将以下代码粘贴到名为src / frame_tf_broadcaster.cpp的新文件中。

   1 #include <ros/ros.h>2 #include <tf/transform_broadcaster.h>3 4 int main(int argc, char** argv){5   ros::init(argc, argv, "my_tf_broadcaster");6   ros::NodeHandle node;7 8   tf::TransformBroadcaster br;9   tf::Transform transform;10 11   ros::Rate rate(10.0);12   while (node.ok()){13     transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) );14     transform.setRotation( tf::Quaternion(0, 0, 0, 1) );15     br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));16     rate.sleep();17   }18   return 0;19 };

4.3.2 代码解释

transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) );
transform.setRotation( tf::Quaternion(0, 0, 0, 1) );
br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));

在这里,我们创建了一个新的转换,从父级turtle1到新子级carrot1。 carrot1框架从turtle1框架向左偏移2米。

4.4 Running the frame broadcaster
现在我们已经创建了代码,让我们首先对其进行编译。 打开CMakeLists.txt文件,并在底部添加以下行:

add_executable(frame_tf_broadcaster src/frame_tf_broadcaster.cpp)
target_link_libraries(frame_tf_broadcaster ${catkin_LIBRARIES})

在catkin工作区的顶部文件夹中构建软件包:

 $ catkin_make

如果一切顺利,则bin文件夹中应该有一个名为frame_tf_broadcaster的二进制文件。 如果是这样,我们已经准备好编辑start_demo.launch启动文件。 只需将下面的节点块合并到启动块中:

  <launch>...<node pkg="learning_tf" type="frame_tf_broadcaster"name="broadcaster_frame" /></launch>

首先,请确保您已停止上一教程中的启动文件(使用Ctrl-c)。 现在您可以开始乌龟broadcaster演示了:

 $ roslaunch learning_tf start_demo.launch

5.Checking the results
因此,如果您开着第一只乌龟,即使我们添加了新的框架,您也会注意到其行为与上一教程并没有改变。 这是因为添加额外的帧不会影响其他帧,并且我们的侦听器仍在使用先前定义的帧。 因此,让我们更改侦听器的行为。打开src / turtle_tf_listener.cpp文件,并在第26-27行中将“ / turtle1”替换为“ / carrot1”:

listener.lookupTransform("/turtle2", "/carrot1",ros::Time(0), transform);

现在好了:重新构建并重新启动乌龟演示,您将看到carrot1后面的第二只乌龟而不是第一只乌龟! 请记住,carrot1在turtle1的左侧2米处。 胡萝卜没有视觉上的表现,但是您应该看到第二只乌龟正在移动到该点。

 $ catkin_make$ roslaunch learning_tf start_demo.launch

6.Broadcasting a moving frame
我们在本教程中发布的额外框架是固定框架,相对于父框架,框架不会随时间变化。 但是,如果要发布移动框架,则可以将广播者更改为随时间变化。 让我们修改/ carrot1框架,使其相对于/ turtle1随时间变化。

transform.setOrigin( tf::Vector3(2.0*sin(ros::Time::now().toSec()), 2.0*cos(ros::Time::now().toSec()), 0.0) );
transform.setRotation( tf::Quaternion(0, 0, 0, 1) );

现在好了:重建并重新启动乌龟演示,然后您将看到第二只乌龟紧随carrot1移动。

 $ catkin_make$ roslaunch learning_tf start_demo.launch

5.Learning about tf and time (C++)

5.1 tf and Time
在先前的教程中,我们了解了tf如何跟踪坐标系树。 该树随时间变化,并且tf为每个转换存储时间快照(默认情况下最多10秒)。 到目前为止,我们一直使用lookupTransform()函数来访问该tf树中的最新可用转换,而无需知道该转换在何时记录。 本教程将教您如何在特定时间进行转换。

  $ roscd learning_tf

并打开文件src / turtle_tf_listener.cpp。 看一下第25-27行:

try{listener.lookupTransform("/turtle2", "/carrot1",  ros::Time(0), transform);

让我们让turtle2跟随turtle1,而不是carrot1。 将您的代码更改为以下内容:

   try{listener.lookupTransform("/turtle2", "/turtle1",  ros::Time(0), transform);

您还可以看到我们指定的时间等于0。对于tf,时间0表示缓冲区中的“最新可用”转换。 现在,更改此行以获取当前时间“ now()”的转换:

  try{listener.lookupTransform("/turtle2", "/turtle1",  ros::Time::now(), transform);

首先,请确保您已停止上一教程中的启动文件(使用ctrl-c)。 编译代码,然后再次运行:

  $ catkin_make
 $ roslaunch learning_tf start_demo.launch

所有突然的lookupTransform()都失败了,反复告诉您:

[ERROR] [1593244295.486927555]: "turtle2" passed to lookupTransform argument target_frame does not exist. 
[ERROR] [1593244296.487242916]: Lookup would require extrapolation into the future.  Requested time 1593244296.487054225 but the latest data is at time 1593244296.485805631, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244297.487563375]: Lookup would require extrapolation into the future.  Requested time 1593244297.487426933 but the latest data is at time 1593244297.478300250, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244298.487860078]: Lookup would require extrapolation into the future.  Requested time 1593244298.487720426 but the latest data is at time 1593244298.485835624, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244299.488147246]: Lookup would require extrapolation into the future.  Requested time 1593244299.488011257 but the latest data is at time 1593244299.477407355, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244300.488496293]: Lookup would require extrapolation into the future.  Requested time 1593244300.488357332 but the latest data is at time 1593244300.485526880, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244301.488840603]: Lookup would require extrapolation into the future.  Requested time 1593244301.488703340 but the latest data is at time 1593244301.477613318, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244302.489149021]: Lookup would require extrapolation into the future.  Requested time 1593244302.489012258 but the latest data is at time 1593244302.485458383, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244303.489441347]: Lookup would require extrapolation into the future.  Requested time 1593244303.489303431 but the latest data is at time 1593244303.477806639, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244304.489796913]: Lookup would require extrapolation into the future.  Requested time 1593244304.489661855 but the latest data is at time 1593244304.486178673, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244305.490139069]: Lookup would require extrapolation into the future.  Requested time 1593244305.490001497 but the latest data is at time 1593244305.477462519, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244306.490485060]: Lookup would require extrapolation into the future.  Requested time 1593244306.490348978 but the latest data is at time 1593244306.485902964, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244307.490828487]: Lookup would require extrapolation into the future.  Requested time 1593244307.490691740 but the latest data is at time 1593244307.478282159, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244308.491162073]: Lookup would require extrapolation into the future.  Requested time 1593244308.491025430 but the latest data is at time 1593244308.485529031, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244309.491495458]: Lookup would require extrapolation into the future.  Requested time 1593244309.491358303 but the latest data is at time 1593244309.477552194, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244310.491841852]: Lookup would require extrapolation into the future.  Requested time 1593244310.491705238 but the latest data is at time 1593244310.485717984, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244311.492188325]: Lookup would require extrapolation into the future.  Requested time 1593244311.492052189 but the latest data is at time 1593244311.477919606, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244312.492513610]: Lookup would require extrapolation into the future.  Requested time 1593244312.492388180 but the latest data is at time 1593244312.486240605, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244313.492850102]: Lookup would require extrapolation into the future.  Requested time 1593244313.492712866 but the latest data is at time 1593244313.477790258, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244314.493177217]: Lookup would require extrapolation into the future.  Requested time 1593244314.493035425 but the latest data is at time 1593244314.486245855, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244315.493459044]: Lookup would require extrapolation into the future.  Requested time 1593244315.493327800 but the latest data is at time 1593244315.478292697, when looking up transform from frame [turtle1] to frame [turtle2]
[ERROR] [1593244316.493780943]: Lookup would require extrapolation into the future.  Requested time 1593244316.493655831 but the latest data is at time 1593244316.485756488, when looking up transform from frame [turtle1] to frame [turtle2]
[broadcaster_frame-7] killing on exit

这是为什么?每个侦听器都有一个缓冲区,在其中存储来自不同tf广播器的所有坐标转换。 当广播公司发出转换时,该转换进入缓冲区要花费一些时间(通常为几毫秒)。 因此,当您在“现在”时间请求帧转换时,您应该等待几毫秒,以便该信息到达。

5.2Wait for transforms
tf提供了一个不错的工具,它将等到转换可用为止。 让我们看看代码是什么样的:

  try{ros::Time now = ros::Time::now();listener.waitForTransform("/turtle2", "/turtle1",now, ros::Duration(3.0));listener.lookupTransform("/turtle2", "/turtle1",now, transform);

waitForTransform()接受四个参数:
1.等待此帧的转换…
2. …到这个框架,
3. 在这个时候
4.超时:请勿等待超过此最大持续时间

注意:本示例使用ros :: Time :: now()。 通常,这将是希望转换的数据的时间戳。

因此,waitForTransform()实际上会阻塞,直到两个乌龟之间的转换可用(这通常需要几毫秒),或者-如果转换不可用-直到达到超时为止。首先,请确保您已停止上一教程中的启动文件(使用ctrl-c)。 现在编译网络代码,然后再次运行:

  $ catkin_make$ roslaunch learning_tf start_demo.launch

您可能仍然会看到一次错误(错误消息可能有所不同):

[ERROR] [1593245004.532610719]: Lookup would require extrapolation into the past. Requested time 1593245001.519151647 but the earliest data is at time 1593245002.121131312, when looking up transform from frame [turtle1] to frame [turtle2]

发生这种情况是因为turtle2花费了一个非零的时间来生成并开始发布tf帧。 因此,您现在第一次请求/ turtle2帧可能不存在,当请求转换时,转换可能还不存在,并且第一次失败。 在第一个变换之后,所有变换都存在,并且乌龟的行为符合预期。

在这里插入图片描述
5.3Checking the results
现在,您应该再次能够使用箭头键绕过第一只乌龟(确保您的终端窗口处于活动状态,而不是模拟器窗口),然后您将看到第二只乌龟在第二只乌龟之后!

因此,您注意到乌龟的行为没有明显的不同。 那是因为实际的时间差只有几毫秒。 但是,为什么我们要从Time(0)更改为now()? 只是要教您有关tf缓冲区及其相关的时间延迟。 对于实际的tf用例,通常最好使用Time(0)。

6.Time travel with tf (C++)

6.1Time travel
因此,让我们回到上一教程的结尾。 转到您的软件包以获取本教程:

  $ roscd learning_tf

并打开文件src / turtle_tf_listener.cpp。 看一下25-30行:

  try{ros::Time now = ros::Time::now();listener.waitForTransform("/turtle2", "/turtle1",now, ros::Duration(1.0));listener.lookupTransform("/turtle2", "/turtle1",now, transform);

现在,不要让第二只乌龟移到第一只乌龟所在的位置,而是让第二只乌龟移到5秒钟前第一只乌龟所在的位置:

  try{ros::Time past = ros::Time::now() - ros::Duration(5.0);listener.waitForTransform("/turtle2", "/turtle1",past, ros::Duration(1.0));listener.lookupTransform("/turtle2", "/turtle1",past, transform);

所以现在,如果运行此命令,您希望看到什么? 肯定在最初的5秒钟内,第二只乌龟不知道要去哪里,因为我们还没有第一只乌龟5秒钟的历史。 但是这5秒钟后会怎样? 让我们尝试一下:

  $ make  or  catkin_make$ roslaunch learning_tf start_demo.launch

在这里插入图片描述您的乌龟是否像这张屏幕截图一样不受控制地行驶? 那么发生了什么事?

6.2 Advanced API for lookupTransform
那么我们怎样才能问这样的问题呢? 该API使我们能够明确地说出每帧转换的时间。 代码如下所示:

  try{ros::Time now = ros::Time::now();ros::Time past = now - ros::Duration(5.0);listener.waitForTransform("/turtle2", now,"/turtle1", past,"/world", ros::Duration(1.0));listener.lookupTransform("/turtle2", now,"/turtle1", past,"/world", transform);

lookupTransform()的高级API带有六个参数:

1.从此帧进行转换,
2.此时 …
3…到这个框架,
4. 此时。
5. 指定不随时间变化的框架,在这种情况下为“ / world”框架,并
6. 用于存储结果的变量。

请注意,就像lookupTransform()一样,waitForTransform()也具有基本和高级API。
在这里插入图片描述该图显示了tf在后台执行的操作。 过去,它计算从第一个乌龟到世界的转变。 在世界范围内,时间从过去到现在。 现在,tf会计算从世界到第二只乌龟的转换。

6.3Checking the results

  $ make  or catkin_make$ roslaunch learning_tf start_demo.launch
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 用Python绘制一套“会跳舞”的动态图形给你看看

    在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案…...

    2024/4/17 12:36:30
  2. W13 堆排序的应用----TopK

    Description 有一堆二维坐标点<x1,y1>, <x2, y2>……<xn, yn>。假定坐标点是一个一个来的,请利用堆,能时刻报告数据中的最小的k项。比如k=1, 有4个坐标数据 <2,2>, <1,1>, ❤️,3>, <0,0> 依次到来。那么当来第一个<2,2>时, …...

    2024/4/14 20:30:46
  3. 机器学习(周志华) 读书笔记

    注:关于该系列,只为整理并记录个人学习过程中,遇到的知识点整理; 机器学习读书笔记 文章目录机器学习读书笔记第1章 绪论1.1 引言1.2 基本术语1.3 假设空间1.4 归纳偏好1.4.1奥卡姆剃刀原则(Occam’s razor)1.4.2 没有免费午餐定理(No Free Lunch Theorem,简称 NFL 定理)…...

    2024/4/25 0:42:23
  4. 自然语言处理常用RNN、LSTM、GRU举例详解,通俗易懂

    之前疫情网民情绪识别的模型用到了LSTM,最近面试被问到具体细节,感觉被拎出来羞辱,经过认(cha)真(yue)思(wen)考(xian),总结了一下RNN、LSTM、GRN的一些知识。为了更加易懂,本文会采用疫情网民情绪识别这篇文章里的例子。 RNN详解 说到LSTM,还是要先从RNN(循环神…...

    2024/5/8 12:02:59
  5. python分析BOSS直聘的某个招聘岗位数据

    前言很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ…...

    2024/4/25 0:42:21
  6. 用Python快速实现实时人脸活体检测

    丰巢智能快递柜是目前中国市场上占有率最高的快递柜,在各城市居民小区中被广泛安装使用。还记得丰巢推出的“刷脸”取件功能却被一群小学生简单破解的事情吧,几位小学生在一次课外科学实验中发现:只要用一张打印照片就能代替真人刷脸,骗过小区里的丰巢智能柜,取出父母的包…...

    2024/4/25 0:42:21
  7. 解决Mac终端下载报错 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

    安装报错 访问被拒绝了第一步,ping一下这个网址,连不上哦第二部,找一下这个网址的ip,配置一下hoast文件 我上的是老美的这个网站查询的 https://githubusercontent.com.ipaddress.com/然后就是配置hoast文件 第三步,配置hoast Mac配置hoast可以下载工具,很方便。 我用的是…...

    2024/5/3 12:40:08
  8. Task3 常见分布与假设检验

    思维导图代码实现...

    2024/4/30 11:32:18
  9. 关于input标签在ie6下不显示的问题

    关于标签在ie6下不显示的问题,这里以input为例,话不多说,上代码 <form id="searchForm" method="post" action="/e/search/index.php"><input id="searchInput" type="hidden" name="show" value=&qu…...

    2024/4/25 0:42:17
  10. anaconda 安装tensorflow

    https://blog.csdn.net/sinat_36413257/article/details/100553689 参照博客遇到的问题: 1.python 3.5环境下载: 为anaonda配置清华源: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirr…...

    2024/5/3 22:56:11
  11. C++学习笔记——复合类型(2)

    复合类型(2)——指针 前言 指针——备受折磨 指针的定义 int *ip1, *ip2; //ip1和ip2都是指向int型对象的指针 double dp, *dp2; //dp2是指向double型对象的指针,dp是double型对象 指针与引用的不同点: 1.指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期…...

    2024/4/25 0:42:15
  12. Lasso回归

    lasso回归1.利用lars函数实现lasso回归并可视化显示2.选取cp值最小时对应的模型,获取模型对应系数对于选取最小cp值对应的模型可以通过两种方式实现:(1)显示所有cp值,从中挑选最小的(2)直接选取最小的cp值3.选取cp值最小时对应的模型系数4.获取截距的系数 Lasso回归又称…...

    2024/5/3 18:38:00
  13. sklearn数据集与估计器

    数据集 数据集获取 sklearn.datasets # 可用于加载当前流行数据集 """获取小规模数据集,数据包含在datasets模块中可直接加载""" dataset.load_*() # *代表数据集名字 """获取大规模数据集,需要重网上下载""" d…...

    2024/4/25 0:42:13
  14. 余弦相似度计算,使用scipy.spatial.distance

    余弦相似度计算,使用scipy.spatial.distance引入模块pdlist函数使用 引入模块 from scipy.spatial.distance import pdist pdlist函数使用 a=[1,1,1] b=[1,1,2] c=[1,1,2] d=[1,1,2] e=[1,1,2]# cos print("cos:",pdist([a,b,c,d,e],"cosine"))第一个参数…...

    2024/5/3 20:35:28
  15. node---模块

    目录 背景介绍 模块规范 模块实现 核心模块 模块调用栈 包与NPM 背景介绍在Web发展历程中,浏览器涌现了丰富多彩的标准API供JavaScript调用,这些过程发生在前端,后端JavaScript的规范却远远落后。 主要存在以下缺陷:没有模块系统 标准库较少 没有标准接口 缺乏报管理系统Co…...

    2024/5/5 0:12:56
  16. MySQL-实操:部门、员工信息与管理

    创建部门dept、员工emp数据表,并插入数据部门dept数据表1.创建部门信息:CREATE TABLE dept(deptno INT,dname VARCHAR(14),loc VARCHAR(13) );2.插入部门信息:INSERT INTO dept VALUES(10, ACCOUNTING, NEW YORK),(20, RESEARCH, DALLAS),(30, SALES, …...

    2024/4/20 18:10:58
  17. 关于动态申请权限

    比较有意思的是,不能直接申请权限,否则会报未知错误。需要先判断,后申请: // 请求读写权限if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(...

    2024/4/14 20:30:55
  18. [c++] c++中的智能指针

    要点汇总:1) #9 - 基类的析构函数必须是virtual,否则可能导致析构调用链断层。智能指针的使用:1)使用 普通指针/其他已存在的智能指针/其他已存在的普通指针,对当前创建的智能指针进行初始化。 (创建 指针 指向当前已有内存)2)使用 make_shared 创建全新的…...

    2024/4/28 16:18:21
  19. matplot.show() 阻塞程序怎么解决

    介绍 在使用matplotlib的过程中,发现不能像matlab一样同时开几个窗口进行比较,于是查询得知了交互模式,但是放在脚本里运行的适合却总是一闪而过,图像并不停留,遂仔细阅读和理解了一下文档,记下解决办法,问题比较简单,仅供菜鸟参考。python可视化库matplotlib有两种显示…...

    2024/4/14 20:30:53
  20. 最优化算法-梯度下降法

    梯度下降(gradient descent)是机器学习中的一种最优化算法,广泛应用于线性回归和逻辑回归中。它的核心思想是:要获得函数的最小值,最好的方法是沿着该函数的梯度的反方向探寻。假设这样一个场景:你当前在半山腰上,想要走到山脚下。但这时雾特别大,你只能看到2米远的距离…...

    2024/4/16 16:11:08

最新文章

  1. 基于Spring Ai 快速创建一个AI会话

    文章目录 1、创建SpringBoot项目2、引入依赖3、修改配置文件4、一个简单的会话 前期准备 在OpenAI 注册页面创建帐户并在API 密钥页面生成令牌。 Spring AI 项目定义了一个配置属性&#xff0c;您应该将其设置为从 openai.com 获取的spring.ai.openai.api-key值 代码托管于gite…...

    2024/5/8 13:00:21
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. yolov9直接调用zed相机实现三维测距(python)

    yolov9直接调用zed相机实现三维测距&#xff08;python&#xff09; 1. 相关配置2. 相关代码2.1 相机设置2.2 测距模块2.2 实验结果 相关链接 此项目直接调用zed相机实现三维测距&#xff0c;无需标定&#xff0c;相关内容如下&#xff1a; 1. yolov4直接调用zed相机实现三维测…...

    2024/5/7 4:57:37
  4. 算法四十天-删除排序链表中的重复元素

    删除排序链表中的重复元素 题目要求 解题思路 一次遍历 由于给定的链表是排好序的&#xff0c;因此重复的元素在链表中的出现的位置是连续的&#xff0c;因此我们只需要对链表进行一次遍历&#xff0c;就可以删除重复的元素。 具体地&#xff0c;我们从指针cur指向链表的头节…...

    2024/5/5 12:23:05
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57