Setting maximum speed through controller
Hi,
I'd like to be able to set a maximum velocity by pressing a specified button on a Logitech controller.
So far I've been able to understand that a joy_node
node takes raw input from the controller and in stores those values in a std_msg/Joy
, then a teleop_node
takes those messages as input and reads a config file as teleop.yaml
, which looks like this:
axis_linear:
x: 1
y: 0
scale_linear:
x: 0.75
y: 0.75
axis_angular:
yaw: 2
scale_angular:
yaw: 1.57
enable_button: 5
enable_turbo_button: 7
scale_linear_turbo:
x: 1.20
y: 1.20
scale_angular_turbo:
yaw: 6.28
I'd like to add few parameters, to be able to switch to a slow speed mode that activates when the button 0 (in the Logitech controller is button number 1, which is X on a Xbox One controller):
slow_vel_button: 0
scale_linear_slow:
x: 0.25
y: 0.25
scale_angular_slow:
yaw: 2
The problem is, that I don't know how to make this. It seems to me that the easiest way would be to modify the teleop_node
but I cannot do it since I only have the executable in /opt/ros/melodic/share/teleop_twist_joy
. So I was thinking about writing another node that subscribe to std_msg/Joy
and that dynamically changes teleop.yaml
with the values that I want but I have no idea if that is doable or if there are easier and safer ways to do this.
I run ros on a Ubuntu Mate on a Raspberry.
Thanks for the help!