–参考方案:
找到了关于p3-dx的一些关于ROS的资料
https://github.com/ManolisCh/pioneer_p3dx
https://github.com/SeRViCE-Lab/p3-dx
http://wiki.ros.org/demo_pioneer
先锋机器人ROS的教程:
https://www.youtube.com/watch?v=-9NHupBPC6Y

首先是首页
http://wiki.ros.org/Robots/AMR_Pioneer_Compatible
前提准备:
使用的ROSARIA 和p2os对先锋机器人的速度进行控制
使用ros-arnl使用它来进行定位和导航

安装ROSAria
http://wiki.ros.org/ROSARIA 的ROSwiki主页
http://wiki.ros.org/ROSARIA/Tutorials/Video%20Walkthroughs 视频教程、
http://wiki.ros.org/ROSARIA/Tutorials/How%20to%20use%20ROSARIA感觉好累的,下班,明天继续
https://github.com/danimtb/pioneer3at_ETSIDI这个教程也是很详细的


先锋机器人安装linux

重装系统
这里写图片描述
修改从USB驱动
将这个地方改成:
这里写图片描述
这里写图片描述
连接上移动硬盘
右键,然后将移动硬盘接挂
这里写图片描述
用U盘做启动盘
这里写图片描述
这里写图片描述
选择好相应的光盘镜像,然后写入硬盘
接下来重启
这里写图片描述
选择好对应的挂载点
这里写图片描述
然后就安装成功了
这里写图片描述


先锋机器人安装ROS

参考原来跑orb的安装过程

先锋机器人安装ssh

参考这个目的是为了能够让两台计算机之间能够相互通信,我的目标是用我的笔记本当显示画面,然后然让先锋机器人的来显示他的运动的路径,因此需要两个笔记本之间的通信,如果这么说的话,那么安装的事情,最好还是安装在另外的先锋机器人的工控机上面。

导师要求安装一个Ubuntu的服务器端,但是怎么配置,我现在心里还没有数。


关于软件的安装:
这里写图片描述
从官网上吧这几软件都下载好
然后用 sudo dpkg -i 命令安装
进入你的ros的工作区间,

git clone https://github.com/amor-ros-pkg/rosaria.git

官网上海提供了一些实例程序

git clone https://github.com/pengtang/rosaria_client

然后对这些代码进行catkin_make
这里写图片描述
首次运行示范:
首先打开mobilesim
然后roscore
然后 rosrun rosaria Rosaria
这里写图片描述
然后rosrun rosaria_client interface
然后就出在终端出现一个界面来选择你的运动模式
选择4
就可以自由的控制小车了
可以看到运行的节点的情况
这里写图片描述


安装rosarnl

git clone http://github.com/MobileRobots/ros-arnl

然后同样去编译
安装这个软件可以使用激光雷达了,
arnl 的节点和话题我在后面会继续介绍


遇到的问题:就是在嘴上面一行有一个感叹号
由于包依赖项没有满足的关系,我卸载了一个libaria-dev的包
不然,什么软件都没有办法安装
使用的命令是 sudo dpkg -r libarira-dev


在ROSaria当中能够运行的节点和消息有:
节点就是 rosaria
能够订阅的主题是:cmd_vel能够接受到一些新的速度的指令,是改变速度而不是维持速度
能够发布的话题:
pose 能够发布里程计的信息,通常是10HZ更新一次
bumper_state能够发布?碰撞的状态
sonar能够读出声呐的状态,出来的数据是二维的x,y,Z始终是0
battery_state_of_charge 电池的状态的百分比(取值范围0~1)
battery_voltage 电压
battery_recharge_state充电的状态


参考视频教程:http://wiki.ros.org/ROSARIA/Tutorials/Video%20Walkthroughs
参考博客:http://blog.csdn.net/autorobot410/article/details/53289643
值得注意的地方:有两点
1、参考博客的第5步,应该是:


sudo usermod -a -G dialout $USER
sudo su
cd 
cd /dev
ls -l | grep tty

然后在下拉的列表当中,找到
这里写图片描述
就说明已经正确了

source ~/catkin_ws/devel/setup.bash
rosrun rosaria RosAria _port:=/dev/ttyS0

这里要和说明的一点就是:/dev/ttyS0这是pioner2,3系列,如果是pionnerLX系列的花,就是ttyUSB0…
2、参考博客的第9步有问题。
如果直接运行launch文件,会发生同名的两个节点运行,程序崩溃,如果只是运行launch文件,由于端口没有进行配置,同样不可以,因此
应该运行节点

rosrun rosaria_client telepot

就可以进行遥控了。


工作站和先锋机器人同步时间网络

1、在工作站和机器人都要同步时钟

sudo apt-get install openssh-server
sudo apt-get install chrony
sudo ntpdate ntp.ubuntu.com

2、获取工作站和机器人的IP

ifconfig

3、在同一个wifi下可以远程登录
例如:

ssh davidhan@192.168.1.103

注意:如果不是在同一个WIFI下提示:No route to host
可以参考博客:http://blog.csdn.net/bisal/article/details/44731431
4、机器人参数设置

echo export ROS_MASTER_URI=http://localhost:11311 >> ~/.bashrc
echo export ROS_HOSTNAME=机器人的IP地址 >> ~/.bashrc

5、工作站的参数设置

echo export ROS_MASTER_URI=http://机器人的IP地址 >> ~/.bashrc
echo export ROS_HOSTNAME=工作站的IP地址 >> ~/.bashrc

自己的笔记本连接先锋遇到的USB转串口的问题

就是下载一个软件

sudo apt-get install minicom

注意: 默认情况下ubuntu已经安装了USB转串口驱动(pl2303)。
1、# lsmod | grep usbserial
如果有 usbserial,说明系统支持USB转串口。
2、插上USB转串口,在终端输入命令#dmesg | grep ttyUSB0,如果出现连接成功信息,则说明ubuntu系统已经识别该设备了。

然后如果这样的话,那么rosaria的USB0 而不是 S0.


工作站和先锋机器人IP设置

这里写图片描述


将先锋机器人和rviz当中的先锋机器人同步显示

注意:这个小的tip里面有些东西,再别的电脑上可能用不了,但是希望大家能够理解这里面的逻辑
首先启动rosaria这里,我改过源码,由于使用的usb转串口,因此ttyUSB0
这里写图片描述
然后运行该节点,并且启动遥控器

roscore
rosrun rosraia Rosaria
rosrun rosaria_client teleop

然后运行一个launch文件
rviz.launch

<launch><arg name="model" default="$(find p3dx_description)/urdf/pioneer3dx.xml"/><arg name="gui" default="False" /><param name="robot_description" textfile="$(arg model)" /><param name="use_gui" value="$(arg gui)"/><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /><node name="rviz" pkg="rviz" type="rviz" args="-d $(find amr_robots_launchfiles)/rosaria.rviz" />
</launch>

这个文件需要当amr_robots_launchfile这个里面找rosaria.rviz
并且启动两个重要的节点:joint_state_publisher robot_state_publisher
这里写图片描述
最后的效果图:
这里写图片描述
最后值得注意的地方是:类型选择是odom
这里想要推荐一个大神的博客:
http://blog.csdn.net/crazyquhezheng/article/details/49124115
感触很深


