Bumblebee
Taken in my back yard. Click on the image for a slightly larger version or view the full size image.
Taken in my back yard. Click on the image for a slightly larger version or view the full size image.
A few weeks ago, I rebooted my quadcoper project and ordered a lot of parts from Hobbyking. In the mean time, the parts arrived, and I have been making my first steps in actually building something.
The first thing was assembling the Talon V2.0 carbon fiber frame and mounting the motors. That’s a very easy task, except when trying to fit some props on the motors after mounting them on the frame, I discovered that the Turnigy 2217 motors should be mounted up-side down, so the motor-mounts on the frame had to be flipped. Click the images to enlarge.
The next thing on the list was the power system, meaning everything to connect the motors to the ESCs and the ESCs to the battery. For this, I needed some extra hardware, that I got from different sources:
Total expenses for these parts: € 12.90.
First I extended the 3 motor-side wires of every ESC to make them long enough to span the booms of the frame. I just soldered the wires together and covered the joint in shrink tub02e.
Next, I prepared the power distribution hub, by soldering the wires and the HXT connector to it:
To complete the power system, I need 12 connectors to connect the motors to the ESCs. I probably should get some of these 3.5mm “PolyMax” connectors, but I’d rather get them at a local shop and I haven’t been able to find any just yet.
So that’s what has been done so far.
In the mean time, I ordered some more stuff from Hobbyking:
That brings the grand total of all expenses so far at US$ 573.19 + € 12.90.
And there is one more problem to solve. Since the Talon frame is pretty compact, it doesn’t offer enough space for all the components. The top plate will used to house the ESCs, like so:
An extra level on top of that is needed to house the Arduino with the AeroQuad shield and the R/C receiver. This level has to be a little bit bigger than the plates of the Talon frame, otherwise there will not be enough room for all the parts.
Fitting an extra level on top of the Talon frame is easy enough. I could use the nylon spacers that came with the frame, or I could easily make some custom spacers using threaded wire. An important question is what material to use: aluminium, wood, plastic? It should be strong, yet light. And affordable. I decided to go with 1.5mm thick epoxy plate. Unfortunately, due to a small error on Conrad’s website, I now have a piece of 0.5mm thick epoxy plate at home, which is too flexible to use. I’ll have to exchange that for the right stuff.
So, the current situation is:
Next: AeroQuad Build, part 2.
A year ago tomorrow, I wrote about building an AeroQuad open source quadcopter.
At that time, I had ordered the electronics for the flight controller:
but I left it at that and didn’t actually build anything. I won’t go into the reasons why, I just didn’t.
But! That doesn’t mean that I haven’t been thinking about the project in the mean time. I have been studying the do’s and don’ts of building a quad, reading about motors, ESCs, LiPo batteries, propellors, currents, temperatures, frame characteristics and lots of other complexities. I also tried to get an idea of what flying a quadcopter is all about.
As a matter of fact, I purchased a really small and cheap toy quad from DX a while ago, that has been a lot of fun and it taught me the basics of how to fly a quadcopter. Last weekend, I got to fly a Parrot AR Drone with an onboard camera, and that got me excited enough to reboot the AeroQuad project!
So last night, I sat down to take a last long hard look at all the components I had considered before, and placed a big order with Hobbyking. These are the components I ordered. All prices in US$.
So that amounts to a total of US$ 257.66, excluding an outrageous amount of US$ 35.80 for shipping. That brings the total investment so far up to US$ 484,94. Damn, this better become one hell of a flying machine 😉 And I still need to buy a 2.4 GHz transmitter/receiver, too…
I bought two different kinds of props: two sets of 10×4.5 SF props and three sets of 10×6 props. These give different amounts of thrust and flying time, but also a difference in handling and stability of the quad. I’ll have to experiment with those.
One of the high-impact decisions I made, both in terms of cost (probably) and in complexity of the build, is to buy a ready-made frame. I chose Hobbyking’s own Turnigy Talon Quadcopter (V2.0) Carbon Fiber Frame, and it looks like this:
Of course it still going to take some time and effort to get everything mounted on there, but at least I can be sure that the frame is well-balanced and light, yet very strong. The frame only weighs 280 grams, and hopefully this will allow me to keep the total weight of the quad, including motors and battery, around 1 kg. If my (or rather: eCalc’s ;-)) calculations are correct, the quad will be able to carry a payload of at least another 1 kg, which should be plenty for a camera of any sort, and leaves room for more accessories.
Now I’ll have to wait for all the parts to arrive, and then the building can begin. More later!
Next: AeroQuad Build, part 1
Maybe you have already heard of the next revolution in application deployment called Docker. I quote:
Docker is an open-source engine which automates the deployment of applications as highly portable, self-sufficient containers which are independent of hardware, language, framework, packaging system and hosting provider.
On the getting started page, you can see that you need an Ubuntu machine to get it running:
Requirements
One thing that is missing from this list, is AUFS support in the kernel, which isn’t a sure thing these days in Ubuntu.
However, I was interested in running Docker on a 64-bit Debian Wheezy machine, and this post explains how to do it. It’s not really hard, but you need to install an Ubuntu kernel. At least, I haven’t been able to find a 3.8 kernel for Wheezy just yet.
Your best bet is the 3.8 kernel from Ubuntu 13.04 Raring, backported for Ubuntu 12.04 LTS Precise. If that link is broken, try this one or get the right page from here. I have tried a kernel from Ubuntu’s mainline kernel PPA, but the 3.8 and 3.9 kernels for Raring from there seem to lack AUFS support.
I downloaded the deb named linux-image-3.8.0-23-generic_3.8.0-23.34~precise1_amd64.deb, which installs on Wheezy without problems. Just do:
$ sudo dpkg -i linux-image-3.8.0-23-generic_3.8.0-23.34~precise1_amd64.deb $ sudo reboot
Now find a Docker package on Launchpad. Get the one that is built for Precise.
First install the dependencies:
$ sudo apt-get install lxc bsdtar
and then Docker. This will not succeed:
$ sudo dpkg -i lxc-docker_0.4.0-1_amd64.deb Selecting previously unselected package lxc-docker. (Reading database ... 40929 files and directories currently installed.) Unpacking lxc-docker (from lxc-docker_0.4.0-1_amd64.deb) ... Setting up lxc-docker (0.4.0-1) ... /var/lib/dpkg/info/lxc-docker.postinst: 4: /var/lib/dpkg/info/lxc-docker.postinst: /sbin/start: not found dpkg: error processing lxc-docker (--install): subprocess installed post-installation script returned error exit status 127 Errors were encountered while processing: lxc-docker
This is caused by Docker’s Ubuntu package trying to use upstart to start the daemon, which does not work on Debian. Disable that:
sed -i 's~/sbin/start~#/sbin/start~' /var/lib/dpkg/info/lxc-docker.postinst sed -i 's~/sbin/stop~#/sbin/stop~' /var/lib/dpkg/info/lxc-docker.prerm
If you now have apt-get fix its state, it should work:
$ sudo apt-get -f install Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 1 not fully installed or removed. After this operation, 0 B of additional disk space will be used. Setting up lxc-docker (0.4.0-1) ...
That’s it!
Now continue with the examples on Docker’s website. Happy Docker’ing!
A problem that I faced today, summarized in a tweet:
So.. the RPM distributions for Java6 and Java7 from Oracle conflict with each other because both packages are named 'jdk'. Thank you Oracle.
— T̵̢̘̗͈̲̐̂͂͘ͅi̶̥͔̗͑̄̊̊͌̕n̴̙̺̈́͐ǘ̸̗̝͉̋̍z̷̥̬̻͉̗͎̎̄Z̵̓ (@tinuzzehv) June 7, 2013
After some Googling, I found this blog post about a tool called rpmrebuild.
I decided to give it a go on the Oracle-supplied RPM for JDK6. It is called jdk-6u45-linux-amd64.rpm in the current directory.
$ rpmrebuild -n --change-spec-preamble='sed -e "s/^Name:.*/Name:jdk6/"' -p jdk-6u45-linux-amd64.rpm result: /home/martijn/rpmbuild/RPMS/x86_64/jdk6-1.6.0_45-fcs.x86_64.rpm
Comparison of the original and resulting RPMs showed the following:
rpm -qpi
only differs 60kBrpm -qpl
) is exactly the sameThis looks good, so let’s try installation:
$ sudo rpm -ivh jdk6-1.6.0_45-fcs.x86_64.rpm [0] Preparing... ########################################### [100%] file /etc/.java/.systemPrefs/.system.lock from install of jdk6-2000:1.6.0_45-fcs.x86_64 conflicts with file from package jdk-2000:1.7.0_21-fcs.x86_64 file /etc/.java/.systemPrefs/.systemRootModFile from install of jdk6-2000:1.6.0_45-fcs.x86_64 conflicts with file from package jdk-2000:1.7.0_21-fcs.x86_64 file /etc/init.d/jexec from install of jdk6-2000:1.6.0_45-fcs.x86_64 conflicts with file from package jdk-2000:1.7.0_21-fcs.x86_64
These file conflicts were to be expected, since the installed JDK7 also ships them. So we need more trickery, in the form of a –change-files option to rpmrebuild.
export RPMREBUILD_TMPDIR=`mktemp -d` rpmrebuild -n \\ --change-files="sed -i '/^%config.*\"\\/etc/d' $RPMREBUILD_TMPDIR/work/files.1" \\ --change-spec-preamble='sed -e "s/^Name:.*/Name:jdk6/"' \\ -p jdk-6u45-linux-amd64.rpm
$RPMREBUILD_TMPDIR/work/files.1
is the file that lists all the files to be included in the RPM. Using sed -i
, we remove all the lines from that file that name a configuration file under /etc, represented by the regular expression /^%config.*\"\/etc/
.
The resulting RPM seems to install nicely on a RHEL6 system that already has a Java7 SDK installed. Win! Of course, for the sake of consistency, I need to do the same thing to the Java7 RPM. Unfortunately, the Java7 RPM had one more problem, being that the postinstall scriptlet would give errors, due to the files we deleted now being missing. My final invocation for the Java7 RPM is as follows:
export RPMREBUILD_TMPDIR=`mktemp -d` rpmrebuild -n \\ --change-spec-preamble='sed -e "s/^Name:.*/Name:jdk7/"' \\ --change-files="\\ sed -i '/^%config.*\\"\\/etc/d' $RPMREBUILD_TMPDIR/work/files.1; \\ sed -i 's/\\/etc\\/init.d\\/jexec start/#\\/etc\\/init.d\\/jexec start/' $RPMREBUILD_TMPDIR/work/post.1; \\ sed -i 's/\\/usr\\/lib\\/lsb\\/install_initd jexec/true; #\\/usr\\/lib\\/lsb\\/install_initd jexec/' $RPMREBUILD_TMPDIR/work/post.1; \\ sed -i 's/\\/sbin\\/chkconfig --add/true; #\\/sbin\\/chkconfig --add/' $RPMREBUILD_TMPDIR/work/post.1" \\ -p jdk-7u21-linux-x64.rpm
I’m not going to stay – with the people whose ideas are just what other people say