The main objective/scope for this repository is to manage the part of the software (and parameter settings)
that is unique for this Pet Mark VIII (eight) robot. A.k.a "The Dashboard". ROS repository in the https://github.com/Pet-Series Git-Organizations. Containing multiply ROS1/ROS2-packages. |
- Manually operate the various robots (using the joystick).
...or any other ROS1/ROS2 bot controlled via topic cmd_vel (command velocity). - Launch ROS2 missions (using built in 7" touch display, keyboard and mouse)
- Patch/tune parameters via trim-potentiometers (as various PID-systems)
- Monitor in real time robot data (using RViz and RQT).
- Generic GPIO-connected LED's (most for fun🤪).
- Generic GPIO-connected buttons (trig, launch ROS2-tasks...)
- Last minute debugging/patching😇 using the dashboard as developing terminal (using ssh, xRDP or VisualCode)
The goul with our work is "It should be fun" and "The journey is the goal".
History: Pet-Mk.VIII early iterationsExterior Done |
Interior Done |
- Raspberry Pi 4 (8GB)
- built in 7" touch display
- wireless keyboard and mouse
- WiFi to communicate with robots
- Ubuntu(64-bit) is used as operating system.
- Docker to run Image/Container with Ubuntu/ROS2
- ROS2 (Robot Operating System 2) is used as middleware.
Using Analog/Digital Converter ADS1115 via I2C (3 of 4 channels in use)
- Using I2C adr.=
0x48
- 3 directions joystick with each a 10K potentiometer.
For more information see repo https://github.com/Pet-Series/pet_ros2_joystick_pkg
Wiring diagram |
Node graph |
Using Analog/Digital Converter ADS1115 via I2C (3 of 4 channels in use)
- Using I2C adr.=
0x49
- 3x 10K Potentiometers For more information see pkg https://github.com/Pet-Series/Pet-Mk-VIII/tree/main/pet_mk_viii
Wiring diagram |
Node graph |
Using direct GPIO-pins.
- 1x button/switch as "main switch" Using GPIO22 with build in GPIO-'pull down resistor'.
- 1x button/switch on top of joystick Using GPIO12 with build in GPIO-'pull up resistor'.
For more information see pkg https://github.com/Pet-Series/Pet-Mk-VIII/tree/main/pet_mk_viii
Wiring diagram |
Node graph |
Using direct GPIO-pins
- 5x LED with in series with a 1K resistor GPIO05 <- LED3 {right one} GPIO06 <- LED2 GPIO13 <- LED1 GPIO19 <- LED0 {left one} For more information see pkg https://github.com/Pet-Series/Pet-Mk-VIII/tree/main/pet_mk_viii
Wiring diagram |
Using INA219 sensor via I2C-bus to measure internal voltage & current status for the Dashboard.
For more information see repo https://github.com/Pet-Series/pet_ros2_currentsensor_ina219_pkg
Wiring diagram |
Do some boring installation stuff...
Install & setup docker stuff...
Ubuntu Shell - Clone repositories
~$ mkdir -p ~/ws_ros2/src
~$ cd ~/ws_ros2/src
~/ws_ros2/src$ git clone https://github.com/Pet-Series/Pet-Mk-VIII
...
~/ws_ros2/src$ git clone https://github.com/Pet-Series/pet_ros2_joystick_pkg.git
...
~/ws_ros2/src$ git clone https://github.com/Pet-Series/pet_ros2_currentsensor_ina219_pkg.git
...
~/ws_ros2/src$
I don't have ROS2 installed directly on my host. I chose not to install ROS2 directly on the host/SCB/RPi, but to run ROS2 via Docker - Therfore must this step be done from within an interactive ROS2-Docker container.
Ubuntu Shell - Build/Initiate ROS2 Work Space
~/ws_ros2/src$ cd ..
~/ws_ros2$
~/ws_ros2$ colcon build --symlink-install
~/ws_ros2$ source /opt/ros/humble/setup.bash
~/ws_ros2$ source ./install/setup.bash
Launch individual nodes one by one...
~/ws_ros2$ ros2 run pet_mk_viii_joystick joystick_node
~/ws_ros2$ ros2 run pet_mk_viii pet_buttons_node.py
~/ws_ros2$ ros2 launch pet_mk_viii panel_led_0..4_subscribers.launch.py
~/ws_ros2$ ros2 run pet_ros2_battery_state_pkg pet_battery_state_ina219_node
Or by one launch file...
~/ws_ros2$ ros2 launch pet_mk_viii pet-mk-viii-bringup.launch.py
...
~/ws_ros2/src$