CN
EN
JP

D1 Max⼆次开发指南

发布时间:2026-03-31 11:08:44

文档修订记录

修订日期

修订内容

版本

2025.9

 初始预测试版本

V0.0.1

2025.10

 提供基础机器人控制接口

 支持机器人状态数据回调

 支持故障信息回调

v0.0.2

2025.11

 添加登阶模式接口

 添加运动模式下爬高台接口

 添加模式状态获取接口

v0.0.3

2025.12.27

 添加获取系统版本号的接口

 新增 UDP 通信方式支持

 优化连接失败时的错误信息提示

 内部适配新版本通信协议

v0.0.4

2026.1.17

 新增2.10机体坐标系方向

 新增4.4本体传感器坐标

v0.0.41

2026.01.15

 新增步态姿态接口(Gait(...))

 新增瘦身姿态接口(Slim(...))

 新增断开后自动续连的配置接口

 新增获取当前连接状态接口

 添加一些自动续连/手动续连的示例

 异步接口中 添加获取发送结果的回调参数

v0.0.5

2026.02.08

 新增控制权切换功能

 新增 “4.5 RTK使用说明

 修复IMU acc/gyro 取反问题

v0.0.6

2026.03.17

 新增自主回充功能

 修改nx ssh登录用户名

 修改前后激光雷达IP地址及ros topic

 新增 “1.6 D1 Max硬件架构图

v0.0.8

 


一、产品介绍


1.1 产品概述

意昂4仿生四足机器人 D1 Max是一款轮足式仿生四足机器人, 具备自重轻、负载大、续航长、防护强、运动灵活稳定等优势。机器狗每条腿配备3个关机电机和1个轮毂电机,配备光学相机、激光雷达、超声波雷达、IMURTK模块等传感设备,内部搭载高算力平台,用于实现运动控制、自主导航定位、环境侦测等功能,提供丰富的供电和通信接口,支持多品类的任务载荷拓展。

1.2 产品清单

 


1.3 产品参数

分类

规格

说明

基础信息

站立尺寸

930mm * 480mm * 585mm

趴下尺寸

930mm * 630mm * 200mm

整机重量(含电池)

41kg

工作温度

-20°~55°

防护等级

IP67

电池模组

54V9.35Ah*2,双电池,支持快拆快换,支持热插拔

充电时长

单电池≤2h(充电座支持双电池同时充电)

续航时间

空载5h,满载3.5h

性能参数

最大速度

8m/s

稳定负载

25kg

连续攀爬台阶高度

22cm

极限跨越障碍高度

80cm

极限跨越沟壑宽度

80cm

带负载跨越高度

50cm

最窄通过宽度

50cm

最大爬坡角度

45°

最窄掉头宽度

支持原地掉头,支持前后向切换

算力主控

100Tops算力平台

传感单元

 

激光雷达

前后各196线激光雷达(Airy96线)、覆盖角度360°*90°、覆盖直径范围120m

广角相机

前后各1个广角相机,工业级800万像素,视场角:DFOV122°HFOV111°VFOV70°

补光灯

白光补光

IMU

标配

超声波传感器

左右各一个超声波,支持5m以内的障碍物识别

RTK模块

标配

麦克风扬声器

部分版本支持

光照传感器

部分版本支持

功能列表

 

运动性能

具备踏步、滑行、匍匐等姿态,能够前后左右直线移动、原地旋转等,支持膝关节姿态变换;

支持在砂石路面、柏油路面、草地、沙土地面、森林地面、建筑废墟等各类路面行走;

\足快换

支持轮足、点足快换

实时图像传输

支持

OTA升级

支持

二次开发

支持

供电接口

5V12V24V48V,最大输出功率480W

通讯接口

千兆网口*2USB3.0*2、串口*1

通信

 

WIFI通信

支持

蓝牙

支持

射频通信

支持

配件

适配器充电座

标配

带屏遥控器

标配

自主充电桩

