2026/3/31 8:48:29
网站建设
项目流程
做网站的技术困难,微信报名小程序怎么制作,东莞常平粤海水务,动漫网站建设意义1. 开箱与机器开机
在收到D1#xff0c;打开箱子之后#xff0c;我们可以在泡沫包裹中找到以下几个部分#xff1a;充电器、充电基座、电池、手柄、防滑足底备件、工具包以及我们的智元D1本体。 首先#xff0c;我们需要安装电池#xff0c;抬起电池仓一侧的机器人肢体打开箱子之后我们可以在泡沫包裹中找到以下几个部分充电器、充电基座、电池、手柄、防滑足底备件、工具包以及我们的智元D1本体。首先我们需要安装电池抬起电池仓一侧的机器人肢体接着电池触点朝上将电池推入电池仓中需要注意的是电池弹簧较紧需要用力才能将电池完全推入接下来短按一下电池开关再长按5s左右电池开关并松开电池亮灯并且机器狗尾灯开始闪烁表示成功上电。接着尾灯常亮并且可以听到机器轻微震动表示运控程序成功启动下面可以通过手柄或者SDK控制机器了。当需要关闭机器电源时同样短按一下接着长按5s左右就会看到电池灯灭供电断开。2. 手柄控制在机器运控成功开启之后手柄和机器就会自动连接在这里我们主要用到手柄的以下按键熟悉按键之后接下来就可以按照下面的组合进行机器控制2.1 站立与坐下功能按键组合站立LBY趴下LBX电机进入阻尼状态LBRB在机器狗进行下面动作之前首先需要电机全部使能并且站立因此需要先按下LBY让机器进入站立状态如果不需要使用机器狗时最好不要直接LBRB让所有电机进入阻尼状态这样会让机器狗直接下坠在硬质平面上可能会伤害机器狗因此可以先LBX让机器狗趴下后再使用LBRB让所有电机进入阻尼状态或者当机器狗需要急停时请立刻按下LBRB以防机器狗对人造成伤害。2.2 移动动作功能按键组合前后移动左摇杆前/后推动左右平移左摇杆左/右推动原地左右旋转右摇杆左/右推动在机器狗成功站立之后就可以通过手柄控制其完成基础的各向运动了2.3 原地动作功能按键组合俯仰调整右摇杆前/后推动水平转身右摇杆左/右推动左 / 右探头X/B高 / 低身形Y/A原地动作是在机器狗保持原地不动的情况下实现的各种俯仰、上升下降等动作首先需要按下STARTB组合键进入原地模式后才能触发2.4 特技动作功能按键组合原地跳RBA向前跳RBX后空翻RBB打招呼RBY双足站立LBA使用特技动作首先要BACKSTART开启特技模式此时尾灯会变成白色请务必给机器狗留足活动空间以防误伤。在机器开机后可以按MODE或者其他键尝试开启手柄但使用时需要保持MODE键右侧的灯为熄灭状态在亮起状态时左摇杆会和十字键互换控制起来会有些麻烦。3. SDK控制智元官方对D1同时提供了C和Python的SDK并且同时提供了有线/无线两种调试方法接下来我们逐个介绍各位可以根据需要选择。3.1 无线调试智元D1自带一个调试APAP对应的SSID和密码都贴在机身侧面或者下方。且该AP自带DHCP服务器因此连接之后电脑会被自动分配IP地址例如我这里就被分配了192.168.234.11这个IP是需要知道的后面需要进行设置以完成和机器之间的通讯。接下来我们通过SSH连接机器输入下面指令进入机器ssh firefly192.168.234.1 # 密码为firefly接着输入下面的指令修改文件sudo vim /opt/export/config/sdk_config.yaml进去之后可以看到下面的内容target_ip: 127.0.0.1 target_port: 43988现在在连接机器狗的电脑上查看一下无线网IP比如我这里就是192.168.234.11并将127.0.0.1修改为这个IP后通过重新开关电池供电的方式重新启动机器。 这之后我们就可以通过SDK控制机器狗了如果不想通过有线进行调试或者想要尽快试一试SDK控制机器狗请直接跳到3.3或者3.4小节。3.2 有线调试在有线调试之前我们需要先打开有线调试口将机身尾部方形盖子螺丝孔上的硅胶盖取出接着用一个2mm内六角扳手将螺丝全部取出螺丝上有硅胶进行固定用力拧开即可最后就可以看到拓展调试口接着用网线连接网络调试口和电脑网口由于机器狗调试口没有DHCP服务器因此需要将电脑网口设置到调试口同一网段机器狗调试口IP及网段为192.168.168.168/24在这里我给自己有线网卡IP设置为192.168.168.169/24接着同无线连接一样使用命令SSH进入机器狗ssh firefly192.168.168.168 # 密码为firefly然后修改文件并将文件中target_ip由127.0.0.1修改为192.168.168.169sudo vim /opt/export/config/sdk_config.yaml在此之后先不用重启机器需要接着修改文件执行下面的命令sudo vim /opt/app_launch/start_motion_control.sh看到倒数第三行export SDK_CLIENT_IP192.168.168.168这里192.168.168.168是狗子的IP如果后续需要修改IP这里也需要修改。#!/bin/bash echo start motion control # 共享内存文件路径 SHM_FILE/dev/shm/spline_shm # 循环检查设备是否存在 while true; do if [ -e $SHM_FILE ]; then echo 共享内存文件 $SHM_FILE 已存在。 break else echo 共享内存文件 $SHM_FILE 不存在等待 1 秒后重试... sleep 1 fi done # 共享内存文件存在后执行的命令 echo 共享内存文件已准备好可以执行后续操作。 sudo ifconfig lo multicast sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev lo export LD_LIBRARY_PATH/opt/export/mc/bin export ROBOT_TYPEXG export SDK_CLIENT_IP192.168.168.168 cd /opt/export/mc/bin taskset -c 7 ./mc_ctrl r理论上在此之后重新开关电源即可但是此时直接使用SDK大概率会遇到报错connect time out error async_receive_from这是因为运控程序绑定IP和端口失败导致的需要在后台service脚本中添加网卡名称执行下面命令sudo vim /etc/systemd/system/robot-launch.service会看到下面文件看到EnvironmentROBOT_LOG_DIR/userdata/log这一行在后面添加EnvironmentROBOT_NET_INTERFACESeth0[Unit] DescriptionRun robot-launch at startup Afternetwork.target [Service] ExecStartrobot-launch server ExecStop/usr/local/bin/robot_launch_stop.sh TimeoutStopSec5s Restartalways Userroot EnvironmentROBOT_HOME/home/firefly EnvironmentROBOT_LOG_DIR/userdata/log EnvironmentROBOT_NET_INTERFACESeth0 [Install] WantedBymulti-user.target这样有线连接时就可以正常使用了client bind success connect success!有线调试在这里会存在一个问题当设置了有线调试后开机后运控程序不会立刻启动而是需要有线调试端口处于carrier即负载在线的情况下才能启动即改调试口连接到另一个网口因此请谨慎设置。3.3 C版SDK使用智元官方提供了SDK文件夹我们到demo/zsl-1/cpp/文件夹下可以看到lowlevel_demo.cpp和highlevel_demo.cpp这里的IP设置我们按照无线设置举例。lowlevel_demo.cpp使用lowlevel.h中的机器人底层电机控制接口主要通过共享内存SHM实现对机器人各关节电机控制和状态的管理同时还包括惯性测量单元IMU的数据共享更加符合科研开发人员的需求可以使用自己的步态控制方案对机器人进行控制。highlevel_demo.cpp使用highlevel.h中的控制命令控制机器人执行前进、后退等操作使用的是机器狗自带的步态算法比较适合演示控制。在两个文件中都可以找到CLIENT_IP和DOG_IP参数分别为无线/有线连接方式下电脑IP和机器狗IP以无线连接方式为例进行如下修改std::string CLIENT_IP 192.168.234.11; // local IP address std::string DOG_IP 192.168.234.1; // dog ip接着对文件进行编译输入以下命令cd demo/zsl-1/cpp mkdir build cd build cmake .. make -j6接着在build文件夹下输入下面命令分别执行高层和底层控制方式./highlevel_demo ./lowlevel_demo高层控制会读取命令行中你的按键输入接着可以阅读代码通过WASD或者其他按键控制机器狗运动请注意给机器狗留足运动空间。底层控制只会执行一个站立动作。3.4 Python版SDK使用在使用Python版SDK之前请使用以下指令查询当前使用的Python版本python3 --version请确保Python版本为3.10与提供的SDK版本相同否则即使正确import头文件也会报错无法使用。接着我们到demo/zsl-1/python/examples/下同样能看到highlevel_demo_Interactive.py最好不要使用highlevel_demo.py可能不太可控和lowlevel_demo.py在文件中分别找到下面初始化代码并对IP进行修改前后IP分别为无线/有线连接方式下电脑IP和机器狗IPinitRobot(192.168.234.11, 43988, 192.168.234.1)接下来即可看到和C版SDK类似的效果。4. SDK接口介绍由系统架构图我们可以看到SDK可以完成二次开发需要的运动控制和IMU读取等功能。接下来我们就将对Highlevel和Lowlevel SDK的重点部分进行详细解读另外C和Python版本的SDK函数命名是完全相同的略有不同的初始调用可以参考demo代码。4.1 Lowlevel接口函数介绍对于科研开发人员来说相较于Highlevel接口Lowlevel接口其实更加重要下面就详细介绍Lowlevel的重点函数initRobot函数原型initRobot(conststd::stringlocal_ip,constintlocal_port,conststd::stringdog_ip192.168.234.1)功能概述与机器狗建立通信机器狗端ip默认192.168.234.1如更改机器人ip需从该接口传入新ip参数说明参数名类型说明选项备注local_ipstring用户主机IP地址必选项-local_portint用户主机端口必选项-dog_ipstring机器狗IP地址可选项默认192.168.234.1sendMotorCmd函数原型sendMotorCmd(motorCmdcmd)功能概述发布电机控制命令参数说明参数名类型说明选项备注cmdmotorCmd电机控制命令结构体必选项-返回值类型int返回值说明0发送成功-1发送失败备注腿部顺序右前腿为1号腿左前腿为2号腿右后腿为3号腿左后腿为4号腿控制命令坐标系为机器狗朝前为X左侧为Y垂直向上为ZCmd 数据协议struct alignas(4) motorCmd { float q_des_abad[4] {0.0, 0.0, 0.0, 0.0}; // A关节角度指令 float q_des_hip[4] {0.0, 0.0, 0.0, 0.0}; // H关节角度指令 float q_des_knee[4] {0.0, 0.0, 0.0, 0.0}; // K关节角度指令 float qd_des_abad[4] {0.0, 0.0, 0.0, 0.0}; // A关节角速度指令 float qd_des_hip[4] {0.0, 0.0, 0.0, 0.0}; // H关节角速度指令 float qd_des_knee[4] {0.0, 0.0, 0.0, 0.0}; // K关节角速度指令 float kp_abad[4] {0.0, 0.0, 0.0, 0.0}; // A关节Kp值 float kp_hip[4] {0.0, 0.0, 0.0, 0.0}; // H关节Kp值 float kp_knee[4] {0.0, 0.0, 0.0, 0.0}; // K关节Kp值 float kd_abad[4] {0.0, 0.0, 0.0, 0.0}; // A关节Kd值 float kd_hip[4] {0.0, 0.0, 0.0, 0.0}; // H关节Kd值 float kd_knee[4] {0.0, 0.0, 0.0, 0.0}; // K关节Kd值 float tau_abad_ff[4] {0.0, 0.0, 0.0, 0.0}; // A关节扭矩指令 float tau_hip_ff[4] {0.0, 0.0, 0.0, 0.0}; // H关节扭矩指令 float tau_knee_ff[4] {0.0, 0.0, 0.0, 0.0}; // K关节扭矩指令 };getMotorState函数原型getMotorState()功能概述获取机器狗电机数据返回值类型motorState返回值说明motorState返回各电机数据备注单位为rad、rad/s和N*mMotorState 数据协议struct alignas(4) motorState { // 关节顺序 FR,FL,RR,RL float q_abad[4] {0.0, 0.0, 0.0, 0.0}; // A关节角度 float q_hip[4] {0.0, 0.0, 0.0, 0.0}; // H关节角度 float q_knee[4] {0.0, 0.0, 0.0, 0.0}; // K关节角度 float qd_abad[4] {0.0, 0.0, 0.0, 0.0}; // A关节角速度 float qd_hip[4] {0.0, 0.0, 0.0, 0.0}; // H关节角速度 float qd_knee[4] {0.0, 0.0, 0.0, 0.0}; // K关节角速度 float tau_abad_fb[4] {0.0, 0.0, 0.0, 0.0};// A关节扭矩反馈 float tau_hip_fb[4] {0.0, 0.0, 0.0, 0.0}; // H关节扭矩反馈 float tau_knee_fb[4] {0.0, 0.0, 0.0, 0.0}; // K关节扭矩反馈 };状态监测函数函数原型checkConnection()haveMotorData()功能概述检查机器人通讯状态判断是否获取到电机数据返回值类型bool返回值说明true存在电机数据/连接正常false不存在电机数据/连接失败位姿读取函数函数原型getQuaternion()getRPY()getBodyAcc()getBodyGyro()功能概述获取机器狗当前姿态四元数获取机器狗当前姿态的欧拉角滚转角、俯仰角、偏航角获取机器狗身体的加速度数据机体坐标系获取机器狗身体的角速度数据机体坐标系返回值类型vector返回值说明[w, x, y, z]包含4个元素的向量分别对应四元数的四个分量[roll, pitch, yaw]包含 3 个元素的向量单位为弧度rad分别对应绕 X、Y、Z 轴的旋转角[ax, ay, az]包含 3 个元素的向量单位为 m/s²分别对应 X、Y、Z 轴方向的加速度[gx, gy, gz]包含 3 个元素的向量单位为 rad/s分别对应 X、Y、Z 轴方向的角速度备注机器狗朝前为X左侧为Y垂直向上为Z4.2 Highlevel重点接口函数介绍相较于LowlevelHighlevel控制接口更适合展示或者表演因此在此仅对重点接口函数进行介绍initRobot函数原型initRobot(conststd::stringlocal_ip,constintlocal_port,conststd::stringdog_ip192.168.234.1)功能概述与机器狗建立通信,机器狗端ip默认192.168.234.1, 如更改机器人ip需从该接口传入新ip参数说明参数名类型说明选项备注local_ipstring用户主机IP地址必选项-local_portint用户主机端口必选项-dog_ipstring机器狗IP地址可选项默认192.168.234.1备注通信建立失败时终端输出失败日志standUP函数原型standUP()功能概述控制机器狗站立返回值类型uint32_t返回值说明0进入状态正常0x3012电机数据丢失0x3010电机失能0x3011电机故障0x3009电机角度超限0x3007状态机切换失败0x3013速度命令过大备注机器狗正常站立移动中不可直接切入此状态move函数原型move(floatvx,floatvy,floatyaw_rate)功能概述控制机器狗运动参数说明参数名类型说明选项备注vxfloat前向速度必选项不进行移动时需传入0,范围-3m/s ~ -0.05m/s; 0.05m/s ~ 3m/svyfloat侧向速度必选项不进行移动时需传入0,范围-1.0m/s ~ -0.1m/s;0.1m/s ~ 1.0m/syaw_ratefloat绕Z轴角速度必选项不进行移动时需传入0,范围-3.0rad/s ~ -0.02rad/s;0.02rad/s ~ 3.0rad/s返回值类型uint32_t返回值说明0进入状态正常0x3012电机数据丢失0x3010电机失能0x3011电机故障0x3009电机角度超限0x3007状态机切换失败0x3013速度命令过大备注仅在机器狗站立状态下切入控制狗按指定速度运动。getBatteryPower函数原型getBatteryPower()功能概述获取机器狗电量返回值类型uint32_t返回值说明0-100范围: 0-100备注返回值范围 0-100, 0为无电, 100为满电5. 总结到这里我们完成了对 智元 D1 的一次“从陌生到上手”的完整初体验。无论是想快速跑通 Demo、做功能演示还是希望深入底层进行科研级别的控制与状态读取相信你现在已经对 D1 的整体开发边界有了一个清晰认知。但需要强调的是这篇文章只是一个真正“开发之旅”的起点。在完成基础控制与接口理解之后更有价值、也更具挑战性的内容才刚刚开始在后续文章中我们将围绕 强化学习驱动的运动控制 展开完整拆解从 仿真环境构建、奖励函数设计、策略训练到 Sim2Real 迁移落地 的全流程实践带你一步步把“仿真里能跑”的策略真正搬到 D1 身上。如果你对 具身智能、四足机器人、强化学习落地 感兴趣这个系列值得持续关注。真正的好戏还在后面。扫描二维码获取更多智元D1有关内容可以关注公众号查看系列文章并联系作者获取优惠渠道https://mp.weixin.qq.com/s/uZcCVIV8_nBc5rrZYDcQaQ