针对rosserial的Arduino AccelStepper归巢服务有太大的延迟

时间:2018-06-09 20:09:10

标签: arduino serial-port delay ros

我将Arduino的AccelStepper库与rosserial结合使用以构建ROS节点。但是,我的归位服务功能(在达到限位开关时应该停止步进)太慢了。有时,步进器在到达开关时立即停止,但大多数时候它会移动约1-2秒。此外,"移动"到达开关后我的部分功能甚至没有执行。但我在功能上看不出任何错误:

void Stepper::homing()
{
  /*This function is blocking because it runs in a while loop, until homing is completed. This is useful in this case.
     Based on: https://www.brainy-bits.com/setting-stepper-motors-home-position-using-accelstepper/
  */
  set_homing_params();
  long initial_homing = -1;
  while (digitalRead(home_switch)) {
    stepper.moveTo(initial_homing);
    initial_homing--;
    stepper.run();
    delay(5);
  }
  stepper.stop();
  stepper.setCurrentPosition(0);
  //move away:
  set_homing_params();
  initial_homing = 1;

  while (!digitalRead(home_switch)) {
    stepper.moveTo(initial_homing);
    initial_homing++;
    stepper.run();
    delay(5);
  }
  stepper.stop();
  stepper.setCurrentPosition(0);
  set_params();

  homing_completed = 0;
}

我已经尝试过延迟,速度和加速,但我不明白这里发生了什么。在此归位功能期间,我不会调用ROS' spinOnce(),导致"与设备失去同步,重启..."错误。但归巢后,一切都很好,除了停止延迟。

顺便说一句,我使用的是DRV8825电机驱动器(方向/步骤)。

感谢任何帮助!

0 个答案:

没有答案