记录工程开发过程中遇到的问题
ttyusb有设备,但是无法使用udev脚本建立映射。使用minicom直接监听ttyUSB0可收到数据。
-
删除原有规则重新映射
重复多次仍然无法建立映射
-
更换usb接口
和usb24can更换usb口后仍然无法建立映射,依旧可从ttyUSB0收到数据
tty配置文件全部被注释,相当于空文件。注意检查文件是否被注释
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
杀死工程后终端开始疯狂报超时(rm_hw的黄色信息),htop查看工程发现全核占用100%。怀疑是大量掉can报错导致,去掉掉can报错后进行测试。第一次关闭程序重启后正常了一段时间,再次杀死后又一次大量报错。关闭roscore和程序,清理log,重新测试,再次杀死后又大量报错。尝试校准,但开始疯车,全车电机抽搐,ctrl c关闭程序无响应,断电强制关机。以上每次杀死后都以重置血量上限的方式复活。
重新上电后尝试了杀死,重置血量复活,杀死重置相同血量上限复活,杀死重置不同血量上限复活,增加与删除掉can报错,但都无法复现。
提示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
在steps list写入底盘动作后使用engineer_client测试动作时底盘无大动作,电机有声音,在极小位置范围内来回抖动。查看相关话题时有反应。
使用engineer_client测试时没有关掉rm_manual,manual和middleware同时往同一个topic上发消息,抢占一个控制器的控制权。使用rostopic info也可以看到对应topic下有多个publisher
使用操作手端连键鼠遥控器测试,或直接关掉manual(不推荐)