This repository was developed as part of an Electronic Engineering Bachelor Thesis. The report serves as a design and maintainance document and contains useful information and diagrams explaining the different software mechanisms.
After cloning the repository, run the following command to ignore changes to the workspace configs:
bash scripts/git/ignore_local_config_file_changes.bash
The project contains 6 ROS2 packages:
- twig
- The main entry point of the robot. The other packages in the project should not be used directly, but rather be included in launchfiles from this package.
- twig_description
- Contains the URDF for the robot
- twig_servo
- Contains the moveit_servo note that allows jogging individual joints through moveit's planning interface.
- twig_teleop
- Contains two separate nodes that turn joy messages into useful commands for other nodes.
- twig_moveit_config
- A moveit config package generated by the Moveit Setup Assistant. It handles kinematics, path planning, collision avoidance and has an action server for requesting target positions.
- twig_hardware
- Contains the ros2_control hardware interfaces for the robot, as well as a diagnostics node for debugging that does not use ros2_control.
bash scripts/ros2/purge.bash
bash scripts/ros2/install-dependencies.bash
bash scripts/ros2/build-packages.bash
The project contains 3 different launch configurations.
- Normal Operation
- Requires hardware
- Based on ros2_control and MoveIt
- Contains
- collision, endpoint and singularity avoidance
- Transform publishers
- PID controllers
- Diagnostics
- Requires hardware
- Contains
- A single simple hardware node that publishes all sensor data and forwards all commands directly to servos.
- A teleop node to transform joy messages into servo speed and relay state commands
- ROS2 Development
- Does not require hardware
- Identical to Normal Operation
- Replaces the hardware interfaces with Mocked Components from ros2_control
On the robot
ros2 launch twig robot_moveit.launch.py
ros2 launch twig servo_teleop.launch.py
On the GUI pc
ros2 launch twig joy.launch.py
ros2 launch twig foxglove.launch.py
and optionally on the GUI pc
ros2 launch twig rviz.launch.py
On the robot
ros2 launch twig diagnostics.launch.py
On the GUI pc
ros2 launch twig joy.launch.py
ros2 launch twig foxglove.launch.py
ros2 launch twig moveit_demo.launch.py
Publish to /twig_joy using the foxglove Joystick node.
For development, open the repository in the ROS2 devcontainer, and use the ROS2 task buttons in the status bar to install dependencies and build the project. While in the devcontainer, use the ROS2 Development configuration to run the project and visualize the robots physical state in RVIz. For more detailed information surrounding the development environment, refer to the original template by athackst.
In Command Palette:
Dev Containers: Reopen in Container
Tasks: Run Task
ROS2: Install Dependencies
ROS2: Build Packages
ROS2: Run Package
When citing software, docs and configuration:
@online{
author = "Knut Ola Nøsen",
title = "Subsea 3DOF Robotic Manipulator",
url = "https://github.com/nosknut/bachelor-thesis/tree/submitted-with-report",
urldate = "2024-05-20"
}