This is the main working repository for the USV (Unmanned Surface Vehicle) VantTec Platform.
- usv_comms: ROS package that allows the USV software to interface with the Digi XBee Hardware for communication with the ground control station.
- usv_control: ROS package for the implementation of the control algorithms for the USV.
- usv_master: ROS package containing the master node for the USV ROS software.
- usv_missions: ROS package where the algorithms to solve the different RoboBoat 2024 challenges are implemented.
- usv_perception: ROS package for the perception algorithms used in the USV.
- sbg_driver: ROS package that allows the USV to interface with SBG's IMU.
- usv_libs: Control library.
- velodyne: ROS package for the Velodyne LIDAR.
- zed_ros_wrapper: ROS package for the Stereolabs ZED Camera.
Enter the following commands into your Ubuntu terminal:
# Clone repository and its submodules
cd
git clone --recurse-submodules http://github.com/vanttec/vanttec_usv.git
# Build docker container
cd ~/vanttec_usv
docker build -t vtec_rb25 .
# Run container
usv start
NOTE: Add the scripts repository to the ${PATH} variable in ~/.bashrc
export PATH="$PATH":~/vanttec_usv/scripts
# Go to repository root
cd {vanttec_usv path}
# Build usv_interfaces package
colcon build --packages-select usv_interfaces
# Set environment variables with install/setup.bash file
source install/setup.bash
# Create record about submodules in .git/config file in workspace root
git submodule init
git submodule update
# Change directory to usv_libs from usv_control package and create submodules
cd vanttec_usv/src/usv_control/libs/usv_libs
git submodule init
git submodule update
- Nvidia CUDA
- ZED SDK
- Gazebo Sim Garden
- TensorRT
- https://docs.nvidia.com/deeplearning/tensorrt/quick-start-guide/index.html
- Other dependencies specified in errors while building
- Change config file to:
- ['xbee0', '0013A20041CF8FE6', 'STATION_XBEE']
- ['xbee1', '0013A20041CF8F96', 'BOAT_XBEE']
- Do launch files for
Network 1: (USV)
export ROS_DOMAIN_ID=50; ros2 launch ros2_xbee_bridge xbee_bridge.launch.py dev:=/dev/ttyUSB0 namespace:=xbee0
export ROS_DOMAIN_ID=50; ros2 topic pub /xbee1/msg1 std_msgs/msg/String "data: 'Hello from id 50 huhh'"
Network 2: (OGS)
export ROS_DOMAIN_ID=51; ros2 launch ros2_xbee_bridge xbee_bridge.launch.py dev:=/dev/ttyUSB1 namespace:=xbee1
export ROS_DOMAIN_ID=51; ros2 topic echo /intra_comms/xbee0/msg1 std_msgs/msg/String
NOTE: If found similar issue to "xmlrpc.client.Fault: <Fault 1: "<class 'RuntimeError'>:!rclpy.ok()">" while running topic echo: Just restart ros daemon
NOTE: Extra dependencies:
# To install dependencies automatically:
rosdep install --from-paths src -y --ignore-src
sudo apt-get install libpcap-dev libgeographic-dev ros-humble-perception-pcl ros-humble-pcl-msgs ros-humble-vision-opencv ros-humble-xacro ros-humble-tf-transformations
sudo add-apt-repository ppa:borglab/gtsam-release-4.1
sudo apt install libgtsam-dev libgtsam-unstable-dev
Run mission #2:
ros2 launch usv_control usv_control_sim_launch.py
ros2 launch usv_missions obstacle_launch.py
ros2 run usv_utils obstacle_viewer_node
ros2 run usv_control obstacle_avoidance_node
ros2 run usv_missions mission_handler_node
Move the boat around:
ros2 launch usv_control usv_control_sim_launch.py
ros2 launch usv_control teleop_launch.py