宇树a1,8010电机自研RS485驱动

由于robomaster机甲大师赛,我们队里需要造一台轮腿步兵,关节电机和轮毂电机都选用了宇树的电机,关节电机使用了宇树a1电机,轮毂电机使用了8010电机。但是在使用的过程中,我发现,宇树官方的驱动在接收宇树电机反馈回来的数据会有很大程度上的丢包,用示波器测返回回来的RS485波形也是很杂的,并且宇树电机的官方驱动也是比较贵的,故自研了一个丢包率小,高效,且成本比宇树官方驱动小很多的RS485驱动。本次博客既是记录学习过程,也是分享出来与大家一起交流学习。

首先,高速485芯片有许多中选择,比如说sp3485,max3485这两款都是可以支持的10Mbps的波特率,我选择的是上海川土微公司的cs48520s芯片,它最高可支持20Mbps的波特率。选择这个芯片有以下两个原因,其一是供电可直接兼容C板的5V供电,无需5V转3.3V供电,其二是经过与其他两个芯片的对比测试,我发现这个芯片在驱动宇树电机的波形更加稳定好看,没有那么多的杂波。

 

原理图如下图所示

上图中,R4作为上拉电阻,阻值为360Ω,R5为下拉电阻,阻值为360Ω,C2做为滤波电容,为芯片滤除高频信号。R6做为终端电阻,阻值为120Ω。

驱动宇树a1和8010电机时候,DE和RE可以连接在一起,要确保DE和RE都能在推挽模式下都能输出5V左右的高电平,否则就会出现反馈回来的波形不正常的情况,如下图所示。

因为我踩这个坑踩了好久,那时候用C板的可配置io口里面的I2C部分io口进行驱动,它内部似乎有上拉电阻,导致不能正确下拉低电平出现以上这种情况。

PCB画的太丑了还是不放了,实物图如下图所示

最后放一下实物效果图吧,是可以稳定发送和接收宇树电机的数据的

最后附上配套的驱动代码,实现平台为大疆C板,内含宇树a1和宇树8010电机。

宇树电机驱动代码: 宇树电机驱动代码,实现平台为大疆C板icon-default.png?t=O83Ahttps://gitee.com/jsoahxao/yushu-motor-driver-code.git

最后,本自研驱动已正常使用两个月了,目前没发现什么大问题。我的联系方式q:2816517837.希望各位大佬轻点拷打,狗头保命。

### 如何在A1机器人上部署强化学习模型 #### 选择合适的仿真环境 为了有效训练并验证基于Actor-Critic算法的机器人控制策略,在实际硬件操作之前通常会先利用仿真工具来模拟真实场景。对于A1这样的四足机器人平台而言,可以选择诸如Gazebo、Webots或MuJoCo这类支持复杂物理特性的仿真软件来进行初步实验[^1]。 #### 设计奖励函数与状态空间定义 针对特定的任务需求设计合理的奖励机制至关重要;这不仅影响着最终性能的好坏也决定了收敛速度。例如行走任务可能依据姿态稳定性给予正向反馈分值,而偏离目标路径则扣减分数。同时需明确定义观测空间即输入给神经网络的数据维度,包括但不限于关节角度位置信息以及IMU传感器读数等。 #### 构建Actor-Critic架构 采用双网络结构分别负责动作预测(actor)和价值评估(critic),通过交替更新两个子网参数实现端到端的学习过程。具体来说就是让agent尝试执行不同行为,并根据即时回报调整内部权重直至找到最优解法。此过程中可借鉴大规模分布式深度RL框架如IMPALA (Importance Weighted Actor-Learner Architecture)[^2] 提升样本利用率及计算效率。 #### 进行迁移至实物调试优化 当确认虚拟环境中获得满意效果之后便可以考虑迁移到实体设备上了。考虑到现实世界存在更多不确定因素干扰感知决策环节,因此建议逐步增加难度系数循序渐进地完成过渡阶段。期间务必密切监控各项指标变化趋势及时作出相应修正措施确保安全可靠运行。 ```python import gym from stable_baselines3 import SAC env = gym.make('CustomEnv-v0') # 自定义适配于A1机器人的OpenAI Gym环境 model = SAC("MlpPolicy", env, verbose=1) # 训练模型 model.learn(total_timesteps=int(1e6)) # 保存模型以便后续加载使用 model.save("sac_a1_robot") del model # 删除旧版本防止混淆 # 加载已训练好的模型继续测试或其他用途 model = SAC.load("sac_a1_robot") obs = env.reset() for i in range(1000): action, _states = model.predict(obs) obs, rewards, dones, info = env.step(action) env.render() ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值