某具身智能上海国企 26 秋招算法工程师岗位,共计三轮,分别是线上面试+线上笔试+线下笔面。
线上笔试使用python,提供了代码框架,要求完成其中的TODO,限时40分钟,过程中要求共享屏幕并开启摄像头。
题目一:基础运动规划
问题描述:
class SimpleManipulator:def __init__(self):# 简化的平面三连杆机械臂self.joint_limits = [(-180, 180), (-90, 90), (0, 180)] # 关节角度限制self.current_pose = [0, 0, 0] # 当前关节角度def forward_kinematics(self, joints):"""前向运动学已提供"""x = joints[0] * 0.1 + joints[1] * 0.08 + joints[2] * 0.05y = joints[0] * 0.05 + joints[1] * 0.1 + joints[2] * 0.03return (x, y)def plan_path(self, target_position, max_iterations=100):"""实现路径规划算法输入: target_position (x, y), max_iterations输出: 关节角度路径列表"""# TODO: 实现路径规划passdef is_valid_configuration(self, joints):"""检查关节配置是否在限制范围内"""# TODO: 实现限制检查pass
题目二:抓取姿态评估
问题描述:
实现一个抓取质量评估函数,用于判断不同抓取姿态的稳定性。
import numpy as npfrom typing import List, Tupleclass GraspEvaluator:def __init__(self):self.object_center = np.array([0, 0, 0])self.friction_coef = 0.3def evaluate_grasp_quality(self, contact_points: List[np.ndarray],contact_normals: List[np.ndarray],external_force: np.ndarray) -> float:"""评估抓取质量输入:contact_points: 接触点位置列表contact_normals: 接触点法向量列表external_force: 外部力向量输出: 抓取质量分数 (0-1)"""# TODO: 实现抓取力封闭性检查# 1. 构建抓取矩阵 G# 2. 检查力封闭条件# 3. 考虑摩擦锥约束# 4. 返回质量分数passdef compute_wrench_vectors(self, contact_points, contact_normals):"""计算抓取矩阵的列向量"""# TODO: 实现 wrench 向量计算pass
题目三:强化学习策略接口
问题描述:
from abc import ABC, abstractmethodimport numpy as npfrom typing import List, Tupleclass RLPolicy(ABC):def __init__(self, state_dim, action_dim):self.state_dim = state_dimself.action_dim = action_dim@abstractmethoddef predict(self, observation: np.ndarray) -> np.ndarray:"""根据观测返回动作"""pass@abstractmethoddef learn_from_demonstration(self, demonstrations: List[Tuple]):"""从示范数据中学习"""passclass DexterousHandPolicy(RLPolicy):def __init__(self):super().__init__(state_dim=30, action_dim=6)# 6 关节位置 + 6 关节速度 + 15 指尖位置 + 3 目标位置 = 30 维def predict(self, observation):"""实现简单的控制策略观测: [关节位置, 关节速度, 指尖位置, 目标位置]动作: 关节目标角度或扭矩"""# TODO: 实现基础控制策略# 可选: PID 控制, 神经网络控制等pass
题目四:实际部署问题解决
问题描述:
class RobustGraspController:def __init__(self, delay_compensation=True, noise_filter=True):self.delay_buffer = []self.filter_window = 5def process_sensor_data(self, raw_sensor_readings: List[float],timestamp: float) -> List[float]:"""处理带噪声和延迟的传感器数据"""# TODO: 实现数据滤波和延迟补偿# 1. 滑动平均滤波# 2. 延迟补偿# 3. 异常值检测passdef detect_slip(self, force_readings: List, previous_readings: List) -> bool:"""基于力传感器检测滑动"""# TODO: 实现滑动检测算法pass
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!