Tagged

robotics

some subtle about robotics!!!!

robotics

Simscape (一)

由于机器人的实际系统是用的simulink搭建,所以仿真也自然的使用的simulink的simscape,实际发现这货可以做到ros control的效果(即仿真与实际机器人可以只使用一个控制程序代码) 实现simscape的简易流程: 使用smimport导入urdf,然后在人工修改结构,使它的结构达到最简。(虽然simscape可以直接由solidwork这类的软件导出,我尝试了一下,生成的文件的居然产生了上千个link。。。)构造接触, 我使用的Simscape Multibody Contact Forces Library 然后参数都是默认的。构造用于电机与传感器的总线信号,然后在matlab system里面实现控制程序。(最后我初始化化总线型号的脚本,成功的突破了300行)。构造合适的初始化位置(特别是baselink的6个自由度),要使接触点在初始化的时候高于地面。未来的计划: 在仿真与实际机器人上面实现wbc~

robotics

Simulink Realtime(一)

最近做的几个机器人的控制系统都是用Slrt搭建的,这里记录一下遇见的几个坑: slrt 从matlab 2018a后不在支持普通的电脑,所以我们选择了2017b作为我们的matlab版本,然后vs要选择2015,系统才能正常工作。matlab 2017b的slrt不支持太新的intel cpu,我们最后选择i7 四代作为机器人的主控板。机器人的通信系统使用ethercat(个人感觉应该是最方便的通信),网络芯片使用i210(淘宝上唯一能买到的被支持的rtnet的网卡,同时也有mini pcie的i210)。ethercat的接口的电机驱动器可能会挑运行twincat的网卡,所以在开发机上也使用i210。如果simulink的总线信号出现报错,可能是因为总线的定义数据的顺序有问题。ethercat分支器可以直接自己画电路板实现。急停加在从站上受主站控制,可以更快的保护机器人。电机驱动运行在PT模式下比CST模式更加稳定(可能是通信速度不够快)配置elmo电机驱动的pdo的时候,修改了它的上一级名字,可能会导致slrt的ethercat主站识别不了改从站(这个完全没有逻辑。。。)

robotics

PMSM控制-前言

原因 大约在2018年年中的时候看见了ben katz的博客,对他上面的hopper机器人比较感兴趣,所以开始计划自己实现一个。到了9月份的时候,我开始看SLIP的论文,居然发现那个hopper机器人就是最简单的一维SLIP模型。10月份,在IROS会议上,Sangbae Kim 神秘发布mini cheetah的视频 ,当时还要求大家不要拍照。然后到了2019年1月份我看见了ben的硕士论文,才知道mini cheetah是他的硕士毕业论文。顺便这个时候,我结束了hzd与slip算法的学习与实现,于是决定从底层开始做起。开始想先做一个跑阻抗控制的永磁同步电机的电机驱动器。 元件的选择 mcu的选择 一开始,我想用ti的一套实现,原因是我们这里的电机驱动用的MCU为ti的28069,电机驱动IC用的drv8301。我也买了28069和DRV8305,后来玩了2天,感觉不能习惯它的IDE,于是又改回了stm32。然后看见f3为了st主推的用于电机驱动的mcu,就买了一个f303re的Nucleo-64板子,开始实现foc的算法。大约花了一周的时间实现完了所有程序,然后测试发现,由于f303的主频太低,导致我想在低端导通的的时候adc采样占用了太长的时间影响了pwm的占空比范围,于是我又换成h743,不过我用它调试了2天,发现它的adc的控制,达不到我想要的效果,于是我换成了f446。 电机驱动ic的选择 我买了几种电机驱动ic,比如drv8305,drv8353,drv8301 ,drv8302。

robotics

bebop2 + ros (1)

按照 prgumd 的文档 操作软件部分。按照  bebop_autonomy 文档启动,唯一需要修改的是 bebbebop_driver/launch/bebop_nodelet.launch 下面的 drone_type  设置为  `bebop2` 然后可以使用ros命令操作bebop,发送 takeoff 指令后,bebop会起飞,并保持在一定高度(1m?)。我是到这个时候才知道获取odom的频率是5hz(图片为30hz)且并没有原始传感器数据输出。可能会对某些slam算法有影响(可能的解决方案 1.tx2的载版带imu 2.tx2的载版在外挂一个imu)?然后准备试试 ORB_SLAM2 的cuda版,(tx2在mode 0 下 6核cpu 性能居然比i7低压版差到不能接受的情况)。参考  ORB_SLAM2 cuda enhanced

robotics

xenomai3 (1)

xenomai 安装流程 大体按照 rtt-lwr的流程走(xenomai 3.0.6 在2018年4月24日时会编译失败, 然而从git上面拉的最新代码能够正常编译)。然后我们需要增加2个选项。 RTnet的驱动要选上INTEL 82575(igb)(我们使用的I210网卡基于这个) 在Xenomai的driver选项下选择Real-time IPC drivers(用于实时与非实时线程的通信)。 安装之后的操作 ~将/usr/xenomai拥有者和group使用chown命令修改为自己与xenomai组。 修改ripc权限: sudo vim 99-ripc.rules(/etc/udev/rules.d/) 输入 KERNEL=="rtp[0-31]", MODE="0777" 退出,执行sudo udevadm control --reload-rules sudo reboot 在cmake里面使用xenomai