Hi all,
This is a patch that allow to control an holonomous robot with the
linuxjoystick driver.
For an holonomous robot, it is possible to have Vx!=0, Vy!=0 and Vyaw!=0
at the same time. The current joystick driver didn't allow this.
Before the X axis was refered to go forward-backward, and Y axis to turn
left/right. But actually turning left/right is more a Z axis concern.
Since for holonomic robots we need this Y axis to go (without turning)
left or right, the updated driver uses the normal convention: "X axis"
for translational velocity along the X axis, "Y axis" for translational
velocity along Y axis and "Yaw axis" for rotational velocity around Z axis.
I remove the swap of the X and Y axis (in a joystick definition point of
view), because as it was natural to do this before, now that we have a
third axis, there's no way to swap this axis with another one. However
the default behavior is kept the same, because the default XAXIS is now
1 and the default YAWAXIS is 0.
Now this driver can control both type of robots, both can be used
directly with a default config section.
This patch was tested by controlling a pionnerdx and my holonomous robot
(both in gazebo), with the following config:
driver
(
name "linuxjoystick"
provides ["joystick:0"]
requires ["position2d:0"]
port "/dev/js0"
alwayson 1
)
This patch update the documentation, and the config/joystick.cfg as well.
To update any existing config file, change
==========
max_yawspeed MAX_YAW_SPEED
max_xspeed MAX_X_SPEED
axes [X Y]
axis_minima [X_MINIMA Y_MINIMA]
==========
to
==========
max_speed [MAX_X_SPEED 0 MAX_YAW_SPEED]
axes [Y -1 X]
axis_minima [X_MINIMA 0 Y_MINIMA]
==========
since X and Y was swapped within the driver, and that the side-to-side
axis was called Y, but was actually controlling the Yaw command.
Hope you will integrate this patch, if you don't like the vars renaming,
just tell me and i will resend you a patch to conform to your requirements.
Enjoy!
Chris.
|