Comments (24)
im starting work on it right now. I don't own an RPI2 any longer, so i may need some help debugging.
from farmbot_os.
@menghong777 You will need to install libmnl, also.
from farmbot_os.
@menghong777 @joevo2 You'll both be happy to know Raspberry Pi2, Pi1, and Pi0 support is now stable. Next release will include support for it, though you will still need to build it yourself. We are working hard to make sure our building documentation is ready for new comers also. Check back soon!
from farmbot_os.
@joevo2 @menghong777 Starting with release 2.1.9
we added support for other systems. You should download the corresponding .img
file and flash it to your SD card.
from farmbot_os.
It shouldn't be to hard to make a config for rpi2, but Farmbot's configuration relies on a wireless interface, which previous generations don't have. If you have a usb wireless dongle, i can probably set something up
from farmbot_os.
from farmbot_os.
yeah you would be able to, but you would have to access farmbot configuration by your farmbot's ip address. Not impossible, you will just have to find your ip address information. i will look into adding support for RPI1 and RPI2 soon
from farmbot_os.
from farmbot_os.
from farmbot_os.
from farmbot_os.
if you have a rather beefy linux machine you can build this:
see BUILDING.md
for instructions. Please be warned that this is probably pretty unstable at the moment.
from farmbot_os.
Hi, @ConnorRigby . I was trying to build the RPi2 image on Ubuntu 16.10. I got an error when I tried to run "mix firmware", it returns "** (Mix) Could not locate System". Do you have any idea with this error? =)
using rpi2 configuration.
warning: variable "deps" does not exist and is being expanded to "deps()", please use parentheses to remove the ambiguity or change the variable name
/home/menghong/farmbot-image/farmbot_os/deps/rpi2/nerves_lib/mix.exs:11
warning: variable "deps" does not exist and is being expanded to "deps()", please use parentheses to remove the ambiguity or change the variable name
/home/menghong/farmbot-image/farmbot_os/deps/rpi2/nerves_lib/mix.exs:14
warning: variable "deps" does not exist and is being expanded to "deps()", please use parentheses to remove the ambiguity or change the variable name
/home/menghong/farmbot-image/farmbot_os/deps/rpi2/amnesia/mix.exs:7
warning: variable "package" does not exist and is being expanded to "package()", please use parentheses to remove the ambiguity or change the variable name
/home/menghong/farmbot-image/farmbot_os/deps/rpi2/amnesia/mix.exs:8
warning: variable "docs" does not exist and is being expanded to "docs()", please use parentheses to remove the ambiguity or change the variable name
/home/menghong/farmbot-image/farmbot_os/deps/rpi2/nerves_firmware/mix.exs:17
** (Mix) Could not locate System
from farmbot_os.
sorry about that, the system
needs to be built first. for clarity when we say system
it means the root filesystem built by buildroot
that boots linux.
so to build the system cd
to the root of the farmbot_os
dir, then do this:
export MIX_ENV=prod
export NERVES_TARGET=rpi2
mix farmbot.system # this builds teh environment for building the system.
cd apps/NERVES_SYSTEM_${NERVES_TARGET}
make
that is going to take a while depending on your machine. once it is finished do this:
cd ../farmbot
mix firmware
from farmbot_os.
Thanks for your reply and instructions. =) Before running the make
command, I followed Nerves Project website's instructions (https://hexdocs.pm/nerves/systems.html#creating-or-modifying-a-nerves-system-with-buildroot) then I ran mix firmware
command. After that I got an error shown below.
==> nerves_network_interface
cc -c -I/usr/lib/erlang/usr/include -O2 -Wall -Wextra -Wno-unused-parameter -pedantic -std=c99 -D_XOPEN_SOURCE=600 -o src/netif.o src/netif.c
src/netif.c:26:27: fatal error: libmnl/libmnl.h: No such file or directory
#include <libmnl/libmnl.h>
^
compilation terminated.
Makefile:51: recipe for target 'src/netif.o' failed
make: *** [src/netif.o] Error 1
could not compile dependency :nerves_network_interface, "mix compile" failed. You can recompile this dependency with "mix deps.compile nerves_network_interface", update it with "mix deps.update nerves_network_interface" or clean it with "mix deps.clean nerves_network_interface"
==> farmbot
** (Mix) Could not compile with "make" (exit status: 2).
Depending on your OS, make sure to follow these instructions:
* Mac OS X: You need to have gcc and make installed. Try running the
commands "gcc --version" and / or "make --version". If these programs
are not installed, you will be prompted to install them.
* Linux: You need to have gcc and make installed. If you are using
Ubuntu or any other Debian-based system, install the packages
"build-essential". Also install "erlang-dev" package if not
included in your Erlang/OTP version. If you're on Fedora, run
"dnf group install 'Development Tools'".
I'm sure I have installed gcc, make, build-essential and erlang-dev. This is my first time compiling an operating system. Am I doing it right? =)
from farmbot_os.
from farmbot_os.
@joevo2 i don't have one to test, but FarmbotOS itself only uses about 18 megs of ram and 10 megs of disk space. (the disk space one is subjective depending on how you look at it).
After linux
passes control to Erlang
all the cpus (4 on rpi3, 1 otherwise) sit idle at about 0.93 mhz, and consume about 4.77 volts. FBOS is pretty lightweight for something considered an OperatingSystem
from farmbot_os.
Thanks everyone! Really appreciate everyone efforts in this project and to helping me out! I'm building it using the latest source code now. Hope the compile process is running smooth as expected! =D
from farmbot_os.
from farmbot_os.
@joevo2 we are actually starting work on that right now. We plan to have it happen on the rpi i believe. The current implementation happens in python right now.
from farmbot_os.
from farmbot_os.
We have a prototype made that uses Python and OpenCV to process the images to detect all plants. That code could run anywhere (laptop, pi, in the cloud, etc) though we're planning on having it run on the pi. The code currently outputs coordinates and sizes of all plants (both weeds and our desired crops). This list will then need to be cross-listed with the list of current crops so that we can categorize what is a weed and what is our veggies. Then the user will be able to schedule sequences to run on the weeds to remove them.
Here is a mockup of what it will look like on the web app for the user to "tune" the processing algorithms. It is a two step process: first is selecting the range of colors to isolate and look at, and second is the openCV stuff that locates the individual plant's centers within the image.
from farmbot_os.
Wow awesome looking! We were looking into this code of yours https://github.com/FarmBot-Labs/plant-detection to modify it for the tray seeding function. It seems like there will be quite a lot of work for us to customise and learn to build a tray seeding function 😢
from farmbot_os.
Any tips on where we could start with building the tray seeding function? Since it is pretty similar with the weeding functionality. Any code for us to reference? Sorry for the trouble again and super thanks for the hard work being done. We would love to help out. Btw me and @menghong777 is actually on the same team in case you wonder :)
from farmbot_os.
The easiest way for you to accomplish tray seeding is to make a hardware jig that allows you to position your tray precisely in the FarmBot workspace. Then you could just use the regular sequence builder to load the various tray sockets with seeds.
If you're set on a camera based solution then you'll need to identify the z-height, X/Y position, and angle of the tray. You would do this by having easily identified markers on the corners of the tray. Then your code would output socket locations (coordinates) which your "seed loading" sequence would need to use.
We were just discussing today how we plan to allow not only "Plant", "Weed", and "Tool" objects in the database, but also any other type of object with coordinates and a label. This is a little far off I think, but when such a feature is developed your code would be able to create "Socket" objects in the database which then your Sequences could import coordinates from. Hope that makes sense. This is basically how weed detection puts the weeds in the db.
from farmbot_os.
Related Issues (20)
- [Farmware] Did you stop supporting the local webserver on port 27347? HOT 10
- Need to Configure VintageNet `:internet_host` setting
- [bug, cosmetic] unhandled message in error state: after Farmware exits normally HOT 8
- A simulator for the farmbot HOT 10
- Feture Reuest: "After Unlock" Sequence Callback
- Unused variable warning is polluting the Serial Console :) 10.1.3 HOT 9
- "since last reflash" metrics and flags
- Lua Persistent Storage (K/V store)
- Mark As command does not update plant age
- Lua Assertion read_pin always returns 1, making programmatic tool verification unusable HOT 5
- Seems to be an issue HOT 2
- Can't flash Arduino with firmware HOT 5
- DIdnt see a Doc project, so putting this here. Hyperlink issue with doc webpage HOT 1
- fail to falsh fambot _os HOT 5
- WiFi Adapters HOT 6
- how can i change the broker ? HOT 2
- Boot Sequence execution may be delayed by earlier (overdue) FarmEvent sequence executions HOT 2
- Water keeps running if FB stalls during the execution of a sequence / Risk of flooding HOT 1
- Sequence Not Found error is not sent back to MQTT RPC Client
- Configurator Improvements
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from farmbot_os.