标配

航空包装箱

标配

其他

保修期

1

 

注:以上参数为实验室测试数据,实际表现可能因使用环境、操作方式等因素有所差异,请以实际为准

注:以上参数为实验室测试数据,实际表现可能因使用环境、操作方式等因素有所差异,请以实际为准

 

 关节参数

部位

参数

数值

髋部滚转关节(hip_roll)

最大扭矩

150N.m

最大转速

190RPM

重量

0.93kg

关节限位

-39.9°~30°

髋部俯仰关节(hip_pitch)

最大扭矩

150N.m

最大转速

190RPM

重量

0.93kg

关节限位

-140°~140°

膝部俯仰(knee_pitch)

最大扭矩

150N.m

最大转速

190RPM

重量

0.93kg

关节限位

-160°~160°

足端(foot)

最大扭矩

33N.m

最大转速

1200RPM

重量

1.275kg

半径

9cm

关节限位

-180°~180°


1.4 载荷上装

1.4.1 负载安装孔位图

机器狗背部的空间平整,负载25-30kg,背部部署有双导轨,两条导轨上有14M4孔位支持上装载荷便捷安装,双导轨具体尺寸如下

 

机器人加装负载后,仅支持基础运动模式,请勿在加装负载后使用高台模式

 

当在机器人背部加装载荷时,机器人的运动性能可能会受影响,请务必在加装前向售后人员咨询相关事宜

 

1.4.2  重心限制

为避免D1 Max机身上加装上装载荷之后,在各类地形运动过程中,腿部与上装载荷发生碰撞干涉,对D1 Max的上装空间给出如下推荐示意,具体尺寸为长40cm,宽22cm,高24cm,位置在机身背部居中位置,如下图所示:

 

 


1.5 电气拓展接口

 

  

序号

接口名称

1

48V(10A)

2

24V(20A)

3

24V(3A)+网口

4

12V(5A)+网口

5

