Hexakopter: Difference between revisions

From Rsewiki
Line 64: Line 64:
===Raw pixhawk installation===
===Raw pixhawk installation===


From page https://pixhawk.org/dev/toolchain_installation_lin on a 64bit 14.04 ubuntu (well kubuntu, but this should not matter much)
From page https://pixhawk.org/dev/toolchain_installation_lin on a 32 and 64 bit 14.04 ubuntu (well kubuntu, but this should not matter much)


* installed dependencies - no problem
* installed dependencies - no problem
Line 70: Line 70:
     flex bison libncurses5-dev autoconf texinfo build-essential \
     flex bison libncurses5-dev autoconf texinfo build-essential \
     libftdi-dev libtool zlib1g-dev genromfs git-core wget
     libftdi-dev libtool zlib1g-dev genromfs git-core wget
* did not install ia32-libs, nor sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386 , as it seems that newer version of the 32bit compiler were there already.
* On 64bit 14.04: did not install ia32-libs, nor the alternaive: "sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386", as it seems that newer version of the 32bit compiler were there already.
* added dialout to user group (and a logout - login cycle to implement)
* added dialout to user group (and a logout - login cycle to implement)
  sudo usermod -a -G dialout $USER
  sudo usermod -a -G dialout $USER
Line 76: Line 76:
====Ground control====
====Ground control====


From page http://qgroundcontrol.org/dev/build_source - get source for ground control application
Ground control is the main configuration application for pixhawk, also used for uploading new firmware for to the pixhawk, so it is needed.
 
* From page http://qgroundcontrol.org/dev/build_source - get source for ground control application
  git clone git://github.com/mavlink/qgroundcontrol.git
  git clone git://github.com/mavlink/qgroundcontrol.git
  cd qgroundcontrol
  cd qgroundcontrol
  git submodule init
  git submodule init
  git submodule update
  git submodule update
The last two lines allow other repositories to me in the same tree as groundcontrol.
The last two lines allow other repositories to me in the same tree as groundcontrol and adds a mavlink/c_library from another git repository.
* QT is installed as version 4.8, but vesion 5.2+ is needed, so installed
* QT is installed as version 4.8, but vesion 5.2+ is needed, so installed:
  sudo apt-get install qtcreator qttools5-dev qtbase5-dev qt5-default qtdeclarative5-dev libqt5serialport5-dev libqt5svg5-dev libqt5webkit5-dev libsdl1.2-dev build-essential libudev-dev
  sudo apt-get install qtcreator qttools5-dev qtbase5-dev qt5-default qtdeclarative5-dev libqt5serialport5-dev libqt5svg5-dev libqt5webkit5-dev libsdl1.2-dev build-essential libudev-dev