使用kinect发布激光数据

kinect1+depthimage_to_laserscan
参看博客:http://blog.csdn.net/zqxf123456789/article/details/52484239
这里写图片描述
建议topic改成/camera/rgb…因为这样的激光雷达建图才是水平的,现在这个情况是竖直

使用kinect进行建图

使用hectorslam:参考博客:http://www.cnblogs.com/zxouxuewei/p/5307736.html
保存地图:

sudoapt-get install ros-indigo-map-server
rosrun map_server map_save -f /tmp/mymap

会生成两个文件、
这里写图片描述
最后生成地图:
这里写图片描述
参考博客:http://blog.csdn.net/nhtang222/article/details/52396413

使用rplidar A2 进行hector slam建图

参考博客:http://blog.csdn.net/slamtec/article/details/53940920
思岚家的博客很好

sudo apt-get install ros-indigo-hector-slam

在rplidar_ros/launch/目录下添加 hector_mapping_demo.launch文件

<launch><node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen"><!-- Frame names --><param name="pub_map_odom_transform" value="true"/><param name="map_frame" value="map" /><param name="base_frame" value="base_link" /><param name="odom_frame" value="base_link" /><!-- Tf use --><param name="use_tf_scan_transformation" value="true"/><param name="use_tf_pose_start_estimate" value="false"/><!-- Map size / start point --><param name="map_resolution" value="0.05"/><param name="map_size" value="2048"/><param name="map_start_x" value="0.5"/><param name="map_start_y" value="0.5" /><param name="laser_z_min_value" value = "-1.0" /><param name="laser_z_max_value" value = "1.0" /><param name="map_multi_res_levels" value="2" /><param name="map_pub_period" value="2" /><param name="laser_min_dist" value="0.4" /><param name="laser_max_dist" value="5.5" /><param name="output_timing" value="false" /><param name="pub_map_scanmatch_transform" value="true" /><!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />--><!-- Map update parameters --><param name="update_factor_free" value="0.4"/><param name="update_factor_occupied" value="0.7" /><param name="map_update_distance_thresh" value="0.2"/><param name="map_update_angle_thresh" value="0.06" /><!-- Advertising config --><param name="advertise_map_service" value="true"/><param name="scan_subscriber_queue_size" value="5"/><param name="scan_topic" value="scan"/></node><node pkg="rplidar_ros" type="rplidarNode" name="rplidarNode" output="screen"><param name="serial_port"         type="string" value="/dev/ttyUSB0"/><param name="serial_baudrate"     type="int"    value="115200"/><param name="frame_id"            type="string" value="laser"/><param name="inverted"            type="bool"   value="false"/><param name="angle_compensate"    type="bool"   value="true"/></node><node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/><node pkg="rviz" type="rviz" name="rviz" args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/></launch>

最后保存一下

rosrun map_server map_save -f /tmp/SIG212

这里写图片描述


使用LMS1XX进行建图

首先参考葛大神的博客,启动LMS1XX,经历坎坷经历,总算启动,当初未正常启动的原因竟然是网线没插,这里要说明的一点是,如果你和我一样是用的USB转串口来接先锋机器人的,那么LMS1xx的网线一端连接激光雷达,一端连接笔记本电脑的网线端口,并且建议关闭WIFI,这样,当你配置正确的时候,就会有那个有线连接成功的标记符号
参考葛大神的博客:http://blog.csdn.net/autorobot410/article/details/52861223
将这个文件到lms1xx节点下面,然后
roslaunch lms1xx hector_mapping_LMS1XX.launch
下面是我用激光雷达建立的地图:
这里写图片描述
这里写图片描述
效果还是不错的,尽量建图只建一遍,先锋尽量开平稳一些
我终端的输入是:

rosrun rosaria Rosaria
rosrun rosaria_client teleop
roslaunch lms1xx hector_mapping_LMS1XX.launch

补充一点小的技巧

这里写图片描述
你可以将 publish_aria_laser后面的false改成true,这样可以直接发布激光数据,但是同时也存在问题,就是没有进行映射成scan,大家知道就行,反正我是没有用这个,哈哈!!


导航遇到的问题:

我的节点运行情况:

rosrun rosaria Rosaria
roslaunch p3dx_description fake_pionner3dx.launch
roslaunch p3dx_description fake_move_base_SIG212_map.launch 

这里写图片描述
此时对应的节点图:
这里写图片描述
可以发现是没有cmd_vel这个发布速度的参数,需要在launch文件中将原有的RosAria/cmd_vel映射成 /cmd_vel
因此写了一个p3dx.launch文件用来启动节点
这里面remap就是产生映射关系

<launch><!-- Starting rosaria driver for motors and encoders --><node name="rosaria" pkg="rosaria" type="RosAria" args="_port:=/dev/ttyUSB0"><remap from="rosaria/cmd_vel" to="cmd_vel"/><remap from="rosaria/pose" to="odom"/></node></launch>

同样,这里改了两个地方,一个是将rosaria/cmd_vel改成cmd_vel,一个是将rosaria_pose 改成odom
同样在启动激光雷达的地方:
lms1xx.launch

<launch><arg name="host" default="192.168.0.1" /><node pkg="lms1xx" name="lms1xx" type="LMS1xx_node"><param name="host" value="$(arg host)" /><remap from="RosAria/lms1xx_1_laserscan" to="scan"/></node>
</launch>

将原来的RosAria/lms1xx_1_lasercan映射成了scan


第二个遇到的问题:
这里写图片描述
产生这个问题是因为以下四个文件存在问题
这里写图片描述
我从github上面找了个大神的,然后还是出现了一些报错,我对应这报错修改了一下,现在我把他们贴出来,可以对应着这篇博客上面讲解这几个参数进行理解


我在这个路径规划的过程中大概就遇到这两个问题,接下来就是启动的过程
就可以成功了,然后调整初始的位姿,可以实现自动避障
这里写图片描述
运行的节点情况
这里写图片描述
希望大家能够多看节点图,有助于你理解ROS的节点之间的规则
我在做这个过程中参考的大神的节点图是:
这里写图片描述

最后关于rviz说明一下:
这里写图片描述
这里蓝色的高亮部分,就是阻碍,可以通过让obstacle这个控件订阅话题来显示出来

动态程序控制Rviz眼睛位置和目的焦点

http://blog.csdn.net/crazyquhezheng/article/details/50493502

用程序设定导航目标点

http://blog.csdn.net/heyijia0327/article/details/43565227

由于激光雷达的tf的模型没有匹配上,导致导航的功能包没有办法使用

我遇到的问题就是:激光雷达的位置和模型的位置不匹配,导致导航功能包没法使用
这里写图片描述
原理是这样,当我们启动fake_p3dx.launch模型的时候
已经设置了这个模型的位置
这里写图片描述
当我们启动激光雷达的模型的时候,注意这个节点 tf,后面的参数的说明,可以参考这个链接
https://www.baidu.com/link?url=bLji5CMlyEwTMVnQNKYT8hqeRoH74iCb-lyyzoZyMfAGuQHuGC_NCYnYx6fOqscV&wd=&eqid=fe1abb1d00022d4d0000000358c93ee9
参数说明依次是:x,y,z然后是r p 什么的就是那些,我也搞不懂

