自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
核心硬件清单
| 子系统 | 关键元器件 | 数量 | 角色 |
|---|---|---|---|
| 移动底盘 | Arduino UNO / Teensy | 1 | 底盘固件 (linorobot) |
| 4× DC 电机 + 编码器 | 4 | 麦克纳姆轮驱动 | |
| L298N 驱动 + PID 速度环 | 1 | 闭环速度控制 | |
| 垂直升降臂 | 步进电机 + EasyDriver | 1 | Z轴升降,开环步数计数 |
| Arduino/Teensy | 1 | 升降控制器 (父臂) | |
| 限位开关 | 1 | 零位标定 | |
| 机械臂 (子臂) | Arduino Braccio 机械臂 | 1 | 5DOF + 夹爪 |
| Arduino UNO + Braccio Shield | 1 | 舵机驱动,串口受控 | |
| 螺旋电缆 | 1 | 供电+串口连接父臂 | |
| 感知 | Microsoft Kinect v1 | 1 | 深度点云 → 2D 激光扫描 |
| 定位/导航 | GY-85 IMU (9轴) | 1 | 里程计融合 |
| 上位机 | Odroid XU4 (Ubuntu) | 1 | ROS 导航、MoveIt、感知 |
| 电源 | 12V 5Ah 电池 + DC-DC + 5V BEC | 1套 | 全系统供电 |
| 结构 | V-Slot 型材、线性导轨、丝杠 | 1套 | 升降机构框架 |
系统架构

语音控制流程:
- Amazon Echo Dot 拾取语音
- 自定义 Alexa Skill 识别意图
- AWS Lambda 接收请求 → 发布到 PubNub MQTT
- O'nine (Odroid) 订阅 MQTT → 触发 ROS 动作
- 机器人自主执行:导航 → 升降 → 机械臂抓取 → 返回
硬件子系统详解
3.1 移动底盘 (麦克纳姆轮)
升级版 Linorobot 底盘:Teensy 运行固件,PID 闭环控制 4 电机,编码器反馈。底盘用废纸箱/塑料箱改制,极低成本。

3.2 垂直升降机构 (父臂)
步进电机驱动丝杠升降,Open-Loop 通过步数计算高度。Teensy 接收 MoveIt 目标高度 → 发送步进脉冲 → 串口转发指令给子臂控制器。

3.3 机械臂控制器 (子臂)
Arduino UNO + Braccio Shield 驱动 6 个舵机。通过串口 (父臂 Teensy 转发) 接收关节角度数组,直接写舵机。

3.4 系统集成供电

