R1 Lite 自主导航系统教程
1. 产品介绍
该系统包含了建图、定位、导航和控制模块。 机器人可在环境下构建点云地图,并依此实现全局定位和目标点的自主移动和避障。
自主导航系统为付费启用功能,目前处于测试阶段,如需深入了解及购买试用,请联系product@galaxea-dynamics.com或致电4008780980。
2. 硬件介绍
2.1 性能参数
| 定位 | 描述 |
|---|---|
| 定位方式 | 激光SLAM |
| 定位频率 | 100 Hz |
| 定位精度 | <0.05 m |
| 运动控制 | 描述 |
|---|---|
| 控制方式 | 自主导航(路径跟踪) |
| 最大行驶速度 | 0.6 m/s |
| 避障方式 | 绕障 |
| 避障频率 | 10-20 Hz |
| 网络 | 描述 |
|---|---|
| 有线网络 | 支持 |
| WiFi | 支持 |
2.2 传感器配置
Galaxea R1Lite底盘配备360°激光雷达,精度高且抗干扰能力强。
| 雷达 | 说明 |
|---|---|
| 数量 | 1 |
| 视场角 | 360°H x 59°V |
| 激光波长 | 905 nm |
| 检测范围 | 40 m @10% 反射率
70 m @80% 反射率 |
| 近距离盲区 | 0.1 m |
| 数据端口 | 100 BASE-TX 以太网 |
| IMU | 内置IMU |
| 工作温度范围 | -20 ~ +55°C |
| 尺寸 | 65L x 65W x 60H mm |
| 重量 | 265 g |
3. 软件介绍
请确保您的环境满足以下软件依赖要求。
- 硬件依赖:R1 Lite 计算单元
- 操作系统依赖:Ubuntu 22.04 LTS
- 中间件依赖:ROS Humble
R1 Lite机器人软件版本必须安装V2.3.0及以上的SDK。
4. 定位导航操作流程
地图构建是机器人自主导航的基础步骤。通过遥控机器人录制地图数据(mcap文件),并在本地电脑上进行处理和构建地图,最后将地图上传至机器人端指定目录,完成地图的部署。根据以下教程内容所示,设置目标位姿,修改目标文件,运行后实现定点导航 。
4.1 构建地图
4.1.1 启动 R1 Lite
通过SSH登录至 R1 Lite CCU。
ssh nvidia@robot_ip
# Enter the password (default: nvidia)
运行以下指令,启动R1 Lite的相关节点。
cd ~/galaxea/install/startup_config/share/startup_config/script/
./robot_startup.sh boot ../sessions.d/ATCNavigation/R1LITEVRTeleop.d/
4.1.2 录制数据包
运行以下指令,开始录制bag文件。
# 检查 topic 是否齐全, 是否有正常帧率输出
ros2 topic hz /hdas/imu_chassis
ros2 topic hz /hdas/lidar_chassis_left # 10hz
ros2 topic hz /hdas/feedback_chassis
cd ~
ros2 bag record /hdas/imu_chassis /hdas/lidar_chassis_left /hdas/feedback_chassis -s mcap
通过遥控器控制机器人在所需建图空间内移动,确保覆盖所有需要导航的区域。
遥控器操控机器人底盘方式请点击此处查阅。
当完成地图数据录制后,按下Ctrl + C结束录制。
注意:
- 请将机器人移动到准备建图的区域,目前仅支持室内,区域最大规模不超过100平方米,楼层高度不超过5米的场景。
- 在录制开始时,机器人需保持静止状态,并持续5秒以上,以保证数据质量。
- 在录制数据时,应确保环境中没有动态目标(如移动的人员或物体),避免跟随在机器人附近移动,以避免干扰地图构建。
- 建图完成后在后续使用中,请确保环境内没有场景变更(如新增桌子,隔断等),否则需要重新进行 建图。
- 机器人移动应完整覆盖建导航区域2次,即控制机器人在同一路线行驶2次,如下图,从 1 ~ 8 完成两圈行驶。

