# 常见问题

## 设备篇

1. “电池充电接口、工控机电源接口、Kinect 集线器的电源接口可以互换适配器吗？”

    少年，劝你别有这么大胆的想法！

    尽管这三者物理外形一致，但电气规格**并不通用**，使用时务必注意，错误的接线方式将会导致设备损坏，甚至危及人身安全。

2. “为什么风扇噪音非常大？”

    众所周知，AMD 旗下 CPU 最大的特点就是~~发热量大~~性能强劲，并且工控机内部结构十分紧凑，只有风扇维持在较高转速才保证系统正常工作。

3. “为什么我看不到 Kinect 的数据？”

    Kinec集线器的数据线另一端必须插在工控机 **USB3.0** 接口上，否则将无法从工控机读取到Kinect的数据。

4. “ Mini 计算机上插口都够，为什么还要额外使用 USB-Hub ，我可以不用 Usb-Hub 吗？”

    不行， USB-Hub 上的设备如果直接插计算机，将会找不到设备，程序将无法正常使用。

    为了方便用户找到对应的设备，以及对计算机的功率与性能的考虑，特地增加 USB-Hub 。

5. “ USB-Hub 上面的接口不通用吗？”

    不通用，组装时务必按照文字提示插入设备，错误的接线方式将无法正常建图、定位、避障，甚至危及人身安全。

6. “ 我想换台计算机来作为上位机， OS 系统装好，USB-Hub 也插好了， 除了电脑本身其他什么都没变，为什么测试雷达、定位标签都找不到设备？”

    根据设备（主要指激光雷达、定位标签与 AP1）插的位置不同，OS 系统中制定了一套规则（rules），以便程序能够找到对应的设备。

    如果设备有任何移动，包括但不仅限于以下：

    * USB-Hub 在 Mini 计算机上插错位置
    * USB-Hub 上的设备相互插错位置
    * 设备插在任何非规定插口

    都将导致找不到设备，功能无法使用。

7. （接上问）“ 我就想换台计算机，然后把设备用起来，那我该怎么办？”

    **以下操作内容要求有 Linux 相关知识**

    解决方法：修改系统规则（rules）

    操作步骤：

    1. 将 usb-hub 插到新电脑上

    2. 把 usb-hub 上所有设备都拔掉

    3. terminal 中执行
      ```$ vim /etc/udev/rules/99-position.rules```
      注：box_1 为前雷达，box_2 为后雷达，box_3 为定位标签，autolabor_pro1 为 AP1 机器人

    4. 将 hub上的设备依次插上，每插一个在 terminal 中执行一次
     ```$ dmesg```

    5. 将 99-position.rules 中对应设备 rules 里面的那一行的 kernels 修改为 $ dmesg 查看到的值

    6. 每个设备修改完毕后，保存 99-position.rules 退出

    7. 保存完毕，重启电脑

## 建图导航-建图篇

1. 键盘控制AP1行走时，AP1动作异常，动一下停一下

    可调整显示器的位置，保持接收器不被遮挡，并调整自己的位置，使接收器可以接收到发送的指令信号，建议使用USB延长线或USB-HUB将接收器放置在架子的高处，无任何遮挡，便于信号传输。

2. 键盘控制，AP1一动不动

    a) 确认已将AP1电源总开关打开，急停开关没有被按下，AP1处于上位机控制模式

    b) 新开一个terminal，执行以下命令，打出关系图，查看键盘节点

    `$ rosrun rqt_graph rqt_graph`

    c) 执行以下命令，上下左右控制键盘看是否会有数据打出，如没有数据打出，说明AP1没有接收到键盘发送的指令

    `$ rostopic echo /cmd_vel`

    d)执行以下命令，确认event-kbd的数量，数量大于一个则有问题

    `ll /dev/input/by-path/ `

    ![](imgs/keyboard.png)

    e) 请排查是否有多个键盘设备，键盘驱动查找的是最后一个连接的键盘，需要将其他（显示为）键盘的设备找出来，拔掉（可能是鼠标、机械键盘、混装键鼠）

3. AP1不受键盘控制、失控

    在开始建图前，需要禁用无线功能。如果没有禁用，AP1在连接了WIFI的状态下开始建图，在地图构建过程中，一旦AP1离开无线覆盖区域，无线连接断开，ROS的网络通信中断就会导致AP1控制失控。

4. 如何判断自己的建图质量

    在构建完成的地图中，如很明显是障碍物（墙）的颜色是虚的，则不太好。


5. 如何建出高质量的地图/建图效果不佳/地图构建要点

    在构建地图的过程，以下几点会影响到建图的准确性：

    * 轮胎气不足影响里程计数据

    * 运行速度不宜过快，由于激光扫描有一定的频率，车速低时雷达可以扫描到的点更多，构建的地图会更准确一些

    * 走一个来回，增加激光雷达扫描次数，累计更多的数据

    * 地图构建的质量也受环境限制，请尽量选择特征比较明显的环境，玻璃、镜子、楼道、空旷等场景会影响建图效果

    * 构建完成的地图，会发现有些点会飞出，飞出的点可能是由于物体的表面不平或者有空隙激光直接穿越了过去

    * 当场景很大特征不足的时候，需要规划建图路径时，应先走一个小回环，当回环成功后，可以再多走几圈，消除粒子在这个回环的多样性。接下来走下一个回环，直到把整个地图连通成一个大的回环


## 建图导航-导航篇

1. 初始化定位如何完成

    控制机器人前后左右转弯即可

2. 初始化定位一直没有成功，地图和真实环境不符是什么原因

    如周围没有明显的特征信息，使得机器人能够找到自己的位置，开到有折角拐弯或明显标志物附近，能够加速机器人找到自己的位置。

3. 导航过程中，机器人走的太慢，速度能再快点吗？

    可以，但机器人行走速度过快，实时雷达数据与环境地图匹配不佳会导致无法正确避障而撞到障碍物。

    并且机器人定位异常，会影响导航行走效果。

4. （接上问）我一定要提高速度，在哪里改参数？

    修改以下文件：

    catkin_ws\src\launch\autolabor_navigation_launch\two_laser_navigation_param\teb_local_planner_params.yaml

    ```
    max_vel_x: 0.2 //机器人的最大平移速度
    max_vel_x_backwards: 0.2//当向后移动时，机器人的最大绝对平移速度
    max_vel_theta: 0.2//机器人的最大旋转速度
    ```

    修改为
    ```
    max_vel_x: 0.8
    max_vel_x_backwards: 0.6
    max_vel_theta: 0.6
    ```
