-
Notifications
You must be signed in to change notification settings - Fork 197
teleop_roboboat_tutorial
This page provides a description of how to drive the spawned USV. It assumes you've gone through the preceding tutorials regarding installation, and spawning. It also assumes a basic familiarity with Gazebo.
The actuators for the boat we spawned in the previous tutorial are defined by the Gazebo Sim Thruster Class. While there are a number of ways to control heading, with two thrusters we can simply employ differential thrust.
First, launch the environment:
ros2 launch vrx_gz vrx_environment.launch.py world:=nbpark
To send messages from ROS2 to Gazebo Sim, we must utilize a bridge, specifying the topics and messages we need to send. For the left thruster:
ros2 run ros_gz_bridge parameter_bridge /model/roboboat01/joint/left_engine_propeller_joint/cmd_thrust@std_msgs/msg/Float64]gz.msgs.Double
and for the right thruster:
ros2 run ros_gz_bridge parameter_bridge /model/roboboat01/joint/right_engine_propeller_joint/cmd_thrust@std_msgs/msg/Float64]gz.msgs.Double
You can test that the bridges are working by publishing a topic to one or both of the thrusters:
ros2 topic pub /model/roboboat01/joint/left_engine_propeller_joint/cmd_thrust std_msgs/msg/Float64 "data: 150"
using this command you should see your boat going in circles.
With both bridge commands running, in a separate terminal launch
ros2 launch vrx_gz usv_joy_teleop.py teleop_config:=/home/caguero/vrx2023_ws/src/vrx/vrx_gz/config/roboboat.yaml
The gamepad drives the left and right thrusters directly - similar to a differential drive wheeled robot.
- The
L1
button needs to be pressed all the time in addition to the following commands (dead man's switch), - the left stick up/down axis (axis 1) is mapped to the left thruster forward/reverse,
- the right stick up/down axis (axis 3) is mapped to the right thruster forward/reverse
Therefore, pushing both sticks forward should cause the boat to drive forward.