neomanic / odrive_ros

ROS driver for the ODrive motor drive
Other
70 stars 48 forks source link

ODrive has not been prerolled #15

Open eirik-strand opened 4 years ago

eirik-strand commented 4 years ago

All I get is a message that says its not been prerolled. What is prerolling? I'm using two scooter motors with hall sensors. 56v ODrive

@neomanic Thank you for the package, can you help me with this?

bsamadi commented 4 years ago

@eirik-strand I have the same problem. Did you find any solutions?

whoobee commented 4 years ago

@eirik-strand @bsamadi I have the same problem, can you please post if you have any update on this issue?

neomanic commented 4 years ago

Hey all, sorry about that. I haven't generalised the package to work across different uses of the odrive, that was the intention behind the . Currently it requires prerolling to pickup the encoder index pulse before it can drive.

Try editing the line at https://github.com/neomanic/odrive_ros/blob/master/src/odrive_ros/odrive_node.py#L490 to be if self.has_preroll and not self.driver.has_prerolled():

If that works then I can make the change here.

whoobee commented 4 years ago

@neomanic thanks a lot for the reply It seems that the actual motor command is inhibited by this line: https://github.com/neomanic/odrive_ros/blob/65424ca0058d97ed04b032352cfb8437089a23c3/src/odrive_ros/odrive_node.py#L374

I added the following statement and now the motors are turning: if self.has_preroll and not self.driver.has_prerolled(): #ensure_prerolled(): and I set the use_preroll parameter as false in the launch file.