1.前言
在ROS2中用MoveIt2控制自己的舵机机械手(1)中,已经实现了用moveit发送规划好的轨迹给我们自己弄的节点,然后我们自己的节点假装自己完成了执行。
接下来开始搞下位机部分。
这篇博客主要是对下位机以及机械手进行选型。
2.硬件选型
本次“项目”用到的硬件如下
笔记本电脑:负责机械手的姿态显示、路径规划、路径下发等操作。
STM32单片机:负责接收上位机(电脑)下发的路径信息,将信息中的关节角度信息换算成PWM的脉宽信息后,通过IIC写入至驱动板。
PCA9685模块(舵机驱动板):接收单片机发送过来的脉冲宽度信息,输出PWM信号驱动机械手。
六轴机械手:接收驱动板的pwm信号,执行动作。
可以看到,目前该机械手是个开环控制系统。
2.1 STM32单片机
单片机选了 STM32F103C8T6单片机开发板,它本身具有USB串口一键下载功能。可以很方便地进行程序的下载、通讯。
另外,可以用stm32cubeIDE来进行stm32程序的开发。比之前用uVision开发方便多了。
2.2 PCA9685模块
参考资料:https://www.guyuehome.com/41021
该模块最多可以驱动16路的舵机,但是有一些问题要注意一下。
a、16路的PWM只能使用同一个频率
但是对于我们控制舵机而言,问题不大。因为控制舵机的PWM信号周期要求是20ms,然后通过控制脉冲宽度来控制舵机转动角度的。
b、每次IIC通讯只能设置(更新)一路的PWM脉宽值。
该芯片不支持批量设置寄存器的值(其实支持,但是支持的是一次性设置所有寄存器;主要是不支持一次性读写任意相邻的寄存器),所以要用个for循环来逐一设置各个舵机的角度。
如此一来,可能会导致机械手的动作看起来比较奇怪。
2.3 6轴机械手
本来想买支架、买舵机自己装一个的,但是选型统计之后发现,分开买零件和直接买一个整体,价格差不了多少;而且整体的话,人家会配好零件、舵机、轴承、螺钉等配件,方便很多。所以选择购买整体的。
(有点小贵。。。)
但是,购买的机械手他们没有提供3D模型。我们后面在用moveIt时,要用到3d模型。
没法子,只好自己画一下咯。
目前还没画完,主要是一些零件的尺寸他们没标出来。等东西到了,再量一下尺寸,完善一下。
2.总结
目前东西都已经在淘宝下单,接下来就等东西到了再继续搞了。