Skip to content

ROS 2 Bebop Driver Support

To get the Bebops to work on ROS 2, we need a driver to work with the Parrot SDK. Thankfully, jeremyfix (tell him thank you) did the heavy lifting. First, we need to update the Bebop's firmware to be compatible with the SDK.

The GitHub repo for the ros2_bebop_driver can be found here. The GitHub repo for the ros2_parrot_arsdk can be found here.

Firmware Update

The oldest version of the Bebop firmware that is supported by SDK version 3.1.4 is firmware 4.3.1. Download this version of the firmware here.

Note

If the GitHub repos or Bebop firmware files are no longer available, they are backed up on our NAS. Reach out to the admin for more information.

If not already installed, instal the Android Debug Bridge tools by running

sudo apt-get install android-tools-adb

Connnect the Bebop to the computer using micro USB. Press the power button on the back of the Bebop once anf wait for the light to become solid. Then click the power button 4 times in rapid succession. You should hear a beep. Then, run the following in the terminal to establish connection:

adb connect 192.168.43.1:9050

After a successful connection, the CLI should say connected to 192.168.43.1:9050. Now, open a Bebop shell using adb.

adb shell

Tip

If you are upgrading the Bebop firmware from an older version, you do not need to modify the dgwl.txt file.

Run the following command

mount -o remount, rw / &&
vi /bin/updater/dgwl.txt

You should see the contents of the file dgwl.txt:

# List of firmware versions to which to downgrade is allowed
# Regexps are basic regular expressions (BRE). See grep (1) manpage on a
# linux desktop to get the correct syntax (especially metacharacters escapes).
0 \ .0 \ .0
3 \ .3 \. [0-9] \ +

Press i to enter text entry mode in vi. Type the version number of the firmware you downloaded in the last line:

# List of firmware versions to which to downgrade is allowed
# Regexps are basic regular expressions (BRE). See grep (1) manpage on a
# linux desktop to get the correct syntax (especially metacharacters escapes).
0 \ .0 \ .0
3 \ .3 \. [0-9] \ +
4.3.1

Hit ESC to exit the insert mode. Save the file by typing

:wq

Hit ENTER. On an Ubuntu computer, open Files. Click "Other Locations" and in the "Enter server address..." field, type ftp://192.168.43.1 and connect anonymously (No username and password). Rename the downloaded firmware to bebop2_update.plf. Copy the firmware file to /data/ftp/internal_000 folder of the Bebop. Go back to the adb shell and enter

/bin/updater/updater_scan.sh /data/ftp/internal_000

The Bebop should return the following:

[FIRMWARE UPDATER] Boot # 4: Scanning / data / ftp / internal_000 for updates ...
[FIRMWARE UPDATER] Boot # 4: searching PLF named files * .plf ...
[FIRMWARE UPDATER] Boot # 4: Testing /data/ftp/internal_000/bebop2_update.plf
[FIRMWARE UPDATER] Boot # 4: Checking the downgrading whitelist /bin/updater/dgwl.txt ...
[FIRMWARE UPDATER] Boot # 4: whitelist: # List of firmware versions to which to downgrade is allowed
# Regexps are basic regular expressions (BRE). See grep (1) manpage on a
# linux desktop to get the correct syntax (especially metacharacters escapes).
0 \ .0 \ .0
3 \ .3 \. [0-9] \ +
4.3.1
[FIRMWARE UPDATER] Boot # 4: search result: 4.3.1
[FIRMWARE UPDATER] Boot # 4: downgrading allowed by whitelist
[FIRMWARE UPDATER] Boot # 4: Sending
/data/ftp/internal_000/bebop2_update.plf to the Update partition
[FIRMWARE UPDATER] Boot # 4: Move command is <mv>

Finally, reboot the Bebop by entering reboot in the adb shell. The Bebop will reboot multiple times for the firmware upgrade.

Network Connection

Follow the directions in the Configuring the WiFi on Bebops guide.

Install Driver

First, create a new workspace:

mkdir bebop_ws
cd bebop_ws

Install the following dependencies

sudo apt install ros-humble-camera-info-manager libavdevice-dev && sudo apt install libavahi-client-dev

Run the command to make sure that it does not hang on install

git config --global color.ui auto

Now install the ros2_parrot_arsdk

git clone https://github.com/jeremyfix/ros2_parrot_arsdk src/ros2_parrot_arsdk
colcon build --packages-select ros2_parrot_arsdk

The build should take around 2 to 3 minutes. If this fails to build quickly, it happens to be due to the repo command waiting for a reply on enabling color display. I'm not sure how to bypass that question, you can try

cd bebop_ws/src/ros2_parrot_arsdk
mkdir build
cd build
cmake ..
make

Next, run

git clone https://github.com/jeremyfix/ros2_bebop_driver.git src/ros2_bebop_driver
colcon build --symlink-install
source install/setup.bash
git clone https://github.com/jeremyfix/ros2_parrot_arsdk.git src/ros2_parrot_arsdk
colcon build --symlink-install

After this, you should be able to run the launch file

source bebop_ws/install/setup.bash
ros2 launch ros2_bebop_driver bebop_node_launch.xml ip:=YOUR.BEBOP.IP.ADDRESS