如何在rviz设置模型的初始位置

这里写图片描述
原理跟上面的一样,在这里可以设置小车的初始位置

如何使用rviz的导航箭头,并且使用地图当中的绝对坐标

最简单的方法就是发布一个topic,然后让小车自己去动,我在这里放一个

8号桌子的位置点:
rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped '{ header: { frame_id: "map" }, pose: { position: { x: 4.06, y: 0.668, z: 0 }, orientation: { x: 0, y: 0, z: 0, w: 1 } } }' 

这里的frame_id如果选择base_link则是相对机器人的位置,是相对位置
如果是map则表示的绝对坐标,在地图上某个点的坐标

补充上一个小的专题,这里的坐标封装成一个节点

参考白巧克力里的博客:
http://blog.csdn.net/heyijia0327/article/details/43565227

白巧克力博客中的还是想机器人向前走1m而不是地图当中的绝对坐标,那么我现在想让先锋机器人到指定位置,转向指定的方向(位姿,其实就是位置和姿态,包含两层意思)

#include <ros/ros.h>  
#include <move_base_msgs/MoveBaseAction.h>  
#include <actionlib/client/simple_action_client.h> typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient;  int main(int argc, char** argv){  ros::init(argc, argv, "simple_navigation_goals"); //tell the action client that we want to spin a thread by default  MoveBaseClient ac("move_base", true);  //wait for the action server to come up  while(!ac.waitForServer(ros::Duration(5.0))){  ROS_INFO("Waiting for the move_base action server to come up");  }  move_base_msgs::MoveBaseGoal goal;  //we'll send a goal to the robot to move 1 meter forward  goal.target_pose.header.frame_id = "map";  goal.target_pose.header.stamp = ros::Time::now();  goal.target_pose.pose.position.x = 4.241;  goal.target_pose.pose.position.y = 0.109;  goal.target_pose.pose.orientation.x = 0.0;goal.target_pose.pose.orientation.y = 0.0;goal.target_pose.pose.orientation.z = 0.713; goal.target_pose.pose.orientation.w = 0.701; ROS_INFO("Sending goal");  ac.sendGoal(goal);  ac.waitForResult();  if(ac.getState() == actionlib::SimpleClientGoalState::SUCCEEDED)  ROS_INFO("move to 8 desk");  else  ROS_INFO("The base failed to move forward ");  return 0;  
}  

在上面的代码中比较中重要的就是

这里的frame_id如果是 base_link,表示的是先锋机器人为参考坐标系,如果是map,那么就是地图的静止坐标系

 goal.target_pose.header.frame_id = "map";

这里我们来描述位姿就是
首先用x,y,z来描述位置
然后用x,y,z,w来描述转向,这里的x,y,z,w就是四元数

goal.target_pose.pose.position.x = 4.241;  goal.target_pose.pose.position.y = 0.109;  goal.target_pose.pose.position.z = 0.0; goal.target_pose.pose.orientation.x = 0.0;goal.target_pose.pose.orientation.y = 0.0;goal.target_pose.pose.orientation.z = 0.713; goal.target_pose.pose.orientation.w = 0.701; 

好的,那么现在知道这些之后,这个坐标从哪里来呢?
有一个不错的方式,即使使用2D nav箭头
这里写图片描述
然后我来讲一个对应关系,其实现在大家已经一目了然了,就是position(x,y,z)和Orientation(x,y,z,w)
顺便这个2Dnav箭头的作者很贴心地帮大家算出了angle.

制作简易的QT界面,来运行终端的ROS程序

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));QObject::connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));QObject::connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));QObject::connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QString get=this->sender()->objectName();if("pushButton"==get){std::system("rosrun simple_navigation_goals send_goal08 ");}else if("pushButton_2"==get){std::system("rosrun simple_navigation_goals send_goal09 ");}else if("pushButton_3"==get){std::system("rosrun simple_navigation_goals send_goal10 ");}else{std::system("rosrun simple_navigation_goals send_goal_home");}}

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_pushButton_clicked();private:Ui::Widget *ui;
};#endif // WIDGET_H

UI:
这里写图片描述

重要的代码解析:
widget.h文件中的,这里就是槽函数,槽函数可以一对一,一对多,多对一,

private slots:void on_pushButton_clicked();

我这里建立的是多对一的槽函数

    QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));QObject::connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));QObject::connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));QObject::connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));

通过不同的button的名字来区别,槽函数如下:

void Widget::on_pushButton_clicked()
{QString get=this->sender()->objectName();if("pushButton"==get){std::system("rosrun simple_navigation_goals send_goal08 ");}else if("pushButton_2"==get){std::system("rosrun simple_navigation_goals send_goal09 ");}else if("pushButton_3"==get){std::system("rosrun simple_navigation_goals send_goal10 ");}else{std::system("rosrun simple_navigation_goals send_goal_home");}}

std::system函数相当于在终端输入引号当中的内容。

最后也是最重要的一点就是:
要把你的程序拖到终端里面,然后一定要按回车,让这个白色的方框到下面一行,才能让程序正确运行
这里写图片描述

这个信号槽机制,我真的想了好久,都不是太理解,感谢燕大的赵大神的鼎力相助,
参考博客:http://blog.csdn.net/qq_23100787/article/details/51162944

附上我在实验室运行成功的视频链接:https://v.qq.com/x/page/x0387broime.html
以及实现简单壁障功能的视频:https://v.qq.com/x/page/u03879icjrp.html

附录:

福利: launch文件共享:
p3dx.launch

<launch><!-- Starting rosaria driver for motors and encoders --><node name="rosaria" pkg="rosaria" type="RosAria" args="_port:=/dev/ttyUSB0"><remap from="rosaria/cmd_vel" to="cmd_vel"/><remap from="rosaria/pose" to="odom"/></node></launch>

fake_p3dx.launch

<launch><param name="/use_sim_time" value="false" /><!--载入先锋的模型 --><arg name="model" default="$(find p3dx_description)/urdf/pioneer3dx.xml"/><param name="robot_description" textfile="$(arg model)" /><rosparam file="$(find p3dx_control)/config/pionner3dx.yaml"/><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"><param name="publish_frequency" type="double" value="20.0" /></node>
</launch>

LMS1XX.launch

<launch><arg name="host" default="192.168.0.1" /><node pkg="lms1xx" name="lms1xx" type="LMS1xx_node"><param name="host" value="$(arg host)" /></node>
<node pkg="tf" type="static_transform_publisher" name="laser_link" args=" 0 0 0.3 0 0 0 1 base_link laser 100" />
</launch>

p3dx_move_base_SIG212_map.launch

<launch><!-- Run the map server with a blank map --><node name="map_server" pkg="map_server" type="map_server" args="$(find p3dx_description)/SIG212_02.yaml"/><node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true"><rosparam file="$(find p3dx_description)/config/p3dx_costmap_common_params.yaml" command="load" ns="global_costmap" /><rosparam file="$(find p3dx_description)/config/p3dx_costmap_common_params.yaml" command="load" ns="local_costmap" /><rosparam file="$(find p3dx_description)/config/p3dx_local_costmap_params.yaml" command="load" /><rosparam file="$(find p3dx_description)/config/p3dx_global_costmap_params.yaml" command="load" /><rosparam file="$(find p3dx_description)/config/p3dx_base_local_planner_params.yaml" command="load" /></node><!-- Run a static transform between /odom and /map --><node pkg="tf" type="static_transform_publisher" name="odom_map_broadcaster" args="0.0, 0.0 0 0 0 0 /map /odom 100" /><include file="$(find p3dx_description)/launch/tb_amcl.launch" /></launch>