- 12V 电池 → DC-DC 降压 → 5V 给 Odroid、Teensy、Kinect
- 12V 直通 → 步进电机、机械臂舵机 (通过螺旋线)
- 5V BEC → 底盘电机逻辑电源
软件栈 (双机 ROS)
开发机 (x86 Ubuntu 16.04):运行 MoveIt、RViz 可视化、地图构建
机器人机 (Odroid XU4 ARM Ubuntu) :运行导航栈、硬件驱动、感知节点
一键安装脚本
# 1. ROS 安装 (两台机器)
git clone https://github.com/linorobot/rosme && cd rosme && ./install
# 2. 开发机安装可视化包
cd ~/catkin_ws/src
git clone https://github.com/linorobot/lino_pid
git clone https://github.com/linorobot/lino_msgs
git clone https://github.com/linorobot/lino_visualize
cd .. && catkin_make
# 3. 机器人机安装 Linorobot 底盘 (麦克纳姆 + Kinect)
git clone https://github.com/linorobot/lino_install && cd lino_install && ./install mecanum kinect
# 4. 两台机器安装 O'nine 包 (机械臂、自主任务)
cd ~/catkin_ws/src
git clone https://github.com/grassjelly/onine_install && cd onine_install && ./install
# 5. Alexa 集成包
cd ~/catkin_ws/src
git clone https://github.com/grassjelly/onine_alexa && cd .. && catkin_make
Alexa 技能配置 (关键步骤)
- Alexa Developer Console 创建 Custom Skill
- Intent Schema ← schema.json
- Sample Utterances ← utterances.txt
- Endpoint 选择 AWS Lambda ARN
AWS Lambda 函数
- Runtime: Node.js 4.3+
- 代码:
onine_alexa/lambda/app中填入 PubNub 密钥,运行npm install && ./zipme打包上传 - 触发器添加 Alexa Skills Kit,绑定 Skill ID
PubNub 实时消息总线
注册 PubNub 获取 Publish/Subscribe Keys,写入 Lambda 代码和机器人端 alexa_tasker.py。
Pushover 照片推送
注册 Pushover 获取 User Key + App Token,配置到 snaptask 脚本,语音命令“拍张照”即可收到手机推送。
固件烧录与 udev 规则
# 机器人机执行
rosrun lino_udev lino_udev.py
# 插入底盘 Teensy → 输入 linobase
# 插入升降 Teensy → 输入 oninearm
# Ctrl+C 保存,复制规则并重载
sudo cp 58-lino.rules /etc/udev/rules.d/
sudo service udev reload && sudo service udev restart
ls /dev/linobase /dev/oninearm # 验证
# 烧录固件 (PlatformIO)
roscd linorobot/firmware/teensy && platformio run --target upload # 底盘
cd ~/onine_ws/src/onine_install/firmware/lift && platformio run --target upload # 升降
cd ~/onine_ws/src/onine_install/firmware/arm && platformio run --target upload # 机械臂
Linorobot 代码修改要点
bringup.launch:添加rosserial_onine节点连接/dev/oninearm,加载onine.urdfbase_link_to_laser静态变换:0.065 0 0 0 0 0 /base_link /laser 100- 启用
pointcloud_to_laserscan:输入/camera/depth/points,目标帧laser - 全局/局部代价地图、AMCL、SLAM、里程计节点:
base_link→base_footprint - 重新编译:
cd ~/linorobot_ws && catkin_make
AR Tag 物体检测
打印 2cm×2cm AR Tag 贴在目标物体 (如鱼食罐)。启动 ar_tracker.launch 发布物体位姿,MoveIt 规划抓取轨迹。可替换为 find_object_2d 或 tabletop_object_detector。
运行演示全流程
- 建图:
机器人机:roslaunch linorobot bringup.launch+roslaunch linorobot slam.launch
开发机:rosrun teleop_twist_keyboard teleop_twist_keyboard.py+rviz -d slam.rviz
遥控巡视 →rosrun map_server map_saver -f ~/map→ 修改navigate.launch加载新地图 - 获取任务点坐标:
运行导航栈 + RViz,用2D Nav Goal点击目标点 (距实物 ~1m),记录/move_base_simple/goal坐标,写入fishtask.py - 日常启动 (4 终端):
T1:roscore(开发机)
T2: SSH 机器人机 →roslaunch linorobot bringup.launch
T3: SSH →roslaunch linorobot navigate.launch
T4: SSH →roslaunch onine_apps ar_tracker.launch
开发机 2 终端:
T5:roslaunch onine_moveit_config demo.launch(MoveIt + RViz)
T6:rosrun onine_alexa alexa_tasker.py(MQTT 监听)
RViz 中2D Pose Estimate定位 → 对 Echo 说 “Alexa, ask O'nine to feed the fish”
未来规划
- Gazebo 仿真模型:无硬件也能体验完整语音→导航→抓取流程
- 升级算力:Rock64 (4GB RAM) 替代 Odroid XU4,单机跑满所有节点,免去双机有线连接
- 集成语音合成 (TTS) 让机器人会“说话”
- 增加视觉 SLAM (ORB-SLAM3) 减少对 Kinect 依赖
开源仓库
- O'nine 核心:github.com/grassjelly/onine
- Alexa 集成:github.com/grassjelly/onine_alexa
- 底盘基础:Linorobot
原理图与机械图




制造工艺
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- JQR 四足自主机器人:DIY 腿足机器人用于自主导航与救援
- Simple Pi Robot:用树莓派打造 2WD 自主巡航车
- 自制家用作业书写机:Arduino + GRBL 控制的笔绘仪
- 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
- Arduino UNO 自制循迹小车:从零构建自主巡线机器人
- Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
- Arduino Mega 2560 综合实训平台 - 传感器/电机/显示/PCB 一体化开发板
- DIY 手势控制机械臂:基于 Arduino + 柔性传感器 + IMU + 蓝牙的六自由度仿生臂
- 四轮 Arduino 机器人:Dabble App 蓝牙手柄遥控
- 基于 Arduino Mega 与物联网传感器的高级家庭监控系统
- 适用于 Arduino 项目的智能室内导航机器人套件