请教大家,搞机器人的话,CAN总线用什么协议比较好?
本帖最后由 motor_control 于 2020-4-14 21:50 编辑以前玩过一点带总线控制的舵机,TTL和RS485的控制其实差不多,就是一个主从的分时控制,写起来也不是很复杂。
现在感觉CAN总线比较好些,但以前一直没有用过CAN总线,感觉有点复杂,请问有没有简单点的,够用的协议可以参考的?
目前才调通2个板子之间的通信,还没有涉及到一主多从的控制。
机器人要求实时性比较好些,就是发送位置、速度等命令,然后对应的舵机回传实际位置、速度、状态等数据,能达到这些要求就可以了。现在看到大疆做的机甲大师的直驱轮毂都是用的CAN通信,感觉还是有必要不上CAN通信这门课。
谢谢! CANOPEN 本帖最后由 motor_control 于 2020-4-14 21:57 编辑
xujihu 发表于 2020-4-14 21:49
CANOPEN
多谢!我马上查一下。
要求不高的话自定义吧 qianj1986 发表于 2020-4-14 21:58
要求不高的话自定义吧
刚刚看了一下,CANOPEN协议还是蛮复杂的,我想还是放弃了吧,因为我喜欢简单的东西,而且我也不知道以后在8位单片机上还能不能使用这种复杂的协议。
所以,我还是听从你的建议,要么自定义,要么回到RS485上。现在我倒觉得RS485还是简单易懂些,内心没那么大的压力,搞技术本来就是让自己开心的嘛! 大疆的不是开源SDK了,里面找找看 一直用自定义 CAN除了一次传输的字节数少点,比485强多了。 can的优势是消息优先级硬件肿裁,协议嘛canopen确实复杂,自定义协议就好了 motor_control 发表于 2020-4-14 22:22
刚刚看了一下,CANOPEN协议还是蛮复杂的,我想还是放弃了吧,因为我喜欢简单的东西,而且我也不知道以后 ...
{:titter:} 他说的那个是汽车上用的,记得CAN有标准协议啊,自己对接数据就行。 tdh03z 发表于 2020-4-14 22:34
CAN除了一次传输的字节数少点,比485强多了。
为啥说can一次传的字节数少?can一次传送一个邮箱8字节,比usart一个字节多啊 lostid 发表于 2020-4-14 22:42
为啥说can一次传的字节数少?can一次传送一个邮箱8字节,比usart一个字节多啊 ...
我觉得是CAN废话太多{:lol:} YZ_SQS 发表于 2020-4-14 22:43
我觉得是CAN废话太多
何意 嫌弃canopen复杂的,可以做一个类似于canopen的协议,要不做modbus也行 本帖最后由 jjj206 于 2020-4-14 23:07 编辑
不是有那种总线的数字舵机买么。。。有公开协议的
嫌canopen 复杂 看看ZLG的ican协议 自定义协议效率最高&自由度最高。
把CANID弄为可任意配置,即可兼容任意的can总线设备,不需要canopen这么复杂的玩意儿。
CAN还是不错的,可以自定义协议,如果要做到兼容性好,还是建议CANOPEN canopen 不错,通用性也强 EtherCAT 最好的吧 你要多大的带宽啊,机器人传输距离很近,20K没问题啊 can的硬件接口本身也没有绝对标准,不喜欢canopen,喜欢自定义协议 Can:一帧数据最长8字节 CanFD:一帧数据最长64字节。 canopen 有点复杂的,如果不考虑国际兼容,自定义ID就好,还有感觉CAN 2.0 就能满足,不需要CAN-FD,以前移植过canfestival,开源的canopen协议实现,稳定性不知道怎么样,或者看看周立功的 iCan协议,ethercat可能大型的现场用的比较多一些吧,而且难度很大,还需要考虑应用层协议,canopen也是可以运行在ethercat上面的 “感觉还是有必要不上CAN通信这门课”感觉你像是学生? CAN没有主从,只有ID优先级概念,主要是实时性好,抗干扰性强 难点在于定协议和诊断这一块。 lostid 发表于 2020-4-14 22:53
何意
就是为了发8个字节的数据,需要发很多别的固定数据 CAN通信开始时候 看其通讯协议会被卡住 和modbus完全不是一个档次的东东 本帖最后由 motor_control 于 2020-4-15 09:53 编辑
感谢大家的讨论。
我想了一下,还是先使用RS485,使用类似韩国ROBITIS的那种协议,毕竟人家做机器人舵机也是用的这种方式,还是很靠谱的。而且为了能够使用不带CAN的8位或是M0单片机,用UART接口是很通用的,就算使用外挂的SPI接口的CAN处理芯片,还是麻烦,还不如使用带CAN的芯片直接了当。
现在去淘宝买个便宜的MG995什么的舵机尝试自制控制板,以前也尝试过开源的算法,但效果不佳,现在应该有足够的开发能力来自制了。
为了实现简单的双向数据通信,只要约定好了数据格式,比如韩国的公开的协议,实时性也是一样的,我想就算是CANOPEN,他也只是一个通道,也只能分时使用,在自己的系统里,不用考虑什么兼容性、标准性问题,所以用RS485应该够可以了。等真的有必要用CANOPEN了,那就意味着我发达了,可以叫懂CANOPEN的工程师来做这个事了。 jjj206 发表于 2020-4-14 23:06
不是有那种总线的数字舵机买么。。。有公开协议的
国外的太贵,国内的很垃圾。 motor_control 发表于 2020-4-15 09:54
国外的太贵,国内的很垃圾。
打算自己做舵机吗? 本帖最后由 motor_control 于 2020-4-15 10:24 编辑
jjj206 发表于 2020-4-15 10:02
打算自己做舵机吗?
是的,问题主要是没有结构的配合,只能买X宝上的现成舵机自己改造了。
motor_control 发表于 2020-4-15 09:48
感谢大家的讨论。
我想了一下,还是先使用RS485,使用类似韩国ROBITIS的那种协议,毕竟人家做机器人舵机也是 ...
最终你会发现CAN比485好用 lostid 发表于 2020-4-14 22:42
为啥说can一次传的字节数少?can一次传送一个邮箱8字节,比usart一个字节多啊 ...
效率问题,UART传输一包数据,基本利用率能在80%以上,但你看下CAN协议,真正有用就中间8个数据位,利用率比较低,标准帧情况下在60%不到,还有各种较验,时间上慢多了。
以前做过基于CAN的MCU固件升级,相对UART协议,时间长了一倍。 clesun 发表于 2020-4-15 10:12
最终你会发现CAN比485好用
你是说收发控制吗?
这个也对喔!我再考虑下,多了解下CAN,但CANOPEN协议就不打算搞了。 自己定个协议就行了。我们用的CAN-FD,不知道你单片机支持不支持。 机器人的话 用什么CAN 用ethercat啊 CAN硬件差分抗干扰好些,控制器有仲裁机制,可靠性高些,相对的速率也会慢些,成本贵些 阿豪博士 发表于 2020-4-15 10:34
机器人的话 用什么CAN 用ethercat啊
楼主CANopen都不想搞了,干嘛还整EtherCAT?{:biggrin:} 本帖最后由 motor_control 于 2020-4-15 11:09 编辑
落叶知秋 发表于 2020-4-15 10:37
楼主CANopen都不想搞了,干嘛还整EtherCAT?
同意兄弟的意见,就是搞个简单的好用的舵机就行了,哪还用整那么复杂!
再说了,就算会整EtherCAT了,也不见得会做机器人呀,感觉这种东西就和所谓的LINUX一样。
我还是先搞下经典PID再说,以前搞的简单PID用来控制舵机,也试了开源的OPENSERVO,感觉都不行。不是有过冲,就是锁的不够紧,还有振荡,什么问题都有。
但商用的控制芯片就很稳定,经过一段时间的研究和实践,发现其实看似简单的PID控制,还有三环控制,说起理论来很多人一套一套的,但真正要理解深入,还真的不容易。
日本的Dr.Guero博士,这是真正的博士,不是国内的普通博士,用普通的舵机就可以做出令国内难以企及的水平,昨天又看到了新出的视频,距离上一个视频有1年了!人家这才是研究啊!
现在他的机器人可以展开双臂靠惯性原地旋转,但人家缺的是时间和资金,但有钱的优必选不知道要花多少年月才能搞成这种水平。 clesun 发表于 2020-4-15 10:12
最终你会发现CAN比485好用
如果是主从结构的话485要比CAN好用的多,CAN的唯一优势就是多主结构应用 motor_control 发表于 2020-4-15 10:04
是的,问题主要是没有结构的配合,只能买X宝上的现成舵机自己改造了。
...
最好找那种全金属的,连外壳都是金属的,用过KST舵机,效果很好。 本帖最后由 motor_control 于 2020-4-15 12:01 编辑
jjj206 发表于 2020-4-15 11:16
最好找那种全金属的,连外壳都是金属的,用过KST舵机,效果很好。
全金属的确实很结实,但感觉重量很大,我看日本人做的机器人好像是塑料的。
KST的没用过,但根据我的了解,90%的舵机厂商都是做结构,控制板都是买的,什么KC9806之类的,我拆过好几个舵机了,都一样。
你说感觉很好用,可能是我们的用途不一样吧,模型舵机主要是小摆臂大扭矩,但机器人却是长摆臂,而且带个摆杆往上提时还算可以,但快速往下放时,就会一顿一顿的,没法用,这就是我为什么想自己DIY的原因之一。
模型舵机基本就是个简单的位置环控制,想通过慢慢移动位置来达到慢速的效果是不行的,空载还好,带载就不行,那种网上卖的什么大力舵机,动不动400公斤,听听就好了,很多人用它做机器人的控制,经常出现的问题就是不住的抖动。
现在无刷的全金属我就不想了,贵的不像话。以前模型都是科技爱好,大家自己动手动脑,要不了几个钱,现在搞得像奢侈品一样,玩家基本都没有什么可以自己动手的地方了。你看什么机甲大师、四轴飞行器什么的,基本就是纯玩,没有什么可以自己搞的余地,编什么程的那纯属扯蛋。我觉得这条路肯定是走不远的。
做机器人,很大程度上就是做舵机,这是很多做机器人的工程师说的。
本帖最后由 jjj206 于 2020-4-15 13:13 编辑
motor_control 发表于 2020-4-15 11:53
全金属的确实很结实,但感觉重量很大,我看日本人做的机器人好像是塑料的。
KST的没用过,但根据我的了解 ...
我用kst的就是做蜘蛛机器人用的,用国产的会抖,换成kst的就完全没那回事。另外你自己开发舵机,也是需要虚位小的机械结构调试,我是让你拆kst用 jjj206 发表于 2020-4-15 13:11
我用kst的就是做蜘蛛机器人用的,用国产的会抖,换成kst的就完全没那回事。另外你自己开发舵机,也是需要 ...
好的,但KST的也不便宜呀!
我只是顺便发表一下我对国产舵机的看法,真的怕了。谢谢兄弟建议哈! motor_control 发表于 2020-4-15 13:37
好的,但KST的也不便宜呀!
我只是顺便发表一下我对国产舵机的看法,真的怕了。谢谢兄弟建议哈! ...
一个半个用来调程序也不贵,便宜的一百多,贵的才200左右。 jjj206 发表于 2020-4-15 14:02
一个半个用来调程序也不贵,便宜的一百多,贵的才200左右。
你说的是有刷全金属的吧?给个型号我看看。 opencan 没意义 臃肿can只是物理层 协议层自定义就可以了 你说的ROBITIS 也是可以移植到can上的 凌海滨 发表于 2020-4-15 15:48
opencan 没意义 臃肿can只是物理层 协议层自定义就可以了 你说的ROBITIS 也是可以移植到can上的 ...
我觉得也是。又不搞什么国际化兼容,不搞什么标准,够用就行。 一直都是自定义协议 精简 motor_control 发表于 2020-4-15 14:44
你说的是有刷全金属的吧?给个型号我看看。
我记得当时是用了空心杯的,但查了一下订购单是用了KST BLS825,这个是无刷的,价格当时是800一个,抱歉价格记错了,以为是200。 jjj206 发表于 2020-4-15 18:04
我记得当时是用了空心杯的,但查了一下订购单是用了KST BLS825,这个是无刷的,价格当时是800一个,抱歉 ...
没关系,我总觉得坛友们做事就是负责。
无刷的真的太贵,据说结构成本都要接近200多,但电路板我想应该是不贵的,目前能用的就只能是有刷舵机改造,淘宝很多。 motor_control 发表于 2020-4-15 18:08
没关系,我总觉得坛友们做事就是负责。
无刷的真的太贵,据说结构成本都要接近200多,但电路板我想应该 ...
可以先找个便宜的调试的,某宝上看到有拆机的机器人用的总线舵机卖,铜齿轮的,价格超级便宜,才9.5元,囊中羞涩的话可以试一下拿来拆零件调试。 jjj206 发表于 2020-4-15 19:12
可以先找个便宜的调试的,某宝上看到有拆机的机器人用的总线舵机卖,铜齿轮的,价格超级便宜,才9.5元, ...
为了研究,付出代价是值得的。
只是觉得国内的舵机质量对不起它的价格。 motor_control 发表于 2020-4-15 19:39
为了研究,付出代价是值得的。
只是觉得国内的舵机质量对不起它的价格。 ...
部分原因是一味追求低成本的结果。。。 CANOPENcanHD
页:
[1]