motor_control 发表于 2020-4-14 21:49:06

请教大家,搞机器人的话,CAN总线用什么协议比较好?

本帖最后由 motor_control 于 2020-4-14 21:50 编辑

      以前玩过一点带总线控制的舵机,TTL和RS485的控制其实差不多,就是一个主从的分时控制,写起来也不是很复杂。
      现在感觉CAN总线比较好些,但以前一直没有用过CAN总线,感觉有点复杂,请问有没有简单点的,够用的协议可以参考的?
      目前才调通2个板子之间的通信,还没有涉及到一主多从的控制。

      机器人要求实时性比较好些,就是发送位置、速度等命令,然后对应的舵机回传实际位置、速度、状态等数据,能达到这些要求就可以了。现在看到大疆做的机甲大师的直驱轮毂都是用的CAN通信,感觉还是有必要不上CAN通信这门课。

      谢谢!

xujihu 发表于 2020-4-14 21:49:43

CANOPEN      

motor_control 发表于 2020-4-14 21:52:12

本帖最后由 motor_control 于 2020-4-14 21:57 编辑

xujihu 发表于 2020-4-14 21:49
CANOPEN

多谢!我马上查一下。

qianj1986 发表于 2020-4-14 21:58:45

要求不高的话自定义吧

motor_control 发表于 2020-4-14 22:22:22

qianj1986 发表于 2020-4-14 21:58
要求不高的话自定义吧

刚刚看了一下,CANOPEN协议还是蛮复杂的,我想还是放弃了吧,因为我喜欢简单的东西,而且我也不知道以后在8位单片机上还能不能使用这种复杂的协议。

所以,我还是听从你的建议,要么自定义,要么回到RS485上。现在我倒觉得RS485还是简单易懂些,内心没那么大的压力,搞技术本来就是让自己开心的嘛!

lanyuye 发表于 2020-4-14 22:26:38

大疆的不是开源SDK了,里面找找看

modbus 发表于 2020-4-14 22:30:17

一直用自定义

tdh03z 发表于 2020-4-14 22:34:35

CAN除了一次传输的字节数少点,比485强多了。

lostid 发表于 2020-4-14 22:38:36

can的优势是消息优先级硬件肿裁,协议嘛canopen确实复杂,自定义协议就好了

一心2013 发表于 2020-4-14 22:41:48

motor_control 发表于 2020-4-14 22:22
刚刚看了一下,CANOPEN协议还是蛮复杂的,我想还是放弃了吧,因为我喜欢简单的东西,而且我也不知道以后 ...

{:titter:} 他说的那个是汽车上用的,记得CAN有标准协议啊,自己对接数据就行。

lostid 发表于 2020-4-14 22:42:51

tdh03z 发表于 2020-4-14 22:34
CAN除了一次传输的字节数少点,比485强多了。

为啥说can一次传的字节数少?can一次传送一个邮箱8字节,比usart一个字节多啊

YZ_SQS 发表于 2020-4-14 22:43:43

lostid 发表于 2020-4-14 22:42
为啥说can一次传的字节数少?can一次传送一个邮箱8字节,比usart一个字节多啊 ...

我觉得是CAN废话太多{:lol:}

lostid 发表于 2020-4-14 22:53:35

YZ_SQS 发表于 2020-4-14 22:43
我觉得是CAN废话太多

何意

mtswz.213 发表于 2020-4-14 22:55:14

嫌弃canopen复杂的,可以做一个类似于canopen的协议,要不做modbus也行

jjj206 发表于 2020-4-14 23:06:39

本帖最后由 jjj206 于 2020-4-14 23:07 编辑

不是有那种总线的数字舵机买么。。。有公开协议的

墨非 发表于 2020-4-14 23:09:35


嫌canopen 复杂 看看ZLG的ican协议

LM5017 发表于 2020-4-14 23:12:41

自定义协议效率最高&自由度最高。
把CANID弄为可任意配置,即可兼容任意的can总线设备,不需要canopen这么复杂的玩意儿。

gujingji 发表于 2020-4-14 23:21:24

CAN还是不错的,可以自定义协议,如果要做到兼容性好,还是建议CANOPEN

canopen 发表于 2020-4-15 00:24:03

canopen 不错,通用性也强

litop 发表于 2020-4-15 01:06:13

