Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于发送接收接口使用 #23

Open
jieyu-xue-hct opened this issue Dec 12, 2024 · 8 comments
Open

关于发送接收接口使用 #23

jieyu-xue-hct opened this issue Dec 12, 2024 · 8 comments

Comments

@jieyu-xue-hct
Copy link

image
你好,我在调试goM8010_6电机,请教下除了example接口中的sendrecv接口,其他这些接口能用吗?试了下电机都没反应。

@xiaoliangstd
Copy link
Collaborator

您好,send 接口可以使用,但需要直接发 电机通信报文的16进制数,所以对于用户来说,这个使用不是很直观。

@xiaoliangstd
Copy link
Collaborator

使用 sendRecv() 函数 是出了什么问题了嘛?请问

@jieyu-xue-hct
Copy link
Author

使用 sendRecv() 函数 是出了什么问题了嘛?请问

没有问题哈,就是直觉上习惯分开使用所以试了下。那了解了我也试下。
另外再请教下,三个电机串联使用时候,这些send/recv接口线程安全吗,能比如3个线程并发去操作三个电机吗?谢谢

@jieyu-xue-hct
Copy link
Author

再请教下电机有啥更复杂的用例参考吗,比如控制个连杆来回摆动之类的,现在不知道怎么精准控制,只填位置q没反应

@xiaoliangstd
Copy link
Collaborator

是这样的,之所以 sendRecv() 是合在一起是因为,我们的电机是设置只有当用户往电机发送一次 控制命令才返回一次电机状态,而不是按一定频率往总线上发状态信息。这就导致了,当我们发送控制命令后,必须时刻关注电机有没有返回信息,因为如果没有关注,信息就没了,所以 每次send之后必须就马上进行Recv接收,形成了现在的sendRecv()函数。如果一条总线上有三个不同3d 的电机,也是必须先sendRecv 一个电机后再 sendRecv电机,即轮询。

@xiaoliangstd
Copy link
Collaborator

如果是同一条总线上的电机,不可以并行操控。 如果是不同总线上的电机,而可以分开几个线程去操控。

@xiaoliangstd
Copy link
Collaborator

关于电机复杂的用例参考,可以看下我们的 unitree_guide 工程。电机的控制说到底还是关节空间的控制,而我们当把连杆通过电机连在一起后,对连杆末端的控制(比如控制 足端给地面施加一个力或控制足端摆到空间中某一个位置)就是工作空间的控制。 这就涉及怎么从工作空间的控制命令转换到关节空间的控制命令的问题,在 unitree_guide 里提供了很多示例。

@jieyu-xue-hct
Copy link
Author

感谢!很有帮助!
使用中遇到俩问题这里再请教下:

  1. 我看电机协议里有个标定模式(mode=2),这个模式是干啥的?有啥相关使用说明吗,文档里没翻到
  2. 买来的几个电机,给相同的力矩值(比如都是正值),有的正转有的反转,转动方向不一致,这个是咋回事,是不是跟1中的标定模式相关
    谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants