engineering/application/cmd/robot_cmd.md

51 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# robot_cmd
<p align='right'>neozng1@hnu.edu.cn</p>
## 运行流程
运行流程可以很直观的从`RobotCMDTask()`中看出。
1. 首先通过消息订阅机制,获取其他应用的反馈信息
2. 使用`CalcOffsetAngle()`计算底盘和云台的offset angle使得底盘始终获知当前的正方向
3. 接着根据当前是通过键鼠or遥控器控制调用对应的函数将控制指令量化为具体的控制信息
4. 得到控制信息之后,先不急着发布,而是检测重要的模块和应用是否掉线或出现异常,以及遥控器是否进入紧急停止模式,如果以上情况发生,那么将所有的控制信息都置零,即让电机和其他执行单元保持静止。
5. 最后通过pubsub机制把具体的控制信息发布到对应话题让其他应用获取。若为双板则将原本要推送给底盘的信息通过CANComm进行发送。
### 遥控器控制模式:
拨轮向下打到底进入紧急停止模式(后续改为关闭遥控器停止,利用daemon);拨轮向上打开启摩擦轮,超过一半开始发射(速度环,连发)
左侧开关:
- 上:键鼠控制
- 中:视觉控制(没有识别到目标的时候仍然可以使用遥控器控制云台)
- 下:遥控器控制
右侧开关:
- 上:弹舱开
- 中:底盘云台分离(底盘不旋转,全向移动)
- 下:底盘跟随云台
### 键鼠控制模式:
遥控器左侧开关拨到最上方,进入键鼠控制模式,此时不会响应遥控器遥感和拨轮的输入.
前后左右:WSAD
开关弹舱盖:R
小陀螺:Q
发射:鼠标左键
自瞄:鼠标右键