We are pleased to announce the release of version 1.5 of the VRX simulation platform! The VRX platform is a virtual environment built in Gazebo, designed for accelerating development of unmanned surface vehicles. It also serves as the virtual “venue” for the VRX 2022 Competition , a virtual competition closely coordinated with RobotX 2022 .
This release features all six VRX Competition 2022 tasks with working examples. Please check out our new Release 1.5 Highlight Video for a quick tour.
Some notable additions include:
As a reminder, VRX 2022 is open to any student team affiliated with an educational institution. Please see our website and Wiki for an overview of the event and key dates.
What’s coming next :
VRX Release and Competition Tutorials – now available !
Registration Opens - October 2021
VRX Introduction at RoboNation Community Hour - October 2021
Workshop & Kickoff – November 2021
Competition Phase 1 – December 2021
Competition Phase 2 – March 2022
Finals – April 2022
Please do not hesitate to reach out to us with any questions you may have.
Sincerely,
The VRX Technical Team: Brian, Carlos, Carson, Jessica and Michael
5 Likes
So the sound track comes with the installation, right? How else are we supposed to prove we’re having fun.
2 Likes
glpuga
September 13, 2021, 9:00pm
3
I loved the ball shooter
Looks like plenty of fun!
1 Like
arjo129
September 14, 2021, 2:28am
4
Ah yes - The wildlife. An important aspect of the physical RobotX 2018 competition.
russkel
September 23, 2021, 12:34am
6
For those interested in using ROS2 there is a PR with a ROS2 version of VRX, platypus and all:
osrf:master
← davidorchansky:foxy
opened 03:41PM - 22 Sep 21 UTC
### Migration Notes
Migration was done using ROS 2 Foxy and Gazebo 11.
**K… nown limitations and issues:**
1) Files not migrated yet:
vrx_gazebo/src/vrx_gazebo/compliance.py
vrx_gazebo/src/vrx_gazebo/configure_wamv.py
vrx_gazebo/src/vrx_gazebo/generate_worlds.py
vrx_gazebo/src/vrx_gazebo/utils.py
2) When building vrx_gazebo for the first time, the following error is raised:
> package not found: "package 'vrx_gazebo' not found, searching:
> [...] when processing file: worlds/...
This error is likely to be happening as the xacro files contain references to other xacro files from the vrx_gazebo package which haven't been generated.
A workaround is to comment out the xacro_add_files(...) section in vrx_gazebo/CMakeLists.txt file, build vrx_gazebo, uncomment xacro_add_files section and then build vrx_gazebo again.
3) In file vrx_gazebo/launch/usv_keydrive.launch, the following parameter was added to the node configuration: launch-prefix="xterm -e"
`<node pkg="teleop_twist_keyboard" exec="teleop_twist_keyboard" name="teleop_twist_keyboard" output="screen" launch-prefix="xterm -e">`
This is a workaround to an error that is raised during the launch process: (25, 'Inappropriate ioctl for device')
The launch mechanism has changed with respect to ROS 1, and it seems that it is no longer possible to capture the keyboard input for a node initiated from a launch file (although it is possible to achieve this when running a node with the 'ros2 run ...' command).
This workaround allows the user to launch the teleoperation nodes and to control the wamv with keyboard input. The drawback is that this additional parameter opens two new separate terminals that listen for user input.
4) In file vrx_gazebo/launch/sandisland.launch, when the non_competition_mode parameter is set to "false" the wamv model is not launched properly.
> <arg name="non_competition_mode" default="false"/>
Further investigation is required.
**Additional migration notes**
During the migration work, I tried to maintain all the existing logic and syntax and only make the necessary changes to port the functionality to the ROS 2 equivalent. However, there were a few exceptions where additional changes were needed (see list below).
1) In file vrx_gazebo/include/vrx_gazebo/scan_dock_scoring_plugin.hh
I had to remove sections that referenced older versions of gazebo as there was no means to declare variable containSub.
2) Uses of ROS_*_NAMED were replaced with RCLCPP_* without the "_NAMED" as there is no equivalent in ROS 2 (e.g. ROS_INFO_NAMED was replaced with RCLCPP_INFO)
3) Calls to ros::isInitialized() were changed to rclcpp::ok()
4) In file "vrx_gazebo/src/gui_task_widget.cc", the extra parameters were removed from the ros::init call, as I couldn't find an equivalent set of parameters for ROS 2. For instance:
`ros::init(argc, argv, "gazebo", ros::init_options::NoSigintHandler | ros::init_options::AnonymousName);`
was replaced with:
`rclcpp::init(argc, argv);`
5) Removed "XACRO_INORDER" definitions from CMakeLists.txt files and uses of "--inoder" from launch files as this is the default option since ROS Melodic.
6) The location of some of the mesh files was changed due to gazebo not being able to find them. Perhaps there is a better way to resolve this, I'm not sure. For example:
`<mesh filename="package://wamv_description/models/engine/mesh/engine.dae"/>`
was changed to:
`<mesh filename="file://$(find wamv_description)/models/engine/mesh/engine.dae"/>`
7) In file vrx_gazebo/nodes/twist2thrust.py, the use of method 'get_caller_id()' was removed as I was unable to find an equivalent method in ROS 2.
8) The light_buoy_plugin (file /vrx_gazebo/src/light_buoy_plugin.cc) was attempting to subscribe to a topic using an empty topic name, which generated an exception.
A condition was added to prevent subscribing to the topic when the topic name is empty.
**Note to maintainers:** I would like to target the pull request to a new branch (e.g. foxy or ros2) but I'm not able to set the target to a branch that does not exist.
1 Like