ROS代码中bodyhub发布的requestGaitCommand话题

耿耿 2022-2-21 11:34:56 显示全部楼层 阅读模式
我看了在行走过程中,有这样的代码(我的问题在第2行):
  1. def walking(self, delta_x, delta_y, theta):
  2.     rospy.wait_for_message('/requestGaitCommand', Bool, self.timeout)
  3.     self.gait_cmd_pub.publish(data=[delta_x, delta_y, theta])
复制代码
代码来源:/home/fan/robot_ros_application/catkin_ws/src/gaitcommander/scripts/key_cmd.py

然后查了 requestGaitCommand 的发布者是 bodyhub 节点。但没有理解行走前为什么要等待 requestGaitCommand 话题。如果 requestGaitCommand 发布失败或错误,会不会影响正常行走?我检索了所有代码,没有找到发布 requestGaitCommand 的代码或发布条件。我看了README文档中的说明是:
- /requestGaitCommand ([std_msgs/Bool][std_msgs/Bool])  
行走模式下,机器人中脚步指令低于一定值时,请求新的控制脚步。
我没有理解什么是“脚步指令”,还有它是谁发出来的;这个“一定值”是需要参赛者指定的还是参赛者不用管?还有我觉得应该是上位机主动控制行走,而不是由下位机“请求新的控制脚步”。
归纳一下,我的问题都是围绕 requestGaitCommand 的产生原理和使用目的:
1. requestGaitCommand 在满足什么条件时候发布?
2. requestGaitCommand 会影响行走吗,会不会有累计误差?之前用Roban实物走slam的时候,发现走着走着会突然卡住停下,总感觉哪有问题。
3. 使用 requestGaitCommand 控制行走的合理性是什么?

回复

使用道具 评分 举报

大神点评4

 楼主| 耿耿 2022-2-21 11:37:03 显示全部楼层
补充:跟Roban机器人和仿真赛相关。
回复

使用道具 评分 举报

lff 2022-2-21 15:29:20 显示全部楼层
- 如你所见,requestGaitCommand会在脚步低于一定值时对外发布消息,该脚步值不需要您对其设置,该消息的发布存在于bodyhubnode所依赖的库中,所以未能可见。
- 我所理解的你说的误差是指在循环发送单步指令时是否会出现一顿一顿的情况,导致行走不流畅。如果在脚步低于一定值内发布下一脚步的指令则会连贯走,如果脚步值未0时则会停下。
- requestGaitCommand仅作为程序向机器人发送行走命令的接口。
回复

使用道具 评分 举报

 楼主| 耿耿 2022-2-23 10:50:09 显示全部楼层
好的,我应该理解了。例如当机器人正好有一只脚抬起来的时候,不会发出 requestGaitCommand 话题。又如当机器人静止的时候,它能以比较高的频率发出 requestGaitCommand 话题。
回复

使用道具 评分 举报

lff 2022-2-23 18:56:29 显示全部楼层
耿耿 发表于 2022-2-23 10:50
好的,我应该理解了。例如当机器人正好有一只脚抬起来的时候,不会发出 requestGaitCommand 话题。又如当机 ...

是这么理解
回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 立即注册

  • 0 关注
  • 9 粉丝
  • 13 帖子