* made the needed Makefile
* qgroundcontrol can integrate with googleearth (on 64bit platform only?), so maybe you should install googleearth (the last line is probably another version, but is suggested by the "make-googleearth-package".
sudo apt-get install lsb-core
sudo apt-get install googleearth-package
make-googleearth-package
sudo dpkg -i googleearth_6.0.3.2197+1.1.0-1_i386.deb
* Make the needed Makefile, and compile
  qmake
  qmake
  make
  make
Line 92: Line 99:
====PX4 firmware====
====PX4 firmware====


* Got the px4 firmware from
* install arm compiler gcc-arm-none-eabi:
sudo apt-get install gcc-arm-none-eabi
* Get the px4 firmware from
  git clone https://github.com/PX4/Firmware.git px4
  git clone https://github.com/PX4/Firmware.git px4
* tried a compile
* try a compile of nuttx (is fetched as part of the make command)
  cd px4
  cd px4
make help
make archives
* make help is just to show compile options, then make the pixhawk firmware
  make
  make
* this fetches - it seems - NuttX (into NuttX/nuttx), but compile fails with "Unsupported version of arm-none-eabi-gcc, found: instead of 4.7.x.  Stop."
* this gave for me an "Unsupported version of arm-none-eabi-gcc, found: 4.8.2 instead of 4.7.x.  Stop"
* install gcc-arm-none-eabi:
This seems to be required - see http://pixhawk.org/dev/toolchain_installation_lin tool installation a bit down for all Linux distros.
  sudo apt-get install gcc-arm-none-eabi
I tried to use the 4.8 version by editing the ''makefiles/toolchain_gnu-arm-eabi.mk'' (from 4.7 to 4.8), it compiled after fixing an issue for canbus by adding ''#define UAVCAN_IMPLEMENT_PLACEMENT_NEW 1'' where the compile failed, but the produced image did not run.
  make
* if the version 4.8 is not fixed, then get the older version 4.7 and add it to the $PATH as first thing:
* this gave a new complaint "Unsupported version of arm-none-eabi-gcc, found: 4.8.2 instead of 4.7.x.  Stop"
cd ~
This seemed to be a "on the safe side" error, so I changed the required version in
wget https://launchpadlibrarian.net/174121628/gcc-arm-none-eabi-4_7-2014q2-20140408-linux.tar.bz2
kate makefiles/toolchain_gnu-arm-eabi.mk
  tar -jxf gcc-arm-none-eabi-4_7-2014q2-20140408-linux.tar.bz2
change required version to 4.8
  exportline="export PATH=$HOME/gcc-arm-none-eabi-4_7-2014q2/bin:\$PATH"
  # CROSSDEV_VER_SUPPORTED = 4.7
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
  CROSSDEV_VER_SUPPORTED = 4.8
  . ~/.profile
 
* Compile again
* Compile again
  make
  make
* but fails after some time with an error in file px4/uavcan/libuavcan/include/uavcan/util/placement_new.hpp compiler do not understand
Then it compiled for me
  #include <new>
 
The file explained that som compilers don't implement placement new operator, define UAVCAN_IMPLEMENT_PLACEMENT_NEW to apply this workaround, so I changed - in the file
* Upload to pixhawk
  in px4/uavcan/libuavcan/include/uavcan/util/placement_new.hpp
make upload px4fmu-v2_default
  added - as canbus anyhow is not intended to be used here
this gave:
  // jca
...
  #define UAVCAN_IMPLEMENT_PLACEMENT_NEW 1
==========================================================================================================
  // jca change end
WARNING: You should uninstall ModemManager as it conflicts with any non-modem serial device (like Pixhawk)
Then it compiled.
  ==========================================================================================================
* Then I Made a test, using the QGroundControl to reflash the pixhawk, with the file Build/px4fmu-v2_default.build/firmware.px4
Loaded firmware for 9,0, waiting for the bootloader...
This is not the way to do it:
  attempting reboot on /dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00...
* hold reset on pixhawk for a few seconds, and press "scan" on the firmware Upgrade page in QGroundControl. This will allow to reflash the default vesion.
  attempting reboot on /dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00...
* The modemmanager conflicts, so remove it
sudo apt-get remove modemmanager
* then again
make upload px4fmu-v2_default
This seems to finish as it should:
erase...
program...
verify...
done, rebooting.
But the pixhawk will not not generate the /dev/ttyACM0 post that qgroundcontrol uses for communication (nor any communication on serial port)
* qgroundcontrol cam make a default firmware upgrade, and this makes the pixhawk back in operational state, with an image fetched on the net. (Requires a hard reset of the pixhawk, before qgroundcontrol finds the device).
 
'''Øv'''
/Christian


===Arduflight recipy===
===Arduflight recipy===

Revision as of 08:29, 24 August 2014

How to compile and install software in hexacopter The modifications work best under windows, but some support exist for linux too.

This description is for windows (XP)

Get software

The supplier URL is http://www.mikrokopter.de/ucwiki/en/MikroKopter?action=show&redirect=FrontPage

To replace the software the following is needed:

  • the source code - using SVN
  • WinAvr with GCC compiler version 3.xx (newer compiles produce to slow code)
  • kopter-tool to install the software

SVN checkout

Install TortoiseSVN from http://sourceforge.net/projects/tortoisesvn/ if you do not have an SVN client already.

Do a SVN checkout from http://mikrokopter.de/mikrosvn/FlightCtrl/ to get the sourcevode for the flight controler (for other software - e.g. motor controller, the SVN URL is at http://www.mikrokopter.de/ucwiki/MikroKopterRepository)

WinAVR

WinAvr version WinAVR-20060421 comes with gcc version 3.4.6 - wich is OK. gcc version 4.x until at least 4.5.1 will not work (CPU will get overloaded and will - at least - no longer talk to kopter-tool.

  • Open programmers notepad and open a project for the newest branch in the flight controller repository. It already has a project file for programmers notepad. And a makefile for avr-gcc.
  • Compile the project (Tools->make_All) and it should make a *.hex file for one of the Flight-ctrl boards (currently default is version 2.0 with an atMEGA644 processor (Flight-ctrl 2.1 has an atMEGA1284p processor, and one of the first lines in the makefile needs to be changed)

Install new software

To install the newly compiled software use Kopter-tool. The copter has a bootloader installed, and the kopter-tool can switch to the bootloader while running.

Unpack the zip file, and the Kopter-tool is ready. It may be an idea to make a shortcut on the desktop.

  • Connect the helicopter to the PC (Flight-ctrl 5V rs232 port using the USB to 5v-RS232

device from Microkopter. Leave the helocopter battery off. And power the Flight-ctrl processor by connecting the two patch pins on the USB to 5v-RS232 board.

Assuming the USB-to-serial device is known to the PC. The PC now has a new com-port. Make sure this has a number less than com10, as it seems than Kopter-tool will only allow one-digit numbers.

  • Start the Kopter-tool. It will probably say "no connection".

Click on the "Firmware update and Terminal" buttom. From here change the com-port as appropriate. Now a few messages should arrive from the helicopter.

  • Press the "Software Update" and find the compiled *.hex-file.

The newly compiled software should now load.

If the load fails, then try again (at times some data is lost).

If the helicopter fails to run (totally wrong code, or upload-error), then the bootloader (most likely) still works. But the upload needs a special procedure.

Dead kopter bootload: Remove the jumper that powers the Flight-ctrl (on the USB to 5v-RS232 converter), start a new software update, and while it shown dots "...." on the terminal window, replace the jumper, and the boot-loader should be catched before it starts the faulty software. If it fails, retry.


Pixhawk

Raw pixhawk installation

From page https://pixhawk.org/dev/toolchain_installation_lin on a 32 and 64 bit 14.04 ubuntu (well kubuntu, but this should not matter much)

  • installed dependencies - no problem
sudo apt-get install python-serial python-argparse openocd \
   flex bison libncurses5-dev autoconf texinfo build-essential \
   libftdi-dev libtool zlib1g-dev genromfs git-core wget
  • On 64bit 14.04: did not install ia32-libs, nor the alternaive: "sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386", as it seems that newer version of the 32bit compiler were there already.
  • added dialout to user group (and a logout - login cycle to implement)
sudo usermod -a -G dialout $USER

Ground control

Ground control is the main configuration application for pixhawk, also used for uploading new firmware for to the pixhawk, so it is needed.

git clone git://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git submodule init
git submodule update

The last two lines allow other repositories to me in the same tree as groundcontrol and adds a mavlink/c_library from another git repository.

  • QT is installed as version 4.8, but vesion 5.2+ is needed, so installed:
sudo apt-get install qtcreator qttools5-dev qtbase5-dev qt5-default qtdeclarative5-dev libqt5serialport5-dev libqt5svg5-dev libqt5webkit5-dev libsdl1.2-dev build-essential libudev-dev
  • qgroundcontrol can integrate with googleearth (on 64bit platform only?), so maybe you should install googleearth (the last line is probably another version, but is suggested by the "make-googleearth-package".
sudo apt-get install lsb-core
sudo apt-get install googleearth-package
make-googleearth-package
sudo dpkg -i googleearth_6.0.3.2197+1.1.0-1_i386.deb
  • Make the needed Makefile, and compile
qmake
make
  • Testrun the control application and connect the pixhawk
./release/qgroundcontrol

PX4 firmware

  • install arm compiler gcc-arm-none-eabi:
sudo apt-get install gcc-arm-none-eabi
  • Get the px4 firmware from
git clone https://github.com/PX4/Firmware.git px4
  • try a compile of nuttx (is fetched as part of the make command)
cd px4
make help
make archives
  • make help is just to show compile options, then make the pixhawk firmware
make
  • this gave for me an "Unsupported version of arm-none-eabi-gcc, found: 4.8.2 instead of 4.7.x. Stop"

This seems to be required - see http://pixhawk.org/dev/toolchain_installation_lin tool installation a bit down for all Linux distros. I tried to use the 4.8 version by editing the makefiles/toolchain_gnu-arm-eabi.mk (from 4.7 to 4.8), it compiled after fixing an issue for canbus by adding #define UAVCAN_IMPLEMENT_PLACEMENT_NEW 1 where the compile failed, but the produced image did not run.

  • if the version 4.8 is not fixed, then get the older version 4.7 and add it to the $PATH as first thing:
cd ~
wget https://launchpadlibrarian.net/174121628/gcc-arm-none-eabi-4_7-2014q2-20140408-linux.tar.bz2
tar -jxf gcc-arm-none-eabi-4_7-2014q2-20140408-linux.tar.bz2
exportline="export PATH=$HOME/gcc-arm-none-eabi-4_7-2014q2/bin:\$PATH"
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
. ~/.profile
  • Compile again
make

Then it compiled for me

  • Upload to pixhawk
make upload px4fmu-v2_default

this gave:

...
==========================================================================================================
WARNING: You should uninstall ModemManager as it conflicts with any non-modem serial device (like Pixhawk)
==========================================================================================================
Loaded firmware for 9,0, waiting for the bootloader...
attempting reboot on /dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00...
attempting reboot on /dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00...
  • The modemmanager conflicts, so remove it
sudo apt-get remove modemmanager
  • then again
make upload px4fmu-v2_default

This seems to finish as it should:

erase...
program...
verify...
done, rebooting.

But the pixhawk will not not generate the /dev/ttyACM0 post that qgroundcontrol uses for communication (nor any communication on serial port)

  • qgroundcontrol cam make a default firmware upgrade, and this makes the pixhawk back in operational state, with an image fetched on the net. (Requires a hard reset of the pixhawk, before qgroundcontrol finds the device).

Øv /Christian

Arduflight recipy

Log of actions to use pixhawk on hexakopter:

- follow instruction in http://dev.ardupilot.com/wiki/building-px4-for-linux-with-make/ or start with the configuration from Søren, giving the directories in

px4src/ardupilot  
px4src/PX4Firmware
px4src/PX4NuttX
cd  px4src/ardupilot

Make the version for PX

cd ArduKopter
make configure
make px4-v2

Once finished it cam be installed if the pixhawk is connected by

make px4-v2-upload

PIXHAWK (ardupilot) GUI

Get the QT4 based GUI for the (ardupilot) pixhawk by

1. Make sure these packages are installed

sudo apt-get install phonon libqt4-dev libqt4-opengl-dev \
 libphonon-dev libphonon4 phonon-backend-gstreamer \
 qtcreator libsdl1.2-dev libflite1 flite1-dev build-essential \
 libopenscenegraph-dev libssl-dev libqt4-opengl-dev libudev-dev \
 libsndfile1-dev libqt4-sql-sqlite

2. getting the software from git:

git clone https://github.com/diydrones/apm_planner.git apm_planner

3. go to this directory and configure and make

cd apm_planner
qmake

This takes some time

then go to the release directory and run

cd release
./apm_planner