Building for Bebop on Linux
2016-03-02 14:34
585 查看
Building for Bebop on Linux
Content (Show)Upgrading the firmware
Build ArduCopter for Bebop
Install armhf toolchain
On Ubuntu from 12.04
On other Linux distributions
Download and compile ArduCopter
Uploading the firmware
Starting ArduPilot
Changing the GPS configuration
Launch Copter at startup
Recovery
Flying
Controlling the Bebop via RC over UDP on Linux
Basic configuration and frame parameters
Known limitations
These instructions clarify how to build ArduPilot for the
Bebop flight controller board on a Linux machine. More details on the Bebop can be found
here.
Tip:
The instructions for running ArduPilot on Bebop 2
can be found here.
Warning:
Making the changes described in this article will void your warranty! Parrot’s technical support will not help you with this hack or to recover your original software.
Warning:
Hacking a commercial product is risky! This software is still evolving, and you may well find issues with the vehicle ranging from poor flight to complete software freeze.
That said, it is almost always possible to recover a drone and members of the ardupilot dev team can likely help people hacking or recovering their Bebop on
this google group. Prepare to spend some time, patience and develop some hardware/software skills.
Contents [hide]
1 Upgrading the firmware
2 Build ArduCopter for Bebop
2.1 Install armhf toolchain
2.1.1 On Ubuntu from 12.04
2.1.2 On other Linux distributions
2.2 Download and compile ArduCopter
3 Uploading the firmware
4 Starting ArduPilot
5 Changing the GPS configuration
6 Launch Copter at startup
7 Recovery
8 Flying
9 Controlling the Bebop via RC over UDP on Linux
10 Basic configuration and frame parameters
11 Known limitations
Upgrading the firmware
As of Nov 2015, the Bebop ships with a version of Linux that cannot run ArduPilot and must be upgraded. In order to upgrade it, you will need to download a custom versionhere.
In order to upgrade to this version:
Power up your Bebop
Connect to its Wi-Fi network (BebopDrone-XXXX)
Connect to it via ftp
ftp 192.168.42.1
go to the eMMC directory
cd internal_000
Upload the update file
put bebopdrone_update.plf
Connect to the Bebop by telnet
telnet 192.168.42.1
Sync and reboot
sync reboot
Wait for the Bebop to perform the update (this could take several minutes)
Note:
Don’t shutdown your Bebop during this time
When the update is complete you can connect again via Wi-Fi and telnet and verify the update by checking the software version indicates 0.0.0 (not an official release)
cat version.txt
Build ArduCopter for Bebop
Tip:You can skip this step if you just want to try out the (experimental) binary version.
The following steps show how to build a custom version of the Copter software for Bebop:
Install armhf toolchain
On Ubuntu from 12.04
Install the official arm-linux-gnueabihf toolchainsudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
On other Linux distributions
Install the arm-gnueabihf tool chain that can be downloaded fromhere
Extract the tar archive (for instance in /opt)
sudo tar -xjvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.bz2 -C /opt/
Add the path to the toolchain to the PATH variable
export PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin:$PATH
Download and compile ArduCopter
You need to install git first (seeinstructions here)
Clone ardupilot repository
git clone https://github.com/diydrones/ardupilot.git[/code]
Building the flight control firmware is nearly identical for
building for the Pixhawk except themakecommand is:cd ardupilot/ArduCopter make bebop
Strip the binary to reduce the memory footprint:arm-linux-gnueabihf-strip ArduCopter.elf -o arducopterUploading the firmware
If you haven’t built the firmware as described in the previous steps you can download a binary version
here
Connect again by ftp and go to the eMMC directory
Put the arducopter binaryput arducopter
Connect to the Bebop via telnet
Copy arducopter to /usr/bin and change permissionscp /data/ftp/internal_000/arducopter /usr/bin chmod +x /usr/bin/arducopterStarting ArduPilot
Connect via telnet
Kill the regular autopilotkk
Launch Copterarducopter -A udp:192.168.42.255:14550:bcast -B /dev/ttyPA1 -C udp:192.168.42.255:14551:bcast -l /data/ftp/internal_000/APM/logs -t /data/ftp/internal_000/APM/terrainChanging the GPS configuration
In order to get Bebop’s GPS to send the NMEA frames that APM’s NMEA driver understands, you need to change its configuration. To achieve this you will need to stop the in-build autopilot as described previously (and don’t launch Copter yet):
Download the gps_config file
here
Connect to the Bebop via ftp and go to the eMMC directory as indicated in the “Upgrading the firmware” section above
Put the config fileput gps_config.txt
Connect to the Bebop via telnet
Copy gps_config.txt in /etc/cp /data/ftp/internal_000/gps_config.txt /etc/
Launch the GPS config updaterlibgps_cli
Wait for NMEA messages to be displayed in the console
Stop libgps_cli by typing Ctrl-CLaunch Copter at startup
It is a lot more convenient to automatically execute Copter startup than connect and do this manually. In order to do so, the startup scripts need to be hacked in the following way.
Warning:
This part is critical since you have to edit the startup script. If you do something wrong here, you could end up with a Bebop that can no longer boot properly. If this happens you will have to get a UART cable to recover.
The startup script is located at /etc/init.d/rcS. You will need to edit it to remove the lines launching the regular autopilot and replace them by launching Copter. The line in question is the following:DragonStarter.sh -out2null &
Replace this with:arducopter -A udp:192.168.42.255:14550:bcast -B /dev/ttyPA1 -C udp:192.168.42.255:14551:bcast -l /data/ftp/internal_000/APM/logs -t data/ftp/internal_000/APM/terrain &
In order to avoid editing the file manually, download
this rcS file.
Make a copy of the original rcS file for recovery purposecp /etc/init.d/rcS /etc/rcS_backup
Connect to the Bebop via ftp and put the rcS file in the eMMC as described before for the other files.
Then copy it manually to overwrite /etc/init.d/rcS and change permissionscp /data/ftp/internal_000/rcS /etc/init.d/rcS chmod +x /etc/init.d/rcS
Sync and rebootsync reboot
In case you want to put your Bebop back to normal and use the normal autopilot and app again, just replace
/etc/init.d/rcS with the backup file, sync and rebootcp /etc/rcS_backup /etc/init.d/rcS
sync reboot
Note:
If you put your software back to normal and use your Bebop with FreeFlight smartphone App, you might be asked to upgrade your software version. If you do so, you will have to repeat some of the previous steps, at least for the GPS
config, copying arducopter and modifying the init scripts. Regarding the need to upgrade to a custom version, it will depend on whether some options will or won’t be available in the following release. Informations to follow…Recovery
In case something went wrong and you are not able to boot your Bebop anymore
The UART port is located under the Bebop’s neck on the right side (facing the front camera)
You will have to pull back the polystyrene a bit but it shouldn’t cause much damage
Get a UART cable like
this one or any FTDI 3 pin cable (GND TXD RXD)
Get headers like
these ones and plug them into the cable like this:
Note:
The color codes for the cable are usually:
black = GND
yellow = RXD
orange = TXD
Plug the cable into the Bebop like this:
Note:
Be careful about the pinout:
black: front
yellow: middle
orange: back
Install a UART terminal emulator like minicom and connect to a Bebop once it is powered up
Copy the backup rcS file back to its original place, sync and reboot:mount -o remount,rw /
cp /etc/rcS_backup /etc/init.d/rcS
sync rebootFlying
FreeFlight 3 is not compatible with ArduPilot and you will therefore have to use
one of the supported GCS. Connect to the Bebop via Wi-Fi and just start your GCS, it should connect automatically if you setup the link to UDP (in case it is needed).
The
SkyController is not compatible with apm with its regular firmware. You would need to flash an alternative version in order to be able to control your Bebop with it (information about that is coming soon…).
In order to pilot the Bebop manually, Mission Planner GCS users can use a
gamepad as described here. Alternatively use the RCOutput UDP interface on port 777 on the Bebop, with a Linux PC (or board type Raspberry Pi) and a USB gamepad.Controlling the Bebop via RC over UDP on Linux
In order to control the arducopter for Bebop via RC over UDP, you can either write an application using
this protocol and sending a packet every 10ms
Or use
joystick_remote Linux application
In order to do so, clone the git repository:git clone https://github.com/jberaud/joystick_remote.git[/code]
Build itcd joystick_remote make
Plug a USB gamepad (the list of supported gamepads is explained if you type joystick_remote –help)
In case your gamepad is not supported you can easily add support for it if you know its mapping
Connect to the Bebop via Wi-FI and launch the application:./joystick_remote -d /dev/input/js[X] -t [gamepad] -r 192.168.42.1:777
where [X] is the device number of your joystick that you can easily find, usually 0 but sometimes 1 if your laptop already includes an input device like an accelerometer and [gamepad] is one of the supported gamepads.
so for an XBox 360 gamepad mapped on /dev/input/js0 the command line becomes./joystick_remote -d/dev/input/js0 -t xbox_360 -r 192.168.42.1:777
The flight modes have to be set in Copter’s parameters in order to use the buttons to set the flight modesBasic configuration and frame parameters
In order to do the basic configuration and calibration, you can use any of the GCSs and perform
Magnetometer Calibration
RC Calibration
Accelerometer Calibration
Thanks to Leonard Hall, we have a very good set of tuning parameters that you can find
hereKnown limitations
The GPS of the Bebop isn’t very good compared to a UBlox GPS and therefore the Bebop drifts significantly in Loiter, PosHold and other GPS modes
Mission run in Auto mode work reasonably well but we recommend you takeoff and land in a non-GPS mode such as AltHold or Stabilize.
Some work will be done to improve support for this GPS
The optical flow is currently under development
There is currently no support for video streaming and captureBuilding for Bebop 2
Content (Show)
Building ArduCopter for Bebop 2
Uploading the Firmware
Starting ArduPilot
Launch Copter at startup
Recovery
Flying and RC over UDP
Basic configuration and frame parameters
Additional information
These instructions explain how to use ArduPilot for the
Bebop2 on a Linux machine. The Bebop 2 is based on the same architecture as the Bebop with a few noticeable changes, not the least being a much better quality GPS (UBlox GPS with a bigger antenna).
Warning:
Making the changes described in this article will void your warranty! Parrot’s technical support will not help you with this hack or to recover your original software.
Warning:
Hacking a commercial product is risky! This software is still evolving, and you may well find issues with the vehicle ranging from poor flight to complete software freeze.
That said, it is almost always possible to recover a drone and members of the ardupilot dev team can likely help people hacking or recovering their Bebop onthis
google group. Prepare to spend some time, patience and develop some hardware/software skills.
Contents [hide]
1 Building ArduCopter for Bebop 2
2 Uploading the Firmware
3 Starting ArduPilot
4 Launch Copter at startup
5 Recovery
6 Flying and RC over UDP
7 Basic configuration and frame parameters
8 Additional informationBuilding ArduCopter for Bebop 2
The instructions are exactly the same as
the one used for BebopUploading the Firmware
Install adb (android debug tool):sudo apt-get install android-tools-adb
Connect to the Bebop2’s WiFi network (BebopDrone-XXXX).
Enable adb server by pressing the power button 4 times.
Connect to the Bebop’s adb server on port 9050:adb connect 192.168.42.1:9050
If the previous command returns an error, try again (press the power button 4 times and retry).
Remount the system partition as writeable:adb shell mount -o remount,rw /
Push the stripped arducopter binary to the Bebop2:adb push arducopter /usr/bin/Starting ArduPilot
Kill the regular autopilot:kk
Launch Copter:arducopter -A udp:192.168.42.255:14550:bcast -B /dev/ttyPA1 -C udp:192.168.42.255:14551:bcast -l /data/ftp/internal_000/APM/logs -t /data/ftp/internal_000/APM/terrainLaunch Copter at startup
As for Bebop, modify the init script /etc/init.d/rcS_mode_default. Comment the following line:DragonStarter.sh -out2null &
Replace it with:arducopter -A udp:192.168.42.255:14550:bcast -B /dev/ttyPA1 -C udp:192.168.42.255:14551:bcast -l /data/ftp/internal_000/APM/logs -t /data/ftp/internal_000/APM/terrain &
Enable adb server by pressing the power button 4 times.
Connect to adb server as described before:adb connect 192.168.42.1:9050
Re-mount the system partition as writeable:adb shell mount -o remount,rw /
In order to avoid editing the file manually, you can download
this one.
Save the original one and push this one to the bebopadb shell cp /etc/init.d/rcS_mode_default /etc/init.d/rcS_mode_default_backup adb push rcS_mode_default /etc/init.d/
Sync and reboot:adb shell sync adb shell rebootRecovery
For recovery, you can use the same cable as the one used on Bebop, see
here.
Remove the two screws using a torx T6 screwdriver
Remove the neck by pulling it towards the front of the Bebop
The UART connector is located on the right side
Plug the cable with the black wire at the front
Connect to the bebop with the UART port using any terminal emulator
Copy the backup rcS file back to its placemount -o remount,rw / cp /etc/init.d/rcS_mode_default_backup /etc/init.d/rcS_mode_default
Sync and rebootsync rebootFlying and RC over UDP
Flying and RC over UDP instructions are the same as
the ones for BebopBasic configuration and frame parameters
The set of tuning parameters can be found
here. These are not yet fully tuned for Bebop 2
In order to do the basic configuration and calibration, you can use any of the GCSs and perform:
Magnetometer Calibration
RC Calibration
Accelerometer CalibrationAdditional information
The loiter mode quality is very good compared to the first Bebop because of the (much better) UBlox GPS. It is now safe to takeoff and land in the mode you want.
There is still no support for video yet and the optical flow and sonar are currently under development.
This is a good time to participate and help improve them!
http://dev.ardupilot.com/wiki/building-for-bebop-2/
相关文章推荐
- Linux学习笔记之软件安装管理
- Centos7下Hortonworks的Ambari-server和Hadoop集群平台重装.
- Linux学习笔记(二)
- Linux 下 PHP 扩展 cURL 编译安装
- Linux LVM硬盘管理及LVM扩容
- CentOS 6.3下源码安装LAMP(Li…
- linux如何下解压windows下的.zip和…
- Linux下文件颜色代表的含义,Linux…
- Linux卸载MySQL
- CentOS 系统下 Python使用GDAL包
- Linux内核分析(第二周)
- centos 配置文件共享 nfs
- 学习Linux决心书
- linux的定时任务--crontab
- Linux之platform设备驱动
- Linux 5 下安装MySQL 5.6(RPM方式)
- Linux学习笔记(一)
- Linux grep 显示前后几行的信息
- 更改Linux nbuntu-12.04最小最大化、关闭按钮的显示位置为左边
- 【inode】Linux服务器inode索引节点用满原因以及解决方法