EtherCAT 最好的吧

荆云 发表于 2020-4-15 01:06:43

你要多大的带宽啊,机器人传输距离很近,20K没问题啊

colinzhao 发表于 2020-4-15 01:44:12

can的硬件接口本身也没有绝对标准,不喜欢canopen,喜欢自定义协议

erxun 发表于 2020-4-15 06:40:26

Can:一帧数据最长8字节 CanFD:一帧数据最长64字节。

hyf88 发表于 2020-4-15 08:05:48

canopen 有点复杂的,如果不考虑国际兼容,自定义ID就好,还有感觉CAN 2.0 就能满足,不需要CAN-FD,以前移植过canfestival,开源的canopen协议实现,稳定性不知道怎么样,或者看看周立功的 iCan协议,ethercat可能大型的现场用的比较多一些吧,而且难度很大,还需要考虑应用层协议,canopen也是可以运行在ethercat上面的

hyf88 发表于 2020-4-15 08:06:40

“感觉还是有必要不上CAN通信这门课”感觉你像是学生?

jiamingz 发表于 2020-4-15 08:08:04

CAN没有主从,只有ID优先级概念,主要是实时性好,抗干扰性强

jiamingz 发表于 2020-4-15 08:08:53

难点在于定协议和诊断这一块。

YZ_SQS 发表于 2020-4-15 08:11:40

lostid 发表于 2020-4-14 22:53
何意

就是为了发8个字节的数据,需要发很多别的固定数据

lb0857 发表于 2020-4-15 08:12:44

CAN通信开始时候 看其通讯协议会被卡住    和modbus完全不是一个档次的东东   

motor_control 发表于 2020-4-15 09:48:24

本帖最后由 motor_control 于 2020-4-15 09:53 编辑

感谢大家的讨论。
我想了一下,还是先使用RS485,使用类似韩国ROBITIS的那种协议,毕竟人家做机器人舵机也是用的这种方式,还是很靠谱的。而且为了能够使用不带CAN的8位或是M0单片机,用UART接口是很通用的,就算使用外挂的SPI接口的CAN处理芯片,还是麻烦,还不如使用带CAN的芯片直接了当。

现在去淘宝买个便宜的MG995什么的舵机尝试自制控制板,以前也尝试过开源的算法,但效果不佳,现在应该有足够的开发能力来自制了。

为了实现简单的双向数据通信,只要约定好了数据格式,比如韩国的公开的协议,实时性也是一样的,我想就算是CANOPEN,他也只是一个通道,也只能分时使用,在自己的系统里,不用考虑什么兼容性、标准性问题,所以用RS485应该够可以了。等真的有必要用CANOPEN了,那就意味着我发达了,可以叫懂CANOPEN的工程师来做这个事了。

motor_control 发表于 2020-4-15 09:54:24

jjj206 发表于 2020-4-14 23:06
不是有那种总线的数字舵机买么。。。有公开协议的

国外的太贵,国内的很垃圾。

jjj206 发表于 2020-4-15 10:02:11

motor_control 发表于 2020-4-15 09:54
国外的太贵,国内的很垃圾。

打算自己做舵机吗?

motor_control 发表于 2020-4-15 10:04:01

本帖最后由 motor_control 于 2020-4-15 10:24 编辑

jjj206 发表于 2020-4-15 10:02
打算自己做舵机吗?

是的,问题主要是没有结构的配合,只能买X宝上的现成舵机自己改造了。

clesun 发表于 2020-4-15 10:12:04

motor_control 发表于 2020-4-15 09:48
感谢大家的讨论。
我想了一下,还是先使用RS485,使用类似韩国ROBITIS的那种协议,毕竟人家做机器人舵机也是 ...

最终你会发现CAN比485好用

一心2013 发表于 2020-4-15 10:23:37

lostid 发表于 2020-4-14 22:42
为啥说can一次传的字节数少?can一次传送一个邮箱8字节,比usart一个字节多啊 ...

效率问题,UART传输一包数据,基本利用率能在80%以上,但你看下CAN协议,真正有用就中间8个数据位,利用率比较低,标准帧情况下在60%不到,还有各种较验,时间上慢多了。

以前做过基于CAN的MCU固件升级,相对UART协议,时间长了一倍。