4.1.3 获取建图运行环境(Docker)
-
下载并安装Docker镜像
请发送邮件至support@galaxea-dynamics.com获取文件。 推荐查看Docker安装教程进行安装。
-
加载Docker文件 执行以下命令在本地电脑上加载Docker文件
sudo docker load -i galaxea_main_mapping_image_ros2.tar.gzdocker默认挂载在根目录,请预留20G以上存储空间。如需更改挂载路径,请参考:
```bash
# 1. 在 /etc/docker/ 目录下创建一个新的 daemon.json 文件:
sudo vim /etc/docker/daemon.json
# 2. 在打开的文件中,添加以下内容,将 Docker 存储目录改为希望挂载的路径
{
"data-root": "/path/to/target_dir"
}
# 3. 保存并退出。按下'shift'+ ':',输入'w'+'q',然后按下回车键。
# 4. 修改配置后,重启 Docker 服务使配置生效:
sudo systemctl restart docker
``` -
下载默认标定文件。如已购买,我们将会以官方邮件的形式发送给您。
4.1.4 在环境中建图
-
在本地电脑终端中,运行以下命令将录制的bag文件从R1 Lite端拉取到本地。
scp nvidia@{robot_ip}:~/{xxx.bag} .
# [robot_ip]为R1的IP地址;
# [xxx.bag]为录制的bag文件名。 -
准备好bag文件和标定参数文件。
mkdir -p ~/mapping_data
cp /path/to/xxx.bag ~/mapping_data
cp /path/to/robot_calibration.json ~/mapping_data -
启动Docker并开始建图。
sudo docker run --rm -v ~/mapping_data:/mapping_data galaxea-mapping:v2.0.x bash -c "./root/run_mapping_app.sh /mapping_data"
#如果遇到权限问题permission denied使用chmod加权限 注意确认是哪个镜像版本号
sudo docker run --rm -v ~/mapping_data:/mapping_data \
galaxea-mapping:v2.0.1 \
bash -c "chmod +x /root/run_mapping_app.sh && /root/run_mapping_app.sh /mapping_data"(mapping_data galaxea-mapping:v2.0.x 请按照实际名称填写)
-
查看建图结果。
cd ~/mapping_data/map
# map.obj 文件即为地图结果. 可以使用meshlab打开查看点云.
# sudo apt-get install meshlab
meshlab map.obj
4.1.5 导入地图和标定文件
执行以下命将地图和标定文件导入至R1 Lite
ssh nvidia@{rorbot_ip} "mkdir -p ~/galaxea/calib ~/galaxea/maps"
scp -r ~/mapping_data/map/* nvidia@{robot_ip}:~/galaxea/maps/
scp -r ~/mapping_data/robot_calibration.json nvidia@{robot_ip}:~/galaxea/calib/
4.2 启动定位功能
启动定位功能时,确保机器人在已知地图中。
-
启动软件
在R1 Lite端执行以下命令,启动相关节点。
cd ~/galaxea/install/startup_config/share/startup_config/script/
./robot_startup.sh boot ../sessions.d/ATCNavigation/R1LITEVRTeleop.d/ -
获取定位
2.1 自动定位 将遥控器拨到底盘控制模式,操作机器人已知地图环境中2m范围内低速绕圈10~30秒进行定位初始化,并观察如下命令的输出。
在R1Lite中,运行以下命令检查定位状态:
source ~/galaxea/install/setup.bash
ros2 run tf2_ros tf2_echo map body若正常返回以下类似数据,则定位成功:
- Translation: [3.280, -0.743, 0.008]
- Rotation: in Quaternion [0.000, -0.004, -0.147, 0.989] # xx y z w2.2 手动定位 在机器人没有定位成功时(或重启节点),将机器人遥控到建图起点处,朝向与建图开始一致,可以按如下命令发送
ros2 topic pub --times 10 /localization/prior_localization_pose geometry_msgs/msg/TransformStamped "header:
stamp:
sec: 0
nanosec: 0
frame_id: ''
child_frame_id: ''
transform:
translation:
x: 0.0
y: 0.0
z: 0.0
rotation:
x: 0.0
y: 0.0
z: 0.0
w: 1.0"
4.3 设置目标位姿
-
遥控机器人到目标点
启动定位成功后,将机器人遥控到客户想设定的目标点处,确保R1Lite中心远离障碍物至少45cm。 -
记录位姿信息
每遥控至一个目标点,记录该位置的位姿信息:- Translation: [3.280, -0.743, 0.008]
- Rotation: in Quaternion [0.000, -0.004, -0.147, 0.989] # x y z w -
更新导航目标点下发脚本
重复上述过程,记录所有目标点的位姿信息后,将所有目标点位姿信息更新到导航目标点下发脚本中。脚本示例如下,修改pose中position和orientation为目标点信息。
ros2 action send_goal /system_manager/navi/action system_manager_msg/action/NavigationTask -f --feedback
"{
header: {
stamp: {sec: 0, nanosec: 0},
frame_id: 'map'
},
pose: {
position: {x: -2.6662282943725586, y: 3.4633750915527344, z: 0.0},
orientation: {x: 0.0, y: 0.0, z: 0.3263046490397236, w: 0.945264659243676}
},
frame_id: 'map',
target_point_type: 1
}"
5. 软件接口
5.1 驱动接口
R1提供了多种驱动接口,用于与硬件设备进行通信和控制。以下是主要的驱动接口及其说明:
5.1.1 底盘驱动接口
/motion_control/chassis_speed:用于控制机器人底盘的运动,包括速度控制、方向控制等。请前往R1Lite软件介绍查看底盘驱动接口章节获取更多详细信息。