Skip to content

Latest commit

 

History

History
122 lines (54 loc) · 4.03 KB

问题记录.md

File metadata and controls

122 lines (54 loc) · 4.03 KB

问题记录文档

记录工程开发过程中遇到的问题

dbus无法映射

问题表现

ttyusb有设备,但是无法使用udev脚本建立映射。使用minicom直接监听ttyUSB0可收到数据。

已尝试方法

  • 删除原有规则重新映射

    重复多次仍然无法建立映射

  • 更换usb接口

    和usb24can更换usb口后仍然无法建立映射,依旧可从ttyUSB0收到数据

解决方法

tty配置文件全部被注释,相当于空文件。注意检查文件是否被注释

load servo_server时报错找不到参数

问题表现

bringup时servo_server报错,几乎全部参数找不到。查找后是engineer_arm_config下的servo.yaml中的参数未被加载

尝试方法

  • 清除rosparam,重新载入参数

    仍出现找不到参数的情况

  • 修改launch文件

    观察rosparam list和报错信息后发现是参数加载的namespace不对。修改launch文件中加载的命名空间,从/servo_server/enginneer_middleware改为/servo_server。测试后问题解决。

各种调试工具无法使用,提示连接不到服务器

问题表现

所有的调试工具发出的指令工程均无法收到,rqt里的arm trajectory controller无法使用,engineer client无法使用,rviz中的路径规划无法连接到moveit server。

尝试方法

  • 修改本机ros ip

    综合各种报错信息,怀疑是网络设置问题。ros ip此前设置为工程在网关中的ip。修改为笔记本在网关中的ip后再次尝试,一切恢复正常。

结论

ros ip应该设置为当前网络环境下本机的ip而不是工程的ip

不明原因导致CPU占用超高,程序运行严重被影响

问题表现

杀死工程后终端开始疯狂报超时(rm_hw的黄色信息),htop查看工程发现全核占用100%。怀疑是大量掉can报错导致,去掉掉can报错后进行测试。第一次关闭程序重启后正常了一段时间,再次杀死后又一次大量报错。关闭roscore和程序,清理log,重新测试,再次杀死后又大量报错。尝试校准,但开始疯车,全车电机抽搐,ctrl c关闭程序无响应,断电强制关机。以上每次杀死后都以重置血量上限的方式复活。

重新上电后尝试了杀死,重置血量复活,杀死重置相同血量上限复活,杀死重置不同血量上限复活,增加与删除掉can报错,但都无法复现。

无法使用rqt中的joint trajectory controller

问题表现

提示Dropping all 1 trajectory point(s), as they occur before the current time.Last point is xxx s in the past,无法控制机械臂

问题分析

搜索报错信息后发现可能是电脑和nuc时间不同步的问题,使用timedatectl status大致检查后发现我的电脑时间落后了5s左右,继续使用timedatectl发现我的电脑没有开启ntp同步时间的服务,长期运行导致时间误差累计。

解决办法

sudo timedatectl set-ntp yes

同步两机时间减小误差后即可正常使用

拔掉网线后一段时间工程停止运动

问题表现

使用交换机的情况下终端输入roscore和bringup开程序后拔掉网线,工程运行一段时间后无法控制。

问题分析

交换机是为了方便场上动态调参使用的,想要拔线后还能继续运行程序,应该使用启动服务的方式,而不是在终端bringup

解决办法

启动服务start_master,start_ecat_start

使用engineer_client测试底盘动作组时底盘无响应

问题表现

在steps list写入底盘动作后使用engineer_client测试动作时底盘无大动作,电机有声音,在极小位置范围内来回抖动。查看相关话题时有反应。

问题分析

使用engineer_client测试时没有关掉rm_manual,manual和middleware同时往同一个topic上发消息,抢占一个控制器的控制权。使用rostopic info也可以看到对应topic下有多个publisher

解决办法

使用操作手端连键鼠遥控器测试,或直接关掉manual(不推荐)