freebsd and beaglebone black, a robotic application. and beaglebone black, a robotic application....
TRANSCRIPT
![Page 1: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/1.jpg)
FreeBSD and Beaglebone Black,a robotic application.
Fabio [email protected]
University of Ottawa,Canada
May 17, 2014
![Page 2: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/2.jpg)
The robot
![Page 3: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/3.jpg)
System description
What is this?
I it is a ROV - Remote Operated Vehicle
I it is based on Freebsd 11 embedded into an ARM board
I it provides an embedded web application via WIFI
I it provides real time video streaming
I it provides ultrasonic sensor for reading distances
I it provides I/O expansions for actuators
![Page 4: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/4.jpg)
System description
Materials:
I Beaglebone Black + FreeBSD 11 current
I Protoboard for I/O
I WIFI antenna with USB interface
I Gimbal for the webcam and ultrasounds sensor
I Hobby RC car
I Battery
I Jumper wires and connectors
![Page 5: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/5.jpg)
Beaglebone Black
![Page 6: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/6.jpg)
Beaglebone Black
Features:
I 1GHz ARM Cortex A8
I 512MB DDR3 RAM
I 2Gbyte flash eMMC
I 4GB 8-bit eMMC on-board flash storage
I 3D graphics accelerator
I NEON floating-point accelerator
I 2x PRU 32-bit microcontrollers
I USB client and host ports
I Ethernet 10/100
I HDMI port
I 2x 46 pin headers
![Page 7: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/7.jpg)
FreeBSD on BBB
I It is stable
I Hardware resources are not wasted
I Almost everything is supported including the PRU
I Suitable for networking or data processing
![Page 8: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/8.jpg)
FreeBSD and Beaglebone Black
STEPS:
I get the source of FreeBSD
I download the Crochet-FreeBSD script
I run the crochet script
I copy the produced image to a microSD card
![Page 9: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/9.jpg)
Laboratory setup
![Page 10: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/10.jpg)
Deployment server
Needed for:
I minimize the write cycles on the flash microSD card
I FreeBSD 11 microSD card image generation
I Host all the source code and packages
NFS exports:
I source dir of FreeBSD
I distfiles ports subdir
I packages ports subdir
I extra needed software
![Page 11: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/11.jpg)
Crochet-FreeBSD
Download it from:
I https://github.com/kientzle/crochet-freebsd
![Page 12: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/12.jpg)
Crochet-FreeBSD
Building procedure:
# cd <crochet_path>
# cp config.sh.sample config.BBB.sh
# vi config.BBB.sh
# /crochet.sh -c config.BBB.sh
coffe...
# dd if=<IMG> of=/dev/da0 bs=1m
![Page 13: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/13.jpg)
Serial console cable
![Page 14: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/14.jpg)
Serial console cable
TX - RX - GND
![Page 15: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/15.jpg)
Serial console terminal
Three common ways to connect:
# cu -s 115200 -l /dev/ttyU0
# screen /dev/ttyU0 115200
# minicom
![Page 16: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/16.jpg)
Flattened device tree - fdt
Benefits:
I Put outside the kernel the device definitions
I Make it easier to enable/disable devices after a kernel build.
I Same kernel for multiple similar boards
At the boot, U-boot load .dtb into the memory
The kernel pickup the keys and load the drivers
![Page 17: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/17.jpg)
Flattened device tree - fdt
It is used for:
I To describe the hardware
I To list all the devices and their properties
I To enable or disable driver and devices
I To mux the pins for alternatives functions
Do you need to enable or redefine some I/O pins?
I Edit the .dts clear text file
I Compile the .dts into a .dtb binary file with dtc
![Page 18: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/18.jpg)
Laboratory
My setup and results
![Page 19: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/19.jpg)
My setup
Disabled unneeded stuff into the kernel config
Disabled all the debugging including WITNESS
I wanted to try a patch set to rise the CPU clock to 1GHz
I wanted to maximize the performance for the video processing
![Page 20: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/20.jpg)
1Ghz patches
Default clock frequency is 500Mhz
Patched and used the new u-boot 2014.01
I used the patches from Xuebing Wang
Result:
the kernel is running at 1 GHz, the CPU is a little bit warmer, anheat sink should be installed before real heavy processing.
Better solution:
I a FreeBSD driver that expose a read/write sysctl toreprogram the CPU frequency
![Page 21: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/21.jpg)
BBB PWM pins
The robot has 4 servo motors:
![Page 22: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/22.jpg)
4 servo motors
I 2 for the camera Gimbal
I 1 for the steering
I 1 for the ESC
![Page 23: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/23.jpg)
PWM signal
The width of the pulse drive the servo:
![Page 24: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/24.jpg)
PWM signal from the BBB pins
Test of the signals
![Page 25: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/25.jpg)
Test of the PWM signal
# sysctl dev.am335x_pwm.1.period=1500
# sysctl dev.am335x_pwm.1.dutyA=300
result frequency: 66 KHz ->should be 666 KHz
length of period: 15 us ->should be 1.5 us
length of pulse: 2 us
# sysctl dev.am335x_pwm.1.period=1500000
# sysctl dev.am335x_pwm.1.dutyA=10000
result frequency: 1.71 KHz -> should be 666Hz
length of period: 585 us
length of pulse: 100 us
# sysctl dev.am335x_pwm.1.period=1800000
# sysctl dev.am335x_pwm.1.dutyA=10000
result frequency: 3.24 KHz -> should be 555Hz
length of period: 308 us
length of pulse: 100 us
![Page 26: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/26.jpg)
BBB PWM pins
Actual minimum frequency was 1.5KHz
further work to expand the range and correct the configuration keys
Help please!
![Page 27: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/27.jpg)
Alternative to the BBB PWM pins
Teensy 3.0 board:
![Page 28: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/28.jpg)
Teensy to drive the servo motors
GPIO pins
PWM Output pins
Firmware Driver
![Page 29: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/29.jpg)
USB Hub
I BBB has only one host USB port
I Cut the power supply wires of the USB cable
![Page 30: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/30.jpg)
USB Hub
I USB hotplug is working
I some problems with the video frames transmission
![Page 31: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/31.jpg)
WLAN link
I To pilot the robot is via WIFI
I The system is configured as an access point with hostapd
I The user can pilot the robot using a web application installedon the BBB
![Page 32: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/32.jpg)
Serverside
I Python Flask web application with websockets
I c code to drive the GPIO pins for the servo motors
I c code to read the distance sensors
I OpenCV realtime video processing
![Page 33: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/33.jpg)
Improvements
I kernel drive to increase CPU frequency
I better implementation of the PWM output signal
I further development with OpenCV
I ...
![Page 34: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/34.jpg)
Demo
DEMO!
![Page 35: FreeBSD and Beaglebone Black, a robotic application. and Beaglebone Black, a robotic application. Fabio Balzano fabio.balzano@elfarolab.com ... I a FreeBSD driver that expose a read/write](https://reader033.vdocument.in/reader033/viewer/2022051601/5ab9b6e07f8b9a684c8e3b52/html5/thumbnails/35.jpg)
Repository:
I https://bitbucket.org/fabiodive/bsdcan2014
My email address:
Thank you for your attention!flood me questions :-)