在前几期中,我们实现了PIPER机械臂的点位控制、轨迹录制与视觉识别。本期,我们‘脑洞大开’——用一部普通手机的陀螺仪,实现对机械臂的实时姿态遥操作。
无需专用设备,只需一个App和一段Python脚本,就能让机械臂‘模仿’你的手势动作。这不仅是技术的融合,更是人机交互方式的一次有趣探索。
更重要的是——所有代码已开源,欢迎动手实践!
<h2 id=“OEgdb”>摘要</h2>
本文实现了通过手机传感器数据(加速度计、陀螺仪、磁力计)控制机械臂的功能。数据通过 WebSocket 从手机实时传输到本地Python脚本,脚本经姿态解算后控制机械臂运动。
<h2 id=“xVHZH”>标签</h2>
手机传感器、姿态遥操、陀螺仪、姿态解算、EKF
<h2 id=“AzeRJ”>代码仓库</h2>
github链接:https://github.com/agilexrobotics/Agilex-College/tree/master/piper/mobilePhoneCtl
<h2 id=“bYEro”>功能演示</h2>
[video(video-3i4sExLf-1756189668191)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=115072475074448)(image-https://i-blog.csdnimg.cn/img_convert/502b48cbedf6f125dc1e15d509b0ef46.jpeg)(title-当我用一部手机实现机械臂控制遥操)]
<h2 id=“%E4%BE%9D%E8%B5%96%E5%AE%89%E8%A3%85”>环境配置</h2>
- 操作系统:Ubuntu(推荐Ubuntu 18.04或更高版本)
- Python环境:Python 3.6或更高版本
- 克隆项目:
git clone https://github.com/agilexrobotics/Agilex-College.git
cd Agilex-College/piper/mobilePhoneCtl/
pip install -r requirements.txt --upgrade
- 确保已正确安装并配置
piper_sdk 及其硬件依赖。
<h2 id=“%E6%89%8B%E6%9C%BA-app-%E5%AE%89%E8%A3%85”>手机 App 安装</h2>
本项目推荐使用 Sensor Stream IMU+(付费 App)进行手机端数据采集与推送。
- 前往官网或应用商店购买并安装 Sensor Stream IMU+。
- 该 App 支持 iOS 和 Android。
<h2 id=“app-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95”>App 使用方法</h2>
- 打开 Sensor Stream IMU+ App。
- 在“Set IP Address”处输入运行本脚本的电脑 IP 地址和端口(默认 5000),如
192.168.1.100:5000。
- 选择要推送的传感器(Accelerometer、Gyroscope、Magnetometer)。
- 设置合适的 update interval(如 20ms)。
- 点击“Start Streaming”开始推送数据。
<h2 id=“python-%E8%84%9A%E6%9C%AC%E4%BD%BF%E7%94%A8”>Python 脚本使用</h2>
- 连接机械臂并激活CAN模块。
sudo ip link set can0 up type can bitrate 1000000
- 运行本目录下的
main.py:
python3 main.py
- 脚本启动后会显示本机 IP 地址和端口,请在 App 中填写一致。
- 当 App 开始推送数据后,脚本会自动进行姿态解算,并通过
piper_sdk 控制机械臂末端姿态。
<h2 id=“%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E4%B8%8E%E6%9C%BA%E6%A2%B0%E8%87%82%E6%8E%A7%E5%88%B6%E8%AF%B4%E6%98%8E”>数据传输与机械臂控制说明</h2>
- 手机端通过 WebSocket 实时推送三轴加速度、陀螺仪和磁力计数据到 Python 脚本。
- 脚本使用扩展卡尔曼滤波(EKF)算法进行姿态解算,获得欧拉角(roll, pitch, yaw)。
- 解算结果实时通过
piper_sdk 的 EndPoseCtrl 接口发送给机械臂,实现姿态控制。
<h2 id=“%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9”>注意事项</h2>
- 请确保手机和电脑处于同一局域网内,且防火墙允许 5000 端口通信。
- 机械臂运动前请确保安全,避免碰撞。
- 若需修改端口或初始位置,请编辑 [main.py](https://file+.vscode-resource.vscode-cdn.net/home/agilex/workspace/Agilex-College/piper/mobilePhoneCtl/main.py) 中相关参数。
<h2 id=“fb507f2c”>参考文献</h2>
结语
最后,不知道大家学‘废’了吗,控制机械臂不需要复杂的编程,有时候,只需要一部手机和一个好点子。下一期将更进一步:脱离手机,直接通过手势识别控制机械臂,实现“手在哪,臂就到哪”的自然交互。敬请期待:《松灵PIPER机械臂手势识别与位置映射》!