The Remotely Operated underwater Vehicle (ROV) team was founded as a committee within Purdue IEEE Student Organization in 2008 with a small but dedicated group of five students. Today, the team's mission is to foster technical and professional skills of its members by designing, constructing, and testing an innovative underwater vehicle to compete in the MATE Center International ROV Competition.
The ROV team is comprised of both engineering and non-engineering students working collaboratively on a hands-on project from the vehicle's design and prototyping phase, to its construction and testing, and ultimately competition performance. The team fosters a multidisciplinary spirit so that the best ideas may come forth. In addition to the mission, the MATE competition also requires a professional presentation, public display poster, and technical documentation.
Because the vehicle requires excellence in design, construction, and presentation, the team members are themselves multidisciplinary collaborators and experts in their own discipline. Members learn to communicate clearly with each other and with clients while managing their own project responsibilities. Through various outreach events during the year, the team aims to inspire future generations to enter STEM (Science, Technology, Engineering, and Mathematics) fields.
For more current and past information view the links to the left or contact us as rov@purdueieee.org. The ROV team will be accepting new members at the beginning of each semester.
X17 Surface contains the frontend and backend processes for the ROV. For the frontend, the surface (computer) connects the user interface with the cameras and gamepad, allowing us to display the camera steams, controls, and readouts needed to successfully pilot the ROV. For the backend, the surface sends and receives information to and from the Raspberry Pi inside of the ROV, allows us to send outputs to the thrusters and tools in order to fully operate the ROV.
Shown below is a diagram showing the X17 system architecture. Each white box represents a ROS node and each arrow represents a topic which is published and subscribed to.
Note: Downloading Qt as an application needs over 20Gb. If you just want to use QtDesigner, you can download a standalone version here: https://build-system.fman.io/qt-designer-download
To see all of the dependenices used for this system, navigate to X17-Surface > requirements.txt.
This file is generated by running the following command while in the directory:
pipreqs X17-Surface
To install all of the dependancies for the frontend, you can run the following command:
pip install -r requirements.txt
All of the information needed for use of the X17 ROV can be found below.
For the locally run nodes, the launching the frontend should launch the frontend ROS nodes
To launch the pi nodes, run the following command:
ros2 launch rov_launch run_rov_launch.xml
The user interface can be launched by running the main file in X17Surface > ui > src
This will automatically launch and bring up the camera streams
Upon closing the user interface, these processes will be killed
<<<<<<< HEAD
ros2 run ui runner.py
=======
eb
Follow these steps to start using QtDesigner:
Run the following command in the terminal to convert your .ui file to a .py file:
pyuic5 -o <python-filename>.py <qtdesigner-filename>.ui
ssh pi@<rov-ip-address>
To launch the camera streams, run one of the following commands while ssh'd into the pi. You will have to change the host to match the IP address of your computer. NOTE: running a command will begin a process timer. If you want to launch and receive multiple streams you will have to ssh into multiple terminal windows.
Stream 1 (Front-facing camera)
gst-launch-1.0 -v v4l2src device=/dev/video8 ! video/x-h264, width=1920,height=1080! h264parse ! queue ! rtph264pay config-interval=10 pt=96 ! udpsink host=10.0.0.103 port=5600 sync=false buffer-size=1048576
Stream 2 (Downward-facing camera)
gst-launch-1.0 -v v4l2src device=/dev/video4 ! video/x-h264, width=1920,height=1080! h264parse ! queue ! rtph264pay config-interval=10 pt=96 ! udpsink host=10.0.0.103 port=5601 sync=false buffer-size=1048576
Stream 3 (Bandicam)
gst-launch-1.0 -v v4l2src device=/dev/video0 ! image/jpeg, width=1920,height=1080, framerate=30/1 ! jpegparse ! queue max-size-buffers=100 ! rtpjpegpay ! udpsink host=10.0.0.101 port=5602 sync=false buffer-size=1048576
To receive the camera streams, run the corresponding command in a new terminal (this terminal should not be ssh'd into the pi) NOTE: The port for a receiving command should match the port from the corresponding launch command.
Stream 1 (Front-facing camera)
gst-launch-1.0 udpsrc port=5600 ! application/x-rtp ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false
Stream 2 (Downward-facing camera)
gst-launch-1.0 udpsrc port=5601 ! application/x-rtp ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false
Stream 3 (Bandicam)
gst-launch-1.0 -v v4l2src device=/dev/video0 ! image/jpeg, width=1920,height=1080, framerate=30/1 ! jpegparse ! queue max-size-buffers=100 ! rtpjpegpay ! udpsink host=10.0.0.101 port=5602 sync=false buffer-size=1048576
\ The above image is the xbox controller used as the gamepad for the ROV.
The gamepad is used to control linear and angular movement of the ROV as well as the movement mode that it is in. The gamepad is also used to control the solenoids and other tools located on the ROV.
The ROV is capable of movement in the x,y,z linear directions as well as the x,y,z angular directions also called roll, pitch, and yaw respectively.
Linear x: Move the left stick (LS) up for positive x movement and down for negative x movement.\ Linear y: Move the left stick (LS) left for positive y movement and right for negative y movement.\ Linear z: Hold down the right trigger (RT) for positive z movement and the left trigger (LT) for negative z movement.
Angular x (roll): Hold down the right bumper (RB) for positive x roll and the left bumper (LB) for negative x roll.\ Angular y (pitch): Move the right stick (RS) up for positive y pitch and the right stick (RS) down for negative y pitch.\ Angular z (yaw): Move the right stick (RS) left for positive z yaw and the left stick (LS) right for positive z yaw.
Tool 1: Press button A\ Tool 2: Press button B\ Tool 3: Press button Y\ Tool 4: Press button X
For more documentation on using X17 Surface, visit the Purdue ROV BookStack.
X17 Software has been a collaborative effort involving the dedication and contributions of many individuals, including:
For any inquires about Purdue ROV, please send an email to rov@purdueieee.org
For more information on MATE ROV, visit https://materovcompetition.org/
To see updates about Purdue ROV, follow us on social media: