背景
9月26日傅利叶智能宣布他们的通用人形机器人Fourier GR-1正式开放预售。Fourier GR-1是一款多功能人形机器人,拥有高达40个FSA关节,能够提供230牛米的峰值扭矩。其先进的全身控制算法赋予机器人44个自由度,展现出人类般的敏捷性和运动动力学。
据说这款机器人具有出色的直腿行走、高速行走、敏捷避障、斜坡上下和强大抗冲击能力,以及与人类无缝协作执行任务的能力。这些功能使得Fourier GR-1成为未来“具身智能”的理想平台,旨在将人工智能技术与实体机器人相结合,创造出可控、可感知、可互动和可移动的实体。
Fourier GR-1的可扩展性使其成为验证各种人工智能模型和算法的理想平台,为行业、康复、家庭和研究领域的应用提供令人兴奋的可能性。
github上有其开源的控制机器人项目RoCS : Robot Control System和rocs_server。
本文主要介绍如何在云服务器上部署rocs_server。官方有Readme.md,为什么还需要出一篇blog专门介绍在云服务器上部署rocs_server。这是因为其依赖的webots主要是客户端的,PC适用的。如果希望在云服务器上跑,是比较麻烦的。这里希望降低大家部署的难度。
介绍RoCS
机器人控制系统(RoCS)是一种先进的软件框架,专为精确管理和控制机器人系统而设计。它由两个主要组件组成:上位机和下位机。
下位机
下位机作为人类生理学中 cerebellum 的模拟,专门从事与运动控制相关的任务。它负责电机控制、运动算法、硬件驱动程序管理以及对于机器人的运动和稳定性至关重要的其他关键功能。
上位机
相反,上位机主要致力于无缝数据交换和执行特定的逻辑应用程序。它的作用包括接收和播放音频、实时传输视频流、向机器人的硬件组件发送精确指令以及持续监控机器人的运行状态。
机器人控制系统的层次结构
机器人控制系统分为三个不同的层次,每个层次都发挥着独特而关键的作用:
- 控制应用(用户图形应用程序): 控制应用是专为外部终端(如计算机和移动设备)量身定制的直观图形应用程序。其主要功能是作为开发人员的全面参考,而不是面向消费者的应用程序。
- 客户端 SDK(客户端接口): 客户端 SDK 是客户端接口,用于与机器人控制系统进行交互。它为开发人员提供了一个流线型的机制来访问 Server API,从而能够开发自定义应用程序。这一层是开源的,鼓励开发社区创建定制的解决方案。
- 服务器 API(服务器接口): 在机器人内部运行的 Server API 充当轻量级数据转发层。它利用 HTTP 和 WebSocket 协议来促进外部命令与下计算机之间的无缝传输以及将关键机器人数据传输到外部实体。尽管其位置在机器人内部,但由于效率和安全性的考虑,Server API 不作为开源软件提供。
Server API 基本上作为核心功能与外部世界之间的关键通道,确保高效和安全的数据交换。
总的来说,上位机的各个元素,包括 Control App、Client SDK 和 Server API,共同构成了机器人控制系统(RoCS)。这个全面的框架为开发人员和操作人员提供了必要工具,以高效和精确地监控和远。控制机器人系统,从而确保其无缝和最佳的运行。
购买腾讯云服务器
按照官方文档的要求,仿真环境需要Ubuntu OS. >= Ubuntu 20。因此,购买的服务器,只要操作系统选择ubuntu 20.04及其以上即可。另外,需要特别注意的是,如果可以的话,尽量选择海外区域的服务器,否则依赖的文件下载特别慢。
使用ubuntu账号登陆云服务器,执行如下命令
代码语言:txt复制sudo apt update
sudo apt-get update
sudo apt --fix-broken install
sudo apt install mesa-utils
sudo apt install xvfb
sudo apt-get install cmake
sudo apt-get install libqt5core5a
安装Webots
介绍Webots
Webots是一款专业的移动机器人仿真软件,提供了快速的原型制作环境。它可以帮助用户创建具有物理特性的3D虚拟世界,并在其中添加简单的被动对象或主动对象,例如移动机器人。这些机器人可以具有不同的移动方案,如轮式、有腿或飞行机器人,并可以配备许多传感器和执行器设备。用户可以对每个机器人进行单独编程,以表现出所需的行为。此外,Webots还包含大量机器人模型和控制器程序示例,并支持多种与真实移动机器人的接口。
下载Webots
进入 https://www.cyberbotics.com/ ,下载Ubuntu Debian (.deb)版本的Webots。
使用ubuntu账号登陆云服务器,执行如下命令来下载Webots:
代码语言:txt复制mkdir rocs_server
cd rocs_server
wget "https://github.com/cyberbotics/webots/releases/download/R2023b/webots_2023b_amd64.deb"
安装rocs_server
进入 https://github.com/FFTAI/rocs_server/releases/tag/v1.1 (官网给的地址到现在为止是错误的),下载bin.zip、lib.zip、Source code(zip) 。下载后解压,构建出如下的代码结构:
代码语言:txt复制~/rocs_server/
├── bin/ # 解压自bin.zip
│ ├── joystick/
│ ├── sdk/
│ └── webots/
├── lib/ # 解压自lib.zip
│ ├── build_gr1.sh
│ ├── eigen/
│ ├── qpOASES/
│ ├── rbdl/
│ └── v1.1
├── install_RoCS.sh # 来自Source code
├── start_RoCS_server_sdk.sh # 来自Source code
├── README.md (this file) # 来自Source code
└── webots_2023b_amd64.deb
运行仿真环境
官网文档这里是执行完install_RoCS.sh后直接执行start_RoCS_server_sdk.sh,但至少我购买的腾讯云的服务器是不行的。需要:
- 安装我在本文中所述的若干库后再安装sh install_RoCS.sh以及cd lib/rbdl后 sh build_gr1.sh;注意所有的.sh文件需要赋予sudo chmod x *.sh 执行权限。
- 执行 sudo xvfb-run --auto-servernum webots --mode=fast --no-rendering --stdout --stderr --minimize --batch /home/ubuntu/rocs_server/bin/webots/webotsim/worlds/SonnyV4.wbt ;这里请特别注意,我这样跑,相当于是一个没有界面的、纯云端的仿真环境。
- 执行sh start_RoCS_server_sdk.sh。
控制机器人
下载rocs_client
代码语言:txt复制pip install rocs_client
# If you encounter network delay, you can choose to install from Tsinghua source
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rocs_client
脚本控制机器人
代码语言:txt复制import time
from rocs_client import Human
from rocs_client.robot.human import ArmAction, HandAction, Motor
human = Human(host='127.0.0.1') # Please replace host with the ip of your device
human.start() # Start remote control
time.sleep(10) # Control system built-in state machine. To ensure normal calibration and startup of the robot, it is recommended to execute subsequent instructions after start() instruction for 10s
human.stand() # Stand up,这里如果等待时间不够长,机器人很容易跌倒
human.walk(0, 0.1) # Move forward at a speed of 0.1
human.upper_body(arm=ArmAction.LEFT_ARM_WAVE) # Wave left hand
human.stop()
当执行了控制命令,如human.stand()等,在webots的日志中,会有如下图中Received message的内容。
总结
本文的目标是在云服务器上搭建一个傅利叶机器人仿真环境。这个环境中,虽然没有可视化界面,但是是为一个纯云端的dev环境,便于测试控制系统。