地平线RDK套件概述
Horizon Robotics Developer Kits,简称地平线RDK套件,是基于地平线智能芯片打造的机器人开发者套件,包括RDK X3(旭日X3派)、RDK X3 Module(旭日X3模组)。
产品介绍
RDK X3(旭日X3派) 是一款全功能开发板,具备强大的处理能力和丰富的外设接口,通过搭配丰富的传感器和扩展组件,为开发者提供了灵活的硬件扩展和连接选项。
RDK X3 Module(旭日X3模组) 是一款紧凑型核心模组,与RDK X3保持了同等规格,并在尺寸、接口上兼容树莓派CM4模组。通过搭配扩展板,可以为各种应用场景提供高效的计算和通信能力。
实物图片
产品规格
RDK X3 | RDK X3 Module开发套件 | |
---|---|---|
CPU | Quad-core ARM® Cortex® A53@1.5G | |
BPU | Dual-core Bernoulli Arch, ~5Tops | |
内存 | 2GB/4GB LPDDR4 RAM | |
存储 | 16G/32G/64G eMMC or Micro SD | |
多媒体 | H.265 (HEVC) Encoding and Decoding Main profile, L5.1 4K@60fpsH.264 Encoding and Decoding Baseline/Main/High profiles, L5.1 4k@60fps.JPEG Encoding and Decoding 16MpixelsCBR, VBR, AVBR, FixQp and QpMap bitrate control | |
Sensor接口 | 1 x 4-lane MIPI CSI2 x 2-lane MIPI CSI | |
USB接口 | 1 x USB3.0 | 4 x USB 3.0 type A,host mode1 x Micro USB 2.0,device mode |
Debug串口 | 1 x UART,Debug串口 | 1 x Micro USB 2.0,UART转USB |
显示接口 | 1 x HDMI 1.4 (up to 1080p60 )1 x MIPI-DSI (up to 1080p60) | |
无线网络接口 | WiFi/Bluetooth二合一模块(可选)WiFi 2.4GHz/5GHz、Bluetooth 4.2 | |
有线网络接口 | 1 x GPHY | 1 x RJ45接口 |
其他IO | 32 x GPIOs:3 x UART、2 x SPI、2 x I2S、4 x I2C、PWM等 | 40PIN(UART、SPI、I2S、I2C、PWM、GPIO)6 x 控制使能脚1 x GPIO_VREF1 x PWM风扇接口1 x RTC接口 |
电源输入 | 5V 3A | 12V 2A |
系统支持 | Ubuntu 20.04 |
Go1机器狗介绍
•全球首款消费级伴随仿生四足机器人,最快奔跑速度4.7m/s(17km/h,接近专业长跑运动员速度),打破近似规格世界纪录
•ISS 智能伴随系统,专利无线矢量定位及控制技术
•SSS 超感知系统,5组鱼眼双目深度感知+鱼眼AI感知+3组超声波
内置超级AI算力,16核顶级CPU+ GPU(384Core,1.5TFLOPS)
unitree_legged_sdk
The unitree_legged_sdk is mainly used for communication between PC and Controller board. It also can be used in other PCs with UDP.
Notice:
support robot: Go1
前期准备
供电
由于没有及时备件,所以采取外部电源供电的方案,RDK X3 Module开发套件电源输入12V 2A。
远程登陆
为了解决能够同事远程登陆,以及外部联网安装依赖的需求,使用自带的网口与自己电脑连接,使用usb转网口的拓展坞作为外部联网。
-
有线以太网:开发板默认采用静态IP模式,IP地址为
192.168.1.10
,掩码255.255.255.0
,网关192.168.1.1
配置完之后远程登陆直接使用以下命令。ssh root@192.168.1.10
远程密码是root
外部联网自动分配ip:
系统更新
在/etc/apt/source.list
文件中,保存了apt
命令的软件源列表,在安装软件前,需要先通过apt
命令更新package列表。
首先打开终端命令行,输入如下命令:
sudo apt update
其次,升级所有已安装的软件包到最新版本,命令如下:
sudo apt full-upgrade
注意,推荐使用full-upgrade
而不是upgrade
选项,这样当相关依赖发生变动时,也会同步更新依赖包。
当运行sudo apt full-upgrade
命令时,系统会提示数据下载和磁盘占用大小,但是apt
不会检查磁盘空间是否充足,建议用户通过df -h
命令手动检查。此外,升级过程中下载的deb文件会保存在/var/cache/apt/archives
目录中,用户可以通过sudo apt clean
命令删除缓存文件以释放磁盘空间。
执行apt full-upgrade
命令后,可能会重新安装驱动、内核文件和部分系统软件,建议用户手动重启一下设备使更新生效,命令如下:
sudo reboot
摘自官方文档。
常见问题
-
在系统更新小节之中,我们可以发现命令之中带有sudo,但是在实际测试发现板卡自带的测试系统没有开放sudo权限,解决方法有两个:
一:重刷系统,具体步骤可以参考官方文档 安装系统
二:查找资料发现可以使用下面命令重新吧sudo权限开启,记住必须远程登录root用户系统
chmod 644 /usr/lib/sudo/sudoers.so chown -R root /usr/lib/sudo chown root:root /etc/sudoers chown -R root:root /etc/sudoers.d chmod u=rwx,g=rx,o=rx /etc/sudoers.d/ chmod u=r,g=r,o= /etc/sudoers.d/*
继续更新中
机器狗sdk移植编译
基本配置
官方sdk下载链接,本次项目使用了Go1机器狗产品,所以需要使用版本3.8.6.
unitree_legged_sdk 本身封装python接口需要在CMakeLists.txt文件中将python接口开启
找到代码
option(PYTHON_BUILD "build python wrapper" OFF)
if(PYTHON_BUILD)
add_subdirectory(python_wrapper)
endif()
将OFF改为ON之后,
编译
cd unitree_legged_sdk
mkdir build
cd build
cmake ..
make
由于开启pythonj接口,所以会遇到一个错误
fatal error: msgpack.hpp: No such file or directory #include <msgpack.hpp>
这是缺少一个序列库
安装即可
sudo apt install libmsgpack*
unitree_legged_sdk 部分高层api解释
HighCmd结构体中主要的控制命令
uint8_t mode | 0 | Idle. |
---|---|---|
1 | Standing, in force control. | |
2 | Walking, following target velocity. | |
3 | Walking, following target position, reserve for future release. | |
4 | Walking, following a given path, reserve for future release. | |
5 | Stand down, in position control. | |
6 | Stand up, in position control. | |
7 | Damping mode, all motors. | |
8 | Recovery mode. | |
9 | backflip | |
10 | jumpYaw | |
11 | straightHand | |
12 | dance1 | |
13 | dance2 | |
uint8_t gaitType | 0 | Idle. |
1 | Trot walking. | |
2 | Trot running. | |
3 | Stairs climbing. | |
4 | Trot obstacle. | |
uint8_t speedLevel | 0 | Default low speed. |
1 | Default medium speed. | |
2 | Default high speed. | |
SpeedLevel setting is now only used for mode 3. | ||
floatfootRaiseHeight(unit: m) | Swing foot height adjustment from default swing height.delta valuedefault: 0.08m | |
floatbodyHeight(unit: m) | Body height adjustment from default body height.delta valuedefault: 0.28m | |
floatposition[2] (unit: m) | Desired x and y position in the inertial frame, which is established at the beginning instance of the sport mode. Position setting is used in mode 3 as target position. | |
floateuler[3] (unit: rad) | Desired yaw-pitch-roll Euler angle, with euler[0] = Roll,euler[1] = Pitch,euler[2] = Yaw.RPY setting can be used in mode 1 as target orientation.Yaw setting can be used in mode 3 as target yaw angle. | |
float velocity[2] (unit: m/s) | Desired robot forward speed and side speed in the body frame. Velocity setting is used in mode 2 as target linear velocity. | |
float yawSpeed(unit: rad/s) | Desired rotational yaw speed. YawSpeed setting is used in mode 2 as target rotational speed. |
Go1 SDK HighCmd mode
mode | state | controlled by | previous mode |
---|---|---|---|
mode 0 | Idle. | none | all mode |
mode 1 | Standing, in force control. | euler, bodyHeight | mode 2 6 |
mode 2 | Walking, following target velocity. | velocity+yawSpeed, bodyHeight, footRaiseHeight | mode 1 |
mode 3 | Walking, following target position. | reserve for future release | mode 1 |
mode 4 | Walking, following a given path, reserve for future release. | reserve for future release | mode 1 |
mode 5 | Stand down, in position control. | none | mode 6 7 |
mode 6 | Stand up, in position control. | none | mode 1 5 |
mode 7 | Damping mode, all motors. | none | all mode |
mode 8 | Recovery mode. | none | mode 7 |
HighCmd变量初始化
HighCmd结构体变量,申请变量后需要初始化变量(主要是其中的标志位变量初始化),可以使用udp.InitCmdData(&HighCmd highcmd)函数来实现。初始化之后可以正常使用。
Go1 SDK HighState
2.1 HighState结构体中有效的状态反馈
head | 包头 |
---|---|
levelFlag | 高层模式、底层模式标志位;0x00为高层,0xff为底层 |
frameReserve | 保留位 |
SN | SN码 |
version | 版本信息 |
bandWidth | 保留位 |
IMU imu | 惯导信息,参考2.2 Go1 SDK HighState IMU |
MotorStatemotorState[20] | 电机数据,20个MotorState结构体数组,其中前12个有效,各个电机的编号可以参考quadruped.hMotorState结构体参考2.4 MotorState |
int16_t footForce[4] | 足端传感器数值,触地检测。这个值是飘的,每个气囊的值不一样,需要实际测试,通常是通过变化量来检测是否触地。 |
int16_t footForceEst[4] | 估计的足端力,单位应该是N |
uint8_t mode | 参考1.1 HighCmd中mode的注释 |
float progress | 保留位 |
uint8_t gaitType | 参考1.1 HighCmd中gaitType的注释 |
floatfootRaiseHeight(unit: m) | 行走时的抬腿高度,默认0.08m |
floatbodyHeight(unit: m) | 机身高度,默认0.28m |
float position[3] (unit: m) | 机器人的位置坐标反馈,通过机器人在惯性系(世界坐标系)中里程计的数据获得的位置坐标,会漂移position[0] = xposition[1] = yposition[2] = z |
float velocity[3] (unit: m/s) | 机器人在各个方向的速度反馈velocity[0] = forwardSpeed,velocity[1] = sideSpeed,velocity[2] = updownSpeed |
float yawSpeed(unit: rad/s) | 机器人的旋转速度 |
float rangeObstacle[4] | 避障数据 |
Cartesian footPosition2Body[4] (unit: m) | 足端相对于身体的位置(机身坐标系)footPosition2Body[0] = 右前腿足端的位置footPosition2Body[1] = 左前腿足端的位置footPosition2Body[2] = 右后腿足端的位置footPosition2Body[3] = 左后腿足端的位置 |
Cartesian footSpeed2Body[4] (unit: m/s) | 足端相对于身体的速度(机身坐标系)footSpeed2Body[0] = 右前腿足端的速度footSpeed2Body[1] = 左前腿足端的速度footSpeed2Body[2] = 右后腿足端的速度footSpeed2Body[3] = 左后腿足端的速度 |
uint8_t wirelessRemote[40] | 遥控器键值的反馈,可参考提供的手柄例程源码 |
reserve | 保留位 |
crc | 校验位 |
Go1 SDK HighState IMU
float quaternion[4] | 归一化的四元数,quaternion[0] = w,quaternion[1] = x,quaternion[2] = y,quaternion[3] = z |
---|---|
float gyroscope[3] (unit: rad/s) | 陀螺仪,角速度,原始数据,gyroscope[0] = x,gyroscope[1] = y,gyroscope[2] = z |
float accelerometer[3] (unit: m/s²) | 加速度计,加速度,原始数据,accelerometer[0] = x,accelerometer[1] = y,accelerometer[2] = z |
float rpy[3] (unit: rad) | 欧拉角,rpy[0] = Roll,rpy[1] = Pitch,rpy[2] = Yaw |
int8_t temperature | IMU温度 |
注意:在加速运动时,由 IMU 计算出的机器人姿态会发生漂移。
评论(0)
您还未登录,请登录后发表或查看评论