diff --git a/fetch_and_upload_firmware.sh b/fetch_and_upload_firmware.sh new file mode 100755 index 0000000..e3318f9 --- /dev/null +++ b/fetch_and_upload_firmware.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +source /boot/openmower/mower_config.txt + +# remove old firmware +rm -rf firmware_download +mkdir firmware_download +cd firmware_download + +# Download the latest firmware +echo "Fetching Firmware" +wget https://github.com/ClemensElflein/OpenMower/releases/download/latest/firmware.zip + +unzip firmware.zip + +cd .. + +echo "Flashing Firmware: ./firmware_download/firmware/$OM_HARDWARE_VERSION/firmware.elf" +sudo ./upload_firmware.sh ./firmware_download/firmware/$OM_HARDWARE_VERSION/firmware.elf diff --git a/start_openocd.sh b/start_openocd.sh new file mode 100755 index 0000000..f5697e1 --- /dev/null +++ b/start_openocd.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# This script starts OpenOCD on the pi and allows external connections. +# This way you can use VS code to remotely debug the Pico code. + +echo "10" > /sys/class/gpio/export +echo "out" > /sys/class/gpio/gpio10/direction +echo "1" > /sys/class/gpio/gpio10/value +openocd -f interface/raspberrypi-swd.cfg -f target/rp2040.cfg -c "bindto 0.0.0.0" diff --git a/start_ros-debug_bash.sh b/start_ros-debug_bash.sh new file mode 100755 index 0000000..1a42ace --- /dev/null +++ b/start_ros-debug_bash.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Starts a bash in the container. +# Use this for ROS specific commands (e.g. rostopic echo) + +sudo podman exec -it openmower-debug /openmower_entrypoint.sh ${@:-/bin/bash} diff --git a/start_ros_bash.sh b/start_ros_bash.sh new file mode 100755 index 0000000..6b6bec1 --- /dev/null +++ b/start_ros_bash.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Starts a bash in the container. +# Use this for ROS specific commands (e.g. rostopic echo) + +sudo podman exec -it openmower /openmower_entrypoint.sh ${@:-/bin/bash} diff --git a/upload_firmware.sh b/upload_firmware.sh new file mode 100755 index 0000000..73635ac --- /dev/null +++ b/upload_firmware.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# This script uploads new firmware to the Pico. +# You need to provide the .elf file, not the .uf2 +# run as root! + +echo "10" > /sys/class/gpio/export +echo "out" > /sys/class/gpio/gpio10/direction +echo "1" > /sys/class/gpio/gpio10/value +openocd -f interface/raspberrypi-swd.cfg -f target/rp2040.cfg -c "program $1 verify reset exit" diff --git a/xesc2tcp.sh b/xesc2tcp.sh new file mode 100755 index 0000000..dbcf81c --- /dev/null +++ b/xesc2tcp.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +PORT=1234 + +declare -A DEVICE_MAP=( + ["left"]="/dev/ttyAMA4" + ["right"]="/dev/ttyAMA2" + ["mower"]="/dev/ttyAMA3" +) + +if [[ -z $1 ]]; then + echo "Error: Argument required." + exit 1 +fi + +if [[ -z ${DEVICE_MAP[$1]} ]]; then + echo "Error: Invalid argument. Valid values are: left, right, mower." + exit 1 +fi + +DEVICE=${DEVICE_MAP[$1]} + +running=true +trap 'echo "Interrupt received! Stopping..."; running=false' SIGINT + +echo "Running socat for device: ${DEVICE} on port: ${PORT}..." + +while $running; do + sudo socat TCP-LISTEN:${PORT},reuseaddr,fork FILE:${DEVICE},b115200,cs8,raw,echo=0 || true +done