This project is currently a work in progress, the goal is to implement forward and inverse kinematics in a 4-dof using calculations and code written by hand.
- Ubuntu 24.04 64-bit (bare metal, VM, or WSL)
- Quad core Intel i5 or equivalent
- 4-8GB of ram or more
- Dedicated GPU with at least 1GB VRAM (Highly reccomended)
- It's not reccomended to run both Gazebo and Rviz with GUI if using WSL due to performance bottlenecks
If using WSL, make sure OpenGL is rendering using your GPU, these commands may help
echo 'export GALLIUM_DRIVER=d3d12' >> ~/.bashrc
echo 'export MESA_D3D12_DEFAULT_ADAPTER_NAME="NVIDIA"' >> ~/.bashrcThen either shutdown wsl or "source ~/.bashrc" and check that the GPU shows up in nvidia-smi that OpenGL is configured to use it
nvidia-smi
glxinfo | grep "OpenGL renderer"
Run this in the directory you want to use for this project
mkdir arm_ws
cd arm_ws
git clone [link-to-this-repo]
Instructions to install ROS2 deb packages on Ubuntu (Make sure you have ROS2 Jazzy installed)
LINK: ROS2 Jazzy Installation
Run this command on every new shell to have access to ROS 2 commands
source /opt/ros/jazzy/setup.bashOr copy/paste this line into your CLI, everytime you open a new shell this command will run automatically
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrcInstall the build tool for ROS2
sudo apt install python3-colcon-common-extensionsInstall Gazebo
sudo apt-get install ros-${ROS_DISTRO}-ros-gzRun this command inside arm_ws directory to compile the workspace packages
colcon buildRun this command inside the workspace directory to make ROS aware of the newly compiled packages
source install/setup.bashRun this command inside the workspace directory to launch packages
ros2 launch [package-name] [launch-file.py]Example for launching Rviz from the bringup package:
ros2 launch arm_bringup arm_rviz_launch.pyAI was used to plan the overall file structure of the project and to verify that the codebase is following the best software engineering practices. AI was also used to expedite the debugging process, but all code was written by hand (besides some ros boilerplate). Model used: Anthropic's Claude Opus 4.8 High (web)
All sdf and urdf files were written using online documentation, sdformat.org was the main resource used for the sdf files ( sdformat-website). Official ROS2 docs were used to create the urdf files (ros2-urdf-docs).