R1 Lite Teleop 同构遥操作教程
欢迎使用 R1 Lite Teleop(简称 R1 Lite-T) —— 专为 R1 Lite 打造的同构遥操作平台。
在本教程中,我们将提供详细的说明,一步步陪同您完成开箱,自检和连接等步骤。我们将提供清晰的说明,帮助您快速熟悉新设备并确保一切准备就绪。请跟随步骤操作,确保顺利开启您的机器!
1. 开箱
1.1 开箱前准备
物品 | 数量 | 备注 |
---|---|---|
笔记本 | 1台 | 配置与启动设备 |
1.2 物品清单检查
收到产品时请根据以下货品交付清单检查包装盒内的物品是否齐全。
物品 | 数量 |
---|---|
R1 Lite Teleop | 1 / 套 |
电源适配器及接线 | 1 / 根 |
Type-C手柄充电线 | 1 / 根 |
JoyCon手柄 | 1 / 对 |
G夹固定器 | 2 / 个 |
HDMI转MINI HDMI线 | 1 / 根 |
网线 | 1 / 根 |
2 连接R1 Lite Teleop
2.1 固定 R1 Lite Teleop
使用G夹将R1 Lite Teleop(L)和 R1 Lite Teleop(R)固定至桌面,建议左右设备间距在30cm以内,如下图所示。
2.2 正确摆放设备
注意:
每次启动R1 Lite Teleop之前,请务必将其姿态调整为初始姿态,否则可能存在使用风险。
1.安装并固定蓝牙手柄
2.请参考下图,正确摆放R1 Lite Teleop的所有连杆位置,妥善放置在定位槽中。
2.3 连接并启动设备
- 连接 R1 Lite Teleop: 将 R1 Lite Teleop(L) 3芯航插连接至 R1 Lite Teleop(R) 左臂端口。
- 连接 R1 Lite:用网线连接 R1 Lite Teleop(R) 的网口与 R1 Lite 的网口,确保通信正常。
- 连接电源适配器:将电源适配器连接至 R1 Lite Teleop(R) 的DC插口。
- 开启R1 Lite:将R1 Lite上电并开启。
3. 遥操作流程
请按照以下步骤操作,配置并开始遥操任务。
3.1 多机通信设置
3.1.1 配置网络
请您使用有线方式配置网络,有利于提升多机通信的稳定性。
有线连接:
- 将 R1 Lite NUC 与 R1 Lite Teleop 连接起来(2.3中说明),R1 Lite Teleop 网络配置为【与其他计算机共享】;
注意:R1 Lite NUC 的有线IP通常为10.42.0.xxx
; R1 Lite Teleop 的有线IP通常为10.42.0.1
3.1.2 修改文件
注意:R1 Lite NUC 与 R1 Lite Teleop 的环境是出厂配置完成的,您可根据步骤进行确认,正确则无需修改。
1.连接R1 Lite NUC 查看环境配置 :
#查看是否输出存放配置文件的路径:/opt/galaxea/find_server/super_client_configuration_file.xml
echo $FASTRTPS_DEFAULT_PROFILES_FILE
#查看本机有线IP
ip a
#查看输出的地址是否是当前有线IP 如:<address>10.42.0.xx</address>
cat /opt/galaxea/find_server/super_client_configuration_file.xml | grep address
#如果不是R1 Lite NUC 的有线IP,请修改为当前有线IP
vim /opt/galaxea/find_server/super_client_configuration_file.xml
#将文件中<address>10.42.0.xx</address>修改为本机器有线IP

