Robobot B: Difference between revisions
Line 5: | Line 5: | ||
This section is intended for users. | This section is intended for users. | ||
[[File:robobot-in-blocks-2024.png | 600px]] | |||
[[File:robobot-design-2024.png | 400px]] | [[File:robobot-design-2024.png | 400px]] | ||
==Overview== | ==Overview== | ||
* [[Robobot architecture]] module description | |||
* Hardware | |||
[[Robobot architecture]] module description | * Electronics | ||
* Software on Raspberry | |||
* [[Raspberry Pi directory structure for Robobot]] | |||
On the Raspberry the main directory and files are: | On the Raspberry the main directory and files are: |
Revision as of 10:30, 22 October 2023
This page is is for development nodes and user description of the simplified version of Robobot
Robobot B description
This section is intended for users.
Overview
- Robobot architecture module description
- Hardware
- Electronics
- Software on Raspberry
- Raspberry Pi directory structure for Robobot
On the Raspberry the main directory and files are:
/home/local/ +-git - Directory for libratyes available from a GIT repository (mostly Teensy/arduino libraries). | +-CLI11 - Directory with command line interface library CLI (from github) +-svn - Directory for software from the subversion repository (Robobot specific software). | +-regbot - Directory for the Teesny software (firmware) this part is called Regbot. | | +-regbot_gui Debug app for Regbot. | | +-regbot The firmware source code. | +-robobot - Directory for the Robobot specific code. | | +-setup Directory with some default configuration files. | | +-raubase The basic Raspberry Pi software for Robobot. | | | +-src Source code | | | +-build Build directory with Makefile | | | | +-log Directory for data-monitoring logfiles | | | CMakeList.txt Directives to generate a Makefile using cmake | | | robot.ini Configuration and calibration file | | +- ip_disp Small app to update the IP address of the Raspberry. | | log_ip_dist.txt Logfile for IP and temperature monotoring | +-log - Directory with logfiles from ip_disp (IP, users and CPU temperature) on_reboot.bash - Script to start applications that should start after a reboot (ip_disp)
Robot software
Firmware on Teensy
Description
Compile tools
Upload to Teensy
Development notes
This section is for development notes.
Software installation Raspberry Pi
Install on Raspberry
Barebone installation (Raspbian GNU/Linux 11 (bullseye) as of July 2023)
- make a bootable SD card
- Make a new user called local and set the group permissions
sudo adduser local gpio
- Install general-purpose development packages
Additional packages
Install the following packages:
libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude telnet ntp ntpdate nmap lsof sudo apt install libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude telnet nmap lsof
and, if available
sudo apt install libcli11-dev
Install command line interface library (if not found by 'apt install libcli11-dev')
cd cd git git clone https://github.com/CLIUtils/CLI11.git
User and network (WiFi)
Connect to DTU Wifi
- use NTP (network time protocol) with DTU network (require ntp and ntpdate packages)
- connect to DTU network without showing secret password
Instructions here Network setup
Enable autostart
Display of IP
Start app to display IP on Regbot display, log CPU temperature and synchronize hostname
Make an on-rebbot script in the home directory
cp ~/svn/robobot/setup/on_reboot.bash ~/
This file is something like:
#!/bin/bash # script to start applications after a reboot # # run the app to show IP of raspberry on the Teensy display. mkdir -p /home/local/svn/log cd /home/local/svn/log # save the last reboot date echo "Rebooted" >> rebootinfo.txt date >> rebootinfo.txt ../robobot/ip_disp/build/ip_disp & # save PID for debugging echo "ip_disp started with PID:" >> rebootinfo.txt pgrep -l ip_disp >> rebootinfo.txt exit 0
Use crontab to run this script at reboot
crontab -e
If asked, select the preferred editor (suggesting nano).
Add this line at the end:
@reboot /home/local/on_reboot.bash
Hostname update
A script updates the Raspberry Pi hostname, with the name in ~/svn/log/robotname. The script rename_host.bash is:
#!/bin/bash hn=`hostname` f="/home/local/svn/log/robotname" if [ -f $f ]; then nn=`cat $f` yy= $(expr length $nn) if [ $yy -gt 2 ]; then if [ $hn != $nn ]; then hostnamectl set-hostname $nn # seems like /etc/hosts is not updated, but /etc/hostname is sed -i "s/$hn/$nn/g" /etc/hosts else echo Same hostname, all is fine. fi fi else echo "File >" $f "< not found." fi
The script needs to be run as root, it is therefore set to run as part of the boot process.
Create the script in /etc/init.d
sudo nano /etc/init.d/host_rename.sh
Enter the following lines into the new file
#!/bin/bash bash /home/local/svn/robobot/setup/rename_host.bash
Make the file executable and add it to run-level 2 (before networking is started)
sudo chmod +x /etc/init.d/host_rename.sh sudo ln -s /etc/init.d/host_rename.sh /etc/rc2.d/S99host_rename
The script is then executed when the Raspberry boots, and if the hostname does not match that of the Teensy, then the hostname is modified.
Robobot base software
To make the initial copy from the repository
cd cd svn svn checkout svn://repos.gbar.dtu.dk/jcan/robobot
To update with a new version
cd cd svn/robobot svn update
Teensy
Software tool chain installation
Old Robobot pages
robobot an extension to Regbot with a raspberry pi for more extended missions, but uses mission code in Teensy, like Regbot.