tb_amcl.launch

<launch><arg name="use_map_topic" default="false"/><arg name="scan_topic" default="scan"/><node pkg="amcl" type="amcl" name="amcl" clear_params="true"><param name="use_map_topic" value="$(arg use_map_topic)"/><!-- Publish scans from best pose at a max of 10 Hz --><param name="odom_model_type" value="diff"/><param name="odom_alpha5" value="0.1"/><param name="gui_publish_rate" value="10.0"/><param name="laser_max_beams" value="60"/><param name="laser_max_range" value="12.0"/><param name="min_particles" value="500"/><param name="max_particles" value="2000"/><param name="kld_err" value="0.05"/><param name="kld_z" value="0.99"/><param name="odom_alpha1" value="0.2"/><param name="odom_alpha2" value="0.2"/><!-- translation std dev, m --><param name="odom_alpha3" value="0.2"/><param name="odom_alpha4" value="0.2"/><param name="laser_z_hit" value="0.5"/><param name="laser_z_short" value="0.05"/><param name="laser_z_max" value="0.05"/><param name="laser_z_rand" value="0.5"/><param name="laser_sigma_hit" value="0.2"/><param name="laser_lambda_short" value="0.1"/><param name="laser_model_type" value="likelihood_field"/><!-- <param name="laser_model_type" value="beam"/> --><param name="laser_likelihood_max_dist" value="2.0"/><param name="update_min_d" value="0.25"/><param name="update_min_a" value="0.2"/><param name="odom_frame_id" value="odom"/><param name="resample_interval" value="1"/><!-- Increase tolerance because the computer can get quite busy --><param name="transform_tolerance" value="1.0"/><param name="recovery_alpha_slow" value="0.0"/><param name="recovery_alpha_fast" value="0.0"/><remap from="scan" to="$(arg scan_topic)"/></node>
</launch>

一些参数列表
p3dx_base_local_planner_params.yaml

controller_frequency: 10.0
TrajectoryPlannerROS:max_vel_x: 0.50min_vel_x: 0.10max_rotational_vel: 1.5min_in_place_rotational_vel: 1.0acc_lim_theta: 0.75acc_lim_x: 0.50acc_lim_y: 0.50meter_scoring: trueholonomic_robot: falseyaw_goal_tolerance: 0.78xy_goal_tolerance: 0.15goal_distance_bias: 0.8path_distance_bias: 0.6sim_time: 1.5heading_lookahead: 0.325oscillation_reset_dist: 0.05vx_samples: 6vtheta_samples: 20dwa: false

p3dx_costmap_common_params.yaml

obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[-0.17, -0.20], [-0.20, -0.10], [-0.225, 0.0], [-0.20, 0.10], [-0.17, 0.20], [0.10, 0.20], [0.17, 0.10], [0.225, 0.0], [0.17, -0.10], [0.10, -0.20]]
footprint_padding: 0.01
inflation_radius: 0.20
observation_sources: scan
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true}

p3dx_global_costmap_params.yaml

global_costmap:global_frame: /maprobot_base_frame: /base_linkupdate_frequency: 3.0publish_frequency: 0.0static_map: truetransform_tolerance: 0.5

p3dx_local_costmap_params.yaml

local_costmap:global_frame: /odomrobot_base_frame: /base_linkupdate_frequency: 5.0publish_frequency: 5.0static_map: falserolling_window: truewidth: 4.0height: 4.0resolution: 0.1transform_tolerance: 0.7

建图:hector_mapping_LMS1XX.launch

<launch><node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen"><!-- Frame names --><param name="pub_map_odom_transform" value="true"/><param name="map_frame" value="map" /><param name="base_frame" value="base_link" /><param name="odom_frame" value="base_link" /><!-- Tf use --><param name="use_tf_scan_transformation" value="true"/><param name="use_tf_pose_start_estimate" value="false"/><!-- Map size / start point --><param name="map_resolution" value="0.05"/><param name="map_size" value="2048"/><param name="map_start_x" value="0.5"/><param name="map_start_y" value="0.5" /><param name="laser_z_min_value" value = "-1.0" /><param name="laser_z_max_value" value = "1.0" /><param name="map_multi_res_levels" value="2" /><param name="map_pub_period" value="2" /><param name="laser_min_dist" value="0.4" /><param name="laser_max_dist" value="5.5" /><param name="output_timing" value="false" /><param name="pub_map_scanmatch_transform" value="true" /><!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />--><!-- Map update parameters --><param name="update_factor_free" value="0.4"/><param name="update_factor_occupied" value="0.7" /><param name="map_update_distance_thresh" value="0.2"/><param name="map_update_angle_thresh" value="0.06" /><!-- Advertising config --><param name="advertise_map_service" value="true"/><param name="scan_subscriber_queue_size" value="5"/><param name="scan_topic" value="scan"/></node><arg name="host" default="192.168.0.1" /><node pkg="lms1xx" name="lms1xx" type="LMS1xx_node"><param name="host" value="$(arg host)" /></node><node pkg="tf" type="static_transform_publisher" name="laser_link" args=" 0.58545 0 0 0 0 0 1 base_link laser 100" /><node pkg="rviz" type="rviz" name="rviz" args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/></launch>

再赠要给rviz模板,省的自己重新配置:

rosrun rviz rviz -d `rospack find rbx1_nav`/amcl.rviz

附上github大神的链接:
https://github.com/danimtb/pioneer3at_ETSIDI


更新:由于hector_slam当中没有回环检测,激光建图的效果并不是和理想,进行会产生跑偏的现象,由于作者并没有IMU配合激光雷达,但是有里程计,那么采用gmapping进行建图。
这里我想记一下启动的顺序
roslaunch p3dx_description p3dx.launch
roslaunch p3dx_description fake_p3dx.launch
roslaunch lms1xx LMS100.launch
roslaunch p3dx_description p3dx_rviz.launch
roslaunch p3dx_description p3dx_teleop.launch
rosrun gmapping slam_gmapping
然后我把teleop里面速度订阅的话题已经改变成cmd_vel 这个只是建立地图的工程,个人感觉效果还是不错的。比hector_slam建图的效果要好。然后我发现在建图的过程中,那些栅格地图的例如占空比等参数,都是可以设置的。


给先锋机器人设定在地图当中的起始位置和朝向。

首先设置起始位置是在initialpose这个参数,然后我在roswiki上面查,发现:
这里写图片描述
这个是在amcl的配置文件里面修改,当然你也可以修改源码 if you want
这里写图片描述
这里x,y就是建图的时候的坐标,a表示的转向 +方向是左手方向,例如0.785就是正方向45度,就是pi/4.


使用rqt_plot作出好看的图

参考链接:
http://blog.csdn.net/yaked/article/details/45534381


使用ros record 记录数据,使用rosplay进行重新回放

记录所有的数据

mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a

记录指定话题的数据