串口(RS232 x1RS485 x1SBUS x2PPS x1

67

USB3.05V1A

8

RTK天线接口

9

拓展仓按键

 

所有供电接口的供电总功率在 480W 以内;

有航插头配备防护盖,以确保 IP67,不用的航插头务必盖好防护盖;

扩展仓按键用于控制扩展接口的供电,在进行上装接线时,务必先关闭扩展仓的电源。

航插扩展功能接口说明:

V3机器设备路径

 RS232: /dev/ttyTHS3

 RS485:  /dev/ttyTHS1

 SBUS1:  /dev/ttyACM2

 SBUS2:  /dev/ttyACM3

V4机器设备路径

 RS232: /dev/ttyCH9344USB4

 RS485:  /dev/ttyCH9344USB5

 SBUS1:  /dev/ttyCH9344USB2

 SBUS2:  /dev/ttyCH9344USB3

1.5.1 电源口48V(10A)

 航插母图

 

航插名称

48V 10A

板端航插型号

M12-S4S-GPFM16-135-CS24044

线序定义

 

1

GND

2

48V

3

48V

4

GND

 对插线束

 

 

 

1.5.2 电源口24V(20A)

 航插母头

 

航插名称

24V 20A

板端航插型号

M12-S4S-GPFM16-135-CS24044

线序定义

 

1

GND

2

24V

3

24V

4

GND

 

 对插线束

 

 

 

1.5.3 网口(24V)

 航插母头

 

航插名称

网口+24V

板端航插型号

M12- P12A-GPFM12

线序定义

 

1

GND

2

24V

3

24V

4

网口A+

5

网口A-

6

网口B+

7

网口B-

8

网口C+

9

网口C-

10

GND

11

网口D+

12

网口D-

 对插线束

 

 

1.5.4 网口(12V)

 航插母头

 

航插名称

网口+12V

板端航插型号

M12- P12A-GPFM12

线序定义

 

1

GND

2

12V

3

12V

4

网口A+

5

网口A-

6

网口B+

7

网口B-

8

网口C+

9

网口C-

10

GND

11

网口D+

12

网口D-

 对插线束

 

 

 

1.5.5 串口

 航插母头

 

航插名称

串口(RS232RS845SBUS*2PPS

板端航插型号

M12- P8A-GPFM12

线序定义

 

1

PPS

2

SBUS1

3

SBUS2

4

RS485A

5

RS485B

6

RS232_TX

7

RS232_RX

8

GND

 对插线束

 

 

1.5.6 USB

 航插母头

 

 

航插名称

USB3.0+5V  两个

板端航插型号

E10B- FT3-PPF

线序定义

 对插线束

 


二、SDK开发指南


2.1 SDK介绍

 本文档描述了 D1 Max 的软件开发工具包 (SDK),提供其核心服务接口的详细信息,包括高层运动控制接口、IMU 惯导数据接口、电机状态数据接口。

 各章节分别介绍不同服务接口的调用方法、数据输入/输出的标准格式定义与一些功能开发示例。

 接口定义会随量产开发状态产生变更,请以最新版本的接口定义文档为准。

 SDK程序与狗本体内程序通讯存在特定协议,故不同版本的SDK程序与狗本体内程序通讯存在差异,请根据设备版本选择对应版本SDK程序。若条件允许,建议更新狗内程序到最新版本,以获得更好的兼容性。

 SDK接口控制时,全部状态均由二次开发者设计指定,本体运控不做额外的干预与状态跳转。

 运行SDK, 请保证系统有足够的资源, 否则可能出现运动控制模块失效的情况。


2.2 sdk软件服务接口列表

序号

接口名称

功能

SDK版本

1

高层运动控制接口

 

实现机器狗的高层运动控制,包括前后转向速度运动,趴下,旋转,四肢站立等

V0.0.2

 

2

视频流推送数据接口

向客户端推送相机本体视频流

V0.0.2

3

设备状态服务接口

 

查询并获取当前设备状态和系统资源使用信息

V0.0.3

 

4

惯导状态数据接口

获取IMU原始数据信息

V0.0.4

5

超声波雷达接口

实现自主避障功能

v0.0.5

6

遥控器和sdk控制权切换功能及sdk接口

实现控制权切换功能

v0.0.6

7

RTK模块的sdk接口

实现自主定位功能

v0.0.6

8

自主回充功能及sdk接口

实现自主充电功能

v0.0.8

9

slam建图导航功能及sdk接口

实现自主导航功能

暂未上线,目前可提供激光雷达ROS2接口


2.3 安全保护机制

2.3.1 硬急停

 触发方式:按下机身急停按钮

 效果:机器狗缓慢着地,红灯亮起

 指示灯状态

 按下时:红灯亮

 松开后:绿灯亮

 恢复:旋开急停按钮后,系统自动恢复(若无其他故障)

2.3.2 软急停

 触发方式:通过遥控器触发或者通过sdk接口触发

 效果:机器人立即停车,不再响应任何控制指令

 恢复:接触软急停后可恢复正常操作

V0.0.6版本sdk起,支持遥控器和sdk控制权切换功能,若要实现在sdk控制阶段通过遥控器触发设备软急停,必须得在sdk获取控制权后,点开app,然后便可以随时使用遥控器右上方红色急停按钮触发软急停,触发软急停后,机器狗显示红灯,保持当前姿态,不再响应任何控制指令

2.3.3 内部异常保护(自动触发)

以下情况将触发内部保护机制,机器人自动停车并缓慢着地

 遥控信号断连(含网络阻塞),重新连接APP即可恢复

 电池在位但电量<10%

 关节故障

 IMU(惯性测量单元)通信中断


2.4 环境依赖

- 操作系统: Ubuntu 22.04

- 构建工具: CMake 3.8+, GCC 11+

- 依赖库: Boost 1.74+

- 编程语言: C++


2.5 设备登录

网络连接

 Wifi 连接登录

 wifi名称:XG2WIFI_xxxxxx

 wifi密码:12345678

 有线连接

 使用网线连接机器狗拓展网口和控制端PC

 设置控制端PC网口IP192.168.168.x(不能设置为192.168.168.168192.168.168.100)

ssh登录

Plain Text
 
#通过wifi连接
ssh robot@192.168.234.1       #RK3588,password: bot

#通过网线连接
ssh robot@192.168.168.168     #RK3588, password: bot
ssh robot@192.168.168.100     #Orin NX,password: 1

 

 RK3588算力板负责运动控制和系统监控等功能,勿在此板开发应用程序

 Orin NX算力板负责建图、定位、导航等业务功能,用户可在此算力板开发轻量化的应用程序,需做好备份管理,刷机或OTA升级可能会被刷新


2.6 SDK获取

2.6.1 版本查询

通过ssh进入机器狗本体,查询对应的版本信息后,将查询到的机器狗固件版本号截图发送售后技术支持团队获取对应的SDK 安装包与示例代码,查询方式如下:

Bash
 
 ssh robot@192.168.234.1        #password: bot
 cat /opt/release/version.yaml  #查看rk对应固件版本
 
 ssh robot@192.168.168.100        #password: 1
 cat /opt/release/version.yaml    #查看nx对应固件版本

 

2.6.2 获取对应固件版本的sdk

way1:请在查询到版本号后,截图发送给技术支持同事获取对应版本的sdk

way2:通过如下github地址获取

Bash
 
git clone https://github.com/AgibotTech/Agibot_D1_Max.git


2.7  示例Demo运行步骤

在本地PC端,进入到sdk文件中

Bash
 
# 进入 C++ 演示目录
cd example

# 创建构建目录
mkdir build && cd build

#配置并编译项目
cmake ..
make -j6

#运行demo示例
./example_data 192.168.168.168 8081 #有线连接
./example_data 192.168.234.1 8081  #无线连接

 

在进行sdk控制前,遥控器端app务必先退出,否则sdk无法控制设备进行动作

在运行demo文件前,务必先阅读源文件


2.8 SDK控制说明

 sdk指令下发需要按照以下状态跳转逻辑,否则可能会造成机器摔倒、故障或不响应等异常情况。

 

注意:

1. 当下发站立命令时,完成站立后会根据当前的模式自动切换到通用状态或者原地状态

2. 锁定状态下切到任意其他状态下就算解锁

 SDK命令下发流程如下

 

 


2.9 关节命名规范

为便于识别与调试,本设备采用如下命名规则:

 方向缩写

 f = front()

 b = back()

 l = left()

 r = right()

 编号含义

 1 = 髋部滚转(hip_roll)

 2 = 髋部俯仰(hip_pitch)

 3 = 膝部俯仰(knee_pitch)

 4 = 足端(foot)

 示例命名

 frl_hip_roll:右前腿1号关节(髋部滚转)

 bl3_knee_pitch:左后腿3号关节(膝部俯仰)

Plain Text
 
front_left_leg     #左前腿
front_right_leg    #右前腿
back_left_leg      #左后腿
back_right_leg     #右后腿

fl1_hip_roll        #左前1号
fl2_hip_pitch       #左前2号
fl3_knee_pitch      #左前3号
fl4_foot            #左前4号

fr1_hip_roll        #右前1号
fr2_hip_pitch       #右前2号
fr3_knee_pitch      #右前3号
fr4_foot            #右前4号

bl1_hip_roll        #左后1号
bl2_hip_pitch       #左后2号
bl3_knee_pitch      #左后3号
bl4_foot            #左后4号

br1_hip_roll        #右后1号
br2_hip_pitch       #右后2号
br3_knee_pitch      #右后3号
br4_foot            #右后4号


2.10 机体坐标系方向

当各个关节均为零度时,各坐标系如下图。红色为 x 轴,绿色为 y 轴,蓝色为 z 轴。关节的旋转轴和旋转正方向请参考下图



三、SDK函数介绍

详细接口说明,请查看对应版本的sdk说明文档:

https://github.com/AgibotTech/Agibot_D1_Max/blob/main/docs/sdk_client_api.md


四、其他服务


4.1 视频流推送服务

前后广角相机的视频分别以Gstreamer方式推流到以下URL:

Plain Text
 
前置摄像头: rtsp://192.168.234.1:8554/front
后置摄像头: rtsp://192.168.234.1:8554/back

默认会在遥控器侧拉流显示实时画面,可通过VLC或者OpenCV进行预览和调用


4.2  激光雷达信号接口

1. ROS2接口定义

topic

msg

字段类型

字段

字段释义

初始值

数值范围

发送周期

前雷达点云数据:/front_lidar


后雷达点云数据:/rear_lidar

 

sensor_msgs::msg::PointCloud2(数据服务模型Qos::best_effort

 

std_msgs/Header

header

ROS2 标准MSG帧头



10hz

uint32

height

点云的垂直高度(行数)



uint32

width

点云的水平方向宽度(列数)



PointField[]

fields

点云中每个通道的字段描述



bool

is_bigendian

是否是大端字节序



uint32

point_step

每个点所占字节数



uint32

row_step

一行点数据占用的字节数



uint8[]

data

点云的原始二进制数据,是一维数组



bool

is_dense

是否为稠密点云(即没有无效点)



 

前激光雷达IP: 192.168.1.102

后激光雷达IP: 192.168.2.102

2. 启动对应的驱动程序

Plain Text
 
#先通过ssh登录NX
ssh robot@192.168.168.100  #密码: 1

#查看进程
robot-launch list

#启动雷达程序
robot-alunch start 2  #2为激光雷达驱动的pid


4.3 超声波雷达信号接口

topic

msg

字段类型

字段

字段释义

初始值

数值范围

发送周期

左侧超声波雷达:

/uss_driver/uss_left/range

右侧超声波雷达:
/uss_driver/uss_right/range

 

sensor_msgs::msg::Range

 

std_msgs/Header 

header

ROS2 标准MSG帧头



10hz

uint8_t

 

radiation_type

传感器类型。枚举值:0 超声波 1 红外线

0

0-1

float

field_of_view

传感器视场角(弧度),通常为测距锥形区域的角度

0

当前固定为0

float

min_range

传感器可测量最小距离(米)

0

当前固定为0

float

max_range

传感器可测量的最大距离(米)

0

当前固定为0

float

range

当前实际测得距离(米)

0

0-4


4.4 本体传感器坐标

Click the image to view the sheet.


4.5 RTK使用说明

4.5.1 获取六分RTK服务

使用从注册的六分账户和密码登录到官网

网址:https://www.sixents.com/login

 登录进控制台

 

 获取AKAS

准备好需要使用的AKAS

 

4.5.2 配置

 登录进入NX

首先需要连接机器狗的WIFI,密码默认是 12345678

Bash
 
ssh robot@192.168.234.1   #密码是 bot

 打开配置文件

配置文件路径:/ota/sixents_config.ini

Bash
 
sudo vim /ota/sixents_config.ini

 

TOML
配置文件说明
[sixents_sdk]
sdk_ak =
sdk_as =
sdk_dev_id =
sdk_dev_type =

 sdk_ak: 设置您购买服务实例的 AK

 sdk_as: 设置您购买服务实例的 AS

 sdk_dev_id: 设置您的设备 ID SN(自定义)

 sdk_dev_type: 设置您的设备类型(自定义)

注意:sdk_dev_id sdk_dev_type 是和 账户唯一绑定的,之后更改其他的需要去官网解绑

 

4.5.3 RTK Topic 说明

 rtk话题名称

rtk对应的话题为:/rtk_pvh

 

 数据说明

类别

字段

说明

heading

utc_time_s

heading UTC时间

sol_status

解的状态

 0:已解出

 1:观测量不足

 2:未收敛

 4:协方差矩阵的迹超过最大值(迹>1000 米)

heading_type

定位类型

 0:不进行解算

 16:单点定位

 17:伪距查分定位

 34:浮点解

 50:整数解

base_line

基线长度,单位米(0~3000

heading_deg

航向角,单位度(0~360

pitch_deg

俯仰角,单位度(±90

heading_std

航向角标准差,单位度

pitch_std

俯仰角标准差,单位度

sys_num

跟踪的卫星数

soln_svs_num

参与解算的卫星数

bestnav

utc_time_s

bestpos UTC时间

p_sol_status

解的状态

pos_type

定位类型

latitude_deg

纬度,单位度

longitude_deg

经度,单位度

altitude_m

海拔高,单位米

undulation

大地水准面差距,大地水准面与 WGS84 参考椭球面的差值,单位米

lat_std

纬度标准差,单位米

lon_std

经度标准差,单位米

hgt_std

高度标准差,单位米

diff_age_s

差分龄期,单位秒

sol_age_s

解的龄期,单位秒

svs_num

跟踪的卫星数

soln_svs_num

参与解算的卫星数

v_sol_status

解的状态

vel_type

定位类型

hor_spd

水平方向对地速度,单位米/

trk_gnd

相对于真北的实际对地运动方向,单位度

ver_spd

垂直方向速度,单位米/秒。正值表示方向向上,负值表示方向向下

ver_spd_std

垂直方向速度标准差(未填写)

hor_spd_std

水平方向对地速度标准差(未填写

4.5.3 重启rtk服务

 查看当前服务

TOML
 
robot-launch list

 重启服务

TOML
 
robot-launch restart 4  #id 4 所对应的服务为driver-gps

 重启NX

TOML
 
sudo reboot

 


4.6 IMU数据

目前系统中有三个IMU2雷达+1独立),通过topic发出数据,标准ROS2的数据类型 sensor_msgs::msg::Imu

前雷达IMU/front_lidar/imu

后雷达IMU/rear_lidar/imu

独立IMU/imu_driver/imu_central

注:独立IMU涉及硬件改动的问题,若无法获取imu数据,请联系售后服务人员


4.7 相机数据

相机数据来源于RK3588, topic名称如下:

 :  /front_camera/image_compressed

 :  /rear_camera/image_compressed


五、调试说明


5.1 ROS2多机通信配置

NX系统中有统一配置的环境变量:/opt/runtime/env.bash , 这个变量在.bashrc中会默认导入

 

由上图可见,ROS_DOMAIN_ID=24 ,目前机器狗使用 ros2 zenoh 中间件对外提供 ros2 topic 服务,需要用户在自己的笔记本安装相关环境。

5.1.1  IP配置

配置用户笔记本 ip 为: 192.168.168.xxx xxx不能为100或者168或者255

5.1.2 用户笔记本环境配置

 Ubuntu22.04

 Ros2 humble

 Zenoh rmw

5.1.3 安装zenoh

Plain Text
 
sudo apt-get install ros-humble-rmw-zenoh-cpp

5.1.4 修改配置文件

使用编辑器打开下面文件

/opt/ros/humble/share/rmw_zenoh_cpp/config/DEFAULT_RMW_ZENOH_ROUTER_CONFIG.json5 

找到 connecet/endpoints字段,将机器狗NXIP写入并保存:

 

 

Plain Text
 
"tcp/192.168.168.100:7447"

pc端新建终端1,设置中间件切换的环境变量以及 ROS2 Domain ID

Plain Text
 
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=24
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

重置 ROS2 后台守护进程

Plain Text
 
ros2 daemon stop
ros2 daemon start

在上述的环境变量生效的前提下即可使用 rviz 可视化,录包,或者启动自己的 ros2 程序与狗中的驱动交互。