2.确认R1 Lite Teleop 的环境配置:
通过R1 Lite 登陆到R1 Lite Teleop,如果是使用板卡R1 Lite Teleop的用户名cat
,密码为temppwd
#查看是否输出存放配置文件的路径:/home/cat/galaxea/find_server/super_client_configuration_file.xml
echo $FASTRTPS_DEFAULT_PROFILES_FILE
#查看输出的地址是否是 R1 Lite NUC 的有线IP
cat ~/galaxea/find_server/super_client_configuration_file.xml | grep address
#如果不是R1 Lite NUC 的有线IP,请修改为 R1 Lite NUC IP
vim ~/galaxea/find_server/super_client_configuration_file.xml
#将<address>10.42.0.xx</address>修改为R1 Lite NUC有线IP
以上文件修改之后需重启确保生效
3.示例:
R1 Lite 和 R1 Lite Teleop 通过网线连接,R1 Lite 的有线IP为10.42.0.44
。
3.2 开启遥操
3.2.1 启动 R1 Lite
使用以下命令启动 R1 Lite 所有节点:
#进入存放脚本的目录之后执行脚本
cd ~{your_download_path}/install/startup_config/share/startup_config/script/
./robot_startup.sh boot ../sessions.d/ATCStandard/R1LITEBody.d/
3.2.2 启动 R1 Lite Teleop
注意:请您确认 R1 Lite Teleop 的连杆已摆放至零点位置。
-
连接蓝牙手柄。
a. 短按蓝牙手柄开机键,成功开启后,您可观测到蓝色流水灯。
b. 连接成功后,手柄内侧蓝色流水灯效果消失,转为蓝灯常亮。
-
节点启动。
a.请确认 R1 Lite 与 R1 Lite Teleop 已通过网线连接。
b.当R1 Lite Teleop 上电开启之后,状态指示灯为黄色长亮。
c.当检测到R1 Lite 执行启动节点之后,R1 Lite Teleop会自动拉起自身服务。
d.当指示灯为绿色长亮后说明 R1 LITE Teleop 与 R1 LITE 开始建立连接,等待3-5s可进行对 R1 Lite 的全身遥操作。
如果没有自启动服务可以执行一键启动命令启动服务
#进入存放脚本的目录之后执行脚本
cd ${R1Lite-T_SDK_path}/install/startup_config/share/startup_config/script/
./robot_startup.sh boot ../sessions.d/ATCHostStandard/R1LITET.d/
#!/bin/bash
# -----------------------------
# 基础配置
# -----------------------------
export FASTRTPS_DEFAULT_PROFILES_FILE=/home/cat/galaxea/find_server/super_client_configuration_file.xml #确认存放路径正确
FIXED_IFACE="eth0"
MAX_RETRY=360
RETRY_INTERVAL=2
DDS_DEP_SERVICES="avahi-daemon"
EXTRA_DELAY=6
check_lubancat_iface() {
# 检查网卡是否处于UP状态 + IP是否为10.42.0.1
if ip link show "$FIXED_IFACE" | grep -q "state UP" && \
ip addr show "$FIXED_IFACE" | grep -q "inet 10.42.0.1/"; then
echo "$FIXED_IFACE(IP: 10.42.0.1,状态:正常)"
return 0
else
echo "[重试] Lubancat有线网卡未就绪(检查:1.网卡是否插好 2.共享网络是否开启)"
return 1
fi
}
check_dds_services() {
for service in $DDS_DEP_SERVICES; do
if ! systemctl is-active --quiet "$service"; then
echo "[重试] DDS依赖服务$service未启动(执行:sudo systemctl start $service 修复)"
return 1
fi
done
echo "avahi-daemon服务(状态:正常)"
return 0
}
check_lite_connected() {
# 步骤1:从ARP缓存提取Lite的有效IP(仅10.42.0.x网段,排除无效记录)
lite_ip=$(arp -a | grep "$FIXED_IFACE" | grep -v "incomplete" | grep -oP "\b10.42.0.\d+\b" | head -n 1)
if [ -z "$lite_ip" ]; then
echo "[重试] 未找到Lite设备(检查:1.Lite是否上电 2.Lite有线是否插好 3.Lite是否在10.42.0.x网段)"
return 1
fi
# 步骤2:验证Lite IP连通性(基础网络层,ping通说明物理链路正常)
if ! ping -c 1 -W 1 "$lite_ip" >/dev/null 2>&1; then
echo "[重试] Lite设备(IP: $lite_ip)已找到,但ping不通(检查:1.Lite防火墙是否关闭 2.Lite有线网卡是否UP)"
return 1
fi
# 步骤3:基于IP反向验证Lite avahi服务(兼容超时,不依赖域名)
if avahi-resolve -a "$lite_ip" >/dev/null 2>&1; then
echo "Lite设备(IP: $lite_ip,DDS状态:avahi服务正常)"
return 0
else
echo "Lite设备(IP: $lite_ip,DDS状态:avahi反向解析超时,默认就绪)"
return 0 # 即使超时也放行(基于Lite日志已注册avahi的前提)
fi
}
# -----------------------------
# 主循环:等待所有条件就绪(未满足则重试)
# -----------------------------
RETRY=0
echo "=== 开始初始化:等待Lubancat与Lite就绪(最大等待6分钟) ==="
while [ $RETRY -lt $MAX_RETRY ]; do
if if_info=$(check_lubancat_iface) && dds_info=$(check_dds_services) && lite_info=$(check_lite_connected); then
echo -e "\n=== [所有条件满足] ==="
echo "1. Lubancat有线网卡:$if_info"
echo "2. DDS依赖服务:$dds_info"
echo "3. Lite设备状态:$lite_info"
echo -e "=== 等待${EXTRA_DELAY}秒后启动节点 ==="
sleep $EXTRA_DELAY
break
fi
# 输出重试进度(每10次重试提示一次剩余时间)
if [ $(( (RETRY + 1) % 10 )) -eq 0 ]; then
remaining_time=$(( (MAX_RETRY - RETRY) * RETRY_INTERVAL / 60 ))
echo "[进度] 已重试$((RETRY + 1))次,剩余约${remaining_time}分钟(最大${MAX_RETRY}次)"
fi
sleep $RETRY_INTERVAL
RETRY=$((RETRY + 1))
done
# -----------------------------
# 启动节点或超时退出
# -----------------------------
if [ $RETRY -eq $MAX_RETRY ]; then
echo -e "\n=== [错误] 超时未满足启动条件(排查方向) ==="
echo "1. Lubancat:eth0网卡是否UP + 10.42.0.1 IP是否配置 + avahi-daemon是否启动"
echo "2. Lite:是否上电 + 有线是否插好 + IP是否为10.42.0.x + 防火墙是否关闭"
exit 1
else
echo -e "\n=== 开始启动 torso_monitor_node ==="
export FASTRTPS_INTERFACE="$FIXED_IFACE"
source /opt/ros/humble/setup.bash
source /home/cat/galaxea/install/setup.bash # 请根据实际情况修改路径
# 启动节点(exec确保进程接管,便于systemd管理)
exec ros2 run HDAS torso_monitor_node
fi
sudo vim /etc/systemd/system/node_monitor.service
[Unit]
Description=Torso Monitor ROS2 Node
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=cat
ExecStart=/home/cat/galaxea/monitor_ws/start_monitor.sh
# 节点挂掉自动重启
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
#重新加载服务:
sudo systemctl daemon-reload
#启动服务:
sudo systemctl start node_monitor.service
#配置开机启动:
sudo systemctl enable node_monitor.service
3.2.3 R1 LITE Teleop 灯效说明
状态 | LED颜色 |
---|---|
初始状态与断联(超过3s未收到R1 Lite消息) | 黄灯 |
R1 Lite 与 R1 Lite Teleop建立连接 | 绿灯 |
数据采集开始后 | 蓝灯 |
3.2.4 手柄按键说明
摇杆/按键 | 左手柄 | 右手柄 |
---|---|---|
摇杆X 正方向 | 底盘向前移动(Vx 为正) | 躯干向上移动(Vz 为正) |
摇杆X 负方向 | 底盘向后移动(Vx 为负) | 躯干向下移动(Vz 为负) |
摇杆Y 正方向 | 底盘向左平移(Vy 为正) | 底盘逆时针自旋(Vw 为正) |
摇杆Y 负方向 | 底盘向右平移(Vy 为负) | 底盘顺时针自旋(Vw 为负) |
按键 ↑ | 躯干Pitch角正转 | - |
按键 ↓ | 躯干Pitch角反转 | - |
按键 A | - | 躯干向前移动(Vx为正) |
按键 B | - | 躯干向后移动(Vx为负) |
按键 X | - | 开启录制:按一次开始录制数据 删除数据:间隔5秒后再按一次删除数据 |
按键 Y | - | 停止录制数据 |
按键 ZL | 左夹爪闭合 | - |
按键 L | 左夹爪张开 | - |
按键 ZR | 右夹爪闭合 | - |
按键 R | 右夹爪张开 | - |
4. 数据落盘说明
请按照以下步骤操作,了解并配置数据采集。
4.1 数据格式介绍
数据采集的文件格式为 ros2 bag ,文件后缀为 *.mcap
。
4.2 数据获取
默认存储路径为:/home/r1lite/GalaxeaDataset/{date}/
date
为当天的日期,格式参考如下:20250923
4.3 配置文件介绍
4.3.1 配置文件的默认存储路径
默认数据录制使用的配置文件位于:
4.3.2 配置文件说明
配置文件用于描述此次采集任务的信息,您可以根据需求自行修改。
{
"project_info": {
"project_name": "test"},
"task_info": {
"task_name": "test_data_collection",
"task_owner": "galaxea" }
"operation_info": {
"teleoperation_type": "teleop",
"location": "suzhou",
"operator_name": "galaxea"}
}
4.4 数据落盘文件介绍
数据以 mcap
+ json
格式保存,文件一一对应。例如:
# 例如以下两个文件代表了一个数据包
S2R12000P18245_20240213173320125_RAW.mcap
S2R12000P18245_20240213173320125_RAW.json
# 格式为 robot_serial_number+timestamp+RAW
# robot_serial_number:机器人序列号,位于 /opt/galaxea/body/RSN
# timestamp:数据采集的时间戳精确到毫秒。
# RAW:代表数据采集原始落盘数据

