With the base system built previously booted and running, I decided to work on installing the Arduino development environment. It looked like I needed to download the source from the Arch User Repository (AUR) so I installed base-dev. Interestingly there seemed to be a couple packages missing. I did a "pacman -Syu" (again as it had been done before for the image that I am using) and they downloaded! There is a lesson here. In any case it was all in vain as the source I downloaded apparently is not supported on the RPi!
Given the above I went to github and found the source code there and started to work on what it would take to get it to work. I am still confused by what is needed so decided to defer the installation of the Arduino SDK. I don't really need it running on the 'Bot as I can download the Py2Ard interface from one of my other workstations.
The 'Bot is written in Python V2 and relies on a number of Python extensions which is where I decided to begin:
pacman -S python2-imaging
pacman -S python2-pyserial
pacman -S python2-pyserial
Once again there were some packages missing so I ran another synchronize. I wonder if this was because pointers in one of the above packages were out of date? I don't get it:
pacman -Syu
pacman -S python2 python2-numpy opencv
With the above installed I went to test the webcam capture from within Python - it needs to be root??? I don't get this either! I am using the shortest possible webcam capture script and it captures a zero length image without being root.
I don't actually use Python to capture my images given some issues with the camera dropping offline after a while so I pivoted to fswebcam and installed it now. Note that I do use the above imaging libraries for a couple functions like creating an image of my radar map:
pacman - S fswebcam
My use of the GPIO bus requires one more library, again one that needed to be pulled down from GITHUB:
Finally, the last thing we need is a queue management solution called Beanstallk. The architecture of my 'Bot is a little more complicated than it needs to be but I thought it would be cool to use some background Daemons with inter-process communications via Beanstalk. No Arch Linux package exists for Beanstalk so I had to download the source and compile it on my target. It seemed to work flawlessly:
git clone git://github.com/kr/beanstalkd.git
install make
install gcc
make
sudo make install
Now it was time to setup Beanstalk to run as a service per these instructions. My approach was to create a service description file by cloning the one that proftpd created:
/usr/lib/systemd/system/proftpd.service -->
/usr/lib/systemd/system/beanstalkd.service
/usr/lib/systemd/system/beanstalkd.service
Note that you may need to add your user name to a group, per the below, assuming you want to view logs generated by an error:
sudo systemctl start beanstalkd
I also created a directory for the PID as pointed to from the service file and pointed executable to /usr/local/bin/beanstalkd.
The service can be started once as shown below:
sudo systemctl start beanstalkd
Or started at boot:
sudo systemctl enable beanstalkd
Lastly, I found a version of the beanstalkc extension for Python and copied it into the directory with my Robot source code.
One important caveat. Something is not working at the moment! Beanstalk is not starting reliably. More later.
No comments:
Post a Comment