A ROS 2 Jazzy workspace featuring a 4-DOF robotic arm simulated in Gazebo Harmonic. This project includes a custom Kinematics engine (FK/IK) and a Gazebo-integrated control system.
I plan on testing reinforcement learning in this project to pick the ball up and put it down using the robotic arm
People are free to use the project as its just for learning
- PROJECT STRUCTURE
arm_ws/
├── src/
│ ├── config/ # controllers.yaml
│ ├── description/ # arm.urdf.xacro
│ ├── launch/ # sim.launch.py
│ ├── scripts/ # arm_movement.py, kinematics.py
│ └── worlds/ # world.sdf (Target ball included)
├── CMakeLists.txt
└── package.xml
- INSTALLATION
Dependencies:
sudo apt install ros-jazzy-ros-gz \
ros-jazzy-ros2-control \
ros-jazzy-ros2-controllers \
ros-jazzy-gz-ros2-control \
ros-jazzy-controller-manager \
ros-jazzy-joint-state-broadcaster \
ros-jazzy-joint-trajectory-controller \
ros-jazzy-robot-state-publisher \
ros-jazzy-joint-state-publisher \
ros-jazzy-xacro \
ros-jazzy-urdf \
ros-jazzy-cv-bridge \
python3-opencv \
Build:
$ cd ~/arm_rl
$ colcon build --symlink-install
$ source install/setup.bash
- USAGE
#Launch Simulation:
ros2 launch arm_ws sim.launch.py
#Running the Movement Node(in new terminal):
source install/setup.bash
ros2 run arm_ws arm_movement.py
- KINEMATICS ENGINE (kinematics.py)
- Forward Kinematics (FK): Calculates XYZ from joint angles.
- Inverse Kinematics (IK): Solves joint angles from XYZ.
- Method: Jacobian Pseudo-inverse (Numerical Solver).
- Sensor Integration
Added Sensors to the simulation now camera is there 0.3M in front of the arm for openCV and ML purposes