前言
在前几期中,我们实现了PIPER机械臂的点位控制、轨迹录制与视觉识别。本期,我们‘脑洞大开’——用一部普通手机的陀螺仪,实现对机械臂的实时姿态遥操作。无需专用设备,只需一个App和一段Python脚本,就能让机械臂‘模仿’你的手势动作。这不仅是技术的融合,更是人机交互方式的一次有趣探索。
更重要的是——所有代码已开源,欢迎动手实践!
开源链接链接:https://github.com/agilexrobotics/Agilex-College/tree/master/piper/mobilePhoneCtl
本文实现了通过手机传感器数据(加速度计、陀螺仪、磁力计)控制机械臂的功能。数据通过 WebSocket 从手机实时传输到本地Python脚本,脚本经姿态解算后控制机械臂运动。
手机传感器、姿态遥操、陀螺仪、姿态解算、EKF
• 操作系统:Ubuntu(推荐Ubuntu 18.04或更高版本)
• Python环境:Python 3.6或更高版本
• 克隆项目:
git clonehttps://github.com/agilexrobotics/Agilex-College.gitcdAgilex-College/piper/mobilePhoneCtl/
• 安装依赖库:
pip install -r requirements.txt --upgrade
• 确保已正确安装并配置 piper_sdk 及其硬件依赖。
本项目推荐使用 Sensor Stream IMU+(付费 App)进行手机端数据采集与推送。
• 前往官网或应用商店(https://www.sensorstream.app/)购买并安装 Sensor Stream IMU+。
• 该 App 支持 iOS 和 Android。
1. 打开 Sensor Stream IMU+ App。
2. 在“Set IP Address”处输入运行本脚本的电脑 IP 地址和端口(默认 5000),如 192.168.1.100:5000。
3. 选择要推送的传感器(Accelerometer、Gyroscope、Magnetometer)。
4. 设置合适的 update interval(如 20ms)。
5. 点击“Start Streaming”开始推送数据。
1. 连接机械臂并激活CAN模块。
sudo ip link set can0 up type can bitrate 1000000
2. 运行本目录下的 main.py:
python3 main.py
3. 脚本启动后会显示本机 IP 地址和端口,请在 App 中填写一致。
4. 当 App 开始推送数据后,脚本会自动进行姿态解算,并通过 piper_sdk 控制机械臂末端姿态。
• 手机端通过 WebSocket 实时推送三轴加速度、陀螺仪和磁力计数据到 Python 脚本。
• 脚本使用扩展卡尔曼滤波(EKF)算法进行姿态解算,获得欧拉角(roll, pitch, yaw)。
• 解算结果实时通过 piper_sdk 的 EndPoseCtrl 接口发送给机械臂,实现姿态控制。
• 请确保手机和电脑处于同一局域网内,且防火墙允许 5000 端口通信。
• 机械臂运动前请确保安全,避免碰撞。
• 若需修改端口或初始位置,请编辑 main.py中相关参数。
https://zhuanlan.zhihu.com/p/103617763
结语
最后,不知道大家学‘废’了吗,控制机械臂不需要复杂的编程,有时候,只需要一部手机和一个好点子。下一期将更进一步:脱离手机,直接通过手势识别控制机械臂,实现“手在哪,臂就到哪”的自然交互。敬请期待:《松灵PIPER机械臂手势识别与位置映射》!
松灵机器人成立于2016年,是全球领先的机器人底盘制造商和移动机器人系统解决方案服务商。目前,松灵机器人已经拥有多款适用于不同地形的室内外移动机器人底盘,在载重、续航、速度、运动模式等不同需求场景下实现全矩阵覆盖。同时,松灵机器人还推出了自动驾驶解决方案,平行驾驶解决方案,机器人科研教育套件等移动机器人底盘配套产品,帮助客户在自动驾驶、机械控制、计算机、车辆等领域完成实验验证。
凭借领先的研发技术,松灵机器人已经与包括阿里巴巴、华为、本田、中建三局在内的30多家行业领军企业,以及中科院、清华大学、南方科技大学、北京理工大学、新加坡国立大学、纽约大学等国内外50多所顶尖学府开展了深度合作。
2025-08-28 09:03
2025-08-28 08:59
2025-08-28 08:55
2025-08-28 08:51
2025-08-28 08:48
2025-08-28 08:46
2025-08-27 11:02
2025-08-27 11:00
2025-08-27 10:58
2025-08-27 10:44