腾讯RoboticsX实验室机器人岗位面试问题记录
一、技术面专业问题
1、运动学与动力学的关系和差别
2、正向动力学和逆向动力学的差别
3、正向运动学和逆向运动学的差别
4、表示机器人状态和位姿的方法有哪些?
5、UR5e的运动控制的控制频率
6、PPO算法的输入输出是什么?PPo 算法的特点是什么?为什么选择使用PPO 算法而不用其他算法替代?
7、对于超声图像处理后输入到算法的信息是什么格式的,是什么信息?
8、 ros里边的话题通信和服务通信的差别具体是什么
9、四元数相关概念
10、简述moveit相关概念
11、SRL算法的作用是什么。输入输出分别是什么,具体的效果是什么样的
12、强化学习方式在做机器人控制方面比普通阻抗控制的优势是什么,或者说为什么选择用强化学习的方式去实现。
13、大致说说普通PID、阻抗控制、最优控制等常规控制的特点并分析一下。
14、UR5e是怎么做重力补偿的
15、UR5e能做到电流级别的控制吗?(我说不能,他说能,有学生实现)
16、比较Mujoco和ROS的Gazebo和python里的pybullet三者的差别。
二、其他问题
1、你为什么选择坚持做医疗机器人方向的研究,你觉得这个研究是有前景和意义吗。
2、你觉得在研究中,工程能力和科研能力谁更重要?
3、硬件软件你都接触过,那么你觉得你最擅长的是哪个方向或者哪个技能?
三、面试官建议
1、对于机器人学习和研究而言,很多人都只能算是入门,但是即使是入门也要有自己的想法和设计点在里边。
2、就业后别人只会在乎你解决问题的能力,当一个问题抛给你,主管不会在乎你用的什么算法去解决,只会在乎你是否做到要求,是否能实现指标(重点是:只要能解决问题就行)。
3、对于研究,基础不一定是最重要的,想法和视野才是重要的
四、技术面流程
1、在上一次面试的基础上,再介绍一下你现在研究项目的情况
2、针对研究项目的具体提问
3、课程知识的问答(围绕机器人学)
4、研究方向是怎么确定的,开题选题的过程和研究进度
5、面试官介绍研究内容
6、反问是否有问题需要了解
越疆科技公司面试记录
一、技术面专业问题
1、FDC2214芯片做手势识别的原理
2、超声扫查恒定力控制的轨迹是如何规划的
3、UR5e机械臂rtde库的实现原理里边有无末端力反馈,控制算法是自己写的还是该库内嵌的。
4、打算使用强化学习的研究意义和目的
5、强化学习算法输出的是什么?
6、对于机器人建模,获取数据了解多少?
二、总结
特点:
越疆科技更注重于项目落地,侧重解决工程实践问题,目前暂时没有模拟仿真相关研究。
经验:
从该面试过程学习到,要落实机器人的基础性、实用性的使用问题。(轨迹规划,基础控制算法,阻抗控制等应有一定了解)
参考回答(持续完善):
1、运动学与动力学
运动学:
研究的是运动本身,主要是表述物体的速度、加速度和空间位置这几个量之间的大小和方向关系。单纯的运动学研究不涉及物体的质量,也就不涉及到力;经常将物体抽象为质点或某个几何形状,研究特征点之间的速度、加速度、相对位置关系。
动力学:
考虑了物体的质量,引入了力和能量,也就是研究物体运动及运动的原因。那么什么时候用运动学,什么时候用动力学。个人总结,当我们设计某个机器初期,研究其关键零部件的运动轨迹、速度使其满足相应要求时,可以用运动学就可以;当研究如何使机器按照相应速度、加速度平稳的运行起来,涉及到控制时,就需要动力学分析
2、比较Mujoco和ROS的Gazebo和python里的pybullet三者的差别。
Gazebo 使用来自 Bullet的最大坐标刚体 (btRigidBody),这对于机器人来说不是最佳方式,它允许关节间隙。在轨迹规划里需要和moveit等搭配。
pyBullet默认使用铰接刚体 (btMultiBody),更适合机器人相关任务。此外,pyBullet 具有逆动力学、逆运动学、渲染、VR,并具有使用 OpenAI 进行强化学习的默认示例。
Mujoco更专注于动力学仿真,拥有自己更直观更强大的建模语言MJCF。其中的关composite是能够进行软体模型仿真。composite是针对复合对象建模的关键,是在body类下的一个,其参数中的 type包括了:
type: [particle, grid, rope, loop, cloth, box, cylinder, ellipsoid], required【粒子、网格、绳索、环、布、盒子、圆柱、椭球】
总之,Gazebo 和 PyBullet 都使用 URDF 和 SDF 文件作为输入。PyBullet 也允许导入 MuJoCo 文件。
Gazebo可以和ros很好地衔接。
3、空间机械臂运动学建模
对于空间机械臂连杆关系的描述是建立空间机械臂运动学模型的基础。
基础知识:连杆变换矩阵
1、原点建立在关节轴线Ji+1上
2、原点建立在关节轴线Ji上
(1)T矩阵法是描述连杆关系最基本的方法。
该方法将连杆坐标系间的变换关系直接使用齐次变换矩阵表示,相比其他方法,其对机械臂的描述更加直观。需要保证各连杆坐标系的Z轴与关节i轴线平行,坐标系的x轴和y轴在满足右手定则的条件下课任意指定。
优点:建系容易,简单直观。
缺点:参数不容易获得且冗余
参数数量:12n
(2)D- H法
D-H法是最为经典的机械臂运动学建模方法,该方法通过一系列规则建立机械臂连杆坐标系,采用4个变量描述机械臂连杆之间的变化关系。
优点:参数易得且无冗余
缺点:存在参数突变问题
参数数量:4n
(3)MDH法
MDH法的出现是由于利用D- H法建立连杆坐标系过程中会出现参数突变问题(常在机械臂轴平行时)。
优点:参数易得且无冗余
缺点:无
参数数量:5n
(4)CPC法
优点:参数易得
缺点:参数冗余
参数数量:6n
(5)MCPC法
优点:参数易得且无冗余
缺点:无
参数数量:4(n-1)+6
(6)旋量法
优点:直接建立了全局坐标,简化了对机构的分析
缺点:不容易理解
参数数量:6n
4、机器人运动姿态与位置描述
机器人姿态描述:
- 1、欧拉角
- 2、横俯偏角
- 3、姿态矩阵
- 4、转轴转角
- 5、四元数
机器人位置描述:
- 1、笛卡儿坐标
- 2、柱面坐标
- 3、球面坐标
8、ROS通信相关问题
ROS 中的基本通信机制主要有如下三种实现策略:
- 话题通信(发布订阅模式)
- 服务通信(请求响应模式)
-
参数服务器(参数共享模式)
三种通信机制中,参数服务器是一种数据共享机制,可以在不同的节点之间共享数据。话题通信与服务通信是在不同的节点之间传递数据的。
13、普通PID、阻抗控制、最优控制等常见控制方法的特点
-
PID控制器是目前工程领域应用最广泛的,其原因在于工程师们用起来很容易,不需要建模等数学物理方法。再加上目前优良的伺服性能,使得我们几乎可以无脑式的用PID算法,只要调调参数就行。
首先都可以实现力的追踪控制,然后阻抗主要是和环境接触的时候呈现一个二阶系统特性,具有一定的柔顺性,在一些场合具有一定的优势,像什么人机交互,什么外骨骼这种,用的一般是阻抗。最优控制是针对被控对象模型已知下,控制效果根据优化目标能达到最好的效果。
而pid针对未知模型的被控对象特别简单有效。一个是黑盒,一个是白盒。一个只能观测外部输入输出,一个还能观测到内部状态量,更能精确的表征和控制模型。
14、OSC控制器配置
15、关于UR5e的通信端口
- 1、UR5机器人作为服务器的通信端口:
端口 | 端口描述 |
---|---|
502 | Modbus TCP协议,机器人作为服务器 |
22 | SSH/SFTP (安全文件传输协议) |
29999 | Dashboard功能 |
30001 | 第一客户端端口,自动返回机器人状态与补充消息 |
30002 | 第二客户端端口,自动返回机器人状态与消息 |
30003 | 实时反馈端口,自动返回机器人状态与消息,125Hz实时反馈接口 |
对于UR5机器人:
- 30001~30003这三个端口共同特点是,一旦客户端打开端口,就会按照一定的频率收到来自机器人的信息,30003端口是实时反馈端口,客户端每8ms(125Hz)就收到一次来自机器人的信息。而其它两个端口只能每200ms(5Hz)收到一次来自机器人的信息。
- 客户端通过这三个端口收到的机器人信息稍有不同,通过30003端口收到的信息是最丰富的,包含了通过30001和30002收到的大部分信息。
- 因此,通过实时反馈端口30003,客户端收到机器人的信息频率是最高的,内容也是最全的。
按照参考文献说法:通过30003每次收到的数据包是1044个字节,以标准格式排列,极少数情况下客户端会收到小于1044个字节。
- 2、UR5机器人作为客户端的通信端口
端口 | 端口描述 |
---|---|
自定义 | 由UR脚本函数定义 |
502 | Modbus TCP协议,机器人作为客户端 |
建立通信链接:
import socket
import struct
import math
import numpy as np
HOST = "192.168.0.100" # The remote host
PORT = 30003 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
- 30003端口的参数、
30003端口为Realtime端口,UR5达到125hz,UR5e为500hz。端口数据的定义规则可参考UR官方Excel文档,截图如下。
参数表