ROS2 driver for the Ewellix TLT lifts.
For meshes, URDF, and Gazebo simulation, see the Ewellix Lift common packages.
Add user to dialout
group to ensure the driver has permissions to access the serial device.
sudo usermod -a -G dialout UserName
If building from source, pull the common packages containing the lift's description, ROS interface definitions, and simulation launch files.
git clone https://github.com/clearpathrobotics/ewellix_lift_common.git
Run the driver:
ros2 run ewellix_driver ewellix_node
Parameters:
port
: Path to device. By default,/dev/ttyUSB0
.baud
: Baud rate, on most TLT it should be set to38400
timeout
: Timeout in milliseconds to wait for response from SCU. By default,1000
ms.joint_count
: Number of actuators. By default,2
.conversion
: Encoder ticks per meter. Varies depending on lift model. On the 500mm model,3225
encoder ticks per meter.rated_effort
: Rated force of lift. On the 500mm model,2000
N.tolerance
: Distance from commanded position to consider within bounds. By default0.005
meters.frequency
: Publishing loop rate. By default,10 Hz
.
Running the driver with parameters:
ros2 run ewellix_driver ewellix_node --ros-args -p port:=/dev/ttyUSB0
Moving the lift:
ros2 topic pub /command ewellix_interfaces/msg/Command "ticks: 0
meters: 0.0"
ticks
range from 0 to 865.
meters
range from 0.0 to max height defined by the model.
If both are defined, ticks takes priority over meters.
If the generate_ros2_control_tag
is enabled in the ewllix_lift
macro defined in ewellix_macro.xacro, the hardware interface will be loaded by the controller manager.
Using the position_controllers/JointGroupPositionController
send a position command to the lift's actuators.
Moving the lift:
ros2 topic pub /lift_position_controller/commands std_msgs/msg/Float64MultiArray "layout:
dim: []
data_offset: 0
data: [0.0]"
data
list specifies the desired position of the lower and upper joint.
Note, the command sent is applied to both actuators. Therefore, on the TLT500, send a 0.25 command to extend the lift to 500mm.