The USYD RobotX Team's submission into the 2019 Virtual RobotX Competition
https://bitbucket.org/osrf/vrx/wiki/documentation
This software requires you to have ros melodic and the vrx simulation. It is reccomended to install the full-desktop version of ROS. You will need Ubuntu Bionic or some derivative.
To Get started please have an up to date version of the vrx simulation installed. Please install it from source using the instructions here.
To install run these commands
cd ~/vrx_ws/src
git clone https://github.com/USYD-RowBot/usyd_vrx.git
cd ..
catkin_make
echo "source ~/vrx_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
Two other prerequisites, hector-gazebo-plugins
and pointcloud-to-laserscan
also need to be installed. A shell script in vrx_deploy can be used to do this.
./vrx_deploy/installEverything.sh
And you should be ready to go!
To launch the base system without sensors or course elements:
roslaunch vrx_bringup barebones.launch
To launch with sensors and obstacles:
roslaunch vrx_bringup sensored_boat.launch
To launch a competition:
roslaunch vrx_tasks runtask.launch task:=<task> gui:=<true | false>
Where task may be one of:
- dock
- navigation_task
- perception_task
- sandisland
- scan_and_dock
- station_keeping
- wayfinding
To launch with mapping there are two ways.
- Launch 2 nodes (reccomended)
roslaunch vrx_bringup sensored_boat.launch
And in a seperate tab:
roslaunch vrx_navigation lidar_node.launch
- Launch all in one file.
roslaunch vrx_bringup mapping_bringup.launch
Prequisites:
sudo apt-get install ros-melodic-global-planner
Launch in separate tabs:
roslaunch vrx_bringup sensored_boat.launch
roslaunch vrx_control course_controller.launch
With these two nodes you can publish a message to /cmd_course of message type vrx_msgs/Course, and it will try to follow direction. e.g :
rostopic pub -r 10 /cmd_course vrx_msgs/Course '{speed: 1.0, yaw: 0.0}'
roslaunch vrx_bringup sensored_boat.launch
roslaunch vrx_control control.launch
This launches the Course Controller and Waypoint Follower, the latter of which listens for a vrx_msgs/WaypointRoute message on the topic /waypoints_cmd. When it receives a WaypointRoute message, it will follow the path until complete.
To test the docking program, run the following in separate terminals:
roslaunch vrx_bringup sensored_boat.launch override_location:=true
roslaunch vrx_control control.launch
roslaunch vrx_navigation docking.launch
The WAMV will spawn in front of the dock. To attempt a docking procedure:
rosrun vrx_navigation tmp_docking_client.py
This will generate an actionlib client to send a goal to the docking program. The WAMV should enter the dock, hold, then return to where it was when you started the docking client. To view feedback on the progress of the docking procedure, you can use the following:
rostopic echo /wamv/docking/feedback
Wherever you see
roslaunch vrx_bringup sensored_boat.launch
, you can replace it with
roslaunch vrx_bringup sensored_boat.launch gui:=false
and it will run the simulation with only RVIZ as a gui, running no Gazebo gui. This should reduce the CPU load of running the simulation.
To use a demonstrate a path planner with the waypoint_follower node, run these in seperate tabs along with the previous nodes (without simple waypoints).
Launching Rviz
roslaunch vrx_bringup rviz.launch
Launch the Lidar Node
roslaunch vrx_navigation lidar_node.launch
Now you should be able to set a 2d goal pose through rviz and the wam_v will attempt to follow that path.
- world-stationary frames: map
- robot centre: base_link
- MOST DIRECT: post message of type vrx_msgs WaypointRoute to /waypoints_cmd
- WITH VISUALISATION: pass message to wamv/waypoints (path to waypoints) and it will also convert to nav markers for RVIZ.
- /request_waypoints is pinged when no waypoints queued
- the location of the bot is wamv/odom not wamv/base_link.