ros record -O subset /turtle1/cmd_vel /turtle1/pose

先锋机器人做跟随

roslaunch p3dx_description p3dx.launch
roslaunch openni_launch openni.launch
roslaunch rbx1_app follower2.launch

原理在在ros by example 这本书当中有介绍。
follower2相比于follower1在原理上只是在x,y方向上对点云进行了一个passthrough滤波器,在z方向上voxel的滤波器,对滤波后的点云数据进行,然后和follower1一样,就是在摄像前面做一个框,然后,对进行框的物体进行跟随。
预期的目标是能够跟随人。
原理还是一样的,都是通过质心来跟随人。
这里写图片描述


思岚激光雷达建图
hector_mapping建图
首先参考思岚hectorslam建图:
启动顺序:roslaunch rplidar_ros hector_mapping_demo.launch
roslaunch rplidar_ros rplidar.launch
gmapping建图
gmapping订阅的scan和odom的数据
roslaunch rplidar_ros rplidar.launch
roslaunch p3dx_description p3dx.launch
roslaunch p3dx_description fake_p3dx.launch
roslaunch p3dx_description p3dx_teleop.launch
roslaunch p3dx_description p3dx_rviz.launch
rosrun gmapping slam_gmapping
注意事项:
1、
这里写图片描述
2、为原来的激光rplidar加了一个TF变换
这里写图片描述
还有每次可能都需要对USB进行修改
3、让我第一次明白有的参数是必须要设置,还有一些参数参数作为调节选项
注意这里参数的写法:

<param name="abs" value="20"/>

这里写图片描述
这些都是在官网上找到额参数,都是可以修改和设置的,一定要知道,每个参数到底能够影响什么东西,多看,总是没有坏处的。
4、
关于线速度校正

roslaunch p3dx_description p3dx.launch
rosrun rbx1_nav calibrate_linear.py
rosrun rqt_reconfigure rqt_reconfigure

这里写图片描述
然后点这里的小勾,车才会走,哈哈,我也是想了好久,当时就在纳闷这节点有运行了,车咋不走。哈哈。


谷歌Cartographer
官网参考博客
http://blog.csdn.net/android_ruben/article/details/52760204
http://blog.csdn.net/jsgaobiao/article/details/53116042
我自己跑的大神的博客:
http://www.cnblogs.com/hitcm/p/5939507.html
注意事项:
安装依赖项

sudo apt-get install google-mock libboost-all-dev  libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev  libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler python-sphinx  ros-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev

ceres solver,我是使用的高博的
cartographer我使用hitcm大神的github上面提供的,编译的不要太爽。很顺畅的就走完了
这里写图片描述

mkdir build
cd build
cmake ..
make -j8
sudo make install

cartographer_ros
我也是使用的hitcm大神git
编译的不要太爽,已经OK了。
这里写图片描述

使用自己的scan数据,来运行cartographer
参考博客
http://blog.csdn.net/ywj447/article/details/52922487
从这个上面来看,建立的图挺稀少的。效果不是很好。
这里写图片描述


三种主流的激光SLAM算法的比较
http://blog.csdn.net/u012700322/article/details/52953768

hectorslam是利用的高斯牛顿方法来解决scan-matching问题,对传感器的精度要求要很高。
缺点:需要激光雷达的更新频率要高,测量噪声小。在建图的过程中,机器人的必须控制在较低的情况下,建图才能比较理想,另外他没有回环检测。优点:不需要里程计数据,使得在无人机上面可以用于建图,利用高斯牛顿方法解决scan-matching 问题,将获得的激光点集映射到已有地图的的刚体变换(x,y,theta),为了避免局部最小而非全局最优,使用多分辨率地图。

gmapping算法:采用的RBPF例子滤波算法,来轨迹机器人位姿的概率,求解最优解的过程中,采用了梯度下降算法。

优点:在长廊或者低特征场景中建图效果好。


我们的目标是:能够使用激光雷达的数据,来修正里程计的数据
参看大神的github:
https://github.com/dimatura/loam_continuous
http://wiki.ros.org/loam_continuous
http://wiki.ros.org/rf2o_laser_odometry
欧拉角和四元数
http://wenda.ncnynl.com/question/33


总结一下
无论我吧小车的编码器如何修正,小车总是会走歪。然后现在我采用KINECT做跟随,我机器人跟着我在场景当中走一周,建立一个比较正的环境地图。

关于gmapping的配置,我是采用了P2O当中配置文件。

启动的launch文件的顺序
roslaunch p3dx_description p3dx.launch
roslaunch p3dx_description fake_p3dx.launch
roslaunch p2os_launch gmapping.launch
roslaunch rbx1_app follower2.launch

rosrun rviz rviz -d `rospack find amr_robots_launchfile`/rosaria.rviz

这里写图片描述
相比用键盘控制:
(这是hector slam建的地图)
这里写图片描述
差距还是相当大的。后者甚至不能直接用于导航。
我吧我的视频上传到


Dijkstra怎么读?
https://zh.forvo.com/word/dijkstra/


除了move_base之外的其他PKG
http://wiki.ros.org/mrpt_navigation


ROS的优点:
http://www.robot-china.com/news/201606/01/33176.html


单目摄像头的使用
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-15602997154.20.6olXtH&id=529788718866


这里写图片描述
参考博客:
http://blog.csdn.net/u013158492/article/details/50495589
看了大神的博客,才发现自己可能都没有吧move_base的包用起来,自己基本上都是使用的默认参数。
发现这四个配置文件没有
这里写图片描述

用户调用movebase是通过传入带有TF参数move_base::MoveBase move_base( tf );来实现的


参考博客:
http://blog.csdn.net/x_r_su/article/details/53117572
关于pluginlib使用总结
利用pluginlib编写插件的方法四步:
1、创建插件基类
2、编写插件类,继承插件基类,实现统一接口
3、导出插件,并编译为动态库
4、将插件加入ROS系统,使其可识别和管理


参考博客:
http://blog.csdn.net/x_r_su/article/details/53100128
将来还是通过这个人地方实践一下actionlib


参考博客
http://blog.csdn.net/qq_29573053/article/details/70318241
在使用的过程当中move_base当中一些经验。


关于地图参数的说明
这里写图片描述

将这几天走过的坑总结一下:
首先就是gmapping的参数问题

<launch><node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" args="/scan"><param name="delta" type="double" value="0.05" /><param name="temporalUpdate" type="double" value="2.5" /><param name="xmin" type="double" value="-2" /><param name="xmax" type="double" value="2" /><param name="ymin" type="double" value="-2" /><param name="ymax" type="double" value="2" /><param name="particles" value="40"/><param name="srr" value="0.01"/><param name="srt" value="0.02"/><param name="str" value="0.01"/><param name="stt" value="0.02"/><param name="linearUpdate" value="0.05"/><param name="angularUpdate" value="0.0436"/><param name="minimumScore" value="10"/></node>
</launch>

其实,就是将minimumScore这个评分提高,似的更加相信那个激光雷达的数据,然后下面是关于gmapping参数讲解的博客。delta表示的是地图的分辨率,现在我设置是0.05.我设置过0.01,但是那个分辨率的地图,在我的本子上面没有办法正常运行。然后剩下值得注意的地方,就是关于导航全局路径规划和局部路径规划的参数。我总体的感触,就是图见的准确,很多事情都好说。其实激雷达可以不弄到下面,弄到一个看不见的的上面的最问题的。我只是用激光雷达进行定位和走定点。

