Robobot: Difference between revisions

From Rsewiki
No edit summary
 
(134 intermediate revisions by the same user not shown)
Line 1: Line 1:
This page is for ROBOBOT, an extension of REGBOT with a raspberry pi and three wheels.
This page is for ROBOBOT, an extension of REGBOT with a raspberry pi and three wheels.


[[File:onshape-view.png|400px]]  
<!--[[File:onshape-view.png|400px]] -->
[[File:robobot_v5.png|400px]]  
[[File:robobot_v5.png|400px]]  
[[File:melina_b.jpg|250px]]
[[File:model-black.jpg | 450px]]


Figure 1. Robobot, The robot is a 3D-printed box with wheels and some electronics.
The third, fourth and fifth generations are shown here.
The 3D printed parts can be found here https://cad.onshape.com/documents/fef8699fcafb8aea780c8981/w/ce38e7fdd6cf8533b65e2c3c/e/4792e876b254f8e35059f863


Figure 1. Robobot (V4 - left and V5 right), - see drawing https://cad.onshape.com/documents/97c36fb21a7a858c57c0af9f/w/0d867586bc28d7a9194d7ff3/e/ca0f539fa3eee3cfe0ed4130 and https://cad.onshape.com/documents/97c36fb21a7a858c57c0af9f/w/0d867586bc28d7a9194d7ff3/e/432d56e456affc4edca37317. The camera should be able to see the floor about 105mm in front of the robot (V4 robot).
== Overview ==
 
Note: Not valid (mostly) for the 2024 version of the robot
 
===hardware ===
 
 
ROBOBOT is based on a navigation box with a line sensor (Edge sensor), an IR distance sensor and possibly some servos, all controlled by a microprocessor.
For more intelligent behaviour and more sensors, there is a Raspberry Pi in the box too,  
 