motor_control 发表于 2020-4-15 10:27:17

clesun 发表于 2020-4-15 10:12
最终你会发现CAN比485好用

你是说收发控制吗?
这个也对喔!我再考虑下,多了解下CAN,但CANOPEN协议就不打算搞了。

黑暗骑士寒心雨 发表于 2020-4-15 10:28:18

自己定个协议就行了。我们用的CAN-FD,不知道你单片机支持不支持。

阿豪博士 发表于 2020-4-15 10:34:30

机器人的话 用什么CAN 用ethercat啊

落叶知秋 发表于 2020-4-15 10:34:40

CAN硬件差分抗干扰好些,控制器有仲裁机制,可靠性高些,相对的速率也会慢些,成本贵些

落叶知秋 发表于 2020-4-15 10:37:08

阿豪博士 发表于 2020-4-15 10:34
机器人的话 用什么CAN 用ethercat啊

楼主CANopen都不想搞了,干嘛还整EtherCAT?{:biggrin:}

motor_control 发表于 2020-4-15 10:59:43

本帖最后由 motor_control 于 2020-4-15 11:09 编辑

落叶知秋 发表于 2020-4-15 10:37
楼主CANopen都不想搞了,干嘛还整EtherCAT?

同意兄弟的意见,就是搞个简单的好用的舵机就行了,哪还用整那么复杂!
再说了,就算会整EtherCAT了,也不见得会做机器人呀,感觉这种东西就和所谓的LINUX一样。

我还是先搞下经典PID再说,以前搞的简单PID用来控制舵机,也试了开源的OPENSERVO,感觉都不行。不是有过冲,就是锁的不够紧,还有振荡,什么问题都有。
但商用的控制芯片就很稳定,经过一段时间的研究和实践,发现其实看似简单的PID控制,还有三环控制,说起理论来很多人一套一套的,但真正要理解深入,还真的不容易。

日本的Dr.Guero博士,这是真正的博士,不是国内的普通博士,用普通的舵机就可以做出令国内难以企及的水平,昨天又看到了新出的视频,距离上一个视频有1年了!人家这才是研究啊!
现在他的机器人可以展开双臂靠惯性原地旋转,但人家缺的是时间和资金,但有钱的优必选不知道要花多少年月才能搞成这种水平。

modbus 发表于 2020-4-15 11:13:58

clesun 发表于 2020-4-15 10:12
最终你会发现CAN比485好用

如果是主从结构的话485要比CAN好用的多,CAN的唯一优势就是多主结构应用

jjj206 发表于 2020-4-15 11:16:53

motor_control 发表于 2020-4-15 10:04
是的,问题主要是没有结构的配合,只能买X宝上的现成舵机自己改造了。

...

最好找那种全金属的,连外壳都是金属的,用过KST舵机,效果很好。

motor_control 发表于 2020-4-15 11:53:55

本帖最后由 motor_control 于 2020-4-15 12:01 编辑

jjj206 发表于 2020-4-15 11:16
最好找那种全金属的,连外壳都是金属的,用过KST舵机,效果很好。

全金属的确实很结实,但感觉重量很大,我看日本人做的机器人好像是塑料的。
KST的没用过,但根据我的了解,90%的舵机厂商都是做结构,控制板都是买的,什么KC9806之类的,我拆过好几个舵机了,都一样。
你说感觉很好用,可能是我们的用途不一样吧,模型舵机主要是小摆臂大扭矩,但机器人却是长摆臂,而且带个摆杆往上提时还算可以,但快速往下放时,就会一顿一顿的,没法用,这就是我为什么想自己DIY的原因之一。

模型舵机基本就是个简单的位置环控制,想通过慢慢移动位置来达到慢速的效果是不行的,空载还好,带载就不行,那种网上卖的什么大力舵机,动不动400公斤,听听就好了,很多人用它做机器人的控制,经常出现的问题就是不住的抖动。

现在无刷的全金属我就不想了,贵的不像话。以前模型都是科技爱好,大家自己动手动脑,要不了几个钱,现在搞得像奢侈品一样,玩家基本都没有什么可以自己动手的地方了。你看什么机甲大师、四轴飞行器什么的,基本就是纯玩,没有什么可以自己搞的余地,编什么程的那纯属扯蛋。我觉得这条路肯定是走不远的。