http://blog.csdn.net/eaibot/article/details/51628371

另外就关于QT里面的东西
遇到的问题就是;
点击button之后,会运行两次launch文件。Qt中clicked()与clicked(bool)有什么区别?我用的clicked()函数,而没有用clicked(bool)。最后应该用clicked(bool) ,这个现象就消失了。原因不明,但是最后的功能实现了,就可以了。

然后思岚的或者其他的激光雷达的开口至少需要220度。千万要记住了。

最近入手了一款IMU–razor_imu_9dof
说是IMU其实目前之用了三轴陀螺仪。还是三轴加速度计和三轴磁力计
在淘宝卖家的照顾下,帮我线接上,原来的情况是,我当时不会焊东西,结果焊的不好,程序下载不进去。
因焊导致的问题

i have some problems, when i use arduino upload the Razor_AHRS.ino, it has some errors
as followers:Binary sketch size: 21,538 bytes (of a 30,720 byte maximum)
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x23
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x59

多亏了淘宝卖家,然后我在这里吧他们家的IMU的网址贴上
https://item.taobao.com/item.htm?spm=a230r.1.14.79.ebb2eb2TZky5Q&id=36406397062&ns=1&abbucket=6#detail
然后接下来的遇到的问题:

[INFO] [WallTime: 1478277847.034457] Publishing IMU data...
Traceback (most recent call last):
File "/home/catkin_imu/src/razor_imu_9dof/nodes/imu_node.py", line 228, in
yaw_deg = -float(words[0])
ValueError: could not convert string to float:
[imu_node-2] process has died [pid 8670, exit code 1, cmd /home/catkin_imu/src/razor_imu_9dof/nodes/imu_node.py __name:=imu_node __log:=/home/.ros/log/de7abd92-a2ad-11e6-ac74-000c2971e5f1/imu_node-2.log].
log file: /home/.ros/log/de7abd92-a2ad-11e6-ac74-000c2971e5f1/imu_node-2*.log`

我查看了源码,并且输出的print(words[0]),发现里面含有字母,上面的那个replace没有替换完全。是这里的问题。
产生这个问题的原因是因为 你的arduino下载到板子当中的程序和这个python文件中替换的程序不是同一个,就是说没有办法替换完全。然后我找了cpp的程序,链接:https://github.com/mik077/razor_imu_9dof
他这里需要的arduino的程序,是和他github下面的链接中的arduino的程序需要配套的。

上传代码到github
echo “# p3dx_navigation” >> README.md
git init
git add README.md
git add .
git commit -m “first commit”
git remote add origin https://github.com/DavidHan008/p3dx_navigation.git
git push -u origin master

如果遇到意外,那么就吧原来的 .git删除就可以

然后关于ROS的开机自启动参考博客
http://blog.csdn.net/yiranhaiziqi/article/details/53640523
重要的东西
gnome-session-properties
如果你是gnome-terminal -x your_command.sh
那么会打开一个终端,
如果是你是bash your_command.sh 那么就不会打开一个终端。
想要关闭所有的节点,那么直接在终端输入
pkill roslaunch就可以
另外需要在终端中设置
如下图所示:
这里写图片描述
在上面链接的博客中,还提到了一种,通过使用robot-upstart这个包,大家可以看一下,在上面链接中,使用的案例,我也尝试过,但是总是由于串口识别的问题,没有测试成功,也尝试过用std::system()这条,指令,也没有效果。
利用robot-upstart,可以熟悉一下这个包如何使用,就可以了。
因此最后选择最传统的gnome-terminal -x 加入指令。
开机自启后,有 两个地方要注意,第一个就是如何,不需要输入登录密码,就可以直接,进去,当时产生的现象是,只有当你输入登录密码后才运行程序。参考链接:点击这里
最重要的部分,就是:
这里写图片描述

第二个需要注意的地方:安卓设备没有办法查看图像
在launch文件启动的时候,要指定IP,就是在你的.sh文件中,在启动launch文件的那条指令前,将下面这几条设置IP的命令加上去,就好了。

export ROS_HOSTNAME=192.168.0.122
export ROS_IP=192.168.0.122
export ROS_MASTER_URI=http://192.168.0.122:11311

重磅推荐,这个大神的git
然后在编译这个package之前,你需要安装armadillo

1,安装armadillo之前所需要的库:
sudo apt-get install liblapack-dev
sudo apt-get install libblas-dev
sudo apt-get install libboost-dev
2,安装armadillo:
sudo apt-get install libarmadillo-dev

然后将这个大神的github 克隆到你的工作空间但中
https://github.com/tysik/obstacle_detector
之间编译就可以过

遇到的问题:
roscore 不执行,ros命令不响应
原因是在~/.bashrc里有export ROS_MASTER_URI=http://192.168.1.115:11311,这句话,赋值后的ROS_MASTER_URI指向的是另一个ip地址行的ROS,因此在本地无法使用ROS。注释掉ROS_MASTER_URI赋值即可在本地运行。
简单来说,就是锁定了IP,那么只要在固定的网中进行调试,就可以打开了


监听两个坐标系之间的tf变换,并且读取tf的数值,

    tf::TransformListener listener_odom;tf::StampedTransform transform_odom;try{listener_odom.waitForTransform("odom_link", "base_link", ros::Time(0), ros::Duration(3.0));listener_odom.lookupTransform("odom_link", "base_link",ros::Time(0), transform_odom);}catch (tf::TransformException &ex) {ROS_ERROR("%s",ex.what());}odom_trans.transform.translation.x = transform_odom.getOrigin().x();odom_trans.transform.translation.y = transform_odom.getOrigin().y();odom_trans.transform.translation.z = 0.0;tf::TransformListener listener_angle;tf::StampedTransform transform_angle;try{listener_angle.waitForTransform("base_link", "IMU", ros::Time(0), ros::Duration(3.0));listener_angle.lookupTransform("base_link", "IMU",ros::Time(0), transform_angle);}catch (tf::TransformException &ex) {ROS_ERROR("%s",ex.what());}odom_trans.transform.rotation.x=transform_angle.getRotation().getX();;odom_trans.transform.rotation.y=transform_angle.getRotation().getY();odom_trans.transform.rotation.z=transform_angle.getRotation().getZ();odom_trans.transform.rotation.w=transform_angle.getRotation().getW();

注意:这里必须用try 和 catch 以及waitForTransform 如果直接监听的话,就会出现内核崩溃

  try{listener_angle.waitForTransform("base_link", "IMU", ros::Time(0), ros::Duration(3.0));listener_angle.lookupTransform("base_link", "IMU",ros::Time(0), transform_angle);}catch (tf::TransformException &ex) {ROS_ERROR("%s",ex.what());}

弄了半天,还是要弄语音识别
参考链接
http://www.ncnynl.com/archives/201609/848.html
ROS中使用了CMU Sphinx和Festival开源项目中的代码,发布了独立的语音识别包,而且可以将识别出来的语音转换成文字,然后让机器人智能处理后说话。、


技巧:在gazebo当中显示多个机器人
现状分析:在原来的launch文件中,已经存在一个robot了。现在我想要把先锋机器人的模型添加进去。(我现在已经有先锋机器人的显示模型)
这里写图片描述
以及
这里写图片描述
解决办法:利用不同的group 的命名空间,用两个不同的命名空间,来区分这里两个机器人
如下:
这里写图片描述
参考解决方案:点击这里
最后的效果tf tree:
这里写图片描述
显示效果:
这里写图片描述
扩展:当tf已知的情况下,如何将一个tf跟着另一个tf

#!/usr/bin/env python
import sys
import rospy
import math
import tf
import geometry_msgs.msgif __name__ == '__main__':rospy.init_node('py_tf_follower')listener = tf.TransformListener()turtle_vel = rospy.Publisher('/sim_p3at/cmd_vel', geometry_msgs.msg.Twist,queue_size=1)rate = rospy.Rate(10.0)ctrl_c = Falsefollower_model_frame = "/pioneer3at_link"model_to_be_followed_frame = "/base_footprint"def shutdownhook():# works better than the rospy.is_shut_down()global ctrl_cprint "shutdown time! Stop the robot"cmd = geometry_msgs.msg.Twist()cmd.linear.x = 0.0cmd.angular.z = 0.0turtle_vel.publish(cmd)ctrl_c = Truerospy.on_shutdown(shutdownhook)while not ctrl_c:try:(trans,rot) = listener.lookupTransform(follower_model_frame, model_to_be_followed_frame, rospy.Time(0))except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException):continueangular = 4 * math.atan2(trans[1], trans[0])linear = 0.5 * math.sqrt(trans[0] ** 2 + trans[1] ** 2)cmd = geometry_msgs.msg.Twist()if 2*linear>1:            cmd.linear.x = linear*0.2cmd.angular.z = angular*0.1else:cmd.linear.x =0cmd.angular.z =0turtle_vel.publish(cmd)rate.sleep()

在上面的代码中,如果这个两个tf之间的距离是1米,就让他停止下来。

ROS 很实用的小工具

安装某个包的依赖项目

rosdep install <stacks-and-packages>...generate a bash script and then execute it.

举例说明:

davidhan@davidhan-ThinkPad-E460:~$ rosdep install simple_arm
executing command [sudo -H apt-get install ros-indigo-effort-controllers]

进行动态调节参数

rosrun rqt_reconfigure rqt_reconfigure 

输出topic

rostopic echo /topic

查看Tf

rosrun rqt_tf_tree rqt_tf_tree

查看所有的话题

rostopic list

查看这个节点订阅和发布何种数据

rosnode info 

查看那个节点发布,那个节点接收这个话题

rostopic info

查看所有图像的

rqt_image_view

查看节点之见通信的图

rqt_graph

关于所有的launch文件

pkill roslaunch

查看某个话题的数据类型

rostopic type /topic_name

查看所有topic 的信息

rosrun rqt_topic rqt_topic 

所有的rqt可以支持的东西。

rqt_action           rqt_logger_level     rqt_robot_monitor
rqt_bag              rqt_moveit           rqt_robot_steering
rqt_bag_plugins      rqt_msg              rqt_runtime_monitor
rqt_console          rqt_nav_view         rqt_rviz
rqt_dep              rqt_plot             rqt_service_caller
rqt_graph            rqt_pose_view        rqt_shell
rqt_gui              rqt_publisher        rqt_srv
rqt_gui_cpp          rqt_py_common        rqt_tf_tree
rqt_gui_py           rqt_py_console       rqt_top
rqt_image_view       rqt_reconfigure      rqt_topic
rqt_launch           rqt_robot_dashboard  rqt_web

将rostopic echo输出的数据写入一个txt文档

rostopic echo /cmd_vel >> a.txt

后记:
先锋机器人线速度和角速度矫正

<launch><!-- Starting rosaria driver for motors and encoders --><node name="rosaria" pkg="rosaria" type="RosAria" args="_port:=/dev/ttyUSB0"><param name="DriftFactor" value="0"/><param name="TicksMM" value="120"/> <param name="RevCount" value="16570"/> <remap from="rosaria/cmd_vel" to="cmd_vel"/><remap from="rosaria/pose" to="odom"/></node></launch>

重要的就是DriftFactor,TicksMM,RevCount

TicksMM现在设置的是120,如果你设置150,让先锋机器人走1米,他会走1米3左右。,这个参数,貌似是脉冲的个数。
DriftFactor:水平方面的分量。设置为0
RevCount:就设置16570就可以了。
我是利用的turtlebot的rosrun rbx1_nav calibrate_linear.py
和角度rosrun rbx1_nav calibrate_angular.py来矫正的线速度和角速度的。在矫正角速度的时候,可能出现回弹的现象。这是因为线速度的值,设置太大了。先锋机器人理想的线速度的之,我觉得是0.6米/秒。理想的角速度的为0.4米/秒

在建图方面的最重要的三个参数就是:分辨率,粒子数量和评分

<launch><node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" args="/scan"><param name="delta" type="double" value="0.05" /><param name="temporalUpdate" type="double" value="2.5" /><param name="xmin" type="double" value="-2" /><param name="xmax" type="double" value="2" /><param name="ymin" type="double" value="-2" /><param name="ymax" type="double" value="2" /></node>
</launch>
 <param name="particles" value="8"/>、<param name="minimumScore" value="30"/><param name="delta" type="double" value="0.05" />
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 第七次迭代开发总结(AngularJS下文件上传的实现)

    第七次迭代开发总结 突然之间冒出来一个第七次迭代总结看上去挺奇怪的&#xff0c;事实上因为学校项目的关系&#xff0c;我暑假留校继续开发。在迭代的前半周期&#xff0c;团队进行了一次技术迁移&#xff0c;舍弃LiveScript转向了ECMAScript 6。有空的话会写一些ECMAScript…...

    2024/5/5 18:34:01
  2. “JavaScript Promises和AngularJS $q Service”Part 2 (教程篇)

    欢迎大家到我的博客关注我学习Ionic 1和Ionic 2的历程&#xff0c;共同学习&#xff0c;共同进步。 注&#xff1a;本文是译文&#xff0c;难免有错误或理解不足之处&#xff0c;请大家多多指正&#xff0c;大家也可挪步原文。由于本文讲解十分精彩&#xff0c;非常推荐大家查看…...

    2024/4/28 20:32:58
  3. HEVC相关文档

    转载自 ye_f最终编辑 ye_f虽然也是做编码的&#xff0c;让自己懒得写啊&#xff0c;一下材料源自http://blog.csdn.net/yuanchao99/article/details/6803856&#xff0c;谢谢啊。 •ITU官网&#xff1a; –http://www.itu.int/itu-t/workprog/wp_item.aspx?isn7752•会议文档&…...

    2024/4/21 3:26:19
  4. angularJS关于依赖和模块与amd/cmd的区别,分享下结合使用示例

    angular框架的介绍大家可以参考下官网和中文社区。 下面链接是简介&#xff1a; http://www.angularjs.cn/docs/developer/328.html 简单总结下就是&#xff1a; 双向绑定&#xff0c;可测试性的代码结构&#xff0c;模型视图分离的一个前端MV*框架 其中angular也提供了模型的概…...

    2024/4/21 3:26:18
  5. angularjs完整demo例子

    AngularJS的主要特点是 mvc 数据双向绑定 分模块 依赖注入    mvc m: $Scope 变量 V:视图 c:controllerfunction(){} 控制器 方法    Angularjs的用法 1.在一个有起始标签的元素开始标签内使用 ng-app来指定angularjs的作用范围 2.angularJS的表达式是双大括号 {{}} 里…...

    2024/4/21 3:26:17
  6. x265-1.8版本-x265.h代码注释

    注&#xff1a;问号以及未注释部分 会在x265-1.9版本内更新 /****************************************************************************** Copyright (C) 2013 x265 project** Authors: Steve Borho <steveborho.org>** This program is free software; you can …...

    2024/4/19 22:05:24
  7. angular6学习(九):数据绑定到事件

    实现功能&#xff1a;将html页面中文本框的输入的内容传递到ts文件&#xff0c;然后在html文件中显示ts文件中的这个内容。 html文件 一、绑定到事件 ts文件 显示结果&#xff1a; 二、双向绑定&#xff1a; html: app.module.ts...

    2024/4/20 20:07:11
  8. Angular数据绑定

    Angular的数据绑定分为三种&#xff1a; < h1> {{变量名}} </h1>&#xff1a;插值表达式&#xff08;单向绑定&#xff09;< img [src]"imgUrl"> :属性绑定<button (click)"toPrduct($event)">: 事件绑定($event是一个事件变量) …...

    2024/4/20 20:07:10
  9. Angular10 数据绑定

    Angular10数据绑定 中文官网地址 绑定方式 绑定类型语法分类举例插值、属性、attribute、css类、样式{{expression}}[target] expression’bind-target‘expression’单向从数据源到视图数据绑定{{title}}事件(target)statement’on-target‘statement’单向从视图到数据源的…...

    2024/4/20 20:07:09
  10. Angular如何给动态生成的元素绑定事件

    在AngularJS中&#xff0c;操作DOM一般在指令中完成&#xff0c;事件监听机制是在对于已经静态生成的dom绑定事件&#xff0c;而如果在指令中动态生成了DOM节点&#xff0c;动态生成的节点不会被JS事件监听。 举例来说&#xff1a; angular.module(myapp,[]) .directive(myText…...

    2024/4/21 3:26:16
  11. angular 组件间的双向绑定

    组件间的 双向绑定 child.component.ts ... Component({selector: app-child,template: childname-text:{{childName}}<br/><button (click)reset()>reset</button> })export class ChildComponent{Input() childName:string ;Output() childNameChange …...

    2024/4/21 3:26:15
  12. angular双向绑定—(按钮+下拉)

    checkbox绑定 游戏当中我已阅读勾选 <p><input type"checkbox" [(ngModel)]"sel">阅读并同意条款</p> <p><button [disabled]"!sel">登陆</button></p>export class AppComponent { selfalse;hobby…...

    2024/4/28 19:44:38
  13. angular双向绑定简单实现

    angular双向绑定简单实现 双向绑定原理 声明一个新组件时&#xff0c;将使用代理设计模式来代理每个属性&#xff08;getter和setter&#xff09;。因此&#xff0c;它将能够从代码和用户输入中检测属性值变化代理proxy&#xff1a; Proxy 可以理解成&#xff0c;在目标对象之前…...

    2024/4/29 2:31:09
  14. 【Angular6+】事件绑定

    Angular6 事件绑定 临近毕业开始了第二段实习&#xff0c;因为项目需求&#xff0c;技术栈从Vue转到Angular&#xff0c;才发现Angular已经到7了&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff0c;我两年前还是2来着&#xff0c;看来VAR&#xff08;Vu…...

    2024/4/29 0:10:58
  15. Angular 解除双向绑定(适用Angular2+)

    1 . Angular的双向绑定&#xff0c;一直以来是Angular的一大特点&#xff0c;但凡是有利有弊。有时候需要绑定&#xff0c;有时候就需要解除 2 . 解除方法很简单&#xff0c;就是把数据先转化成JSON,再从JSON解析回来&#xff0c;即可解锁绑定&#xff0c;代码如下&#xff1a…...

    2024/4/28 8:50:44
  16. angular 绑定enter键

    <div class"jumppage" ><input type"text" placeholder"跳转" οnfοcus"this.placeholder" οnblur"this.placeholder跳转" ng-model"current"ng-keyup"goPages($event)"/><div>页&…...

    2024/4/28 8:02:06
  17. Angular 背景图片样式绑定

    // img是图片地址 <div [style.background-image]"url( img )">...

    2024/4/28 0:27:03
  18. angular数值绑定

    前言最近熟悉了angular&#xff0c;写一个小总结啊 叙述理解数据双方相互影响&#xff0c;一方修改另一方也会随之而变化。示例 前言 最近熟悉了angular&#xff0c;写一个小总结啊 叙述 理解 事件绑定 用小括号表示写入响应时间 属性绑定就用中括号表示&#xff0c;调取…...

    2024/4/28 16:03:41
  19. Angular5.0新特性

    文章来自官网部分翻译https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced Angular5.0.0版本已经正式发布1.构建优化 5.0版本默认采用CLI构建和打包。构建优化器是包含在CLI里面的一个工具&#xff0c;通过对你的应用程序更加语义化的理解可以使得你…...

    2024/4/28 16:33:28
  20. Angular8 - 稳定版修改概述(Angular 8的新特性介绍)

    Angular 8的新特性介绍 在之前Angular团队发布了8.0.0稳定版。其实早在NgConf 2019大会上&#xff0c;演讲者就已经提及了从工具到差分加载的许多内容以及更多令人敬畏的功能。下面是我对8.0.0一些新功能的简单介绍&#xff0c;希望可以帮助大家快速了解新版本。 一、新功能 …...

    2024/4/28 13:39:16

最新文章

  1. GiantPandaCV | FasterTransformer Decoding 源码分析(三)-LayerNorm介绍

    本文来源公众号“GiantPandaCV”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;FasterTransformer Decoding 源码分析(三)-LayerNorm介绍 作者丨进击的Killua 来源丨https://zhuanlan.zhihu.com/p/669440844 编辑丨GiantPandaC…...

    2024/5/7 1:02:40
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/6 9:38:23
  3. 如何转行成为产品经理?

    转行NPDP也是很合适的一条发展路径&#xff0c;之后从事新产品开发相关工作~ 一、什么是NPDP&#xff1f; NPDP 是产品经理国际资格认证&#xff0c;美国产品开发与管理协会&#xff08;PDMA&#xff09;发起的&#xff0c;是目前国际公认的唯一的新产品开发专业认证&#xff…...

    2024/5/4 23:56:47
  4. vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持

    文章目录 一、v-model是什么二、什么是语法糖三、v-model常见的用法1、对于输入框&#xff08;input&#xff09;&#xff1a;2、对于复选框&#xff08;checkbox&#xff09;&#xff1a;3、对于选择框&#xff08;select&#xff09;&#xff1a;4、对于组件&#xff08;comp…...

    2024/5/4 20:45:28
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/4 23:54:56
  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/6 9:21:00
  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/4 23:55:16
  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/4 23:55:06
  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