5. 自定义设置说明
5.1 手柄键位调整
蓝牙手柄原始消息,会转为rostopic
发布,源码路径为~/galaxea/install/joycon_evdev_publisher/lib/python3.10/site-packages/joycon_evdev_publisher/joy_evdev_exe_node.py
。
您可以调整元素顺序,改变手柄键位,如下图所示。
5.2 夹爪控制模式切换
按照以下方式修改 launch 文件,您可以切换夹爪控制模式,修改完后重启程序即可使用。
5.2.1 开关控制模式
- 输入以下命令,打开对应的 launch 文件。
- 修改
gripper_mode
为mode1
,此模式下,夹爪控制逻辑为开关控制模式。
5.2.2 增量控制模式
- 输入以下命令,打开对应的 launch 文件。
- 修改
gripper_mode
为mode2
,此模式下,夹爪控制逻辑为增量控制模式。
5.3 底盘线速度设定
使用同构遥操作时,底盘默认线速度(Vx、Vy方向)为 0.2m/s ,底盘默认角速度(Vw)为 0.6rad/s ,其中底盘线速度可以通过以下方式设定。
注意:为避免速度过快而发生碰撞,请按照需求谨慎修改底盘线速度。
5.3.1 在launch启动文件中设定
- 输入以下命令,打开对应的launch文件。
- 修改
default_chassis_value
,这个参数为程序启动后底盘默认线速度。