做机器人,很大程度上就是做舵机,这是很多做机器人的工程师说的。

jjj206 发表于 2020-4-15 13:11:47

本帖最后由 jjj206 于 2020-4-15 13:13 编辑

motor_control 发表于 2020-4-15 11:53
全金属的确实很结实,但感觉重量很大,我看日本人做的机器人好像是塑料的。
KST的没用过,但根据我的了解 ...

我用kst的就是做蜘蛛机器人用的,用国产的会抖,换成kst的就完全没那回事。另外你自己开发舵机,也是需要虚位小的机械结构调试,我是让你拆kst用

motor_control 发表于 2020-4-15 13:37:03

jjj206 发表于 2020-4-15 13:11
我用kst的就是做蜘蛛机器人用的,用国产的会抖,换成kst的就完全没那回事。另外你自己开发舵机,也是需要 ...

好的,但KST的也不便宜呀!

我只是顺便发表一下我对国产舵机的看法,真的怕了。谢谢兄弟建议哈!

jjj206 发表于 2020-4-15 14:02:02

motor_control 发表于 2020-4-15 13:37
好的,但KST的也不便宜呀!

我只是顺便发表一下我对国产舵机的看法,真的怕了。谢谢兄弟建议哈! ...

一个半个用来调程序也不贵,便宜的一百多,贵的才200左右。

motor_control 发表于 2020-4-15 14:44:26

jjj206 发表于 2020-4-15 14:02
一个半个用来调程序也不贵,便宜的一百多,贵的才200左右。

你说的是有刷全金属的吧?给个型号我看看。

凌海滨 发表于 2020-4-15 15:48:10

opencan 没意义 臃肿can只是物理层 协议层自定义就可以了 你说的ROBITIS 也是可以移植到can上的

motor_control 发表于 2020-4-15 16:13:50

凌海滨 发表于 2020-4-15 15:48
opencan 没意义 臃肿can只是物理层 协议层自定义就可以了 你说的ROBITIS 也是可以移植到can上的 ...

我觉得也是。又不搞什么国际化兼容,不搞什么标准,够用就行。

Athelloren 发表于 2020-4-15 16:25:44

一直都是自定义协议 精简

jjj206 发表于 2020-4-15 18:04:51

motor_control 发表于 2020-4-15 14:44
你说的是有刷全金属的吧?给个型号我看看。

我记得当时是用了空心杯的,但查了一下订购单是用了KST BLS825,这个是无刷的,价格当时是800一个,抱歉价格记错了,以为是200。

motor_control 发表于 2020-4-15 18:08:22

jjj206 发表于 2020-4-15 18:04
我记得当时是用了空心杯的,但查了一下订购单是用了KST BLS825,这个是无刷的,价格当时是800一个,抱歉 ...

没关系,我总觉得坛友们做事就是负责。

无刷的真的太贵,据说结构成本都要接近200多,但电路板我想应该是不贵的,目前能用的就只能是有刷舵机改造,淘宝很多。

jjj206 发表于 2020-4-15 19:12:30

motor_control 发表于 2020-4-15 18:08
没关系,我总觉得坛友们做事就是负责。

无刷的真的太贵,据说结构成本都要接近200多,但电路板我想应该 ...

可以先找个便宜的调试的,某宝上看到有拆机的机器人用的总线舵机卖,铜齿轮的,价格超级便宜,才9.5元,囊中羞涩的话可以试一下拿来拆零件调试。

motor_control 发表于 2020-4-15 19:39:51

jjj206 发表于 2020-4-15 19:12
可以先找个便宜的调试的,某宝上看到有拆机的机器人用的总线舵机卖,铜齿轮的,价格超级便宜,才9.5元, ...

为了研究,付出代价是值得的。
只是觉得国内的舵机质量对不起它的价格。

jjj206 发表于 2020-4-15 19:52:17

motor_control 发表于 2020-4-15 19:39
为了研究,付出代价是值得的。
只是觉得国内的舵机质量对不起它的价格。 ...

部分原因是一味追求低成本的结果。。。

yamqqqq 发表于 2020-4-17 23:27:59

CANOPENcanHD
页: [1]
查看完整版本: 请教大家,搞机器人的话,CAN总线用什么协议比较好?