This documentation provides an overview of the programming details and specifications for the Jacobi Robot project. The project involves reviving the Jacobi robot. Jacobi has omnidirectional 4WD wheels as locomotion, which can be controlled using a keyboard. The robot will be powered by a PC running ROS (Robot Operating System) and will communicate with a microcontroller (STM32 Nucleo) to execute motor commands.
- 4WD omni-directional robot with wheels for movement in all directions.
- The robot is controlled via a PC running ROS.
- The PC serves as the main functional unit for ROS operations.
- The microcontroller used is STM32 Nucleo, which communicates with the PC.
- The robot is powered by two LiPo batteries:
- One 14.8V battery powers the PC.
- One 22.4V battery powers the STM32 Nucleo.
- Ubuntu 20.04 LTS
- ROS Noetic
- Clone this repository (for more information, please visit this link and watch the tutorial)
git clone https://[PAT]:x-oauth-basic@github.com/owenthe10x/TUBES-Dagoz.git
- Create the workspace
$ cd jacobi-robot_ws
$ catkin_make
- The PC on the robot is run remotely using a laptop with SSH (Secure Shell).
- The PC on the robot is connected to WiFi Dagozilla then use a separate laptop that is also connected to WiFi Dagozilla.
- The laptop connected to WiFi Dagozilla is used to find the IP address of the robot PC using 192.168.1.1 (default gateway) in the browser. Password: admin
- Use SSH on the laptop to access the PC robot terminal with the command:
ssh -XC <username>@<ip_addr>
-
Example:
The username of the robot PC is "shani" and the ip address is 192.168.1.104, then the command is
ssh -XC shani@192.168.1.104
- Enter the robot PC password and the laptop is successfully connected to the robot PC terminal.
- Change directory to jacobi-robot_ws and run this command:
$ source devel/setup.bash # bash terminal
# or
$ source devel/setup.zsh # zsh terminal
- Launch the program using the command:
$ roslaunch robot_launch jacobi_routine.launch
- Function: The ROS node on the PC publishes motor commands to the STM32 Nucleo (subscriber) using PWM values for each motor.
- PWM range: -1.0 ≤ PWM ≤ 1.0, where 1.0 represents maximum motor power, and -1.0 represents maximum power in the opposite direction.
- Positive PWM indicates clockwise rotation relative to the observer.
- To prevent the robot from moving too fast, the minimum and maximum PWM values used are -0.1 and 0.1, respectively.
- Function: Same as the previous one but used for testing and debugging.
- Function: Getting the keyboard input by the user
- Firly Hafiz Syahreza (Dagozilla ITB Programming Intern)
- Muhammad Kamal (Dagozilla ITB Programming Intern)
- Owen Tobias Sinurat (Dagozilla ITB Programming Intern)
- Raden Rafly Hanggaraksa Budiarto (Dagozilla ITB Programming Intern)
- Ulivia Embun Tresna Wardani (Dagozilla ITB Programming Intern)
- "ROS Wiki". ROS Community. 23 May 2023.
- "ROS Overview Day 4 Programming Internship". Dagozilla. 23 May 2023.
- "ROS Tutorials Python - Beginner". Emil Vidmark. 23 May 2023.
- "ROS Tutorials - Beginner". Emil Vidmark. 23 May 2023.
- to be added....