# python example of a motor hardware interface

Hi all,

I have a 4WD robot that uses PWM motor controls. I am looking for a good ROS2 **python** example to convert Twist signal in PWM.

Thanks

python example of a motor hardware interface

Hi all,

I have a 4WD robot that uses PWM motor controls. I am looking for a good ROS2 **python** example to convert Twist signal in PWM.

Thanks

1

To convert Twist message to PWM that's what I've done

- I've created a test script that sends PWM duty cycle signal from the lowest to highest at specific time intervals (e.g. 1sec, 2sec and son on).
- For each event (e.g. PWM 50 for 2sec) I've measured the distance covered by the robot.
- With distances (x) and duty cycles (y) I've calculated the slope(m) and y-intercept(b) values of a linear equation y = mx + b
- With the linear function I can calculate the duty cycle needed. So, for instance from the Twist linear.x velocity message value, defined as meters/second, I can derive the duty cycle. Note that when the robot goes from a stop state to a moving state some initial friction needs to be considered.

Example

```
def calc_vel(self, x, z): # x and z are coming from Twist
t = self.track #distance between wheels
r_vel = x + ((z * t) /2)
l_vel = x - ((z * t) /2)
dc_r = calc_duty_cycle(r_vel)
dc_l = calc_duty_cycle(dc_l)
return dc_r, dc_l
def calc_duty_cycle(self, vel):
# linear equation variables defined by experimentation
M_SLOPE = 50
Y_INTERCEPT = 2
return M_SLOPE * vel + Y_INTERCEPT
```

Please start posting anonymously - your entry will be published after you log in or create a new account.

Asked: ** 2022-05-30 15:51:25 -0500 **

Seen: **106 times**

Last updated: **Jun 06**

Problem with Subscriber class from message_filter in Python

ROS2 through docker: failed to configure logging: Failed to create log directory

Image_transport for Python node

How to get data from lookupTransform() without publishing tf data?

launch component into existing container

ROS2 (Foxy): "launch" is not working on windows 10.

Problem combining ROS2 Action and Tkinter GUI

ros2 gazebo camera not publishing data

ROS Answers is licensed under Creative Commons Attribution 3.0 Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.

What model of controllers do you have for these PWM motors? This package

`simple_drive`

and this AutomaticAddison blog post describe similar things you can try to achieve herethanks, I've written very similar code. I was looking for something which included odom for a bot without encoders.

How would it work exactly?