The motors are JGB37-545 with an encoder and a 1:10 gearing (up to about 400RPM (or ~6 RPS (rotations per second) on the output axle).
 
There is a video introduction and demo here https://www.youtube.com/watch?v=6dNr_F0dsHw (from 2022 - slight changes since)


== Overview ==
=== Navigation box overview===




[[File:robobot-overview.png | 500px]]
[[File:robobot-overview.png | 500px]]


Figure 2. ROBOBOT is an extension of the simpler robot REGBOT. The REGBOT part controls the wheels, interfaces to sensors like an IMU (6 axis accelerometer and gyro), IR distance sensors (2), and a line edge detector. REGBOT further controls up to 3 servos and controls the battery supply. ROBOBOT is further equipped with a Raspberry Pi to allow more complicated missions. On the Raspberry Pi runs an interface process called robobot_bridge, this interfaces to a small 5-line display, to a game-pad and is the main interface to the REGBOT. The mission process collects data from the bridge and from ROBOBOT, and supplies the REGBOT with small mission snippets. The mission further holds the interface to the Raspberry Pi camera and may use the Open-CV library functions. The speaker allows debugging messages or other sound effects. By default battery voltage is announced at intervals.
Figure 2. ROBOBOT is an extension of the robot REGBOT. The REGBOT part controls the wheels and interfaces to the sensors, like an IMU (6-axis accelerometer and gyro), IR distance sensors (2), and a line edge detector. The REGBOT further controls up to 5 servos and controls the battery supply. ROBOBOT is further equipped with a Raspberry Pi to allow more complicated missions. The Raspberry Pi runs an interface process called "Bridge" and is the main interface to the REGBOT. The mission process collects data from the bridge and the REGBOT and supplies small mission code snippets to be executed by the REGBOT part. The mission process may use the camera and the Open-CV library functions. The speaker allows debugging messages or other sound effects.


The ROBOBOT functions are available on the net at port number 24001. The existing user interface for REGBOT can access REGBOT functions from this port.
The ROBOBOT functions are available on the net at port number 24001. The existing user interface for REGBOT can access REGBOT functions from this port.


The gamepad can take over control of the mission fails, and can be used to initiate missions or other functions using the buttons and axis on the gamepad.
The gamepad can take control of the robot if the mission fails and can be used to initiate missions or other functions.
 
==Software description==
 


More on the mission software here [[Full_installation_instructions#ROBOBOT_mission_demo_C.2B.2B]].
=== Bridge software ===


==Getting started==
The Robobot bridge runs on the Raspberry Pi and is started when the Raspberry Pi starts, with initial commands from an initialization file (bridge.ini).


This section contains a quick-start guide for the user.
[[Robobot_bridge]] overview
It includes how to get the robot connected to Eduroam WiFi for easy access, an explanation of software and software structure and present a few examples to get the robots driving.
Press the link below to go to the instructions page.


[[Instructions for getting started]]
A bridge autostart feature is implemented in the script 'start_bridge.sh' in the home directory of the user 'local'.
The is executed after a reboot.


==Mission software==
The script can be amended with other commands that should be started after a reboot.


For the mission block there is a template that illustrates how to make s mission and send it to the robot in snippets.
=== Mission software ===


[[Mission template software]]
The mission application is the primary user control for the robot.


==Installation instructions==
[[Robobot mission]] application overview.


This section contains the complete instructions for setting up a clean Raspberry Pi.
The Mission application is started manually from an ssh console or added to the reboot script 'start_bridge.sh'.
<!--
===Python interface===


Click on the link below to go the instructions.
A python-based control example - including especially camera streaming and interface.


Raspberry [[Full installation instructions]] including opencv-3, but stop before "Mobotware".
[[Python interface]]
-->


Windows tools
==Setup issues==


Use '''winscp''' (from https://winscp.net/eng/download.php?TB_iframe) to move files to and from the raspberry pi.
===Installation instructions===


Use '''putty''' (from https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) to get terminal access to the raspberry.
This installation should be done already, to update see next section.


To connect to raspberry using a cable (from raspberry direct to a PC) requires that both has a manually set IP adress.
[[Raspberry and ROS]] (not finished)
The Raspberry side is 192.168.0.2, and you should probably manually set the IP of your PC to the same local net, e.g. 192.168.0.100.


There is a windows executable client for configuration and setting up the REGBOT part of the ROBOBOT. This is found in 'regbot/qtgui/dist/regbot.exe' in the raspberry, and can be fetched using winscp.
[[Network setup]] (Wifi)


==Update ROBOBOT source==
[[Robobot camera]] camera setup


On the raspberry there is the following directories:
[[Access from Windows]] and Linux to Raspberry files (and graphics)


$ ls
[[Other windows tools]] - show Raspberry Pi graphics in Windows (usually very very slow)
  mission          Mission software skeleton that can also access the raspberry camera
  qtgui            Copy of the configuration gui (python files), and a windows executable in the 'dist' subdirectory
  regbot          Firmware for the REGBOT part
  robobot_bridge  The connection software between the REGBOT, the small display, the remote control and the mission software


===Update===
[[Regbot GUI]] python setup and GUI install


All these source directories are already connected to a SVN repository, but probably need update, by
See [[Regbot calibration]] for sensor calibration.


cd
===Software update===
cd mission
svn up
cd ../qtgui
svn up
cd ../regbot
svn up
cd ../robobot_bridge
svn up


===Compile===
Update of the maintained software is on the SVN (subversion) repository.


If there is updates, then they need a recompile (except qtgui).
SSH to the robot and go to these directories and do an update


Mission and Robobot_bridge has a 'build' subdirectory with a Makefile, REGBOT has the Makefile in the base directort.
cd
svn up svn/fejemis/ROS/catkin_ws/src/bridge
svn up svn/robobot
svn up svn/regbot


Type
An update could look like this
$ svn up svn/fejemis/ROS/catkin_ws/src/bridge
Updating 'svn/fejemis/ROS/catkin_ws/src/bridge':
U    fejemis/ROS/catkin_ws/src/bridge/udataitem.h
U    fejemis/ROS/catkin_ws/src/bridge/ujoy.cpp
Updated to revision 228.
 
NB! this may cause a conflict if some of the files are changed locally.
Look at the filename and if it is not one of yours, then reply 'tc' (short for their conflict solution)
 
=====Compile on bridge changes=====
 
If there are updated files for the bridge, then
 
cd
cd catkin_ws
catkin_make
 
=====Compile and upload on Teensy changes=====
 
cd
cd svn/regbot/regbot/4.1
make -j3
 
This makes a file "regbot.hex" that is then to be loaded as the new firmware on the Teensy processor.
 
There is a script that can do that from the command line:
 
./upload.sh
 
It will say something like
 
$ ./upload.sh
Teensy Loader, Command Line, Version 2.2
Read "regbot.hex": 314368 bytes, 3.9% usage
Waiting for Teensy device...
  (hint: press the reset button)
 
Press and hold the "POWER ON" and then press the button on the Teensy board.
 
The "POWER ON" button maintains power to the Raspberry Pi and the Teensy while uploading.
 
It will likely fail the first time but keep pressing "POWER ON" and repeat the command, and it should now say
 
$ ./upload.sh
Teensy Loader, Command Line, Version 2.2
Read "regbot.hex": 314368 bytes, 3.9% usage
Found HalfKay Bootloader
Programming.............................
Booting
 
If you released the "POWER ON" in the process, the Raspberry Pi would power down. You then need to hold the "POWER ON" until the Raspberry has booted; you then re-login and rerun the script.
 
=====Make the upload.sh=====
 
If you have the "upload.sh", this step is not needed.
 
The command line upload is described here https://www.pjrc.com/teensy/loader_cli.html .
 
On a Raspberry you first need to install a USB library:
sudo apt install libusb-dev
 
Then get the code:
cd ~/git
git clone https://github.com/PaulStoffregen/teensy_loader_cli.git
cd teensy_loader_cli
  make
  make
to compile


If there is no makefile in the build directory, then make one first by
You should now have a "teensy_loader_cli" file; copy this to the svn/regbot/regbot/4.1 directory
 
cp teensy_loader_cli ~/svn/regbot/regbot/4.1/
 
Make the "upload.sh" script
 
cd ~/svn/regbot/regbot/4.1
nano upload.sh
 
Insert the following into the script:
 
#!/bin/bash
./teensy_loader_cli -v -w --mcu=TEENSY41 regbot.hex
 
Save with ctrl-s and exit with ctrl-x


cd build
Make the script executable
cmake ..


===Robobot_bridge===
chmod +x upload.sh


Robobot_bridge is started from the startup script /etc/rc.local, and thus need a reboot to start the new version,
== old instructions ==


or start it manually (is also better for debugging, as it has some on-line help (type help after start):
Partially valid only.
sudo pkill robobot_bridge
cd ~/robobot_bridge/build
sudo ./robobot_bridge


After a REGBOT compile, the generated regbot.hex need to be loaded into the teensy, this can be done from the raspberry, if you have a screen and a keyboard (or a computer with an X-server), or from another computer, but requires that a USB cable to that computer and install the loader application (from https://www.pjrc.com/teensy/loader.html )
[[Install on raspberry]] on a clean SD-card - raspi-config.


==Setup issues==
[[Setup user local]] adding a new user.
 
[[Linux tools]] - packages to install.
 
[[Access from PC]] (Linux or Windows).
 
[[Other windows tools]] - run graphics from Windows
 
[[Instructions for getting started]] - primarily network, Linux intro and wifi setup.


A number of parameters in the REGBOT part of the robot needs setting.
<!-- [[Full installation instructions]] - like Linux itself, sound and camera and how to connect the Raspberry disk to Windows and Linux computers. -->


Some suggestions are provided here using the REGBOT GUI (available on the raspberry in the qtgui directory, see above):
==REGBOT setup ==


[[Regbot settings]]
Several parameters in the REGBOT part of the robot need setting.


== Hardware ==
Some suggestions are provided here using the REGBOT GUI (available on the raspberry in the 'regbotgui' directory, and in a Windows version):


The Robobot frame is 3D printed, the design is in onshape - see this link https://cad.onshape.com/documents/97c36fb21a7a858c57c0af9f/w/0d867586bc28d7a9194d7ff3/e/ca0f539fa3eee3cfe0ed4130, in the list of parts to the left it is possible to export (right-click) as STL files, that you can slice for your 3D printer.
[[Regbot settings]]


The REGBOT part of the hardware is described on the [[Regbot_version_4]] page.
=== Hardware ===


Connection of the line display to the Raspberry pi is here [[Robobot Hardware]].
The Robobot frame is 3D printed, the design is in onshape - see this link https://cad.onshape.com/documents/fef8699fcafb8aea780c8981/w/ce38e7fdd6cf8533b65e2c3c/e/4792e876b254f8e35059f863 , in the list of parts to the left it is possible to export (right-click) as STL files, that you can slice for your 3D printer.


==Status==
=== Navigation box assembly ===


Se status for robotter sammen med REGBOT status: [[REGBOT_robot_status#Robobot]].
There are video-instructions on the course page.

Latest revision as of 15:16, 28 February 2024

This page is for ROBOBOT, an extension of REGBOT with a raspberry pi and three wheels.

Figure 1. Robobot, The robot is a 3D-printed box with wheels and some electronics. The third, fourth and fifth generations are shown here. The 3D printed parts can be found here https://cad.onshape.com/documents/fef8699fcafb8aea780c8981/w/ce38e7fdd6cf8533b65e2c3c/e/4792e876b254f8e35059f863

Overview

Note: Not valid (mostly) for the 2024 version of the robot

hardware

ROBOBOT is based on a navigation box with a line sensor (Edge sensor), an IR distance sensor and possibly some servos, all controlled by a microprocessor. For more intelligent behaviour and more sensors, there is a Raspberry Pi in the box too,

The motors are JGB37-545 with an encoder and a 1:10 gearing (up to about 400RPM (or ~6 RPS (rotations per second) on the output axle).

There is a video introduction and demo here https://www.youtube.com/watch?v=6dNr_F0dsHw (from 2022 - slight changes since)

Navigation box overview

Figure 2. ROBOBOT is an extension of the robot REGBOT. The REGBOT part controls the wheels and interfaces to the sensors, like an IMU (6-axis accelerometer and gyro), IR distance sensors (2), and a line edge detector. The REGBOT further controls up to 5 servos and controls the battery supply. ROBOBOT is further equipped with a Raspberry Pi to allow more complicated missions. The Raspberry Pi runs an interface process called "Bridge" and is the main interface to the REGBOT. The mission process collects data from the bridge and the REGBOT and supplies small mission code snippets to be executed by the REGBOT part. The mission process may use the camera and the Open-CV library functions. The speaker allows debugging messages or other sound effects.

The ROBOBOT functions are available on the net at port number 24001. The existing user interface for REGBOT can access REGBOT functions from this port.

The gamepad can take control of the robot if the mission fails and can be used to initiate missions or other functions.

Software description

Bridge software

The Robobot bridge runs on the Raspberry Pi and is started when the Raspberry Pi starts, with initial commands from an initialization file (bridge.ini).

Robobot_bridge overview

A bridge autostart feature is implemented in the script 'start_bridge.sh' in the home directory of the user 'local'. The is executed after a reboot.

The script can be amended with other commands that should be started after a reboot.

Mission software

The mission application is the primary user control for the robot.

Robobot mission application overview.

The Mission application is started manually from an ssh console or added to the reboot script 'start_bridge.sh'.

Setup issues

Installation instructions

This installation should be done already, to update see next section.

Raspberry and ROS (not finished)

Network setup (Wifi)

Robobot camera camera setup

Access from Windows and Linux to Raspberry files (and graphics)

Other windows tools - show Raspberry Pi graphics in Windows (usually very very slow)

Regbot GUI python setup and GUI install

See Regbot calibration for sensor calibration.

Software update

Update of the maintained software is on the SVN (subversion) repository.

SSH to the robot and go to these directories and do an update

cd
svn up svn/fejemis/ROS/catkin_ws/src/bridge
svn up svn/robobot
svn up svn/regbot

An update could look like this

$ svn up svn/fejemis/ROS/catkin_ws/src/bridge
Updating 'svn/fejemis/ROS/catkin_ws/src/bridge':
U    fejemis/ROS/catkin_ws/src/bridge/udataitem.h
U    fejemis/ROS/catkin_ws/src/bridge/ujoy.cpp
Updated to revision 228.

NB! this may cause a conflict if some of the files are changed locally. Look at the filename and if it is not one of yours, then reply 'tc' (short for their conflict solution)

Compile on bridge changes

If there are updated files for the bridge, then

cd
cd catkin_ws
catkin_make
Compile and upload on Teensy changes
cd
cd svn/regbot/regbot/4.1
make -j3

This makes a file "regbot.hex" that is then to be loaded as the new firmware on the Teensy processor.

There is a script that can do that from the command line:

./upload.sh

It will say something like

$ ./upload.sh
Teensy Loader, Command Line, Version 2.2
Read "regbot.hex": 314368 bytes, 3.9% usage
Waiting for Teensy device...
 (hint: press the reset button)

Press and hold the "POWER ON" and then press the button on the Teensy board.

The "POWER ON" button maintains power to the Raspberry Pi and the Teensy while uploading.

It will likely fail the first time but keep pressing "POWER ON" and repeat the command, and it should now say

$ ./upload.sh
Teensy Loader, Command Line, Version 2.2
Read "regbot.hex": 314368 bytes, 3.9% usage
Found HalfKay Bootloader
Programming.............................
Booting

If you released the "POWER ON" in the process, the Raspberry Pi would power down. You then need to hold the "POWER ON" until the Raspberry has booted; you then re-login and rerun the script.

Make the upload.sh

If you have the "upload.sh", this step is not needed.

The command line upload is described here https://www.pjrc.com/teensy/loader_cli.html .

On a Raspberry you first need to install a USB library:

sudo apt install libusb-dev

Then get the code:

cd ~/git
git clone https://github.com/PaulStoffregen/teensy_loader_cli.git
cd teensy_loader_cli
make

You should now have a "teensy_loader_cli" file; copy this to the svn/regbot/regbot/4.1 directory

cp teensy_loader_cli ~/svn/regbot/regbot/4.1/

Make the "upload.sh" script

cd ~/svn/regbot/regbot/4.1
nano upload.sh

Insert the following into the script:

#!/bin/bash
./teensy_loader_cli -v -w --mcu=TEENSY41 regbot.hex

Save with ctrl-s and exit with ctrl-x

Make the script executable

chmod +x upload.sh

old instructions

Partially valid only.

Install on raspberry on a clean SD-card - raspi-config.

Setup user local adding a new user.

Linux tools - packages to install.

Access from PC (Linux or Windows).

Other windows tools - run graphics from Windows

Instructions for getting started - primarily network, Linux intro and wifi setup.


REGBOT setup

Several parameters in the REGBOT part of the robot need setting.

Some suggestions are provided here using the REGBOT GUI (available on the raspberry in the 'regbotgui' directory, and in a Windows version):

Regbot settings

Hardware

The Robobot frame is 3D printed, the design is in onshape - see this link https://cad.onshape.com/documents/fef8699fcafb8aea780c8981/w/ce38e7fdd6cf8533b65e2c3c/e/4792e876b254f8e35059f863 , in the list of parts to the left it is possible to export (right-click) as STL files, that you can slice for your 3D printer.

Navigation box assembly

There are video-instructions on the course page.