├── bebop_driver ├── scripts │ └── meta │ │ ├── README.md │ │ ├── templates │ │ ├── dictionary_key.mustache │ │ ├── url.mustache │ │ ├── last_build_info.mustache │ │ ├── msg.mustache │ │ ├── states_param_topic.rst.mustache │ │ ├── settings_param.rst.mustache │ │ ├── cfg.mustache │ │ ├── setting_callback_includes.h.mustache │ │ ├── state_callback_includes.h.mustache │ │ ├── callbacks_common.h.mustache │ │ ├── state_callbacks.h.mustache │ │ └── setting_callbacks.h.mustache │ │ ├── last_build_info │ │ ├── install.sh │ │ └── sdk_37.log ├── README.md ├── nodelet_plugins.xml ├── test │ ├── README.md │ └── bebop_itl_test.test ├── data │ ├── bebop1_camera_calib.yaml │ └── bebop2_camera_calib.yaml ├── launch │ ├── bebop_node.launch │ └── bebop_nodelet.launch ├── config │ └── defaults.yaml ├── package.xml ├── src │ └── bebop_driver_node.cpp ├── include │ └── bebop_driver │ │ ├── autogenerated │ │ └── callbacks_common.h │ │ ├── bebop_video_decoder.h │ │ ├── bebop.h │ │ └── bebop_driver_nodelet.h ├── CMakeLists.txt └── CHANGELOG.rst ├── docs ├── img │ └── tf.png ├── changelog.rst ├── README.md ├── coordinates.rst ├── FAQ.rst ├── installation.rst ├── contribute.rst ├── running.rst ├── configuration.rst ├── index.rst ├── license.rst ├── reading.rst ├── dev.rst └── Makefile ├── bebop_msgs ├── README.md ├── msg │ └── autogenerated │ │ ├── last_build_info │ │ ├── CommonOverHeatStateOverHeatChanged.msg │ │ ├── Ardrone3PROStateFeatures.msg │ │ ├── Ardrone3PilotingStateFlatTrimChanged.msg │ │ ├── CommonCommonStateBatteryStateChanged.msg │ │ ├── Ardrone3GPSStateNumberOfSatelliteChanged.msg │ │ ├── Ardrone3NetworkStateAllWifiScanChanged.msg │ │ ├── CommonARLibsVersionsStateDeviceLibARCommandsVersion.msg │ │ ├── Ardrone3PilotingStateAutoTakeOffModeChanged.msg │ │ ├── CommonARLibsVersionsStateControllerLibARCommandsVersion.msg │ │ ├── CommonARLibsVersionsStateSkyControllerLibARCommandsVersion.msg │ │ ├── CommonCalibrationStateMagnetoCalibrationStartedChanged.msg │ │ ├── Ardrone3CameraStateOrientation.msg │ │ ├── Ardrone3NetworkStateAllWifiAuthChannelChanged.msg │ │ ├── CommonCommonStateMassStorageStateListChanged.msg │ │ ├── CommonCommonStateWifiSignalChanged.msg │ │ ├── CommonOverHeatStateOverHeatRegulationChanged.msg │ │ ├── CommonAudioStateAudioStreamingRunning.msg │ │ ├── CommonCalibrationStateMagnetoCalibrationRequiredState.msg │ │ ├── Ardrone3CameraStateVelocityRange.msg │ │ ├── Ardrone3CameraStateOrientationV2.msg │ │ ├── Ardrone3PilotingStateAirSpeedChanged.msg │ │ ├── Ardrone3PilotingStateAttitudeChanged.msg │ │ ├── Ardrone3MediaRecordStatePictureStateChanged.msg │ │ ├── CommonAccessoryStateAccessoryConfigModificationEnabled.msg │ │ ├── CommonMavlinkStateMissionItemExecuted.msg │ │ ├── CommonHeadlightsStateintensityChanged.msg │ │ ├── CommonCommonStateAllStatesChanged.msg │ │ ├── Ardrone3CameraStatedefaultCameraOrientation.msg │ │ ├── Ardrone3CameraStatedefaultCameraOrientationV2.msg │ │ ├── Ardrone3PilotingStateAltitudeChanged.msg │ │ ├── Ardrone3PilotingStateLandingStateChanged.msg │ │ ├── CommonFlightPlanStateAvailabilityStateChanged.msg │ │ ├── CommonFlightPlanStateLockStateChanged.msg │ │ ├── CommonRunStateRunIdChanged.msg │ │ ├── Ardrone3PilotingStatePositionChanged.msg │ │ ├── CommonCommonStateMassStorageInfoRemainingListChanged.msg │ │ ├── CommonCommonStateCurrentDateChanged.msg │ │ ├── CommonCommonStateCurrentTimeChanged.msg │ │ ├── Ardrone3MediaStreamingStateVideoEnableChanged.msg │ │ ├── CommonChargerStateLastChargeRateChanged.msg │ │ ├── CommonCommonStateDeprecatedMassStorageContentChanged.msg │ │ ├── CommonMavlinkStateMavlinkPlayErrorStateChanged.msg │ │ ├── CommonCommonStateMassStorageContent.msg │ │ ├── Ardrone3MediaRecordStateVideoStateChanged.msg │ │ ├── Ardrone3AntiflickeringStatemodeChanged.msg │ │ ├── CommonCommonStateMassStorageContentForCurrentRun.msg │ │ ├── Ardrone3PilotingStateAlertStateChanged.msg │ │ ├── CommonAccessoryStateSupportedAccessoriesListChanged.msg │ │ ├── Ardrone3AntiflickeringStateelectricFrequencyChanged.msg │ │ ├── CommonCalibrationStatePitotCalibrationStateChanged.msg │ │ ├── Ardrone3PilotingStateSpeedChanged.msg │ │ ├── Ardrone3NetworkStateWifiScanListChanged.msg │ │ ├── CommonCommonStateVideoRecordingTimestamp.msg │ │ ├── CommonChargerStateMaxChargeRateChanged.msg │ │ ├── CommonCalibrationStateMagnetoCalibrationAxisToCalibrateChanged.msg │ │ ├── Ardrone3MediaStreamingStateVideoStreamModeChanged.msg │ │ ├── Ardrone3NetworkStateWifiAuthChannelListChanged.msg │ │ ├── CommonCommonStateSensorsStatesListChanged.msg │ │ ├── CommonCommonStateCountryListKnown.msg │ │ ├── CommonCommonStateMassStorageInfoStateListChanged.msg │ │ ├── CommonCalibrationStateMagnetoCalibrationStateChanged.msg │ │ ├── Ardrone3GPSStateHomeTypeAvailabilityChanged.msg │ │ ├── Ardrone3MediaRecordStateVideoStateChangedV2.msg │ │ ├── Ardrone3AccessoryStateConnectedAccessories.msg │ │ ├── Ardrone3MediaRecordStatePictureStateChangedV2.msg │ │ ├── CommonMavlinkStateMavlinkFilePlayingStateChanged.msg │ │ ├── Ardrone3PilotingStateGpsLocationChanged.msg │ │ ├── Ardrone3PilotingStateFlyingStateChanged.msg │ │ ├── Ardrone3MediaRecordStateVideoResolutionState.msg │ │ ├── CommonAccessoryStateAccessoryConfigChanged.msg │ │ ├── CommonFlightPlanStateComponentStateListChanged.msg │ │ ├── Ardrone3GPSStateHomeTypeChosenChanged.msg │ │ ├── CommonCommonStateProductModel.msg │ │ ├── CommonChargerStateCurrentChargeStateChanged.msg │ │ ├── Ardrone3PilotingStateNavigateHomeStateChanged.msg │ │ ├── CommonChargerStateChargingInfo.msg │ │ ├── Ardrone3PilotingStatemoveToChanged.msg │ │ └── CommonAnimationsStateList.msg ├── CMakeLists.txt ├── package.xml └── CHANGELOG.rst ├── bebop_tools ├── README.md ├── CMakeLists.txt ├── launch │ ├── bebop_nodelet_iv.launch │ └── joy_teleop.launch ├── package.xml ├── CHANGELOG.rst └── config │ ├── xbox360.yaml │ └── log710.yaml ├── bebop_description ├── meshes │ └── bebop_model.stl ├── CMakeLists.txt ├── launch │ └── description.launch ├── CHANGELOG.rst ├── package.xml └── urdf │ └── bebop_base.urdf.xacro ├── bebop_autonomy ├── CMakeLists.txt ├── CHANGELOG.rst └── package.xml ├── .gitignore ├── LICENSE ├── README.md └── .travis.yml /bebop_driver/scripts/meta/README.md: -------------------------------------------------------------------------------- 1 | ## Automatic Code Generation 2 | 3 | TBA 4 | -------------------------------------------------------------------------------- /bebop_driver/README.md: -------------------------------------------------------------------------------- 1 | ## bebop_driver 2 | 3 | ROS Driver for Parrot Bebop drone. 4 | -------------------------------------------------------------------------------- /docs/img/tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AutonomyLab/bebop_autonomy/HEAD/docs/img/tf.png -------------------------------------------------------------------------------- /bebop_msgs/README.md: -------------------------------------------------------------------------------- 1 | ## bebop_msgs 2 | 3 | Common message definitions for `bebop_autonomy`. 4 | -------------------------------------------------------------------------------- /bebop_tools/README.md: -------------------------------------------------------------------------------- 1 | ## bebop_tools 2 | 3 | Miscellaneous tools for `bebop_autonomy` package 4 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/dictionary_key.mustache: -------------------------------------------------------------------------------- 1 | ARCONTROLLER_DICTIONARY_KEY_{{project}}_{{class}}_{{cmd}} -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/url.mustache: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/{{repo_owner}}/arsdk-xml/{{hash}}/xml/{{filename}} -------------------------------------------------------------------------------- /bebop_description/meshes/bebop_model.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AutonomyLab/bebop_autonomy/HEAD/bebop_description/meshes/bebop_model.stl -------------------------------------------------------------------------------- /bebop_autonomy/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(bebop_autonomy) 3 | find_package(catkin REQUIRED) 4 | catkin_metapackage() 5 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/last_build_info.mustache: -------------------------------------------------------------------------------- 1 | Last auto-generation build info: 2 | 3 | - Source hash {{source_hash}} 4 | - Date {{date}} 5 | - Generator {{generator}} @ {{generator_git_hash}} 6 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/last_build_info: -------------------------------------------------------------------------------- 1 | Last auto-generation build info: 2 | 3 | - Source hash ab28dab91845cd36c4d7002b55f70805deaff3c8 4 | - Date 2017-06-27 13:53:57.790920 5 | - Generator generate.py @ 8801830 6 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/last_build_info: -------------------------------------------------------------------------------- 1 | Last auto-generation build info: 2 | 3 | - Source hash ab28dab91845cd36c4d7002b55f70805deaff3c8 4 | - Date 2017-06-27 13:53:57.790920 5 | - Generator generate.py @ 8801830 6 | -------------------------------------------------------------------------------- /bebop_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(bebop_description) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | roslaunch 6 | ) 7 | 8 | catkin_package() 9 | 10 | # TODO: Tests 11 | # TODO: Install Rules 12 | -------------------------------------------------------------------------------- /docs/changelog.rst: -------------------------------------------------------------------------------- 1 | ***************************** 2 | Changelog and Release History 3 | ***************************** 4 | 5 | .. include:: ../bebop_driver/CHANGELOG.rst 6 | .. include:: ../bebop_tools/CHANGELOG.rst 7 | .. include:: ../bebop_msgs/CHANGELOG.rst 8 | .. include:: ../bebop_description/CHANGELOG.rst 9 | -------------------------------------------------------------------------------- /bebop_driver/nodelet_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Nodelet implementation of bebop_autonomy/bebop_driver. 4 | 5 | 6 | -------------------------------------------------------------------------------- /bebop_tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(bebop_tools) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | bebop_msgs 6 | ) 7 | 8 | # catkin_python_setup() 9 | 10 | catkin_package( 11 | # INCLUDE_DIRS include 12 | CATKIN_DEPENDS bebop_msgs 13 | ) 14 | 15 | # TODO: Install Rules 16 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | ## Documentation for bebop_autonomy 2 | 3 | ### View the documentation online 4 | 5 | http://bebop-autonomy.readthedocs.org/ 6 | 7 | ### Build documentation locally 8 | 9 | Install [sphinx](http://sphinx-doc.org/latest/install.html) and [ReadTheDocs Theme](https://github.com/snide/sphinx_rtd_theme), then run `make`. 10 | -------------------------------------------------------------------------------- /bebop_driver/test/README.md: -------------------------------------------------------------------------------- 1 | ## Running BIL test with the new catkin 2 | 3 | TBA 4 | 5 | ## Running BIL test manually 6 | 7 | ```bash 8 | $ cd bebop_ws/build/bebop_driver 9 | $ make run_tests 10 | ``` 11 | 12 | ## Debugging BIL test 13 | 14 | ```bash 15 | $ cd bebop_ws/build/bebop_driver 16 | $ make tests 17 | $ rostest --text bebop_driver bebop_itl_test.test 18 | ``` 19 | -------------------------------------------------------------------------------- /bebop_description/launch/description.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonOverHeatStateOverHeatChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonOverHeatStateOverHeatChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Overheat temperature reached. 8 | 9 | Header header 10 | 11 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PROStateFeatures.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PROStateFeatures 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Pro features. 8 | 9 | Header header 10 | 11 | # Bitfield representing enabled features. 12 | uint64 features 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateFlatTrimChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateFlatTrimChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drone acknowledges that flat trim was correctly processed. 8 | 9 | Header header 10 | 11 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateBatteryStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateBatteryStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Battery state. 8 | 9 | Header header 10 | 11 | # Battery percentage 12 | uint8 percent 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3GPSStateNumberOfSatelliteChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3GPSStateNumberOfSatelliteChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Number of GPS satellites. 8 | 9 | Header header 10 | 11 | # The number of satellite 12 | uint8 numberOfSatellite 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3NetworkStateAllWifiScanChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3NetworkStateAllWifiScanChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Wifi scan ended.\n When receiving this event, the list of [WifiScanResults](#1-14-0) is complete. 8 | 9 | Header header 10 | 11 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonARLibsVersionsStateDeviceLibARCommandsVersion.msg: -------------------------------------------------------------------------------- 1 | # CommonARLibsVersionsStateDeviceLibARCommandsVersion 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: 8 | 9 | Header header 10 | 11 | # version of libARCommands (1.2.3.4 format) 12 | string version 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateAutoTakeOffModeChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateAutoTakeOffModeChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Auto takeoff mode 8 | 9 | Header header 10 | 11 | # State of automatic take off mode (1 if enabled) 12 | uint8 state 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonARLibsVersionsStateControllerLibARCommandsVersion.msg: -------------------------------------------------------------------------------- 1 | # CommonARLibsVersionsStateControllerLibARCommandsVersion 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: 8 | 9 | Header header 10 | 11 | # version of libARCommands (1.2.3.4 format) 12 | string version 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonARLibsVersionsStateSkyControllerLibARCommandsVersion.msg: -------------------------------------------------------------------------------- 1 | # CommonARLibsVersionsStateSkyControllerLibARCommandsVersion 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: 8 | 9 | Header header 10 | 11 | # version of libARCommands (1.2.3.4 format) 12 | string version 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCalibrationStateMagnetoCalibrationStartedChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCalibrationStateMagnetoCalibrationStartedChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Calibration process state. 8 | 9 | Header header 10 | 11 | # 1 if calibration has started, 0 otherwise 12 | uint8 started 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3CameraStateOrientation.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3CameraStateOrientation 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Camera orientation. 8 | 9 | Header header 10 | 11 | # Tilt camera consign for the drone [-100;100] 12 | int8 tilt 13 | # Pan camera consign for the drone [-100;100] 14 | int8 pan 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3NetworkStateAllWifiAuthChannelChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3NetworkStateAllWifiAuthChannelChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Available wifi channels completed.\n When receiving this event, the list of [AvailableWifiChannels](#1-14-2) is complete. 8 | 9 | Header header 10 | 11 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateMassStorageStateListChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateMassStorageStateListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mass storage state list. 8 | 9 | Header header 10 | 11 | # Mass storage id (unique) 12 | uint8 mass_storage_id 13 | # Mass storage name 14 | string name 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateWifiSignalChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateWifiSignalChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Rssi (Wifi Signal between controller and product) changed. 8 | 9 | Header header 10 | 11 | # RSSI of the signal between controller and the product (in dbm) 12 | int16 rssi 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonOverHeatStateOverHeatRegulationChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonOverHeatStateOverHeatRegulationChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Overheat regulation type. 8 | 9 | Header header 10 | 11 | # Type of overheat regulation : 0 for ventilation, 1 for switch off 12 | uint8 regulationType 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonAudioStateAudioStreamingRunning.msg: -------------------------------------------------------------------------------- 1 | # CommonAudioStateAudioStreamingRunning 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Audio stream direction. 8 | 9 | Header header 10 | 11 | # Bit field for TX and RX running bit 0 is 1 if Drone TX is running bit 1 is 1 if Drone RX is running 12 | uint8 running 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCalibrationStateMagnetoCalibrationRequiredState.msg: -------------------------------------------------------------------------------- 1 | # CommonCalibrationStateMagnetoCalibrationRequiredState 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Calibration required. 8 | 9 | Header header 10 | 11 | # 1 if calibration is required, 0 if current calibration is still valid 12 | uint8 required 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3CameraStateVelocityRange.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3CameraStateVelocityRange 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Camera Orientation velocity limits. 8 | 9 | Header header 10 | 11 | # Absolute max tilt velocity [deg/s] 12 | float32 max_tilt 13 | # Absolute max pan velocity [deg/s] 14 | float32 max_pan 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3CameraStateOrientationV2.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3CameraStateOrientationV2 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Camera orientation with float arguments. 8 | 9 | Header header 10 | 11 | # Tilt camera consign for the drone [deg] 12 | float32 tilt 13 | # Pan camera consign for the drone [deg] 14 | float32 pan 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateAirSpeedChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateAirSpeedChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drones air speed changed\n Expressed in the drones referential. 8 | 9 | Header header 10 | 11 | # Speed relative to air on x axis (speed is always > 0) (in m/s) 12 | float32 airSpeed 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateAttitudeChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateAttitudeChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drones attitude changed. 8 | 9 | Header header 10 | 11 | # roll value (in radian) 12 | float32 roll 13 | # Pitch value (in radian) 14 | float32 pitch 15 | # Yaw value (in radian) 16 | float32 yaw 17 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaRecordStatePictureStateChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaRecordStatePictureStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Picture state. 8 | 9 | Header header 10 | 11 | # 1 if picture has been taken, 0 otherwise 12 | uint8 state 13 | # Mass storage id where the picture was recorded 14 | uint8 mass_storage_id 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonAccessoryStateAccessoryConfigModificationEnabled.msg: -------------------------------------------------------------------------------- 1 | # CommonAccessoryStateAccessoryConfigModificationEnabled 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Availability to declare or not an accessory. 8 | 9 | Header header 10 | 11 | # 1 if the modification of the accessory Config is enabled, 0 otherwise 12 | uint8 enabled 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonMavlinkStateMissionItemExecuted.msg: -------------------------------------------------------------------------------- 1 | # CommonMavlinkStateMissionItemExecuted 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mission item has been executed. 8 | 9 | Header header 10 | 11 | # Index of the mission item. This is the place of the mission item in the list of the items of the mission. Begins at 0. 12 | uint32 idx 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonHeadlightsStateintensityChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonHeadlightsStateintensityChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Lighting LEDs intensity. 8 | 9 | Header header 10 | 11 | # The intensity value for the left LED (0 through 255). 12 | uint8 left 13 | # The intensity value for the right LED (0 through 255). 14 | uint8 right 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateAllStatesChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateAllStatesChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: All states have been sent.\n\n **Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.** 8 | 9 | Header header 10 | 11 | -------------------------------------------------------------------------------- /bebop_driver/data/bebop1_camera_calib.yaml: -------------------------------------------------------------------------------- 1 | image_width: 640 2 | image_height: 368 3 | camera_name: bebop_front 4 | camera_matrix: 5 | rows: 3 6 | cols: 3 7 | data: [396.17782, 0, 322.453185, 0, 399.798333, 174.243174, 0, 0, 1] 8 | distortion_model: plumb_bob 9 | distortion_coefficients: 10 | rows: 1 11 | cols: 5 12 | data: [-0.001983, 0.015844, -0.003171, 0.001506, 0] 13 | rectification_matrix: 14 | rows: 3 15 | cols: 3 16 | data: [1, 0, 0, 0, 1, 0, 0, 0, 1] 17 | projection_matrix: 18 | rows: 3 19 | cols: 4 20 | data: [400.182373, 0, 323.081936, 0, 0, 403.197845, 172.320207, 0, 0, 0, 1, 0] 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | 30 | # doc 31 | docs/_build 32 | 33 | # Misc 34 | CMakeLists.txt.user 35 | bebop_driver/scripts/meta/*.msg 36 | bebop_driver/scripts/meta/*.h 37 | bebop_driver/scripts/meta/*.cfg 38 | bebop_driver/scripts/meta/*.rst 39 | 40 | # Temporary files 41 | *~ 42 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3CameraStatedefaultCameraOrientation.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3CameraStatedefaultCameraOrientation 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Orientation of the center of the camera.\n This is the value to send when you want to center the camera. 8 | 9 | Header header 10 | 11 | # Tilt value (in degree) 12 | int8 tilt 13 | # Pan value (in degree) 14 | int8 pan 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3CameraStatedefaultCameraOrientationV2.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3CameraStatedefaultCameraOrientationV2 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Orientation of the center of the camera.\n This is the value to send when you want to center the camera. 8 | 9 | Header header 10 | 11 | # Tilt value [deg] 12 | float32 tilt 13 | # Pan value [deg] 14 | float32 pan 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateAltitudeChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateAltitudeChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drones altitude changed.\n The altitude reported is the altitude above the take off point.\n To get the altitude above sea level, see [PositionChanged](#1-4-4). 8 | 9 | Header header 10 | 11 | # Altitude in meters 12 | float64 altitude 13 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/msg.mustache: -------------------------------------------------------------------------------- 1 | # {{msg_filename}} 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: {{msg_file_comment}} 8 | 9 | Header header 10 | 11 | {{#msg_field}} 12 | # {{msg_field_comment}} 13 | {{#msg_field_enum}} 14 | uint8 {{constant_name}}={{constant_value}} # {{constant_comment}} 15 | {{/msg_field_enum}} 16 | {{msg_field_type}} {{msg_field_name}} 17 | {{/msg_field}} 18 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateLandingStateChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateLandingStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Landing state.\n Only available for fixed wings (which have two landing modes). 8 | 9 | Header header 10 | 11 | # Drone landing state 12 | uint8 state_linear=0 # Linear landing 13 | uint8 state_spiral=1 # Spiral landing 14 | uint8 state 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonFlightPlanStateAvailabilityStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonFlightPlanStateAvailabilityStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: FlightPlan availability.\n Availability is linked to GPS fix, magnetometer calibration, sensor states... 8 | 9 | Header header 10 | 11 | # Running a flightPlan file is available (1 running a flightPlan file is available, otherwise 0) 12 | uint8 AvailabilityState 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonFlightPlanStateLockStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonFlightPlanStateLockStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: FlightPlan lock state.\n Represents the fact that the controller is able or not to stop or pause a playing FlightPlan 8 | 9 | Header header 10 | 11 | # 1 if FlightPlan is locked: cant pause or stop FlightPlan. 0 if FlightPlan is unlocked: pause or stop available. 12 | uint8 LockState 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonRunStateRunIdChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonRunStateRunIdChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Current run id.\n A run id is uniquely identifying a run or a flight.\n For each run is generated on the drone a file which can be used by Academy to sum up the run.\n Also, each medias taken during a run has a filename containing the run id. 8 | 9 | Header header 10 | 11 | # Id of the run 12 | string runId 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStatePositionChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStatePositionChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drones position changed. 8 | 9 | Header header 10 | 11 | # Latitude position in decimal degrees (500.0 if not available) 12 | float64 latitude 13 | # Longitude position in decimal degrees (500.0 if not available) 14 | float64 longitude 15 | # Altitude in meters (from GPS) 16 | float64 altitude 17 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateMassStorageInfoRemainingListChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateMassStorageInfoRemainingListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mass storage remaining data list. 8 | 9 | Header header 10 | 11 | # Mass storage free space in MBytes 12 | uint32 free_space 13 | # Mass storage record time reamining in minute 14 | uint16 rec_time 15 | # Mass storage photo remaining 16 | uint32 photo_remaining 17 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateCurrentDateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateCurrentDateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Date changed.\n Corresponds to the latest date set on the drone.\n\n **Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.** 8 | 9 | Header header 10 | 11 | # Date with ISO-8601 format 12 | string date 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateCurrentTimeChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateCurrentTimeChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Time changed.\n Corresponds to the latest time set on the drone.\n\n **Please note that you should not care about this event if you are using the libARController API as this library is handling the connection process for you.** 8 | 9 | Header header 10 | 11 | # Time with ISO-8601 format 12 | string time 13 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaStreamingStateVideoEnableChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaStreamingStateVideoEnableChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Video stream state. 8 | 9 | Header header 10 | 11 | # Current video streaming status. 12 | uint8 enabled_enabled=0 # Video streaming is enabled. 13 | uint8 enabled_disabled=1 # Video streaming is disabled. 14 | uint8 enabled_error=2 # Video streaming failed to start. 15 | uint8 enabled 16 | -------------------------------------------------------------------------------- /bebop_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(bebop_msgs) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | message_generation 6 | std_msgs 7 | ) 8 | 9 | file(GLOB MSGS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/msg msg/autogenerated/*.msg) 10 | message(STATUS "All msg files: ${MSGS}") 11 | 12 | # Generate messages in the 'msg' folder 13 | add_message_files( 14 | DIRECTORY msg 15 | FILES 16 | ${MSGS} 17 | ) 18 | 19 | generate_messages( 20 | DEPENDENCIES 21 | std_msgs 22 | ) 23 | 24 | catkin_package( 25 | CATKIN_DEPENDS message_runtime std_msgs 26 | ) 27 | 28 | #install(DIRECTORY include/bebop_msgs 29 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 30 | # PATTERN "*.h" 31 | #) 32 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonChargerStateLastChargeRateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonChargerStateLastChargeRateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Last charge rate. 8 | 9 | Header header 10 | 11 | # The charge rate recorded by the firmware for the last charge. 12 | uint8 rate_UNKNOWN=0 # The last charge rate is not known. 13 | uint8 rate_SLOW=1 # Slow charge rate. 14 | uint8 rate_MODERATE=2 # Moderate charge rate. 15 | uint8 rate_FAST=3 # Fast charge rate. 16 | uint8 rate 17 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateDeprecatedMassStorageContentChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateDeprecatedMassStorageContentChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mass storage content changed. 8 | 9 | Header header 10 | 11 | # Mass storage id (unique) 12 | uint8 mass_storage_id 13 | # Number of photos (does not include raw photos) 14 | uint16 nbPhotos 15 | # Number of videos 16 | uint16 nbVideos 17 | # Number of puds 18 | uint16 nbPuds 19 | # Number of crash logs 20 | uint16 nbCrashLogs 21 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonMavlinkStateMavlinkPlayErrorStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonMavlinkStateMavlinkPlayErrorStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: FlightPlan error. 8 | 9 | Header header 10 | 11 | # State of play error 12 | uint8 error_none=0 # There is no error 13 | uint8 error_notInOutDoorMode=1 # The drone is not in outdoor mode 14 | uint8 error_gpsNotFixed=2 # The gps is not fixed 15 | uint8 error_notCalibrated=3 # The magnetometer of the drone is not calibrated 16 | uint8 error 17 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateMassStorageContent.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateMassStorageContent 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mass storage content. 8 | 9 | Header header 10 | 11 | # Mass storage id (unique) 12 | uint8 mass_storage_id 13 | # Number of photos (does not include raw photos) 14 | uint16 nbPhotos 15 | # Number of videos 16 | uint16 nbVideos 17 | # Number of puds 18 | uint16 nbPuds 19 | # Number of crash logs 20 | uint16 nbCrashLogs 21 | # Number of raw photos 22 | uint16 nbRawPhotos 23 | -------------------------------------------------------------------------------- /docs/coordinates.rst: -------------------------------------------------------------------------------- 1 | ***************************** 2 | Coordinate System Conventions 3 | ***************************** 4 | 5 | .. _sec-coords: 6 | 7 | ROS Standard Message Types (i.e Twist, Odometery) - REP 103 8 | =========================================================== 9 | 10 | +x forward 11 | +y left 12 | +z up 13 | +yaw CCW 14 | 15 | - More information: http://www.ros.org/reps/rep-0103.html 16 | 17 | Bebop Velocities 18 | ================ 19 | 20 | +x East 21 | +y South 22 | +z Down 23 | 24 | Bebop Attitude 25 | ============== 26 | 27 | +x forward 28 | +y right 29 | +z down 30 | +yaw CW 31 | 32 | SDK's setPilotingPCMD 33 | ===================== 34 | 35 | +roll right 36 | +pitch forward 37 | +gaz up 38 | +yaw CW 39 | -------------------------------------------------------------------------------- /bebop_driver/data/bebop2_camera_calib.yaml: -------------------------------------------------------------------------------- 1 | image_width: 856 2 | image_height: 480 3 | camera_name: bebop_front 4 | camera_matrix: 5 | rows: 3 6 | cols: 3 7 | data: [537.292878, 0.000000, 427.331854, 0.000000, 527.000348, 240.226888, 0.000000, 0.000000, 1.000000] 8 | distortion_model: plumb_bob 9 | distortion_coefficients: 10 | rows: 1 11 | cols: 5 12 | data: [0.004974, -0.000130, -0.001212, 0.002192, 0.000000] 13 | rectification_matrix: 14 | rows: 3 15 | cols: 3 16 | data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000] 17 | projection_matrix: 18 | rows: 3 19 | cols: 4 20 | data: [539.403503, 0.000000, 429.275072, 0.000000, 0.000000, 529.838562, 238.941372, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000] 21 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaRecordStateVideoStateChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaRecordStateVideoStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Picture record state. 8 | 9 | Header header 10 | 11 | # State of video 12 | uint8 state_stopped=0 # Video was stopped 13 | uint8 state_started=1 # Video was started 14 | uint8 state_failed=2 # Video was failed 15 | uint8 state_autostopped=3 # Video was auto stopped 16 | uint8 state 17 | # Mass storage id where the video was recorded 18 | uint8 mass_storage_id 19 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3AntiflickeringStatemodeChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3AntiflickeringStatemodeChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Antiflickering mode. 8 | 9 | Header header 10 | 11 | # Mode of the anti flickering functionnality 12 | uint8 mode_auto=0 # Anti flickering based on the electric frequency previously sent 13 | uint8 mode_FixedFiftyHertz=1 # Anti flickering based on a fixed frequency of 50Hz 14 | uint8 mode_FixedSixtyHertz=2 # Anti flickering based on a fixed frequency of 60Hz 15 | uint8 mode 16 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateMassStorageContentForCurrentRun.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateMassStorageContentForCurrentRun 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mass storage content for current run.\n Only counts the files related to the current run (see [RunId](#0-30-0)) 8 | 9 | Header header 10 | 11 | # Mass storage id (unique) 12 | uint8 mass_storage_id 13 | # Number of photos (does not include raw photos) 14 | uint16 nbPhotos 15 | # Number of videos 16 | uint16 nbVideos 17 | # Number of raw photos 18 | uint16 nbRawPhotos 19 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateAlertStateChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateAlertStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Alert state. 8 | 9 | Header header 10 | 11 | # Drone alert state 12 | uint8 state_none=0 # No alert 13 | uint8 state_user=1 # User emergency alert 14 | uint8 state_cut_out=2 # Cut out alert 15 | uint8 state_critical_battery=3 # Critical battery alert 16 | uint8 state_low_battery=4 # Low battery alert 17 | uint8 state_too_much_angle=5 # The angle of the drone is too high 18 | uint8 state 19 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonAccessoryStateSupportedAccessoriesListChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonAccessoryStateSupportedAccessoriesListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Supported accessories list. 8 | 9 | Header header 10 | 11 | # Accessory configurations supported by the product. 12 | uint8 accessory_NO_ACCESSORY=0 # No accessory. 13 | uint8 accessory_STD_WHEELS=1 # Standard wheels 14 | uint8 accessory_TRUCK_WHEELS=2 # Truck wheels 15 | uint8 accessory_HULL=3 # Hull 16 | uint8 accessory_HYDROFOIL=4 # Hydrofoil 17 | uint8 accessory 18 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3AntiflickeringStateelectricFrequencyChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3AntiflickeringStateelectricFrequencyChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Electric frequency.\n This piece of information is used for the antiflickering when the [AntiflickeringMode](#1-30-1) is set to *auto*. 8 | 9 | Header header 10 | 11 | # Type of the electric frequency 12 | uint8 frequency_fiftyHertz=0 # Electric frequency of the country is 50hz 13 | uint8 frequency_sixtyHertz=1 # Electric frequency of the country is 60hz 14 | uint8 frequency 15 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCalibrationStatePitotCalibrationStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCalibrationStatePitotCalibrationStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: 8 | 9 | Header header 10 | 11 | # State of pitot calibration 12 | uint8 state_done=0 # Calibration is ok 13 | uint8 state_ready=1 # Calibration is started, waiting user action 14 | uint8 state_in_progress=2 # Calibration is in progress 15 | uint8 state_required=3 # Calibration is required 16 | uint8 state 17 | # lastError : 1 if an error occured and 0 if not 18 | uint8 lastError 19 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateSpeedChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateSpeedChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drones speed changed.\n Expressed in the NED referential (North-East-Down). 8 | 9 | Header header 10 | 11 | # Speed relative to the North (when drone moves to the north, speed is > 0) (in m/s) 12 | float32 speedX 13 | # Speed relative to the East (when drone moves to the east, speed is > 0) (in m/s) 14 | float32 speedY 15 | # Speed on the z axis (when drone moves down, speed is > 0) (in m/s) 16 | float32 speedZ 17 | -------------------------------------------------------------------------------- /bebop_tools/launch/bebop_nodelet_iv.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3NetworkStateWifiScanListChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3NetworkStateWifiScanListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Wifi scan results.\n Please note that the list is not complete until you receive the event [WifiScanEnded](#1-14-1). 8 | 9 | Header header 10 | 11 | # SSID of the AP 12 | string ssid 13 | # RSSI of the AP in dbm (negative value) 14 | int16 rssi 15 | # The band : 2.4 GHz or 5 GHz 16 | uint8 band_2_4ghz=0 # 2.4 GHz band 17 | uint8 band_5ghz=1 # 5 GHz band 18 | uint8 band 19 | # Channel of the AP 20 | uint8 channel 21 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateVideoRecordingTimestamp.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateVideoRecordingTimestamp 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Current or last video recording timestamp.\n Timestamp in milliseconds since 00:00:00 UTC on 1 January 1970.\n **Please note that values dont persist after drone reboot** 8 | 9 | Header header 10 | 11 | # Timestamp in milliseconds since 00:00:00 UTC on 1 January 1970. 12 | uint64 startTimestamp 13 | # Timestamp in milliseconds since 00:00:00 UTC on 1 January 1970. 0 mean that video is still recording. 14 | uint64 stopTimestamp 15 | -------------------------------------------------------------------------------- /bebop_autonomy/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package bebop_autonomy 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.7.0 (2017-07-29) 6 | ------------------ 7 | 8 | 0.6.0 (2016-11-02) 9 | ------------------ 10 | 11 | 0.5.1 (2016-05-04) 12 | ------------------ 13 | 14 | 0.5.0 (2016-04-01) 15 | ------------------ 16 | * Add bebop_description package 17 | * Contributors: Mani Monajjemi 18 | 19 | 0.4.1 (2016-02-17) 20 | ------------------ 21 | 22 | 0.4.0 (2016-01-17) 23 | ------------------ 24 | 25 | 0.3.0 (2015-09-17) 26 | ------------------ 27 | * New in 0.3.0 28 | * Create ROS metapackage for bebop_autonomy 29 | - bebop_autonomy is the ROS metapackage name 30 | - Rename bebop_autonomy package to bebop_driver 31 | - Rename bebop_autonomy_msgs to bebop_msgs 32 | * Contributors: Mani Monajjemi 33 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonChargerStateMaxChargeRateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonChargerStateMaxChargeRateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Max charge rate. 8 | 9 | Header header 10 | 11 | # The current maximum charge rate. 12 | uint8 rate_SLOW=0 # Fully charge the battery at a slow rate. Typically limit max charge current to 512 mA. 13 | uint8 rate_MODERATE=1 # Almost fully-charge the battery at moderate rate (> 512 mA) but slower than the fastest rate. 14 | uint8 rate_FAST=2 # Almost fully-charge the battery at the highest possible rate supported by the charger. 15 | uint8 rate 16 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCalibrationStateMagnetoCalibrationAxisToCalibrateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCalibrationStateMagnetoCalibrationAxisToCalibrateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Axis to calibrate during calibration process. 8 | 9 | Header header 10 | 11 | # The axis to calibrate 12 | uint8 axis_xAxis=0 # If the current calibration axis should be the x axis 13 | uint8 axis_yAxis=1 # If the current calibration axis should be the y axis 14 | uint8 axis_zAxis=2 # If the current calibration axis should be the z axis 15 | uint8 axis_none=3 # If none of the axis should be calibrated 16 | uint8 axis 17 | -------------------------------------------------------------------------------- /bebop_tools/launch/joy_teleop.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /bebop_description/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package bebop_description 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.7.0 (2017-07-29) 6 | ------------------ 7 | 8 | 0.6.0 (2016-11-02) 9 | ------------------ 10 | 11 | 0.5.1 (2016-05-04) 12 | ------------------ 13 | 14 | 0.5.0 (2016-04-01) 15 | ------------------ 16 | * The initial version of bebop_description pacakge 17 | - Add a simple kinematic model of Bebop as URDF/Xacro (base_link, 18 | camera joints and the optical frame) 19 | * Contributors: Mani Monajjemi 20 | 21 | 0.4.1 (2016-02-17) 22 | ------------------ 23 | 24 | 0.4.0 (2016-01-17) 25 | ------------------ 26 | 27 | 0.3.0 (2015-09-17) 28 | ------------------ 29 | 30 | 0.2.0 (2015-09-10) 31 | ------------------ 32 | 33 | 0.1.2 (2015-09-05) 34 | ------------------ 35 | 36 | 0.1.1 (2015-09-04) 37 | ------------------ 38 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaStreamingStateVideoStreamModeChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaStreamingStateVideoStreamModeChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: 8 | 9 | Header header 10 | 11 | # stream mode 12 | uint8 mode_low_latency=0 # Minimize latency with average reliability (best for piloting). 13 | uint8 mode_high_reliability=1 # Maximize the reliability with an average latency (best when streaming quality is important but not the latency). 14 | uint8 mode_high_reliability_low_framerate=2 # Maximize the reliability using a framerate decimation with an average latency (best when streaming quality is important but not the latency). 15 | uint8 mode 16 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3NetworkStateWifiAuthChannelListChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3NetworkStateWifiAuthChannelListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Available wifi channels.\n Please note that the list is not complete until you receive the event [AvailableWifiChannelsCompleted](#1-14-3). 8 | 9 | Header header 10 | 11 | # The band of this channel : 2.4 GHz or 5 GHz 12 | uint8 band_2_4ghz=0 # 2.4 GHz band 13 | uint8 band_5ghz=1 # 5 GHz band 14 | uint8 band 15 | # The authorized channel. 16 | uint8 channel 17 | # Bit 0 is 1 if channel is authorized outside (0 otherwise) ; Bit 1 is 1 if channel is authorized inside (0 otherwise) 18 | uint8 in_or_out 19 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateSensorsStatesListChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateSensorsStatesListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Sensors state list. 8 | 9 | Header header 10 | 11 | # Sensor name 12 | uint8 sensorName_IMU=0 # Inertial Measurement Unit sensor 13 | uint8 sensorName_barometer=1 # Barometer sensor 14 | uint8 sensorName_ultrasound=2 # Ultrasonic sensor 15 | uint8 sensorName_GPS=3 # GPS sensor 16 | uint8 sensorName_magnetometer=4 # Magnetometer sensor 17 | uint8 sensorName_vertical_camera=5 # Vertical Camera sensor 18 | uint8 sensorName 19 | # Sensor state (1 if the sensor is OK, 0 if the sensor is NOT OK) 20 | uint8 sensorState 21 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateCountryListKnown.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateCountryListKnown 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: List of countries known by the drone. 8 | 9 | Header header 10 | 11 | # List entry attribute Bitfield. 0x01: First: indicate its the first element of the list. 0x02: Last: indicate its the last element of the list. 0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored. 12 | uint8 listFlags 13 | # Following of country code with ISO 3166 format, separated by ;. Be careful of the command size allowed by the network used. If necessary, split the list in several commands. 14 | string countryCodes 15 | -------------------------------------------------------------------------------- /bebop_driver/launch/bebop_node.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Removing old .msg files ..." 4 | rm -f ../../../bebop_msgs/msg/autogenerated/*.msg 5 | echo "Installing .msg files ..." 6 | cp *.msg ../../../bebop_msgs/msg/autogenerated 7 | echo "Removing old .h files ..." 8 | rm -f ../../../bebop_driver/include/bebop_driver/autogenerated/*.h 9 | echo "Installing .h files .." 10 | cp *.h ../../../bebop_driver/include/bebop_driver/autogenerated 11 | echo "Removing old .cfg files ..." 12 | rm -f ../../../bebop_driver/cfg/autogenerated/*.cfg 13 | echo "Installing cfg files ..." 14 | cp *.cfg ../../../bebop_driver/cfg/autogenerated 15 | chmod +x ../../../bebop_driver/cfg/autogenerated/*.cfg 16 | echo "Removing old .rst files ..." 17 | rm -f y../../../docs/autogenerated/*.rst 18 | echo "Installing rst files ..." 19 | cp *.rst ../../../docs/autogenerated/ 20 | echo "Populate last_build_info" 21 | cp last_build_info ../../../bebop_msgs/msg/autogenerated 22 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateMassStorageInfoStateListChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateMassStorageInfoStateListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Mass storage info state list. 8 | 9 | Header header 10 | 11 | # Mass storage state id (unique) 12 | uint8 mass_storage_id 13 | # Mass storage size in MBytes 14 | uint32 size 15 | # Mass storage used size in MBytes 16 | uint32 used_size 17 | # Mass storage plugged (1 if mass storage is plugged, otherwise 0) 18 | uint8 plugged 19 | # Mass storage full information state (1 if mass storage full, 0 otherwise). 20 | uint8 full 21 | # Mass storage internal type state (1 if mass storage is internal, 0 otherwise) 22 | uint8 internal 23 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCalibrationStateMagnetoCalibrationStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonCalibrationStateMagnetoCalibrationStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Magneto calib process axis state. 8 | 9 | Header header 10 | 11 | # State of the x axis (roll) calibration : 1 if calibration is done, 0 otherwise 12 | uint8 xAxisCalibration 13 | # State of the y axis (pitch) calibration : 1 if calibration is done, 0 otherwise 14 | uint8 yAxisCalibration 15 | # State of the z axis (yaw) calibration : 1 if calibration is done, 0 otherwise 16 | uint8 zAxisCalibration 17 | # 1 if calibration has failed, 0 otherwise. If this arg is 1, consider all previous arg as 0 18 | uint8 calibrationFailed 19 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3GPSStateHomeTypeAvailabilityChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3GPSStateHomeTypeAvailabilityChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Home type availability. 8 | 9 | Header header 10 | 11 | # The type of the return home 12 | uint8 type_TAKEOFF=0 # The drone has enough information to return to the take off position 13 | uint8 type_PILOT=1 # The drone has enough information to return to the pilot position 14 | uint8 type_FIRST_FIX=2 # The drone has not enough information, it will return to the first GPS fix 15 | uint8 type_FOLLOWEE=3 # The drone has enough information to return to the target of the current (or last) follow me 16 | uint8 type 17 | # 1 if this type is available, 0 otherwise 18 | uint8 available 19 | -------------------------------------------------------------------------------- /bebop_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | bebop_description 4 | 0.7.0 5 | URDF robot description for Parrot Bebop Drones 6 | 7 | Mani Monajjemi 8 | Sepehr MohaimenianPour 9 | Thomas Bamford 10 | Tobias Naegeli 11 | 12 | BSD 13 | 14 | http://wiki.ros.org/bebop_description 15 | http://github.com/AutonomyLab/bebop_autonomy 16 | Mani Monajjemi 17 | 18 | catkin 19 | roslaunch 20 | urdf 21 | xacro 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaRecordStateVideoStateChangedV2.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaRecordStateVideoStateChangedV2 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Video record state. 8 | 9 | Header header 10 | 11 | # State of device video recording 12 | uint8 state_stopped=0 # Video is stopped 13 | uint8 state_started=1 # Video is started 14 | uint8 state_notAvailable=2 # The video recording is not available 15 | uint8 state 16 | # Error to explain the state 17 | uint8 error_ok=0 # No Error 18 | uint8 error_unknown=1 # Unknown generic error 19 | uint8 error_camera_ko=2 # Video camera is out of order 20 | uint8 error_memoryFull=3 # Memory full ; cannot save one additional video 21 | uint8 error_lowBattery=4 # Battery is too low to start/keep recording. 22 | uint8 error 23 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3AccessoryStateConnectedAccessories.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3AccessoryStateConnectedAccessories 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: List of all connected accessories. This event presents the list of all connected accessories. To actually use the component, use the component dedicated feature. 8 | 9 | Header header 10 | 11 | # Id of the accessory for the session. 12 | uint8 id 13 | # Accessory type 14 | uint8 accessory_type_sequoia=0 # Parrot Sequoia (multispectral camera for agriculture) 15 | uint8 accessory_type_unknownaccessory_1=1 # UNKNOWNACCESSORY_1 camera (thermal+rgb camera) 16 | uint8 accessory_type 17 | # Unique Id of the accessory. This id is unique by accessory_type. 18 | string uid 19 | # Software Version of the accessory. 20 | string swVersion 21 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaRecordStatePictureStateChangedV2.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaRecordStatePictureStateChangedV2 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Picture state. 8 | 9 | Header header 10 | 11 | # State of device picture recording 12 | uint8 state_ready=0 # The picture recording is ready 13 | uint8 state_busy=1 # The picture recording is busy 14 | uint8 state_notAvailable=2 # The picture recording is not available 15 | uint8 state 16 | # Error to explain the state 17 | uint8 error_ok=0 # No Error 18 | uint8 error_unknown=1 # Unknown generic error 19 | uint8 error_camera_ko=2 # Picture camera is out of order 20 | uint8 error_memoryFull=3 # Memory full ; cannot save one additional picture 21 | uint8 error_lowBattery=4 # Battery is too low to start/keep recording. 22 | uint8 error 23 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonMavlinkStateMavlinkFilePlayingStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonMavlinkStateMavlinkFilePlayingStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Playing state of a FlightPlan. 8 | 9 | Header header 10 | 11 | # State of the mavlink 12 | uint8 state_playing=0 # Mavlink file is playing 13 | uint8 state_stopped=1 # Mavlink file is stopped (arg filepath and type are useless in this state) 14 | uint8 state_paused=2 # Mavlink file is paused 15 | uint8 state_loaded=3 # Mavlink file is loaded (it will be played at take-off) 16 | uint8 state 17 | # flight plan file path from the mavlink ftp root 18 | string filepath 19 | # type of the played mavlink file 20 | uint8 type_flightPlan=0 # Mavlink file for FlightPlan 21 | uint8 type_mapMyHouse=1 # Mavlink file for MapMyHouse 22 | uint8 type 23 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateGpsLocationChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateGpsLocationChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Drones location changed.\n This event is meant to replace [PositionChanged](#1-4-4). 8 | 9 | Header header 10 | 11 | # Latitude location in decimal degrees (500.0 if not available) 12 | float64 latitude 13 | # Longitude location in decimal degrees (500.0 if not available) 14 | float64 longitude 15 | # Altitude location in meters. 16 | float64 altitude 17 | # Latitude location error in meters (1 sigma/standard deviation) -1 if not available. 18 | int8 latitude_accuracy 19 | # Longitude location error in meters (1 sigma/standard deviation) -1 if not available. 20 | int8 longitude_accuracy 21 | # Altitude location error in meters (1 sigma/standard deviation) -1 if not available. 22 | int8 altitude_accuracy 23 | -------------------------------------------------------------------------------- /bebop_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | bebop_msgs 4 | 0.7.0 5 | Common message definitions for bebop_autonomy 6 | 7 | Mani Monajjemi 8 | Sepehr MohaimenianPour 9 | Thomas Bamford 10 | Tobias Naegeli 11 | 12 | BSD 13 | http://wiki.ros.org/bebop_msgs 14 | http://github.com/AutonomyLab/bebop_autonomy 15 | Mani Monajjemi 16 | 17 | catkin 18 | message_generation 19 | std_msgs 20 | std_msgs 21 | message_runtime 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /bebop_autonomy/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | bebop_autonomy 4 | 0.7.0 5 | bebop_autonomy is a ROS driver for Parrot Bebop drone, based on Parrot’s official ARDroneSDK3 6 | 7 | Mani Monajjemi 8 | Sepehr MohaimenianPour 9 | Thomas Bamford 10 | Tobias Naegeli 11 | 12 | BSD 13 | 14 | http://wiki.ros.org/bebop_autonomy 15 | http://github.com/AutonomyLab/bebop_autonomy 16 | 17 | Mani Monajjemi 18 | 19 | catkin 20 | 21 | bebop_driver 22 | bebop_msgs 23 | bebop_tools 24 | bebop_description 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/states_param_topic.rst.mustache: -------------------------------------------------------------------------------- 1 | .. {{project}}_states_param_topic.rst 2 | .. auto-generated from {{url}} 3 | .. Do not modify this file by hand. Check scripts/meta folder for generator files. 4 | 5 | ***************************************************************************************** 6 | List of {{project}} States and Corresponding ROS Parameters and Topics 7 | ***************************************************************************************** 8 | 9 | {{#cpp_class}} 10 | `{{cpp_class_name}}`_ 11 | {{cpp_class_comment}} 12 | {{/cpp_class}} 13 | 14 | {{#cpp_class}} 15 | {{cpp_class_name}} 16 | #################################################################################### 17 | {{cpp_class_comment}} 18 | 19 | - Parameter: ``~{{cpp_class_param_name}}`` 20 | - Topic: ``{{topic_name}}`` 21 | - Message type: ``bebop_msgs::{{cpp_class_msg_type}}`` 22 | 23 | .. literalinclude:: 24 | ../../bebop_msgs/msg/autogenerated/{{cpp_class_msg_type}}.msg 25 | :lines: 8- 26 | :language: python 27 | :caption: {{cpp_class_msg_type}}.msg 28 | :name: {{cpp_class_msg_type}}_msg 29 | 30 | {{/cpp_class}} -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateFlyingStateChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateFlyingStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Flying state. 8 | 9 | Header header 10 | 11 | # Drone flying state 12 | uint8 state_landed=0 # Landed state 13 | uint8 state_takingoff=1 # Taking off state 14 | uint8 state_hovering=2 # Hovering / Circling (for fixed wings) state 15 | uint8 state_flying=3 # Flying state 16 | uint8 state_landing=4 # Landing state 17 | uint8 state_emergency=5 # Emergency state 18 | uint8 state_usertakeoff=6 # User take off state. Waiting for user action to take off. 19 | uint8 state_motor_ramping=7 # Motor ramping state (for fixed wings). 20 | uint8 state_emergency_landing=8 # Emergency landing state. Drone autopilot has detected defective sensor(s). Only Yaw argument in PCMD is taken into account. All others flying commands are ignored. 21 | uint8 state 22 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3MediaRecordStateVideoResolutionState.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3MediaRecordStateVideoResolutionState 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Video resolution.\n Informs about streaming and recording video resolutions.\n Note that this is only an indication about what the resolution should be. To know the real resolution, you should get it from the frame. 8 | 9 | Header header 10 | 11 | # Streaming resolution 12 | uint8 streaming_res360p=0 # 360p resolution. 13 | uint8 streaming_res480p=1 # 480p resolution. 14 | uint8 streaming_res720p=2 # 720p resolution. 15 | uint8 streaming_res1080p=3 # 1080p resolution. 16 | uint8 streaming 17 | # Recording resolution 18 | uint8 recording_res360p=0 # 360p resolution. 19 | uint8 recording_res480p=1 # 480p resolution. 20 | uint8 recording_res720p=2 # 720p resolution. 21 | uint8 recording_res1080p=3 # 1080p resolution. 22 | uint8 recording 23 | -------------------------------------------------------------------------------- /bebop_driver/launch/bebop_nodelet.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /bebop_tools/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | bebop_tools 4 | 0.7.0 5 | Miscellaneous tools for bebop_autonomy metapackage 6 | 7 | Mani Monajjemi 8 | Sepehr MohaimenianPour 9 | Thomas Bamford 10 | Tobias Naegeli 11 | 12 | BSD 13 | 14 | http://wiki.ros.org/bebop_tools 15 | http://github.com/AutonomyLab/bebop_autonomy 16 | Mani Monajjemi 17 | 18 | catkin 19 | bebop_msgs 20 | bebop_driver 21 | bebop_msgs 22 | joy 23 | joy_teleop 24 | image_view 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonAccessoryStateAccessoryConfigChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonAccessoryStateAccessoryConfigChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Accessory config. 8 | 9 | Header header 10 | 11 | # Accessory configuration reported by firmware. 12 | uint8 newAccessory_UNCONFIGURED=0 # No accessory configuration set. Controller needs to set one. 13 | uint8 newAccessory_NO_ACCESSORY=1 # No accessory. 14 | uint8 newAccessory_STD_WHEELS=2 # Standard wheels 15 | uint8 newAccessory_TRUCK_WHEELS=3 # Truck wheels 16 | uint8 newAccessory_HULL=4 # Hull 17 | uint8 newAccessory_HYDROFOIL=5 # Hydrofoil 18 | uint8 newAccessory_IN_PROGRESS=6 # Configuration in progress. 19 | uint8 newAccessory 20 | # Error code. 21 | uint8 error_OK=0 # No error. Accessory config change successful. 22 | uint8 error_UNKNOWN=1 # Cannot change accessory configuration for some reason. 23 | uint8 error_FLYING=2 # Cannot change accessory configuration while flying. 24 | uint8 error 25 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/settings_param.rst.mustache: -------------------------------------------------------------------------------- 1 | .. {{project}}_settings_param.rst 2 | .. auto-generated from {{url}} 3 | .. Do not modify this file by hand. Check scripts/meta folder for generator files. 4 | 5 | ***************************************************************************************** 6 | List of {{project}} Settings and Corresponding ROS Parameter 7 | ***************************************************************************************** 8 | 9 | {{#cfg_class}} 10 | `{{cfg_class_name}}`_ 11 | {{cfg_class_comment}} 12 | 13 | {{#cfg_cmd}} 14 | {{#cfg_arg}} 15 | `{{cfg_arg_name}}`_ 16 | {{cfg_arg_comment}} 17 | {{/cfg_arg}} 18 | {{/cfg_cmd}} 19 | 20 | {{/cfg_class}} 21 | 22 | {{#cfg_class}} 23 | {{cfg_class_name}} 24 | =========================================================== 25 | {{#cfg_cmd}} 26 | {{#cfg_arg}} 27 | {{cfg_arg_name}} 28 | ----------------------------------------------------------- 29 | * Parameter: ``~{{cfg_arg_name}}`` 30 | * Details: {{cfg_arg_comment}} 31 | * Type: ``{{cfg_arg_type}}`` 32 | {{#cfg_arg_enum}} 33 | 34 | {{#items}} 35 | * {{constant_value}}: {{constant_comment}} 36 | {{/items}} 37 | 38 | {{/cfg_arg_enum}} 39 | {{/cfg_arg}} 40 | {{/cfg_cmd}} 41 | {{/cfg_class}} 42 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonFlightPlanStateComponentStateListChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonFlightPlanStateComponentStateListChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: FlightPlan components state list. 8 | 9 | Header header 10 | 11 | # Drone FlightPlan component id (unique) 12 | uint8 component_GPS=0 # Drone GPS component. State is 0 when the drone needs a GPS fix. 13 | uint8 component_Calibration=1 # Drone Calibration component. State is 0 when the sensors of the drone needs to be calibrated. 14 | uint8 component_Mavlink_File=2 # Mavlink file component. State is 0 when the mavlink file is missing or contains error. 15 | uint8 component_TakeOff=3 # Drone Take off component. State is 0 when the drone cannot take-off. 16 | uint8 component_WaypointsBeyondGeofence=4 # Component for waypoints beyond the geofence. State is 0 when one or more waypoints are beyond the geofence. 17 | uint8 component 18 | # State of the FlightPlan component (1 FlightPlan component OK, otherwise 0) 19 | uint8 State 20 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/cfg.mustache: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # {{cfg_filename}} 4 | # auto-generated from {{url}} 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | 7 | PACKAGE = "bebop_driver" 8 | 9 | from dynamic_reconfigure.parameter_generator_catkin import * 10 | 11 | gen = ParameterGenerator() 12 | 13 | {{#cfg_class}} 14 | # {{cfg_class_comment}} 15 | {{cfg_class_name}}_group_gen = gen.add_group("{{cfg_class_name}}") 16 | {{#cfg_cmd}} 17 | # {{cfg_cmd_comment}} 18 | {{#cfg_arg}} 19 | {{#cfg_arg_enum}} 20 | {{cfg_arg_name}}_enum = gen.enum([ 21 | {{#items}} 22 | gen.const("{{constant_name}}", int_t, {{constant_value}}, "{{constant_comment}}"), 23 | {{/items}} 24 | ], "{{cfg_arg_comment}}") 25 | {{cfg_class_name}}_group_gen.add("{{cfg_arg_name}}", int_t, 0, "{{cfg_arg_comment}}", 0, 0, {{enum_max}}, edit_method={{cfg_arg_name}}_enum) 26 | {{/cfg_arg_enum}} 27 | {{^cfg_arg_enum}} 28 | {{cfg_class_name}}_group_gen.add("{{cfg_arg_name}}", {{cfg_arg_type}}, 0, "{{cfg_arg_comment}}", {{cfg_arg_default}} , {{cfg_arg_min}}, {{cfg_arg_max}}) 29 | {{/cfg_arg_enum}} 30 | {{/cfg_arg}} 31 | {{/cfg_cmd}} 32 | 33 | {{/cfg_class}} 34 | 35 | exit(gen.generate(PACKAGE, "bebop_driver_nodelet", "Bebop{{project}}")) -------------------------------------------------------------------------------- /docs/FAQ.rst: -------------------------------------------------------------------------------- 1 | ************************** 2 | Frequently Asked Questions 3 | ************************** 4 | 5 | Is *bebop_autonomy* based on *ardrone_autonomy*? 6 | ================================================ 7 | 8 | No. `ardrone_autonomy `_ is based on Parrot's `legacy SDK `_ for AR-Drone 1.0 and 2.0, while *bebop_autonomy* uses Parrot's new SDK for its third generation drones. Since these two SDKs and their underlying protocols are totally different and incompatible, we had to develop *bebop_autonomy* from scrath. 9 | 10 | Is *bebop_autonomy* compatible with *ardrone_autonomy*? 11 | ======================================================= 12 | 13 | Not completely. 14 | 15 | - Topic names, types and coordinate frame conventions for core piloting tasks are identical, however there is no explicit namespacing (i.e. ``takeoff`` instead of ``ardrone/takeoff``) 16 | - *bebop_autonomy* does not expose services for *Flight Animations* or *Flat Trim*; topics are used instead. 17 | - Front camera video stream is published on ``image_raw`` topic only. 18 | - Parameter names, types and effects are different. 19 | - AR-Drone *Navdata* is replaced by Bebop *States* (see :ref:`sec-states`) 20 | 21 | -------------------------------------------------------------------------------- /bebop_driver/config/defaults.yaml: -------------------------------------------------------------------------------- 1 | states: 2 | enable_commonstate_batterystatechanged: true 3 | enable_commonstate_wifisignalchanged: true 4 | enable_overheatstate_overheatchanged: true 5 | enable_controllerstate_ispilotingchanged: true 6 | enable_mavlinkstate_mavlinkfileplayingstatechanged: true 7 | enable_mavlinkstate_mavlinkplayerrorstatechanged: true 8 | enable_flightplanstate_availabilitystatechanged: true 9 | enable_flightplanstate_componentstatelistchanged: true 10 | enable_pilotingstate_altitudechanged: true 11 | enable_pilotingstate_flattrimchanged: true 12 | enable_pilotingstate_flyingstatechanged: true 13 | enable_pilotingstate_navigatehomestatechanged: true 14 | enable_pilotingstate_positionchanged: true 15 | enable_pilotingstate_speedchanged: true 16 | enable_pilotingstate_attitudechanged: true 17 | enable_pilotingstate_positionchanged: true 18 | enable_altitudechanged: true 19 | enable_autotakeoffmodechanged: true 20 | enable_mediastreamingstate_videoenablechanged: true 21 | enable_camerastate_orientation: true 22 | enable_gpsstate_numberofsatellitechanged: true 23 | enable_numberofsatellitechanged: true 24 | 25 | reset_settings: true 26 | publish_odom_tf: true 27 | odom_frame_id: "odom" 28 | cmd_vel_timeout: 0.2 29 | -------------------------------------------------------------------------------- /bebop_driver/test/bebop_itl_test.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3GPSStateHomeTypeChosenChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3GPSStateHomeTypeChosenChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Home type.\n This choice is made by the drone, according to the [PreferredHomeType](#1-24-4) and the [HomeTypeAvailability](#1-31-1). The drone will choose the type matching with the user preference only if this type is available. If not, it will chose a type in this order:\n FOLLOWEE ; TAKEOFF ; PILOT ; FIRST_FIX 8 | 9 | Header header 10 | 11 | # The type of the return home chosen 12 | uint8 type_TAKEOFF=0 # The drone will return to the take off position 13 | uint8 type_PILOT=1 # The drone will return to the pilot position In this case, the drone will use the position given by ARDrone3-SendControllerGPS 14 | uint8 type_FIRST_FIX=2 # The drone has not enough information, it will return to the first GPS fix 15 | uint8 type_FOLLOWEE=3 # The drone will return to the target of the current (or last) follow me In this case, the drone will use the position of the target of the followMe (given by ControllerInfo-GPS) 16 | uint8 type 17 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonCommonStateProductModel.msg: -------------------------------------------------------------------------------- 1 | # CommonCommonStateProductModel 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Product sub-model.\n This can be used to customize the UI depending on the product. 8 | 9 | Header header 10 | 11 | # The Model of the product. 12 | uint8 model_RS_TRAVIS=0 # Travis (RS taxi) model. 13 | uint8 model_RS_MARS=1 # Mars (RS space) model 14 | uint8 model_RS_SWAT=2 # SWAT (RS SWAT) model 15 | uint8 model_RS_MCLANE=3 # Mc Lane (RS police) model 16 | uint8 model_RS_BLAZE=4 # Blaze (RS fire) model 17 | uint8 model_RS_ORAK=5 # Orak (RS carbon hydrofoil) model 18 | uint8 model_RS_NEWZ=6 # New Z (RS wooden hydrofoil) model 19 | uint8 model_JS_MARSHALL=7 # Marshall (JS fire) model 20 | uint8 model_JS_DIESEL=8 # Diesel (JS SWAT) model 21 | uint8 model_JS_BUZZ=9 # Buzz (JS space) model 22 | uint8 model_JS_MAX=10 # Max (JS F1) model 23 | uint8 model_JS_JETT=11 # Jett (JS flames) model 24 | uint8 model_JS_TUKTUK=12 # Tuk-Tuk (JS taxi) model 25 | uint8 model_SW_BLACK=13 # Swing black model 26 | uint8 model_SW_WHITE=14 # Swing white model 27 | uint8 model 28 | -------------------------------------------------------------------------------- /bebop_tools/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package bebop_tools 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.7.0 (2017-07-29) 6 | ------------------ 7 | 8 | 0.6.0 (2016-11-02) 9 | ------------------ 10 | * Added Xbox 360 config file 11 | * Make flattrim joystick command match comment 12 | * Contributors: Jacob Perron, Thomas Bamford 13 | 14 | 0.5.1 (2016-05-04) 15 | ------------------ 16 | 17 | 0.5.0 (2016-04-01) 18 | ------------------ 19 | * Improve the organization of launch and param files 20 | * Contributors: Mani Monajjemi 21 | 22 | 0.4.1 (2016-02-17) 23 | ------------------ 24 | * Update the joystick configuration file for taking snapshots 25 | * Make bebop's namespace in joy_teleop launch file a parameter 26 | * Contributors: Mani Monajjemi 27 | 28 | 0.4.0 (2016-01-17) 29 | ------------------ 30 | * Fix cmd_vel.linear.y sign issue in joystick config file 31 | * Contributors: Mani Monajjemi 32 | 33 | 0.3.0 (2015-09-17) 34 | ------------------ 35 | * Renamed package to bebop_tools 36 | * Contributors: Mani Monajjemi 37 | 38 | 0.2.0 (2015-09-10) 39 | ------------------ 40 | * Move image_view nodelet demo to bebop_tools package 41 | * Contributors: Mani Monajjemi 42 | 43 | 0.1.2 (2015-09-05) 44 | ------------------ 45 | * Initial release of joystick teleop for bebop_autonomy 46 | * Contributors: Mani Monajjemi 47 | 48 | 0.1.1 (2015-09-04) 49 | ------------------ 50 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonChargerStateCurrentChargeStateChanged.msg: -------------------------------------------------------------------------------- 1 | # CommonChargerStateCurrentChargeStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Current charge state. 8 | 9 | Header header 10 | 11 | # Charger status. 12 | uint8 status_DISCHARGING=0 # The battery is discharging. 13 | uint8 status_CHARGING_SLOW=1 # The battery is charging at a slow rate about 512 mA. 14 | uint8 status_CHARGING_MODERATE=2 # The battery is charging at a moderate rate (> 512 mA) but slower than the fastest rate. 15 | uint8 status_CHARGING_FAST=3 # The battery is charging at a the fastest rate. 16 | uint8 status_BATTERY_FULL=4 # The charger is plugged and the battery is fully charged. 17 | uint8 status 18 | # The current charging phase. 19 | uint8 phase_UNKNOWN=0 # The charge phase is unknown or irrelevant. 20 | uint8 phase_CONSTANT_CURRENT_1=1 # First phase of the charging process. The battery is charging with constant current. 21 | uint8 phase_CONSTANT_CURRENT_2=2 # Second phase of the charging process. The battery is charging with constant current, with a higher voltage than the first phase. 22 | uint8 phase_CONSTANT_VOLTAGE=3 # Last part of the charging process. The battery is charging with a constant voltage. 23 | uint8 phase_CHARGED=4 # The battery is fully charged. 24 | uint8 phase 25 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStateNavigateHomeStateChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStateNavigateHomeStateChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Return home state.\n Availability is related to gps fix, magnetometer calibration. 8 | 9 | Header header 10 | 11 | # State of navigate home 12 | uint8 state_available=0 # Navigate home is available 13 | uint8 state_inProgress=1 # Navigate home is in progress 14 | uint8 state_unavailable=2 # Navigate home is not available 15 | uint8 state_pending=3 # Navigate home has been received, but its process is pending 16 | uint8 state 17 | # Reason of the state 18 | uint8 reason_userRequest=0 # User requested a navigate home (available->inProgress) 19 | uint8 reason_connectionLost=1 # Connection between controller and product lost (available->inProgress) 20 | uint8 reason_lowBattery=2 # Low battery occurred (available->inProgress) 21 | uint8 reason_finished=3 # Navigate home is finished (inProgress->available) 22 | uint8 reason_stopped=4 # Navigate home has been stopped (inProgress->available) 23 | uint8 reason_disabled=5 # Navigate home disabled by product (inProgress->unavailable or available->unavailable) 24 | uint8 reason_enabled=6 # Navigate home enabled by product (unavailable->available) 25 | uint8 reason 26 | -------------------------------------------------------------------------------- /bebop_msgs/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package bebop_msgs 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.7.0 (2017-07-29) 6 | ------------------ 7 | * Update to Parrot SDK 3.12.6 (from 3.10.1) 8 | * Contributors: Thomas Bamford 9 | 10 | 0.6.0 (2016-11-02) 11 | ------------------ 12 | * Update autogenerated msgs/headers/docs to SDK 3.10.1 13 | * Contributors: Mani Monajjemi 14 | 15 | 0.5.1 (2016-05-04) 16 | ------------------ 17 | 18 | 0.5.0 (2016-04-01) 19 | ------------------ 20 | * Update to SDK 3.8.3 21 | - SDK 3.8.3 from 22 | https://github.com/Parrot-Developers/arsdk_manifests.git 23 | - SDK 3.8.3 git hash: 2930cc7f7a79173d51c1fc167475fa9fa6650def 24 | * Contributors: Mani Monajjemi 25 | 26 | 0.4.1 (2016-02-17) 27 | ------------------ 28 | * Fix dynamic_reconfigure's inconsistency 29 | - The inconsisteny was between the filename and the target name 30 | * Contributors: Mani Monajjemi 31 | 32 | 0.4.0 (2016-01-17) 33 | ------------------ 34 | * Update Parrot SDK to 3.7.5 (from 3.6) 35 | * New Topic and Message type for `DefaultCameraOrientation` 36 | * Contributors: Mani Monajjemi 37 | 38 | 0.3.0 (2015-09-17) 39 | ------------------ 40 | * Renamed to bebop_msgs 41 | * Contributors: Mani Monajjemi 42 | 43 | 0.2.0 (2015-09-10) 44 | ------------------ 45 | * Contributors: Mani Monajjemi 46 | 47 | 0.1.2 (2015-09-05) 48 | ------------------ 49 | * Contributors: Mani Monajjemi 50 | 51 | 0.1.1 (2015-09-04) 52 | ------------------ 53 | * Auto-generated .msg and .h files based on libARCommands XML files 54 | * Contributors: Mani Monajjemi 55 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Mani Monajjemi (AutonomyLab, Simon Fraser University) 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of [project] nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # bebop_autonomy 2 | 3 | [ROS](http://ros.org) driver for [Parrot Bebop](http://www.parrot.com/ca/products/bebop-drone/) drone (quadrocopter). 4 | 5 | * Documentation: http://bebop-autonomy.readthedocs.io/ 6 | * ROS wiki page: http://wiki.ros.org/bebop_autonomy 7 | * Support: [ROS Q&A (tag: bebop_autonomy)](http://answers.ros.org/questions/scope:all/sort:activity-desc/tags:bebop_autonomy/page:1/) 8 | * Code API: http://docs.ros.org/indigo/api/bebop_autonomy/html 9 | 10 | ## Development Team 11 | 12 | * Author: [Mani Monajjemi](http://mani.im) ([Autonomy Lab](http://autonomylab.org), [Simon Fraser University](http://www.sfu.ca)) + [other contributers](http://bebop-autonomy.readthedocs.io/en/latest/contribute.html#list-of-contributers) 13 | * Maintainers: 14 | * [Sepehr MohaimenianPour](http://sepehr.im/) ([Autonomy Lab](http://autonomylab.org), [Simon Fraser University](http://www.sfu.ca)) 15 | * Thomas Bamford ([Dynamic Systems Lab](http://www.dynsyslab.org), [University of Toronto](https://www.utoronto.ca/)) 16 | * [Tobias Naegeli](https://ait.ethz.ch/people/naegelit/) ([Advanced Interactive Technologies Lab](http://www.ait.ethz.ch/), [ETH Zürich](http://www.ethz.ch/)) 17 | 18 | ## Build Status 19 | 20 | [![Build Status (ROS I,J,K) - TravisCI](https://travis-ci.org/AutonomyLab/bebop_autonomy.svg?branch=indigo-devel)](https://travis-ci.org/AutonomyLab/bebop_autonomy) [![Build Status (ROS I,J) - Semaphore](https://semaphoreci.com/api/v1/projects/11786233-d505-4d79-b27c-80c2742243a4/537552/badge.svg)](https://semaphoreci.com/mani_monaj/bebop_autonomy) 21 | 22 | Built against [parrot_arsdk](https://github.com/AutonomyLab/parrot_arsdk) 3.12.6p1 23 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonChargerStateChargingInfo.msg: -------------------------------------------------------------------------------- 1 | # CommonChargerStateChargingInfo 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Charging information. 8 | 9 | Header header 10 | 11 | # The current charging phase. 12 | uint8 phase_UNKNOWN=0 # The charge phase is unknown or irrelevant. 13 | uint8 phase_CONSTANT_CURRENT_1=1 # First phase of the charging process. The battery is charging with constant current. 14 | uint8 phase_CONSTANT_CURRENT_2=2 # Second phase of the charging process. The battery is charging with constant current, with a higher voltage than the first phase. 15 | uint8 phase_CONSTANT_VOLTAGE=3 # Last part of the charging process. The battery is charging with a constant voltage. 16 | uint8 phase_CHARGED=4 # The battery is fully charged. 17 | uint8 phase_DISCHARGING=5 # The battery is discharging; Other arguments refers to the last charge. 18 | uint8 phase 19 | # The charge rate. If phase is DISCHARGING, refers to the last charge. 20 | uint8 rate_UNKNOWN=0 # The charge rate is not known. 21 | uint8 rate_SLOW=1 # Slow charge rate. 22 | uint8 rate_MODERATE=2 # Moderate charge rate. 23 | uint8 rate_FAST=3 # Fast charge rate. 24 | uint8 rate 25 | # The charging intensity, in dA. (12dA = 1,2A) ; If phase is DISCHARGING, refers to the last charge. Equals to 0 if not known. 26 | uint8 intensity 27 | # The full charging time estimated, in minute. If phase is DISCHARGING, refers to the last charge. Equals to 0 if not known. 28 | uint8 fullChargingTime 29 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/Ardrone3PilotingStatemoveToChanged.msg: -------------------------------------------------------------------------------- 1 | # Ardrone3PilotingStatemoveToChanged 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: The drone moves or moved to a given location. 8 | 9 | Header header 10 | 11 | # Latitude of the location (in degrees) to reach 12 | float64 latitude 13 | # Longitude of the location (in degrees) to reach 14 | float64 longitude 15 | # Altitude above sea level (in m) to reach 16 | float64 altitude 17 | # Orientation mode of the move to 18 | uint8 orientation_mode_NONE=0 # The drone wont change its orientation 19 | uint8 orientation_mode_TO_TARGET=1 # The drone will make a rotation to look in direction of the given location 20 | uint8 orientation_mode_HEADING_START=2 # The drone will orientate itself to the given heading before moving to the location 21 | uint8 orientation_mode_HEADING_DURING=3 # The drone will orientate itself to the given heading while moving to the location 22 | uint8 orientation_mode 23 | # Heading (relative to the North in degrees). This value is only used if the orientation mode is HEADING_START or HEADING_DURING 24 | float32 heading 25 | # Status of the move to 26 | uint8 status_RUNNING=0 # The drone is actually flying to the given position 27 | uint8 status_DONE=1 # The drone has reached the target 28 | uint8 status_CANCELED=2 # The move to has been canceled, either by a new moveTo command or by a CancelMoveTo command. 29 | uint8 status_ERROR=3 # The move to has not been finished or started because of an error. 30 | uint8 status 31 | -------------------------------------------------------------------------------- /docs/installation.rst: -------------------------------------------------------------------------------- 1 | ************ 2 | Installation 3 | ************ 4 | 5 | Compiling From Source 6 | ===================== 7 | 8 | Pre-requirements: 9 | 10 | - ROS *Indigo*, *Jade* or *Kinetic* (Only tested on *Ubuntu*) 11 | - Ubuntu packages: ``build-esstential``, ``python-rosdep``, ``python-catkin-tools`` 12 | - Basic familiarity with building ROS packages 13 | 14 | .. code-block:: bash 15 | 16 | $ sudo apt-get install build-essential python-rosdep python-catkin-tools 17 | 18 | To compile from source, you need to clone the source code in a new or existing ``catkin`` workspace, use ``rosdep`` to install dependencies and finally compile the workspace using `catkin`. The following commands demonstrate this procedure in a newly created ``catkin`` workspace. 19 | 20 | .. note:: Since version 0.6, `Parrot ARSDK `_, the main underlying dependency of *bebop_autonomy* is not build inline anymore. Instead, the slightly patched and catkinized version of it, called `parrot_arsdk `_, is fetched as a dependency during the ``rosdep install`` step below. This dramatically decreases the compile time of the package compared to previous versions (e.g. from ~15 minutes to less than a minute on a modern computer). If you are re-compiling from source, you need to clean your workspace first: ``$ catkin clean [-y]``. 21 | 22 | .. code-block:: bash 23 | 24 | # Create and initialize the workspace 25 | $ mkdir -p ~/bebop_ws/src && cd ~/bebop_ws 26 | $ catkin init 27 | $ git clone https://github.com/AutonomyLab/bebop_autonomy.git src/bebop_autonomy 28 | # Update rosdep database and install dependencies (including parrot_arsdk) 29 | $ rosdep update 30 | $ rosdep install --from-paths src -i 31 | # Build the workspace 32 | $ catkin build 33 | 34 | -------------------------------------------------------------------------------- /bebop_msgs/msg/autogenerated/CommonAnimationsStateList.msg: -------------------------------------------------------------------------------- 1 | # CommonAnimationsStateList 2 | # auto-generated from up stream XML files at 3 | # github.com/Parrot-Developers/libARCommands/tree/master/Xml 4 | # To check upstream commit hash, refer to last_build_info file 5 | # Do not modify this file by hand. Check scripts/meta folder for generator files. 6 | # 7 | # SDK Comment: Paramaterless animations state list. 8 | 9 | Header header 10 | 11 | # Animation type. 12 | uint8 anim_HEADLIGHTS_FLASH=0 # Flash headlights. 13 | uint8 anim_HEADLIGHTS_BLINK=1 # Blink headlights. 14 | uint8 anim_HEADLIGHTS_OSCILLATION=2 # Oscillating headlights. 15 | uint8 anim_SPIN=3 # Spin animation. 16 | uint8 anim_TAP=4 # Tap animation. 17 | uint8 anim_SLOW_SHAKE=5 # Slow shake animation. 18 | uint8 anim_METRONOME=6 # Metronome animation. 19 | uint8 anim_ONDULATION=7 # Standing dance animation. 20 | uint8 anim_SPIN_JUMP=8 # Spin jump animation. 21 | uint8 anim_SPIN_TO_POSTURE=9 # Spin that end in standing posture, or in jumper if it was standing animation. 22 | uint8 anim_SPIRAL=10 # Spiral animation. 23 | uint8 anim_SLALOM=11 # Slalom animation. 24 | uint8 anim_BOOST=12 # Boost animation. 25 | uint8 anim_LOOPING=13 # Make a looping. (Only for WingX) 26 | uint8 anim_BARREL_ROLL_180_RIGHT=14 # Make a barrel roll of 180 degree turning on right. (Only for WingX) 27 | uint8 anim_BARREL_ROLL_180_LEFT=15 # Make a barrel roll of 180 degree turning on left. (Only for WingX) 28 | uint8 anim_BACKSWAP=16 # Put the drone upside down. (Only for WingX) 29 | uint8 anim 30 | # State of the animation 31 | uint8 state_stopped=0 # animation is stopped 32 | uint8 state_started=1 # animation is started 33 | uint8 state_notAvailable=2 # The animation is not available 34 | uint8 state 35 | # Error to explain the state 36 | uint8 error_ok=0 # No Error 37 | uint8 error_unknown=1 # Unknown generic error 38 | uint8 error 39 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # Use ros-build farm local devel job generation script on TravisCI 2 | # https://github.com/ros-infrastructure/ros_buildfarm/blob/master/doc/jobs/devel_jobs.rst#run-the-devel-job-on-travis 3 | # while this doesn't require sudo we don't want to run within a Docker container 4 | sudo: true 5 | dist: trusty 6 | language: python 7 | python: 8 | - "3.4" 9 | env: 10 | global: 11 | - JOB_PATH=/tmp/devel_job 12 | matrix: 13 | - ROS_DISTRO_NAME=indigo OS_NAME=ubuntu OS_CODE_NAME=trusty ARCH=amd64 14 | # - ROS_DISTRO_NAME=jade OS_NAME=ubuntu OS_CODE_NAME=trusty ARCH=amd64 15 | - ROS_DISTRO_NAME=kinetic OS_NAME=ubuntu OS_CODE_NAME=xenial ARCH=amd64 16 | install: 17 | # either install the latest released version of ros_buildfarm 18 | - pip install ros_buildfarm 19 | # or checkout a specific branch 20 | # - git clone -b master https://github.com/ros-infrastructure/ros_buildfarm /tmp/ros_buildfarm 21 | # - pip install /tmp/ros_buildfarm 22 | # checkout catkin for catkin_test_results script 23 | - git clone https://github.com/ros/catkin /tmp/catkin 24 | # run devel job for a ROS repository with the same name as this repo 25 | - export REPOSITORY_NAME=`basename $TRAVIS_BUILD_DIR` 26 | # use the code already checked out by Travis 27 | - mkdir -p $JOB_PATH/catkin_workspace/src 28 | - cp -R $TRAVIS_BUILD_DIR $JOB_PATH/catkin_workspace/src/ 29 | # generate the script to run a devel job for that target and repo 30 | - generate_devel_script.py https://raw.githubusercontent.com/ros-infrastructure/ros_buildfarm_config/production/index.yaml $ROS_DISTRO_NAME default $REPOSITORY_NAME $OS_NAME $OS_CODE_NAME $ARCH > $JOB_PATH/devel_job.sh 31 | - cd $JOB_PATH 32 | - cat devel_job.sh 33 | # run the actual job which involves Docker 34 | - sh devel_job.sh -y 35 | script: 36 | # get summary of test results 37 | - /tmp/catkin/bin/catkin_test_results $JOB_PATH/catkin_workspace/test_results --all 38 | notifications: 39 | # email: change 40 | -------------------------------------------------------------------------------- /docs/contribute.rst: -------------------------------------------------------------------------------- 1 | ********** 2 | Contribute 3 | ********** 4 | 5 | Contribute to bebop_autonomy 6 | ============================ 7 | 8 | You can contribute to *bebop_autonomy* by: 9 | 10 | * Reporting bugs using driver's `Issue Tracker `_ on Github. 11 | * Submitting patches, new features, sample codes, documentation and supplementary materials (i.e. launch and configuration files) as Github `Pull Requests `_. 12 | 13 | * Please check current `open issues `_ and :ref:`sec-roadmap` section for a list of known bugs and feature request. 14 | 15 | * Joining driver's `developers forum `_ and participate in technical discussions on new features, bugs and roadmap. 16 | 17 | List of Developers 18 | ================== 19 | 20 | - `Mani Monajjemi `_ 21 | 22 | .. _sec-contribs: 23 | 24 | List of Contributers 25 | ==================== 26 | 27 | - `Anup Parikh `_ 28 | 29 | - `#19 Add bebop ip address as ROS parameter `_ 30 | 31 | - `Jacob Perron `_ 32 | 33 | - `#26 Bebop now follows right-hand rule `_ 34 | - `#57 Add autonomous flight plan capabilities to driver `_ 35 | 36 | - `Jake Bruce `_ 37 | 38 | - `Charuvahan Adhivarahan `_ 39 | 40 | - `#30 Fixed breaking build due to legac macro usage `_ 41 | 42 | - `Thomas Bamford `_ 43 | 44 | - `Added Xbox 360 config file `_ 45 | 46 | - `Sepehr Mohaimenianpour `_ 47 | 48 | Acknowledgments 49 | ================ 50 | 51 | - `Mike Purvis `_ for his help with designing the initial architecture of the driver. 52 | 53 | -------------------------------------------------------------------------------- /bebop_tools/config/xbox360.yaml: -------------------------------------------------------------------------------- 1 | # Xbox 360 wireless controller 2 | # Deadman (enable) button: Right Bumper 3 | teleop: 4 | piloting: 5 | type: topic 6 | message_type: "geometry_msgs/Twist" 7 | topic_name: cmd_vel 8 | deadman_buttons: [5] 9 | axis_mappings: 10 | - 11 | axis: 4 # Right thumb stick (up/down) 12 | target: linear.x 13 | scale: 1.0 14 | offset: 0.0 15 | - 16 | axis: 3 # Right thumb stick (left/right) 17 | target: linear.y 18 | scale: 1.0 19 | offset: 0.0 20 | - 21 | axis: 1 # Left thumb stick (up/down) 22 | target: linear.z 23 | scale: 1.0 24 | offset: 0.0 25 | - 26 | axis: 0 # Left thumb stick (left/right) 27 | target: angular.z 28 | scale: 1.0 29 | offset: 0.0 30 | camera: 31 | type: topic 32 | message_type: "geometry_msgs/Twist" 33 | topic_name: camera_control 34 | deadman_buttons: [7] # Start 35 | axis_mappings: 36 | - 37 | axis: 1 # Left D-Pad (up/down) 38 | target: angular.y 39 | scale: 83.0 40 | offset: 0.0 41 | - 42 | axis: 0 # Left D-Pad (left/right) 43 | target: angular.z 44 | scale: -35.0 45 | offset: 0.0 46 | takeoff: 47 | type: topic 48 | message_type: "std_msgs/Empty" 49 | topic_name: takeoff 50 | deadman_buttons: [5, 3] # RB + Y 51 | axis_mappings: [] 52 | land: 53 | type: topic 54 | message_type: "std_msgs/Empty" 55 | topic_name: land 56 | deadman_buttons: [5, 0] # RB + A 57 | axis_mappings: [] 58 | emergency: 59 | type: topic 60 | message_type: "std_msgs/Empty" 61 | topic_name: reset 62 | deadman_buttons: [5, 1] # RB + B 63 | axis_mappings: [] 64 | flattrim: 65 | type: topic 66 | message_type: "std_msgs/Empty" 67 | topic_name: flattrim 68 | deadman_buttons: [5, 2] # RB + X 69 | axis_mappings: [] 70 | flip: 71 | type: topic 72 | message_type: "std_msgs/UInt8" 73 | topic_name: flip 74 | deadman_buttons: [5, 4, 2] # RB + LB + X 75 | axis_mappings: [] 76 | snapshot: 77 | type: topic 78 | message_type: "std_msgs/Empty" 79 | topic_name: snapshot 80 | deadman_buttons: [5, 8] # RB + XBox 81 | axis_mappings: [] 82 | -------------------------------------------------------------------------------- /docs/running.rst: -------------------------------------------------------------------------------- 1 | ****************** 2 | Running the Driver 3 | ****************** 4 | 5 | You can run Bebop's ROS drivereither as a ROS `Nodelet `_ or as a standalone ROS Node. The former is recommended if you intend to perform any kind of processing on Bebop's video stream. 6 | 7 | .. note:: If you compile the driver form source, do not forget to source your catkin workspace prior to running the driver. (i.e. ``source ~/bebop_ws/devel/setup.[bash|zsh]``) 8 | 9 | .. note:: Ensure that your Bebop's firmware is at least **2.0.29** and your computer is connected to Bebop's wireless network. 10 | 11 | Running the driver as a Node 12 | ================================ 13 | 14 | The executable node is called ``bebop_driver_node`` and exists in ``bebop_driver`` package. It's recommended to run the Node in its own namespace and with default configuration. The driver package comes with a sample launch file ``bebop_driver/launch/bebop_node.launch`` which demonstrates the procedure. 15 | 16 | .. code-block:: bash 17 | 18 | $ roslaunch bebop_driver bebop_node.launch 19 | 20 | 21 | .. literalinclude:: 22 | ../bebop_driver/launch/bebop_node.launch 23 | :language: XML 24 | :caption: bebop_node.launch 25 | 26 | Running the driver as a Nodelet 27 | =================================== 28 | 29 | To run the driver as a ROS Nodelet, you need to first run a Nodelet manager, then load the driver's Nodelet (``bebop_driver/BebopDriverNodelet``) in it, along with other Nodelets that need to communicate with the driver. `bebop_tools/launch/bebop_nodelet_iv.launch` is a sample launch file that demonstrates these steps by visualizing Bebop's video stream using an instance of `image_view/image `_ Nodelet. Similar to `bebop_node.launch`, it also runs everything in its own namespace and loads the default configuration. 30 | 31 | .. code-block:: bash 32 | 33 | $ roslaunch bebop_tools bebop_nodelet_iv.launch 34 | 35 | 36 | .. literalinclude:: 37 | ../bebop_tools/launch/bebop_nodelet_iv.launch 38 | :language: XML 39 | :caption: bebop_tools/launch/bebop_nodelet_iv.launch 40 | 41 | .. literalinclude:: 42 | ../bebop_driver/launch/bebop_nodelet.launch 43 | :language: XML 44 | :caption: bebop_driver/launch/bebop_nodelet.launch 45 | -------------------------------------------------------------------------------- /bebop_tools/config/log710.yaml: -------------------------------------------------------------------------------- 1 | # Logitech F710 wireless controller 2 | # Deadman (enable) button: Right Trigger 3 | # D<>X button (located on the back panel) must be set to D 4 | teleop: 5 | piloting: 6 | type: topic 7 | message_type: "geometry_msgs/Twist" 8 | topic_name: cmd_vel 9 | deadman_buttons: [7] 10 | axis_mappings: 11 | - 12 | axis: 3 # Right thumb stick (up/down) 13 | target: linear.x 14 | scale: 1.0 15 | offset: 0.0 16 | - 17 | axis: 2 # Right thumb stick (left/right) 18 | target: linear.y 19 | scale: 1.0 20 | offset: 0.0 21 | - 22 | axis: 1 # Left thumb stick (up/down) 23 | target: linear.z 24 | scale: 1.0 25 | offset: 0.0 26 | - 27 | axis: 0 # Left thumb stick (left/right) 28 | target: angular.z 29 | scale: 1.0 30 | offset: 0.0 31 | camera: 32 | type: topic 33 | message_type: "geometry_msgs/Twist" 34 | topic_name: camera_control 35 | deadman_buttons: [7] 36 | axis_mappings: 37 | - 38 | axis: 5 # Left D-Pad (up/down) 39 | target: angular.y 40 | scale: 83.0 41 | offset: 0.0 42 | - 43 | axis: 4 # Left D-Pad (left/right) 44 | target: angular.z 45 | scale: -35.0 46 | offset: 0.0 47 | takeoff: 48 | type: topic 49 | message_type: "std_msgs/Empty" 50 | topic_name: takeoff 51 | deadman_buttons: [3, 7] # RT + Y 52 | axis_mappings: [] 53 | land: 54 | type: topic 55 | message_type: "std_msgs/Empty" 56 | topic_name: land 57 | deadman_buttons: [1, 7] # RT + A 58 | axis_mappings: [] 59 | emergency: 60 | type: topic 61 | message_type: "std_msgs/Empty" 62 | topic_name: reset 63 | deadman_buttons: [2, 7] # RT + B 64 | axis_mappings: [] 65 | flattrim: 66 | type: topic 67 | message_type: "std_msgs/Empty" 68 | topic_name: flattrim 69 | deadman_buttons: [0, 7] # RT + X 70 | axis_mappings: [] 71 | flip: 72 | type: topic 73 | message_type: "std_msgs/UInt8" 74 | topic_name: flip 75 | deadman_buttons: [6, 7, 0] # RT + LT + X 76 | axis_mappings: [] 77 | snapshot: 78 | type: topic 79 | message_type: "std_msgs/Empty" 80 | topic_name: snapshot 81 | deadman_buttons: [7, 4] # RT + LB 82 | axis_mappings: [] 83 | -------------------------------------------------------------------------------- /bebop_description/urdf/bebop_base.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /bebop_driver/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | bebop_driver 4 | 0.7.1 5 | ROS driver for Parrot Bebop drone, based on Parrot’s official ARDroneSDK3 6 | 7 | Mani Monajjemi 8 | Sepehr MohaimenianPour 9 | Thomas Bamford 10 | Tobias Naegeli 11 | 12 | BSD 13 | 14 | http://wiki.ros.org/bebop_driver 15 | http://github.com/AutonomyLab/bebop_autonomy 16 | 17 | Mani Monajjemi 18 | 19 | catkin 20 | 21 | parrot_arsdk 22 | bebop_msgs 23 | bebop_description 24 | pkg-config 25 | nodelet 26 | camera_info_manager 27 | ffmpeg 28 | image_transport 29 | nav_msgs 30 | roscpp 31 | std_msgs 32 | tf2 33 | tf2_ros 34 | tf2_geometry_msgs 35 | dynamic_reconfigure 36 | roslint 37 | rostest 38 | 39 | parrot_arsdk 40 | bebop_msgs 41 | bebop_description 42 | nodelet 43 | camera_info_manager 44 | ffmpeg 45 | image_transport 46 | nav_msgs 47 | roscpp 48 | std_msgs 49 | tf2 50 | tf2_ros 51 | tf2_geometry_msgs 52 | ffmpeg 53 | dynamic_reconfigure 54 | 55 | angles 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /docs/configuration.rst: -------------------------------------------------------------------------------- 1 | ******************************** 2 | Configuring Bebop and the Driver 3 | ******************************** 4 | 5 | .. _sec-params: 6 | 7 | Driver Parameters 8 | ================= 9 | 10 | Following parameters are set during driver's startup: 11 | 12 | ~bebop_ip 13 | --------- 14 | 15 | Sets the IP addres of the Bebop. The default value is ``192.168.42.1``. 16 | 17 | ~reset_settings 18 | --------------- 19 | 20 | Setting this parameter to ``true`` will reset all Bebop configurations to factory defaults. Default value is ``false``. 21 | 22 | ~sync_time 23 | ---------- 24 | 25 | Setting this parameter to ``true`` will synchronize drone time with your ROS system time. Default value is ``false``. 26 | 27 | ~camera_info_url 28 | ---------------- 29 | 30 | Sets the location of the camera calibration data. Default is empty string. For more information check `this documentation `_. 31 | 32 | .. note:: 33 | 34 | Since v0.4, the package comes with a default camera calibration file located at ``bebop_driver/data/bebop_front_calib.yaml``. 35 | 36 | ~cmd_vel_timeout 37 | ---------------- 38 | 39 | .. versionadded:: 0.4 40 | 41 | Sets the safety timeout for piloting ``cmd_vel`` commands in seconds. Deafult is set to **0.1** seconds (100 miliseconds). If no piloting command is received by the driver within this timeout period, the driver issues a stop command which causes the drone to hover. 42 | 43 | ~odom_frame_id 44 | -------------- 45 | 46 | .. versionadded:: 0.5 47 | 48 | Sets the ``frame_id`` of the odometery message (see :ref:`sec-ros-topic`) and the odometery frame used in the TF tree (see :ref:`sec-tf`). The default value is ``odom``. 49 | 50 | ~publish_odom_tf 51 | ---------------- 52 | 53 | .. versionadded:: 0.5 54 | 55 | Enables the publishing of ``odom`` to ``base_link`` TF transform (see :ref:`sec-tf`). The default value is ``true``. 56 | 57 | ~camera_frame_id 58 | ---------------- 59 | 60 | .. deprecated:: 0.5 61 | 62 | Sets the ``frame_id`` of camera and image messages. The default value is ``camera_optical``. 63 | 64 | .. _sec-dyn-params: 65 | 66 | Dynamically Reconfigurable Parameters for Bebop 67 | =============================================== 68 | 69 | Following ROS parameters change Bebop's settings. They can be tweaked during runtime using `dynamic reconfigure GUI `_. Setting `~reset_settings`_ parameter to ``true`` will reset all these settings to factory defaults. 70 | 71 | :doc:`autogenerated/ardrone3_settings_param` 72 | 73 | -------------------------------------------------------------------------------- /bebop_driver/src/bebop_driver_node.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file bebop_driver_node.cpp 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | */ 25 | #include 26 | #include 27 | #include 28 | 29 | #include 30 | #include 31 | 32 | int main(int argc, char* argv[]) 33 | { 34 | ros::init(argc, argv, "bebop_driver_node", ros::init_options::NoSigintHandler); 35 | nodelet::Loader nll; 36 | 37 | nodelet::M_string remap(ros::names::getRemappings()); 38 | nodelet::V_string nargv; 39 | const std::string nl_name = ros::this_node::getName(); 40 | nll.load(nl_name, "bebop_driver/BebopDriverNodelet", remap, nargv); 41 | 42 | const std::vector& loaded_nodelets = nll.listLoadedNodelets(); 43 | if (std::find(loaded_nodelets.begin(), 44 | loaded_nodelets.end(), 45 | nl_name) == loaded_nodelets.end()) 46 | { 47 | // Nodelet OnInit() failed 48 | ROS_FATAL("bebop_driver nodelet failed to load."); 49 | return 1; 50 | } 51 | 52 | // It reaches here when OnInit() succeeds 53 | ROS_INFO("bebop_driver nodelet loaded."); 54 | ros::spin(); 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/setting_callback_includes.h.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file {{project}}_setting_callback_includes.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | * {{project}}_setting_callback_includes.h 26 | * auto-generated from {{url}} 27 | * Do not modify this file by hand. Check scripts/meta folder for generator files. 28 | */ 29 | 30 | #ifdef FORWARD_DECLARATIONS 31 | namespace cb 32 | { 33 | {{#cpp_class}} 34 | class {{cpp_class_name}}; 35 | {{/cpp_class}} 36 | } // namespace cb 37 | #endif // FORWARD_DECLARATIONS 38 | 39 | #ifdef DEFINE_SHARED_PTRS 40 | // Define all callback wrappers 41 | {{#cpp_class}} 42 | boost::shared_ptr {{cpp_class_instance_name}}; 43 | {{/cpp_class}} 44 | #endif // DEFINE_SHARED_PTRS 45 | 46 | #ifdef UPDTAE_CALLBACK_MAP 47 | // Instantiate state callback wrappers 48 | {{#cpp_class}} 49 | {{cpp_class_instance_name}}.reset(new cb::{{cpp_class_name}}(priv_nh)); 50 | {{/cpp_class}} 51 | 52 | // Add all wrappers to the callback map (AbstractCommand* part of each object) 53 | {{#cpp_class}} 54 | callback_map_.insert(std::pair >( 55 | {{cpp_class_instance_name}}->GetCommandKey(), 56 | {{cpp_class_instance_name}})); 57 | {{/cpp_class}} 58 | #endif // UPDTAE_CALLBACK_MAP 59 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/state_callback_includes.h.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file {{project}}_state_callback_includes.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | * {{project}}_state_callback_includes.h 26 | * auto-generated from {{url}} 27 | * Do not modify this file by hand. Check scripts/meta folder for generator files. 28 | */ 29 | 30 | #ifdef FORWARD_DECLARATIONS 31 | namespace cb 32 | { 33 | {{#cpp_class}} 34 | class {{cpp_class_name}}; 35 | {{/cpp_class}} 36 | } // namespace cb 37 | #endif // FORWARD_DECLARATIONS 38 | 39 | #ifdef DEFINE_SHARED_PTRS 40 | // Define all callback wrappers 41 | {{#cpp_class}} 42 | boost::shared_ptr 43 | {{cpp_class_instance_name}}; 44 | {{/cpp_class}} 45 | #endif // DEFINE_SHARED_PTRS 46 | 47 | #ifdef UPDTAE_CALLBACK_MAP 48 | // Instantiate state callback wrappers 49 | {{#cpp_class}} 50 | {{cpp_class_instance_name}}.reset( 51 | new cb::{{cpp_class_name}}( 52 | nh, priv_nh, "{{topic_name}}")); 53 | {{/cpp_class}} 54 | 55 | {{#cpp_class}} 56 | // Add all wrappers to the callback map 57 | callback_map_.insert(std::pair >( 58 | {{cpp_class_instance_name}}->GetCommandKey(), 59 | {{cpp_class_instance_name}})); 60 | {{/cpp_class}} 61 | #endif // UPDTAE_CALLBACK_MAP 62 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | **************************************************************************** 2 | bebop_autonomy - ROS Driver for Parrot Bebop Drone (quadrocopter) 1.0 & 2.0 3 | **************************************************************************** 4 | 5 | *bebop_autonomy* is a :abbr:`ROS (Robot Operating System)` driver for `Parrot Bebop 1.0 `_ and `2.0 `_ drones (quadrocopters), based on Parrot's official `ARDroneSDK3 `_. This driver has been developed in `Autonomy Lab `_ of `Simon Fraser University `_ by `Mani Monajjemi `_ and other contributers (:ref:`sec-contribs`). This software is maintained by `Sepehr MohaimenianPour `_ (AutonomyLab, Simon Fraser University), `Thomas Bamford <#>`_ (Dynamic Systems Lab, University of Toronto) and `Tobias Naegeli `_ (Advanced Interactive Technologies Lab, ETH Zürich). 6 | 7 | [`Source Code `_] 8 | [`ROS wiki page `_] 9 | [`Support `_] 10 | [`Bug Tracker `_] 11 | 12 | .. _sec-roadmap: 13 | 14 | Features and Roadmap 15 | ==================== 16 | 17 | .. csv-table:: 18 | :header: "Feature", "Status", "Notes" 19 | 20 | SDK Version,"3.12.6", "Since v0.7" 21 | Support for Parrot Bebop 1, Yes, "Tested up to Firmware 3.3" 22 | Support for Parrot Bebop 2, Yes, "Tested up to Firmware 4.0.6" 23 | Support for Parrot Disco FPV, No, "Not tested (help wanted)" 24 | Core piloting, Yes, "" 25 | H264 video decoding, Yes, "Enhancement: `#1 `_" 26 | ROS Camera Interface, Yes, "" 27 | Nodelet implementation, Yes, "" 28 | Publish Bebop states as ROS topics, Yes, "" 29 | Dynamically reconfigurable Bebop settings, Yes, ":ref:`sec-dev-dyn`" 30 | Use `parrot_arsdk `_ instead of building ARSDK3 inline, Yes, "Since v0.6: `#75 `_" 31 | Bebop In The Loop tests, Yes, ":ref:`sec-dev-test`" 32 | Joystick teleop demo, Yes, ":ref:`sec-pilot-teleop`" 33 | TF Publisher, Yes, "Since v0.5 (:ref:`sec-tf`)" 34 | Odometry Publisher, Yes, "Since v0.5 (:ref:`sec-odom`)" 35 | Provide ROS API for on-board picture/video recording, Yes, "Since v0.4.1 (:ref:`sec-snapshot`)" 36 | GPS Support, Yes, "Since v0.6 (:ref:`sec-gps`)" 37 | Support for 720p streaming, Yes, "Since v0.6" 38 | Mavlink Support, No, "" 39 | Binary Release, No, "" 40 | Support for Parrot Sky Controller, No, "" 41 | 42 | Table of Contents 43 | ================= 44 | 45 | .. toctree:: 46 | :maxdepth: 2 47 | 48 | changelog 49 | installation 50 | running 51 | piloting 52 | reading 53 | configuration 54 | coordinates 55 | contribute 56 | FAQ 57 | dev 58 | license 59 | 60 | Indices and tables 61 | ================== 62 | 63 | * :ref:`genindex` 64 | * :ref:`modindex` 65 | * :ref:`search` 66 | 67 | -------------------------------------------------------------------------------- /docs/license.rst: -------------------------------------------------------------------------------- 1 | ******* 2 | License 3 | ******* 4 | 5 | Parrot ARDrone3 SDK 6 | =================== 7 | 8 | Copyright (C) 2014 Parrot SA 9 | 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions 12 | are met: 13 | 14 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 15 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 16 | * Neither the name of Parrot nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior writtenpermission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 22 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 23 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 24 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 25 | OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 26 | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 28 | OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 | SUCH DAMAGE. 30 | 31 | bebop_autonomy (driver and tools) 32 | ================================= 33 | 34 | Copyright (c) 2015, Mani Monajjemi (AutonomyLab, Simon Fraser University) 35 | All rights reserved. 36 | 37 | Redistribution and use in source and binary forms, with or without 38 | modification, are permitted provided that the following conditions are met: 39 | 40 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 41 | 42 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 43 | 44 | * Neither the name of [project] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 45 | 46 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 47 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 48 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 49 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 50 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 51 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 52 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 53 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 54 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 55 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 | 57 | -------------------------------------------------------------------------------- /docs/reading.rst: -------------------------------------------------------------------------------- 1 | ****************** 2 | Reading from Bebop 3 | ****************** 4 | 5 | Camera 6 | ====== 7 | 8 | The video stream from Bebop's front camera is published on ``image_raw`` topic as ``sensor_msgs/Image`` messages. *bebop_driver* complies with ROS camera interface specifications and publishes camera information and calibration data to ``camera_info`` topic. Due to limitations in Parrot's ARDroneSDK3, the quality of video stream is limited to **640 x 368 @ 30 Hz**. The field of view of this virtual camera (based on our measurements) is ~80 (horizontal) and ~50 (vertical) degrees. 9 | 10 | To set the location of camera calibration data, please check this page: :doc:`configuration`. Since v0.4, the package ships with a default camera caliberation file located at ``bebop_driver/data/bebop_front_calib.yaml``. Both default node/nodelet launch files, load this file when executing the driver. 11 | 12 | .. _sec-ros-topic: 13 | 14 | Standard ROS messages 15 | ===================== 16 | 17 | .. _sec-odom: 18 | 19 | Odometery 20 | --------- 21 | 22 | .. versionadded:: 0.5 23 | 24 | * ROS Topic: ``odom`` 25 | * ROS Message Type: ``nav_msgs/Odometry`` 26 | 27 | The driver integerates visual-inertial velocity estimates reported by Bebop's firmware to calculate the odometery. This message contains both the position and velocity of the Bebop in an ENU aligned odometery frame also named as ``odom``. This frame name is configurable (see :ref:`sec-params`) The cooridnate frame convention complies with ROS REP 103 (:ref:`sec-coords`). Please not that since odometery is calculated from Bebop States (see :ref:`sec-states`), the update rate is limited to **5 Hz**. 28 | 29 | .. _sec-gps: 30 | 31 | GPS 32 | --- 33 | 34 | .. versionadded:: 0.5 35 | 36 | * ROS Topic: ``fix`` 37 | * ROS Message Type: ``sensor_msgs/NavSatFix`` 38 | 39 | Joint States (Pan/Tilt of The Virtual Camera) 40 | --------------------------------------------- 41 | 42 | .. versionadded:: 0.5 43 | 44 | * ROS Topic: ``joint_states`` 45 | * ROS Message Type: ``sensor_msgs/JointState`` 46 | 47 | .. _sec-tf: 48 | 49 | TF 50 | == 51 | 52 | .. versionadded:: 0.5 53 | 54 | The driver updates the following `TF `_ tree based on a simple kinematic model of the Bebop (provided by ``bebop_description``) pacakge, the current state of the virtual camera joints and the calculated odometery (if ``publish_odom_tf`` is set, see :ref:`sec-params`). 55 | 56 | .. image:: img/tf.png 57 | 58 | .. _sec-states: 59 | 60 | States (aka Navdata) 61 | ==================== 62 | 63 | Unlike Parrot ARDrone, Bebop does not constantly transmit all on-board data back to the host device with high frequency. Each state variable is sent only when its value is changed. In addition, the publication rate is currently limited to **5 Hz**. The driver publishes these states **selectively** and when **explicitly** enabled through a ROS parameter. For example setting ``~states/enable_pilotingstate_flyingstatechanged`` parameter to ``true`` will enable the publication of flying state changes to topic ``states/ARDrone3/PilotingState/FlyingStateChanged``. List of all such parameters and their corresponding topics and message types are indexed in the following pages: 64 | 65 | Common States 66 | :doc:`autogenerated/common_states_param_topic` 67 | Bebop-specific States 68 | :doc:`autogenerated/ardrone3_states_param_topic` 69 | 70 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/callbacks_common.h.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file bebop_common_commands.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | * bebop_common_commands.h 26 | * auto-generated from {{url}} 27 | * Do not modify this file by hand. Check scripts/meta folder for generator files. 28 | */ 29 | #ifndef BEBOP_COMMON_COMMANDS_H 30 | #define BEBOP_COMMON_COMMANDS_H 31 | 32 | #include 33 | #include 34 | #include 35 | #include 36 | 37 | namespace bebop_driver 38 | { 39 | 40 | // Forward decl 41 | class BebopArdrone3Config; 42 | 43 | namespace cb 44 | { 45 | 46 | /* Base class for All SDK Commands */ 47 | class AbstractCommand 48 | { 49 | protected: 50 | eARCONTROLLER_DICTIONARY_KEY cmd_key_; 51 | ARCONTROLLER_DICTIONARY_ARG_t* arg; 52 | mutable ::boost::mutex mutex_; 53 | 54 | public: 55 | AbstractCommand(eARCONTROLLER_DICTIONARY_KEY cmd_key) 56 | : cmd_key_(cmd_key), arg(NULL) 57 | {} 58 | 59 | virtual ~AbstractCommand() 60 | {} 61 | 62 | inline eARCONTROLLER_DICTIONARY_KEY GetCommandKey() const {return cmd_key_;} 63 | 64 | virtual void Update(const ARCONTROLLER_DICTIONARY_ARG_t* arg, const ::ros::Time& t) = 0; 65 | }; 66 | 67 | // This is not yet abstract 68 | class AbstractState : public AbstractCommand 69 | { 70 | protected: 71 | bool pub_enabled_; 72 | ::ros::Publisher ros_pub_; 73 | 74 | public: 75 | AbstractState(eARCONTROLLER_DICTIONARY_KEY cmd_key, const bool pub_enabled = false) 76 | : AbstractCommand(cmd_key), pub_enabled_(pub_enabled) 77 | {} 78 | 79 | virtual ~AbstractState() 80 | {} 81 | }; 82 | 83 | class AbstractSetting: public AbstractCommand 84 | { 85 | protected: 86 | ros::NodeHandle priv_nh_; 87 | 88 | public: 89 | AbstractSetting(eARCONTROLLER_DICTIONARY_KEY cmd_key, ros::NodeHandle& priv_nh) 90 | : AbstractCommand(cmd_key), priv_nh_(priv_nh) 91 | {} 92 | 93 | virtual ~AbstractSetting() 94 | {} 95 | 96 | virtual void UpdateBebopFromROS(const BebopArdrone3Config &config, const ARCONTROLLER_Device_t* bebop_ctrl_ptr_) = 0; 97 | 98 | }; 99 | 100 | } // namespace cb 101 | } // namespace bebop_driver 102 | 103 | #endif // BEBOP_COMMON_COMMANDS_H -------------------------------------------------------------------------------- /bebop_driver/include/bebop_driver/autogenerated/callbacks_common.h: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file bebop_common_commands.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | * bebop_common_commands.h 26 | * auto-generated from https://raw.githubusercontent.com/Parrot-Developers/arsdk-xml/ab28dab91845cd36c4d7002b55f70805deaff3c8/xml/ardrone3.xml 27 | * Do not modify this file by hand. Check scripts/meta folder for generator files. 28 | */ 29 | #ifndef BEBOP_COMMON_COMMANDS_H 30 | #define BEBOP_COMMON_COMMANDS_H 31 | 32 | #include 33 | #include 34 | #include 35 | #include 36 | 37 | namespace bebop_driver 38 | { 39 | 40 | // Forward decl 41 | class BebopArdrone3Config; 42 | 43 | namespace cb 44 | { 45 | 46 | /* Base class for All SDK Commands */ 47 | class AbstractCommand 48 | { 49 | protected: 50 | eARCONTROLLER_DICTIONARY_KEY cmd_key_; 51 | ARCONTROLLER_DICTIONARY_ARG_t* arg; 52 | mutable ::boost::mutex mutex_; 53 | 54 | public: 55 | AbstractCommand(eARCONTROLLER_DICTIONARY_KEY cmd_key) 56 | : cmd_key_(cmd_key), arg(NULL) 57 | {} 58 | 59 | virtual ~AbstractCommand() 60 | {} 61 | 62 | inline eARCONTROLLER_DICTIONARY_KEY GetCommandKey() const {return cmd_key_;} 63 | 64 | virtual void Update(const ARCONTROLLER_DICTIONARY_ARG_t* arg, const ::ros::Time& t) = 0; 65 | }; 66 | 67 | // This is not yet abstract 68 | class AbstractState : public AbstractCommand 69 | { 70 | protected: 71 | bool pub_enabled_; 72 | ::ros::Publisher ros_pub_; 73 | 74 | public: 75 | AbstractState(eARCONTROLLER_DICTIONARY_KEY cmd_key, const bool pub_enabled = false) 76 | : AbstractCommand(cmd_key), pub_enabled_(pub_enabled) 77 | {} 78 | 79 | virtual ~AbstractState() 80 | {} 81 | }; 82 | 83 | class AbstractSetting: public AbstractCommand 84 | { 85 | protected: 86 | ros::NodeHandle priv_nh_; 87 | 88 | public: 89 | AbstractSetting(eARCONTROLLER_DICTIONARY_KEY cmd_key, ros::NodeHandle& priv_nh) 90 | : AbstractCommand(cmd_key), priv_nh_(priv_nh) 91 | {} 92 | 93 | virtual ~AbstractSetting() 94 | {} 95 | 96 | virtual void UpdateBebopFromROS(const BebopArdrone3Config &config, const ARCONTROLLER_Device_t* bebop_ctrl_ptr_) = 0; 97 | 98 | }; 99 | 100 | } // namespace cb 101 | } // namespace bebop_driver 102 | 103 | #endif // BEBOP_COMMON_COMMANDS_H -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/state_callbacks.h.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file {{project}}_state_callbacks.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | * {{project}}_state_callbacks.h 26 | * auto-generated from {{url}} 27 | * Do not modify this file by hand. Check scripts/meta folder for generator files. 28 | */ 29 | 30 | #ifndef BEBOP_AUTONOMY_AUTOGENERATED_{{project}}_STATE_CALLBACKS_H 31 | #define BEBOP_AUTONOMY_AUTOGENERATED_{{project}}_STATE_CALLBACKS_H 32 | 33 | extern "C" 34 | { 35 | #include "libARSAL/ARSAL.h" 36 | #include "libARController/ARController.h" 37 | } 38 | 39 | #include "bebop_driver/autogenerated/callbacks_common.h" 40 | #include "bebop_driver/BebopArdrone3Config.h" 41 | 42 | {{#cpp_class}} 43 | #include "bebop_msgs/{{cpp_class_msg_type}}.h" 44 | {{/cpp_class}} 45 | 46 | namespace bebop_driver 47 | { 48 | namespace cb 49 | { 50 | 51 | {{#cpp_class}} 52 | 53 | // {{cpp_class_comment}} 54 | class {{cpp_class_name}} : public AbstractState 55 | { 56 | private: 57 | ::bebop_msgs::{{cpp_class_msg_type}}::Ptr msg_ptr; 58 | 59 | public: 60 | 61 | {{cpp_class_name}}(::ros::NodeHandle& nh, ::ros::NodeHandle& priv_nh, const ::std::string& topic) 62 | : AbstractState({{key}}) 63 | { 64 | if (priv_nh.getParam("{{cpp_class_param_name}}", pub_enabled_) && pub_enabled_) 65 | { 66 | ARSAL_PRINT(ARSAL_PRINT_INFO, "CB" , "[STATES] Enabling %s", topic.c_str()); 67 | ros_pub_ = nh.advertise(topic, {{queue_size}}, {{latched}}); 68 | } // pub_enabled_ is false 69 | } 70 | 71 | ::bebop_msgs::{{cpp_class_msg_type}}::ConstPtr GetDataCstPtr() const 72 | { 73 | ::boost::lock_guard lock(mutex_); 74 | return msg_ptr; 75 | } 76 | 77 | void Update(const ARCONTROLLER_DICTIONARY_ARG_t *arguments, const ::ros::Time& t) 78 | { 79 | if (arguments == NULL) 80 | { 81 | ARSAL_PRINT(ARSAL_PRINT_WARNING, "CB", "{{cpp_class_name}}::Update() arguments is NULL"); 82 | return; 83 | } 84 | 85 | ::boost::lock_guard lock(mutex_); 86 | msg_ptr.reset(new ::bebop_msgs::{{cpp_class_msg_type}}()); 87 | msg_ptr->header.stamp = t; 88 | msg_ptr->header.frame_id = "{{frame_id}}"; 89 | 90 | {{#cpp_class_arg}} 91 | 92 | arg = NULL; 93 | HASH_FIND_STR (arguments, {{cpp_class_arg_key}}, arg); 94 | if (arg) 95 | { 96 | msg_ptr->{{cpp_class_arg_name}} = arg->value.{{cpp_class_arg_sdk_type}}; 97 | } 98 | {{/cpp_class_arg}} 99 | 100 | if (pub_enabled_) ros_pub_.publish(msg_ptr); 101 | } 102 | 103 | }; // {{cpp_class_name}} 104 | 105 | {{/cpp_class}} 106 | 107 | } // namespace cb 108 | } // namespace bebop_driver 109 | #endif // BEBOP_AUTONOMY_AUTOGENERATED_{{project}}_STATE_CALLBACKS_H -------------------------------------------------------------------------------- /bebop_driver/include/bebop_driver/bebop_video_decoder.h: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file bebop_video_decoder.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | */ 25 | #ifndef BEBOP_AUTONOMY_BEBOP_VIDEO_DECODER_H 26 | #define BEBOP_AUTONOMY_BEBOP_VIDEO_DECODER_H 27 | 28 | extern "C" 29 | { 30 | #include "libARController/ARCONTROLLER_Error.h" 31 | #include "libARController/ARCONTROLLER_Frame.h" 32 | #include 33 | #include 34 | #include 35 | #include 36 | } 37 | 38 | #include 39 | #include 40 | 41 | // https://github.com/libav/libav/commit/104e10fb426f903ba9157fdbfe30292d0e4c3d72 42 | // https://github.com/libav/libav/blob/33d18982fa03feb061c8f744a4f0a9175c1f63ab/doc/APIchanges#L697 43 | #if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 25, 0)) 44 | #define AV_CODEC_ID_H264 CODEC_ID_H264 45 | #endif 46 | 47 | // https://github.com/libav/libav/blob/33d18982fa03feb061c8f744a4f0a9175c1f63ab/doc/APIchanges#L653 48 | #if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(51, 42, 0)) 49 | #define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P 50 | #endif 51 | 52 | #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1) 53 | #define av_frame_alloc avcodec_alloc_frame 54 | #define av_frame_free avcodec_free_frame 55 | #endif 56 | 57 | namespace bebop_driver 58 | { 59 | 60 | class VideoDecoder 61 | { 62 | private: 63 | static const char* LOG_TAG; 64 | 65 | bool codec_initialized_; 66 | bool first_iframe_recv_; 67 | AVFormatContext* format_ctx_ptr_; 68 | AVCodecContext* codec_ctx_ptr_; 69 | AVCodec* codec_ptr_; 70 | AVFrame* frame_ptr_; 71 | AVFrame* frame_rgb_ptr_; 72 | AVPacket packet_; 73 | SwsContext* img_convert_ctx_ptr_; 74 | AVInputFormat* input_format_ptr_; 75 | uint8_t *frame_rgb_raw_ptr_; 76 | 77 | bool update_codec_params_; 78 | std::vector codec_data_; 79 | 80 | static void ThrowOnCondition(const bool cond, const std::string& message); 81 | bool InitCodec(); 82 | bool ReallocateBuffers(); 83 | void CleanupBuffers(); 84 | void Reset(); 85 | 86 | void ConvertFrameToRGB(); 87 | 88 | public: 89 | VideoDecoder(); 90 | ~VideoDecoder(); 91 | 92 | bool SetH264Params(uint8_t* sps_buffer_ptr, uint32_t sps_buffer_size, 93 | uint8_t* pps_buffer_ptr, uint32_t pps_buffer_size); 94 | bool Decode(const ARCONTROLLER_Frame_t* bebop_frame_ptr_); 95 | inline uint32_t GetFrameWidth() const {return codec_initialized_ ? codec_ctx_ptr_->width : 0;} 96 | inline uint32_t GetFrameHeight() const {return codec_initialized_ ? codec_ctx_ptr_->height : 0;} 97 | 98 | inline const uint8_t* GetFrameRGBRawCstPtr() const {return frame_rgb_raw_ptr_;} 99 | }; 100 | 101 | } // namespace bebop_driver 102 | 103 | #endif // BEBOP_AUTONOMY_BEBOP_VIDEO_DECODER_H 104 | -------------------------------------------------------------------------------- /bebop_driver/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(bebop_driver) 3 | 4 | ## Enable hardware (Bebop In The Loop Tests) 5 | option(RUN_HARDWARE_TESTS "Enable hardware (Bebop In The Loop Tests" OFF) 6 | 7 | find_package(catkin REQUIRED COMPONENTS 8 | parrot_arsdk 9 | bebop_msgs 10 | nodelet 11 | camera_info_manager 12 | image_transport 13 | nav_msgs 14 | roscpp 15 | std_msgs 16 | tf2 17 | tf2_ros 18 | tf2_geometry_msgs 19 | dynamic_reconfigure 20 | roslint 21 | ) 22 | 23 | message(STATUS "Catkin INCLUE_DIR: ${catkin_INCLUDE_DIRS}") 24 | message(STATUS "Catkin LIBS: ${catkin_LIBRARIES}") 25 | message(STATUS "ARSDK3 INCLUDE_DIR: ${ARSDK_INCLUDE_DIR}") 26 | message(STATUS "ARSDK3 LIB_DIR: ${ARSDK_LIB_DIR}") 27 | message(STATUS "ARSDK3 LIBS: ${ARSDK_LIBS}") 28 | 29 | generate_dynamic_reconfigure_options( 30 | cfg/autogenerated/BebopArdrone3.cfg 31 | ) 32 | 33 | # Video decoding dependencies (libbebop) 34 | find_package(PkgConfig REQUIRED) 35 | pkg_check_modules(AVCODEC REQUIRED libavcodec) 36 | pkg_check_modules(AVFORMAT REQUIRED libavformat) 37 | pkg_check_modules(SWSCALE REQUIRED libswscale) 38 | 39 | # TODO: Should we state all catkin depends? 40 | catkin_package( 41 | INCLUDE_DIRS include 42 | LIBRARIES libbebop bebop_driver_nodelet 43 | CATKIN_DEPENDS parrot_arsdk bebop_msgs bebop_description roscpp nodelet camera_info_manager image_transport nav_msgs std_msgs tf2 tf2_ros tf2_geometry_msgs dynamic_reconfigure 44 | DEPENDS system_lib libavcodec libavformat libswscale 45 | ) 46 | 47 | # roslint 48 | set(ROSLINT_CPP_OPTS "--filter=-build/include") 49 | roslint_cpp( 50 | src/bebop.cpp 51 | src/bebop_driver_node.cpp 52 | src/bebop_driver_nodelet.cpp 53 | src/bebop_video_decoder.cpp 54 | include/bebop_driver/bebop.h 55 | include/bebop_driver/bebop_driver_nodelet.h 56 | include/bebop_driver/bebop_video_decoder.h 57 | ) 58 | 59 | ########### 60 | ## Build ## 61 | ########### 62 | 63 | include_directories( 64 | ${catkin_INCLUDE_DIRS} 65 | ${ARSDK_INCLUDE_DIR} 66 | include 67 | ${AVCODEC_INCLUDE_DIRS} 68 | ${AVFORMAT_INCLUDE_DIRS} 69 | ${SWSCALE_INCLUDE_DIRS} 70 | ) 71 | 72 | link_directories(${ARDRONESDK3_PATH}/lib 73 | ${ARSDK_LIB_DIR} 74 | ${AVCODEC_LIBRARY_DIRS} 75 | ${AVFORMAT_LIBRARY_DIRS} 76 | ${SWSCALE_LIBRARY_DIRS} 77 | ) 78 | 79 | add_library(bebop src/bebop.cpp src/bebop_video_decoder.cpp) 80 | target_link_libraries(bebop 81 | ${catkin_LIBRARIES} 82 | ${ARSDK_LIBS} 83 | ${AVCODEC_LIBRARIES} 84 | ${AVFORMAT_LIBRARIES} 85 | ${SWSCALE_LIBRARIES} 86 | ) 87 | 88 | add_dependencies(bebop ${PROJECT_NAME}_gencfg) 89 | 90 | add_library(bebop_driver_nodelet src/bebop_driver_nodelet.cpp) 91 | target_link_libraries(bebop_driver_nodelet 92 | ${catkin_LIBRARIES} 93 | bebop 94 | ) 95 | 96 | add_executable(bebop_driver_node src/bebop_driver_node.cpp) 97 | target_link_libraries(bebop_driver_node 98 | ${catkin_LIBRARIES} 99 | bebop 100 | ) 101 | 102 | ############# 103 | ## Install ## 104 | ############# 105 | 106 | # all install targets should use catkin DESTINATION variables 107 | # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html 108 | 109 | ## Mark executable scripts (Python etc.) for installation 110 | ## in contrast to setup.py, you can choose the destination 111 | # install(PROGRAMS 112 | # scripts/my_python_script 113 | # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 114 | # ) 115 | 116 | ## Mark executables and/or libraries for installation 117 | # install(TARGETS bebop_autonomy bebop_autonomy_node 118 | # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 119 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 120 | # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 121 | # ) 122 | 123 | ## Mark cpp header files for installation 124 | # install(DIRECTORY include/${PROJECT_NAME}/ 125 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 126 | # FILES_MATCHING PATTERN "*.h" 127 | # PATTERN ".svn" EXCLUDE 128 | # ) 129 | 130 | ## Mark other files for installation (e.g. launch and bag files, etc.) 131 | # install(FILES 132 | # # myfile1 133 | # # myfile2 134 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 135 | # ) 136 | 137 | ############# 138 | ## Testing ## 139 | ############# 140 | 141 | if(CATKIN_ENABLE_TESTING AND RUN_HARDWARE_TESTS) 142 | find_package(rostest REQUIRED) 143 | add_rostest_gtest(bebop_itl_test test/bebop_itl_test.test test/bebop_itl_test.cpp) 144 | target_link_libraries(bebop_itl_test ${catkin_LIBRARIES}) 145 | endif() 146 | -------------------------------------------------------------------------------- /docs/dev.rst: -------------------------------------------------------------------------------- 1 | ************** 2 | Under The Hood 3 | ************** 4 | 5 | This page contains information about the architecture of the driver and different techniques used for its development. 6 | 7 | Automatic Code Generation 8 | ========================= 9 | 10 | TBA 11 | 12 | Threading Model 13 | =============== 14 | 15 | TBA 16 | 17 | Publishing the States 18 | ===================== 19 | 20 | TBA 21 | 22 | .. _sec-dev-dyn: 23 | 24 | Configuring the Drone 25 | ===================== 26 | 27 | TBA 28 | 29 | .. _sec-dev-test: 30 | 31 | Tests 32 | ===== 33 | 34 | Enabling Bebop In The Loop Tests 35 | -------------------------------- 36 | 37 | .. code-block:: bash 38 | 39 | $ cd /path/to/bebop_ws 40 | $ catkin clean --cmake-cache 41 | $ catkin build bebop_driver --cmake-args -DRUN_HARDWARE_TESTS=ON 42 | 43 | Running Bebop In The Loop Tests 44 | ------------------------------- 45 | 46 | .. warning:: Bebop in the loop tests perform live unit tests with a real robot. Please proceed with caution and execute the tests in an area with at least 5 meters of clearance radius (empty space) around the Bebop. 47 | 48 | .. code-block:: bash 49 | 50 | $ cd /path/to/bebop_ws/build/bebop_driver 51 | $ make tests 52 | $ rostest --text bebop_driver bebop_itl_test.test 53 | 54 | Upgrading the Bebop SDK 55 | ======================= 56 | 57 | .. warning:: Since version 0.6, `Parrot ARSDK `_, the main underlying dependency of *bebop_autonomy* is not build inline anymore. Instead, the slightly patched and catkinized version of it, called `parrot_arsdk `_, is fetched as a dependency. **The following documentation needs to be updated**. 58 | 59 | 1. Update the ``GIT_TAG`` of ``ARDroneSDK3`` in ``bebop_driver/CMakeLists.txt::add_custom_target::./repo init ... -b GIT_TAG`` to your desired commit hash, branch or tag (release). The official upstream repository is hosted `here `_. 60 | 2. Checkout (or browse) the upstream repository at the same hash used in step (1) and open ``release.xml`` file. From this file, extract the commit hash of ``arsdk-xml`` from the ``revision`` property of this XML tag: ````. 61 | 3. Open ``bebop_driver/scripts/meta/generate.py`` and update ``LIBARCOMMANDS_GIT_HASH`` variable to the hash obtained in step (2). 62 | 4. Change the working diretory to ``bebop_driver/scripts/meta``, then execute ``generate.py`` from the command line. This will regenerate all automatically generated message definitions, header files and documentations. 63 | 5. Copy the generated files to their target locations by calling ``./install.sh``. 64 | 6. In ``bebop_driver/include/bebop_driver/autogenerated/ardrone3_setting_callbacks.h`` change the following varialbles: 65 | 66 | - ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_VALUE`` to ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_MAXDISTANCECHANGED_CURRENT``. 67 | - ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED_VALUE`` to ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_BANKEDTURNCHANGED_STATE`` 68 | - ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_VALUE`` to ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGRADIUSCHANGED_CURRENT`` 69 | - ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_VALUE`` to ``ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_PILOTINGSETTINGSSTATE_CIRCLINGALTITUDECHANGED_CURRENT`` 70 | 71 | In ``bebop_driver/include/bebop_driver/autogenerated/ardrone3_state_callbacks.h`` remove the following lines: 72 | 73 | ``arg = NULL; 74 | HASH_FIND_STR (arguments, ARCONTROLLER_DICTIONARY_KEY_ARDRONE3_ACCESSORYSTATE_CONNECTEDACCESSORIES_LIST_FLAGS, arg); 75 | if (arg) 76 | { 77 | msg_ptr->list_flags = arg->value.U8; 78 | }`` 79 | 80 | In ``bebop_msgs/msg/autogenerated/Ardrone3AccessoryStateConnectedAccessories.msg`` remove the following lines: 81 | ``# List entry attribute Bitfield. 0x01: First: indicate its the first element of the list. 0x02: Last: indicate its the last element of the list. 0x04: Empty: indicate the list is empty (implies First/Last). All other arguments should be ignored. 0x08: Remove: This value should be removed from the existing list. 82 | uint8 list_flags`` 83 | 84 | These changes are required because the upstream XML file is inconsistent for a couple of variable names. 85 | 86 | 7. Remove ``build`` and ``devel`` space of your ``catkin`` workspace, then re-build it. 87 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/templates/setting_callbacks.h.mustache: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file {{project}}_setting_callbacks.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | * {{project}}_setting_callbacks.h 26 | * auto-generated from {{url}} 27 | * Do not modify this file by hand. Check scripts/meta folder for generator files. 28 | */ 29 | #ifndef BEBOP_AUTONOMY_AUTOGENERATED_{{project}}_SETTING_CALLBACKS_H 30 | #define BEBOP_AUTONOMY_AUTOGENERATED_{{project}}_SETTING_CALLBACKS_H 31 | 32 | extern "C" 33 | { 34 | #include "libARSAL/ARSAL.h" 35 | #include "libARController/ARController.h" 36 | } 37 | 38 | #include "bebop_driver/autogenerated/callbacks_common.h" 39 | #include "bebop_driver/BebopArdrone3Config.h" 40 | 41 | namespace bebop_driver 42 | { 43 | namespace cb 44 | { 45 | {{#cpp_class}} 46 | 47 | class {{cpp_class_name}} : public AbstractSetting 48 | { 49 | private: 50 | {{#cpp_class_params}} 51 | {{cpp_class_param_type}} {{cpp_class_param_name}}_bebop_value_; 52 | bool {{cpp_class_param_name}}_bebop_sent_; 53 | {{/cpp_class_params}} 54 | 55 | public: 56 | explicit {{cpp_class_name}}(ros::NodeHandle& priv_nh) 57 | : AbstractSetting({{cpp_class_dict_key}}, priv_nh) 58 | {{#cpp_class_params}} 59 | , {{cpp_class_param_name}}_bebop_sent_(false) 60 | {{/cpp_class_params}} 61 | {} 62 | 63 | // Runs in Nodelet's main thread's context (Dynamic Reconfigure Update Callback) 64 | void UpdateBebopFromROS(const BebopArdrone3Config &config, const ARCONTROLLER_Device_t* bebop_ctrl_ptr_) 65 | { 66 | ::boost::lock_guard lock(mutex_); 67 | bool changed = false; 68 | bool all_inited = true; 69 | 70 | {{#cpp_class_params}} 71 | // This will likely fail for float or double values 72 | if ((config.{{cpp_class_param_name}} != {{cpp_class_param_name}}_bebop_value_)) 73 | { 74 | ARSAL_PRINT(ARSAL_PRINT_INFO, "CB", 75 | "{{cpp_class_param_name}} changed!"); 76 | changed = true; 77 | } 78 | all_inited &= {{cpp_class_param_name}}_bebop_sent_; 79 | 80 | {{/cpp_class_params}} 81 | if (changed && !all_inited) 82 | { 83 | ARSAL_PRINT(ARSAL_PRINT_ERROR, "CB", 84 | "Value of {{cpp_class_name}} was not initialized either by Bebop or Params."); 85 | } 86 | 87 | if (changed && all_inited) 88 | { 89 | ARSAL_PRINT(ARSAL_PRINT_INFO, "CB", 90 | "Sending {{cpp_class_name}} changes to bebop"); 91 | 92 | bebop_ctrl_ptr_->aRDrone3->send{{cpp_class_name}}(bebop_ctrl_ptr_->aRDrone3 93 | {{#cpp_class_params}} 94 | , {{{cpp_class_param_enum_cast}}}(config.{{cpp_class_param_name}}) 95 | {{/cpp_class_params}} 96 | ); 97 | } 98 | } 99 | 100 | // Runs in SDK's CommandReceivedCallback's context 101 | void Update(const ARCONTROLLER_DICTIONARY_ARG_t *arguments, const ::ros::Time& t) 102 | { 103 | if (arguments == NULL) 104 | { 105 | ARSAL_PRINT(ARSAL_PRINT_WARNING, "CB", 106 | "{{cpp_class_name}}::Update() arguments is NULL"); 107 | return; 108 | } 109 | 110 | ::boost::lock_guard lock(mutex_); 111 | {{#cpp_class_params}} 112 | 113 | arg = NULL; 114 | HASH_FIND_STR (arguments, {{cpp_class_arg_key}}, arg); 115 | if (arg) 116 | { 117 | {{cpp_class_param_name}}_bebop_sent_ = true; 118 | ROS_INFO_STREAM("Value for {{cpp_class_param_name}} recved: " << static_cast<{{cpp_class_param_type}}>(arg->value.{{cpp_class_param_sdk_type}})); 119 | {{cpp_class_param_name}}_bebop_value_ = static_cast<{{cpp_class_param_type}}>(arg->value.{{cpp_class_param_sdk_type}}); 120 | 121 | ARSAL_PRINT(ARSAL_PRINT_INFO, "CB", "Checking if {{cpp_class_param_name}} exists in params ..."); 122 | if (!priv_nh_.hasParam("{{cpp_class_param_name}}")) 123 | { 124 | ARSAL_PRINT(ARSAL_PRINT_INFO, "CB", " No"); 125 | priv_nh_.setParam("{{cpp_class_param_name}}", static_cast<{{cpp_class_param_type}}>(arg->value.{{cpp_class_param_sdk_type}})); 126 | } 127 | else 128 | { 129 | ARSAL_PRINT(ARSAL_PRINT_INFO, "CB", " Yes"); 130 | //ROS_INFO_STREAM("New value for ros interanal variable: " << {{cpp_class_param_name}}_rosparam_value_); 131 | } 132 | } 133 | {{/cpp_class_params}} 134 | } 135 | }; // {{cpp_class_name}} 136 | {{/cpp_class}} 137 | 138 | } // namespace cb 139 | } // namespace bebop_driver 140 | #endif // BEBOP_AUTONOMY_AUTOGENERATED_{{project}}_SETTING_CALLBACKS_H -------------------------------------------------------------------------------- /bebop_driver/include/bebop_driver/bebop.h: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file bebop.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | */ 25 | #ifndef BEBOP_AUTONOMY_BEBOP_H 26 | #define BEBOP_AUTONOMY_BEBOP_H 27 | 28 | #define BEBOP_ERR_STR_SZ 150 29 | 30 | #include 31 | #include 32 | 33 | #include 34 | #include 35 | #include 36 | #include 37 | 38 | #include 39 | #include 40 | #include 41 | #include 42 | 43 | extern "C" 44 | { 45 | #include "libARSAL/ARSAL.h" 46 | #include "libARController/ARController.h" 47 | } 48 | 49 | // Forward declarations 50 | extern "C" 51 | { 52 | struct ARDISCOVERY_Device_t; 53 | } 54 | namespace ros 55 | { 56 | class NodeHandle; 57 | } 58 | 59 | namespace bebop_driver 60 | { 61 | 62 | namespace util 63 | { 64 | inline long int GetLWPId() 65 | { 66 | return (syscall(SYS_gettid)); 67 | } 68 | 69 | } // namespace util 70 | 71 | // Forward declarations 72 | class BebopArdrone3Config; 73 | class VideoDecoder; 74 | namespace cb 75 | { 76 | class AbstractCommand; 77 | } // namespace cb 78 | #define FORWARD_DECLARATIONS 79 | #include "bebop_driver/autogenerated/common_state_callback_includes.h" 80 | #include "bebop_driver/autogenerated/ardrone3_state_callback_includes.h" 81 | #include "bebop_driver/autogenerated/ardrone3_setting_callback_includes.h" 82 | #undef FORWARD_DECLARATIONS 83 | 84 | class Bebop 85 | { 86 | private: 87 | static const char* LOG_TAG; 88 | boost::atomic is_connected_; 89 | boost::atomic is_streaming_started_; 90 | ARDISCOVERY_Device_t* device_ptr_; 91 | ARCONTROLLER_Device_t* device_controller_ptr_; 92 | eARCONTROLLER_ERROR error_; 93 | eARCONTROLLER_DEVICE_STATE device_state_; 94 | ARSAL_Sem_t state_sem_; 95 | boost::shared_ptr video_decoder_ptr_; 96 | std::string bebop_ip_; 97 | 98 | // boost::mutex callback_map_mutex_; 99 | typedef std::map > callback_map_t; 100 | typedef std::pair > callback_map_pair_t; 101 | callback_map_t callback_map_; 102 | 103 | // sync 104 | mutable boost::condition_variable frame_avail_cond_; 105 | mutable boost::mutex frame_avail_mutex_; 106 | mutable bool is_frame_avail_; 107 | 108 | static void StateChangedCallback( 109 | eARCONTROLLER_DEVICE_STATE new_state, 110 | eARCONTROLLER_ERROR error, 111 | void *bebop_void_ptr); 112 | 113 | static void CommandReceivedCallback( 114 | eARCONTROLLER_DICTIONARY_KEY cmd_key, 115 | ARCONTROLLER_DICTIONARY_ELEMENT_t* element_dict_ptr, 116 | void* bebop_void_ptr); 117 | 118 | static eARCONTROLLER_ERROR FrameReceivedCallback(ARCONTROLLER_Frame_t *frame, 119 | void *bebop_void_ptr); 120 | 121 | static eARCONTROLLER_ERROR DecoderConfigCallback(ARCONTROLLER_Stream_Codec_t codec, 122 | void *bebop_void_ptr); 123 | 124 | // nothrow 125 | void Cleanup(); 126 | 127 | void ThrowOnInternalError(const std::string& message = std::string()); 128 | void ThrowOnCtrlError(const eARCONTROLLER_ERROR& error, const std::string& message = std::string()); 129 | 130 | public: 131 | // Navdata Callbacks 132 | #define DEFINE_SHARED_PTRS 133 | #include "bebop_driver/autogenerated/common_state_callback_includes.h" 134 | #include "bebop_driver/autogenerated/ardrone3_state_callback_includes.h" 135 | #include "bebop_driver/autogenerated/ardrone3_setting_callback_includes.h" 136 | #undef DEFINE_SHARED_PTRS 137 | 138 | inline ARSAL_Sem_t* GetStateSemPtr() {return &state_sem_;} 139 | inline const ARCONTROLLER_Device_t* GetControllerCstPtr() const {return device_controller_ptr_;} 140 | 141 | inline bool IsConnected() const {return is_connected_;} 142 | inline bool IsStreamingStarted() const {return is_streaming_started_;} 143 | 144 | explicit Bebop(ARSAL_Print_Callback_t custom_print_callback = 0); 145 | ~Bebop(); 146 | 147 | void Connect(ros::NodeHandle& nh, ros::NodeHandle& priv_nh, const std::string& bebop_ip = "192.168.42.1"); 148 | void StartStreaming(); 149 | 150 | // Disable all data callback and streaming (nothrow) 151 | void StopStreaming(); 152 | // nothrow 153 | void Disconnect(); 154 | 155 | void SetDate(const std::string &date); 156 | void RequestAllSettings(); 157 | void ResetAllSettings(); 158 | void UpdateSettings(const bebop_driver::BebopArdrone3Config& config); 159 | 160 | void Takeoff(); 161 | void Land(); 162 | void Emergency(); 163 | void FlatTrim(); 164 | // false: Stop, true: Start 165 | void NavigateHome(const bool& start_stop); 166 | void StartAutonomousFlight(const std::string &filepath); 167 | void PauseAutonomousFlight(); 168 | void StopAutonomousFlight(); 169 | void AnimationFlip(const uint8_t& anim_id); 170 | 171 | // -1..1 172 | void Move(const double& roll, const double& pitch, const double& gaz_speed, const double& yaw_speed); 173 | void MoveCamera(const double& tilt, const double& pan); 174 | 175 | void TakeSnapshot(); 176 | // exposure should be between -3.0 and +3.0 177 | void SetExposure(const float& exposure); 178 | // true: start, false: stop 179 | void ToggleVideoRecording(const bool start); 180 | 181 | // This function is blocking and runs in the caller's thread's context 182 | // which is different from FrameReceivedCallback's context 183 | bool GetFrontCameraFrame(std::vector& buffer, uint32_t &width, uint32_t &height) const; 184 | uint32_t GetFrontCameraFrameWidth() const; 185 | uint32_t GetFrontCameraFrameHeight() const; 186 | }; 187 | 188 | } // namespace bebop_driver 189 | 190 | 191 | #endif // BEBOP_AUTONOMY_BEBOP_H 192 | -------------------------------------------------------------------------------- /bebop_driver/include/bebop_driver/bebop_driver_nodelet.h: -------------------------------------------------------------------------------- 1 | /** 2 | Software License Agreement (BSD) 3 | 4 | \file bebop_driver_nodelet.h 5 | \authors Mani Monajjemi 6 | \copyright Copyright (c) 2015, Autonomy Lab (Simon Fraser University), All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that 9 | the following conditions are met: 10 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the 11 | following disclaimer. 12 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the 13 | following disclaimer in the documentation and/or other materials provided with the distribution. 14 | * Neither the name of Autonomy Lab nor the names of its contributors may be used to endorse or promote 15 | products derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR- 18 | RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN- 20 | DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | */ 25 | #ifndef BEBOP_AUTONOMY_BEBOP_DRIVER_NODELET_H 26 | #define BEBOP_AUTONOMY_BEBOP_DRIVER_NODELET_H 27 | 28 | // TODO(mani-monaj): Use forward decl here if possible 29 | 30 | #include 31 | 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | 44 | #include 45 | #include 46 | 47 | #include "bebop_driver/bebop.h" 48 | 49 | #define CLAMP(x, l, h) (((x) > (h)) ? (h) : (((x) < (l)) ? (l) : (x))) 50 | 51 | namespace bebop_driver 52 | { 53 | 54 | // TODO(mani-monaj): Move these to util.h 55 | namespace util 56 | { 57 | static const ros::console::levels::Level arsal_level_to_ros[ARSAL_PRINT_MAX] = { 58 | ros::console::levels::Fatal, 59 | ros::console::levels::Error, 60 | ros::console::levels::Warn, 61 | ros::console::levels::Info, 62 | ros::console::levels::Debug, 63 | ros::console::levels::Debug}; 64 | 65 | static const double eps = 1.0e-6; 66 | static const double deg2rad = 3.14159265 / 180.0; 67 | 68 | static char bebop_err_str[BEBOP_ERR_STR_SZ]; 69 | 70 | void ResetTwist(geometry_msgs::Twist& t) 71 | { 72 | t.linear.x = 0.0; 73 | t.linear.y = 0.0; 74 | t.linear.z = 0.0; 75 | t.angular.x = 0.0; 76 | t.angular.y = 0.0; 77 | t.angular.z = 0.0; 78 | } 79 | 80 | // True: Equal, false otherwise 81 | // TODO(mani-monaj): refactor 82 | inline bool CompareTwists(const geometry_msgs::Twist& lhs, const geometry_msgs::Twist& rhs) 83 | { 84 | return (fabs(lhs.linear.x - rhs.linear.x) < eps) && 85 | (fabs(lhs.linear.y - rhs.linear.y) < eps) && 86 | (fabs(lhs.linear.z - rhs.linear.z) < eps) && 87 | (fabs(lhs.angular.x - rhs.angular.x) < eps) && 88 | (fabs(lhs.angular.y - rhs.angular.y) < eps) && 89 | (fabs(lhs.angular.z - rhs.angular.z) < eps); 90 | } 91 | 92 | int BebopPrintToROSLogCB(eARSAL_PRINT_LEVEL level, const char *tag, const char *format, va_list va); 93 | } // namespace util 94 | 95 | // Forward decl 96 | class BebopArdrone3Config; 97 | class Bebop; 98 | 99 | class BebopDriverNodelet : public nodelet::Nodelet 100 | { 101 | private: 102 | boost::shared_ptr bebop_ptr_; 103 | boost::shared_ptr camera_pub_thread_ptr_; 104 | boost::shared_ptr aux_thread_ptr_; 105 | 106 | geometry_msgs::Twist prev_bebop_twist_; 107 | ros::Time prev_twist_stamp_; 108 | boost::mutex twist_mutex_; 109 | 110 | geometry_msgs::Twist camera_twist_; 111 | geometry_msgs::Twist prev_camera_twist_; 112 | 113 | ros::Subscriber cmd_vel_sub_; 114 | ros::Subscriber camera_move_sub_; 115 | ros::Subscriber takeoff_sub_; 116 | ros::Subscriber land_sub_; 117 | ros::Subscriber reset_sub_; 118 | ros::Subscriber flattrim_sub_; 119 | ros::Subscriber navigatehome_sub_; 120 | ros::Subscriber start_autoflight_sub_; 121 | ros::Subscriber pause_autoflight_sub_; 122 | ros::Subscriber stop_autoflight_sub_; 123 | ros::Subscriber animation_sub_; 124 | ros::Subscriber snapshot_sub_; 125 | ros::Subscriber exposure_sub_; 126 | ros::Subscriber toggle_recording_sub_; 127 | 128 | ros::Publisher odom_pub_; 129 | ros::Publisher camera_joint_pub_; 130 | ros::Publisher gps_fix_pub_; 131 | 132 | boost::shared_ptr cinfo_manager_ptr_; 133 | boost::shared_ptr image_transport_ptr_; 134 | image_transport::CameraPublisher image_transport_pub_; 135 | 136 | sensor_msgs::CameraInfoPtr camera_info_msg_ptr_; 137 | 138 | // Dynamic Reconfigure 139 | boost::shared_ptr > dynr_serv_ptr_; 140 | 141 | // Params (not dynamically reconfigurable, persistent) 142 | std::string param_camera_frame_id_; 143 | std::string param_odom_frame_id_; 144 | bool param_publish_odom_tf_; 145 | double param_cmd_vel_timeout_; 146 | 147 | // This runs in its own context 148 | void CameraPublisherThread(); 149 | 150 | // Safety monitor + ROS specfic publishers (TF, Odom, etc) 151 | void AuxThread(); 152 | 153 | void CmdVelCallback(const geometry_msgs::TwistConstPtr& twist_ptr); 154 | void CameraMoveCallback(const geometry_msgs::TwistConstPtr& twist_ptr); 155 | void TakeoffCallback(const std_msgs::EmptyConstPtr& empty_ptr); 156 | void LandCallback(const std_msgs::EmptyConstPtr& empty_ptr); 157 | void EmergencyCallback(const std_msgs::EmptyConstPtr& empty_ptr); 158 | void FlatTrimCallback(const std_msgs::EmptyConstPtr& empty_ptr); 159 | void NavigateHomeCallback(const std_msgs::BoolConstPtr& start_stop_ptr); 160 | void StartAutonomousFlightCallback(const std_msgs::StringConstPtr& file_path_ptr); 161 | void PauseAutonomousFlightCallback(const std_msgs::EmptyConstPtr& empty_ptr); 162 | void StopAutonomousFlightCallback(const std_msgs::EmptyConstPtr& empty_ptr); 163 | void FlipAnimationCallback(const std_msgs::UInt8ConstPtr& animid_ptr); 164 | void TakeSnapshotCallback(const std_msgs::EmptyConstPtr& empty_ptr); 165 | void SetExposureCallback(const std_msgs::Float32ConstPtr& exposure_ptr); 166 | void ToggleRecordingCallback(const std_msgs::BoolConstPtr& toggle_ptr); 167 | 168 | void ParamCallback(bebop_driver::BebopArdrone3Config &config, uint32_t level); 169 | 170 | public: 171 | BebopDriverNodelet(); 172 | virtual ~BebopDriverNodelet(); 173 | 174 | virtual void onInit(); 175 | }; 176 | } // namespace bebop_driver 177 | 178 | #endif // BEBOP_AUTONOMY_BEBOP_DRIVER_NODELET_H 179 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = _build 9 | 10 | # User-friendly check for sphinx-build 11 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) 12 | $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) 13 | endif 14 | 15 | # Internal variables. 16 | PAPEROPT_a4 = -D latex_paper_size=a4 17 | PAPEROPT_letter = -D latex_paper_size=letter 18 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . 19 | # the i18n builder cannot share the environment and doctrees with the others 20 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . 21 | 22 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext 23 | 24 | help: 25 | @echo "Please use \`make ' where is one of" 26 | @echo " html to make standalone HTML files" 27 | @echo " dirhtml to make HTML files named index.html in directories" 28 | @echo " singlehtml to make a single large HTML file" 29 | @echo " pickle to make pickle files" 30 | @echo " json to make JSON files" 31 | @echo " htmlhelp to make HTML files and a HTML help project" 32 | @echo " qthelp to make HTML files and a qthelp project" 33 | @echo " devhelp to make HTML files and a Devhelp project" 34 | @echo " epub to make an epub" 35 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 36 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 37 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" 38 | @echo " text to make text files" 39 | @echo " man to make manual pages" 40 | @echo " texinfo to make Texinfo files" 41 | @echo " info to make Texinfo files and run them through makeinfo" 42 | @echo " gettext to make PO message catalogs" 43 | @echo " changes to make an overview of all changed/added/deprecated items" 44 | @echo " xml to make Docutils-native XML files" 45 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" 46 | @echo " linkcheck to check all external links for integrity" 47 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 48 | 49 | clean: 50 | rm -rf $(BUILDDIR)/* 51 | 52 | html: 53 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 54 | @echo 55 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 56 | 57 | dirhtml: 58 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 59 | @echo 60 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 61 | 62 | singlehtml: 63 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 64 | @echo 65 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 66 | 67 | pickle: 68 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 69 | @echo 70 | @echo "Build finished; now you can process the pickle files." 71 | 72 | json: 73 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 74 | @echo 75 | @echo "Build finished; now you can process the JSON files." 76 | 77 | htmlhelp: 78 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 79 | @echo 80 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 81 | ".hhp project file in $(BUILDDIR)/htmlhelp." 82 | 83 | qthelp: 84 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 85 | @echo 86 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 87 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 88 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/bebop_autonomy.qhcp" 89 | @echo "To view the help file:" 90 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/bebop_autonomy.qhc" 91 | 92 | devhelp: 93 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp 94 | @echo 95 | @echo "Build finished." 96 | @echo "To view the help file:" 97 | @echo "# mkdir -p $$HOME/.local/share/devhelp/bebop_autonomy" 98 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/bebop_autonomy" 99 | @echo "# devhelp" 100 | 101 | epub: 102 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 103 | @echo 104 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 105 | 106 | latex: 107 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 108 | @echo 109 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 110 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 111 | "(use \`make latexpdf' here to do that automatically)." 112 | 113 | latexpdf: 114 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 115 | @echo "Running LaTeX files through pdflatex..." 116 | $(MAKE) -C $(BUILDDIR)/latex all-pdf 117 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 118 | 119 | latexpdfja: 120 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 121 | @echo "Running LaTeX files through platex and dvipdfmx..." 122 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja 123 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 124 | 125 | text: 126 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 127 | @echo 128 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 129 | 130 | man: 131 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 132 | @echo 133 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 134 | 135 | texinfo: 136 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 137 | @echo 138 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." 139 | @echo "Run \`make' in that directory to run these through makeinfo" \ 140 | "(use \`make info' here to do that automatically)." 141 | 142 | info: 143 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 144 | @echo "Running Texinfo files through makeinfo..." 145 | make -C $(BUILDDIR)/texinfo info 146 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." 147 | 148 | gettext: 149 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale 150 | @echo 151 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." 152 | 153 | changes: 154 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 155 | @echo 156 | @echo "The overview file is in $(BUILDDIR)/changes." 157 | 158 | linkcheck: 159 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 160 | @echo 161 | @echo "Link check complete; look for any errors in the above output " \ 162 | "or in $(BUILDDIR)/linkcheck/output.txt." 163 | 164 | doctest: 165 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 166 | @echo "Testing of doctests in the sources finished, look at the " \ 167 | "results in $(BUILDDIR)/doctest/output.txt." 168 | 169 | xml: 170 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml 171 | @echo 172 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." 173 | 174 | pseudoxml: 175 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml 176 | @echo 177 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." 178 | -------------------------------------------------------------------------------- /bebop_driver/scripts/meta/sdk_37.log: -------------------------------------------------------------------------------- 1 | INFO:root:Fetching source XML file for project common 2 | INFO:root:URL: https://raw.githubusercontent.com/Parrot-Developers/libARCommands/e1cbcad39d6b2999faa457a1d42d0ea3a1060765/Xml/common_commands.xml 3 | INFO:root:Iterating all State tags ... 4 | INFO:root:... Done iterating, writing results to file 5 | INFO:root:Writing CommonCalibrationStateMagnetoCalibrationRequiredState.msg 6 | INFO:root:Writing CommonCommonStateMassStorageInfoRemainingListChanged.msg 7 | INFO:root:Writing CommonCommonStateCurrentDateChanged.msg 8 | INFO:root:Writing CommonAccessoryStateAccessoryConfigChanged.msg 9 | INFO:root:Writing CommonCommonStateWifiSignalChanged.msg 10 | INFO:root:Writing CommonCommonStateMassStorageStateListChanged.msg 11 | INFO:root:Writing CommonARLibsVersionsStateSkyControllerLibARCommandsVersion.msg 12 | INFO:root:Writing CommonAnimationsStateList.msg 13 | INFO:root:Writing CommonChargerStateLastChargeRateChanged.msg 14 | INFO:root:Writing CommonCalibrationStateMagnetoCalibrationStartedChanged.msg 15 | INFO:root:Writing CommonFlightPlanStateComponentStateListChanged.msg 16 | INFO:root:Writing CommonAudioStateAudioStreamingRunning.msg 17 | INFO:root:Writing CommonHeadlightsStateintensityChanged.msg 18 | INFO:root:Writing CommonControllerStateisPilotingChanged.msg 19 | INFO:root:Writing CommonARLibsVersionsStateDeviceLibARCommandsVersion.msg 20 | INFO:root:Writing CommonCommonStateAllStatesChanged.msg 21 | INFO:root:Writing CommonARLibsVersionsStateControllerLibARCommandsVersion.msg 22 | INFO:root:Writing CommonAccessoryStateAccessoryConfigModificationEnabled.msg 23 | INFO:root:Writing CommonOverHeatStateOverHeatRegulationChanged.msg 24 | INFO:root:Writing CommonChargerStateCurrentChargeStateChanged.msg 25 | INFO:root:Writing CommonAccessoryStateSupportedAccessoriesListChanged.msg 26 | INFO:root:Writing CommonCommonStateMassStorageInfoStateListChanged.msg 27 | INFO:root:Writing CommonMavlinkStateMavlinkPlayErrorStateChanged.msg 28 | INFO:root:Writing CommonChargerStateMaxChargeRateChanged.msg 29 | INFO:root:Writing CommonCalibrationStateMagnetoCalibrationStateChanged.msg 30 | INFO:root:Writing CommonMavlinkStateMavlinkFilePlayingStateChanged.msg 31 | INFO:root:Writing CommonCommonStateBatteryStateChanged.msg 32 | INFO:root:Writing CommonChargerStateChargingInfo.msg 33 | INFO:root:Writing CommonCommonStateProductModel.msg 34 | INFO:root:Writing CommonCommonStateSensorsStatesListChanged.msg 35 | INFO:root:Writing CommonOverHeatStateOverHeatChanged.msg 36 | INFO:root:Writing CommonCalibrationStateMagnetoCalibrationAxisToCalibrateChanged.msg 37 | INFO:root:Writing CommonFlightPlanStateAvailabilityStateChanged.msg 38 | INFO:root:Writing CommonCommonStateCurrentTimeChanged.msg 39 | INFO:root:Writing CommonCommonStateCountryListKnown.msg 40 | INFO:root:Writing common_state_callbacks.h 41 | INFO:root:Writing common_state_callback_includes.h 42 | INFO:root:Writing common_states_param_topic.rst 43 | INFO:root:Fetching source XML file for project ARDrone3 44 | INFO:root:URL: https://raw.githubusercontent.com/Parrot-Developers/libARCommands/e1cbcad39d6b2999faa457a1d42d0ea3a1060765/Xml/ARDrone3_commands.xml 45 | INFO:root:Iterating all State tags ... 46 | INFO:root:... Done iterating, writing results to file 47 | INFO:root:Writing Ardrone3PilotingStateAutoTakeOffModeChanged.msg 48 | INFO:root:Writing Ardrone3GPSStateHomeTypeAvailabilityChanged.msg 49 | INFO:root:Writing Ardrone3PilotingStateAttitudeChanged.msg 50 | INFO:root:Writing Ardrone3MediaStreamingStateVideoEnableChanged.msg 51 | INFO:root:Writing Ardrone3NetworkStateAllWifiAuthChannelChanged.msg 52 | INFO:root:Writing Ardrone3GPSStateNumberOfSatelliteChanged.msg 53 | INFO:root:Writing Ardrone3PilotingStateFlyingStateChanged.msg 54 | INFO:root:Writing Ardrone3MediaRecordStateVideoStateChanged.msg 55 | INFO:root:Writing Ardrone3MediaRecordStatePictureStateChangedV2.msg 56 | INFO:root:Writing Ardrone3PilotingStateNavigateHomeStateChanged.msg 57 | INFO:root:Writing Ardrone3AntiflickeringStatemodeChanged.msg 58 | INFO:root:Writing Ardrone3PilotingStatePositionChanged.msg 59 | INFO:root:Writing Ardrone3MediaRecordStatePictureStateChanged.msg 60 | INFO:root:Writing Ardrone3PilotingStateAltitudeChanged.msg 61 | INFO:root:Writing Ardrone3NetworkStateAllWifiScanChanged.msg 62 | INFO:root:Writing Ardrone3PilotingStateAlertStateChanged.msg 63 | INFO:root:Writing Ardrone3PROStateFeatures.msg 64 | INFO:root:Writing Ardrone3NetworkStateWifiScanListChanged.msg 65 | INFO:root:Writing Ardrone3CameraStateOrientation.msg 66 | INFO:root:Writing Ardrone3MediaRecordStateVideoStateChangedV2.msg 67 | INFO:root:Writing Ardrone3GPSStateHomeTypeChosenChanged.msg 68 | INFO:root:Writing Ardrone3NetworkStateWifiAuthChannelListChanged.msg 69 | INFO:root:Writing Ardrone3CameraStatedefaultCameraOrientation.msg 70 | INFO:root:Writing Ardrone3PilotingStateFlatTrimChanged.msg 71 | INFO:root:Writing Ardrone3PilotingStateSpeedChanged.msg 72 | INFO:root:Writing Ardrone3AntiflickeringStateelectricFrequencyChanged.msg 73 | INFO:root:Writing ardrone3_state_callbacks.h 74 | INFO:root:Writing ardrone3_state_callback_includes.h 75 | INFO:root:Writing ardrone3_states_param_topic.rst 76 | INFO:root:Fetching source XML file for project ARDrone3 77 | INFO:root:URL: https://raw.githubusercontent.com/Parrot-Developers/libARCommands/e1cbcad39d6b2999faa457a1d42d0ea3a1060765/Xml/ARDrone3_commands.xml 78 | INFO:root:Guessing type of "PilotingSettingsMaxAltitudeCurrent" 79 | INFO:root: from: Current altitude max in m 80 | INFO:root: ... meters 81 | INFO:root: min: 0 max: 160 82 | INFO:root:Guessing type of "PilotingSettingsMaxTiltCurrent" 83 | INFO:root: from: Current tilt max in degree 84 | INFO:root: ... degrees 85 | INFO:root: min: -180.0 max: 180.0 86 | INFO:root:Guessing type of "PilotingSettingsAbsolutControlOn" 87 | INFO:root: from: 1 to enable, 0 to disable 88 | INFO:root: ... bool 89 | INFO:root: min: 0 max: 1 90 | INFO:root:Guessing type of "PilotingSettingsMaxDistanceValue" 91 | INFO:root: from: Current max distance in meter 92 | INFO:root: ... meters 93 | INFO:root: min: 0 max: 160 94 | INFO:root:Guessing type of "PilotingSettingsNoFlyOverMaxDistanceShouldnotflyover" 95 | INFO:root: from: 1 if the drone cant fly further than max distance, 0 if no limitation on the drone should be done 96 | INFO:root: ... bool 97 | INFO:root: min: 0 max: 1 98 | WARNING:root:No Changed CMD for setAutonomousFlightMaxHorizontalSpeed 99 | WARNING:root:No Changed CMD for setAutonomousFlightMaxVerticalSpeed 100 | WARNING:root:No Changed CMD for setAutonomousFlightMaxHorizontalAcceleration 101 | WARNING:root:No Changed CMD for setAutonomousFlightMaxVerticalAcceleration 102 | WARNING:root:No Changed CMD for setAutonomousFlightMaxRotationSpeed 103 | INFO:root:Guessing type of "SpeedSettingsMaxVerticalSpeedCurrent" 104 | INFO:root: from: Current max vertical speed in m/s 105 | INFO:root: ... speed (m/s) 106 | INFO:root: min: 0.0 max: 10.0 107 | INFO:root:Guessing type of "SpeedSettingsMaxRotationSpeedCurrent" 108 | INFO:root: from: Current max rotation speed in degree/s 109 | INFO:root: ... rotations speed degrees/s 110 | INFO:root: min: 0 max: 900.0 111 | INFO:root:Guessing type of "SpeedSettingsHullProtectionPresent" 112 | INFO:root: from: 1 if present, 0 if not present 113 | INFO:root: ... bool 114 | INFO:root: min: 0 max: 1 115 | INFO:root:Guessing type of "SpeedSettingsOutdoorOutdoor" 116 | INFO:root: from: 1 if outdoor flight, 0 if indoor flight 117 | INFO:root: ... bool 118 | INFO:root: min: 0 max: 1 119 | INFO:root:Guessing type of "NetworkSettingsWifiSelectionChannel" 120 | INFO:root: from: The channel (not used in auto mode) 121 | INFO:root: ... unknown int 122 | INFO:root: min: 0 max: 50 123 | WARNING:root:No Changed CMD for PictureFormatSelection 124 | WARNING:root:No Changed CMD for AutoWhiteBalanceSelection 125 | WARNING:root:No Changed CMD for ExpositionSelection 126 | WARNING:root:No Changed CMD for SaturationSelection 127 | WARNING:root:No Changed CMD for TimelapseSelection 128 | WARNING:root:No Changed CMD for VideoAutorecordSelection 129 | WARNING:root:No Changed CMD for SetHome 130 | WARNING:root:No Changed CMD for SendControllerGPS 131 | INFO:root:Guessing type of "GPSSettingsReturnHomeDelayDelay" 132 | INFO:root: from: Delay in second 133 | INFO:root: ... time (s) 134 | INFO:root: min: 0 max: 120 135 | INFO:root:... Done iterating, writing results to file 136 | INFO:root:Writing bebop_ardrone3.cfg 137 | INFO:root:Writing ardrone3_setting_callbacks.h 138 | INFO:root:Writing ardrone3_setting_callback_includes.h 139 | INFO:root:Writing ardrone3_settings_param.rst 140 | -------------------------------------------------------------------------------- /bebop_driver/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package bebop_driver 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.7.1 (2018-05-31) 6 | ------------------ 7 | * Fixed the bug appearing when you run the catkin build command 8 | * Contributors: Giuseppe Silano 9 | 10 | 0.7.0 (2017-07-29) 11 | ------------------ 12 | * SDK 3.12.6 support (except 64bit Ubuntu Xenial, working on fix) 13 | - ROS API change: states/common/MavlinkState/MissonItemExecuted topic renamed 14 | to states/common/MavlinkState/MissionItemExecuted 15 | * Contributors: Thomas Bamford, Mani Monajjemi 16 | 17 | 0.6.0 (2016-11-02) 18 | ------------------ 19 | * Use Parrot ARSDK as a thirdparty dependency 20 | - Instead of building the SDK inline, bebop_driver now utilizes the 21 | catkin version of Parrot ARSDK available at 22 | https://github.com/AutonomyLab/parrot_arsdk and in a binary form via the 23 | ROS buildfarm: ros--parrot-arsdk 24 | * Rename liblibbebop to libbebop 25 | * Full SDK 3.10.x support 26 | - ROS API change: states/ARDrone3/.. topics renamed to states/ardrone3/.. 27 | * Disabling video stabilization works with Firmware 3.9 (tested on Bebop 28 | 2) 29 | * Camera control API fix for SDK 3.10.x 30 | * Refactor H264 decode class to support dynamic picture size 31 | - Add support for determining picture size from the stream 32 | - Add dynamic buffer re-allocation on picture size change 33 | * Use av_frame_alloc() instead of the depr. avcodec_alloc_frame() 34 | * Fix inconsistent SDK 3.10.1 key values 35 | * Update autogenerated msgs/headers/docs to SDK 3.10.1 36 | * CMake: fix dynamic reconfigure dependency bug 37 | * Rename topic 'navigate_home' to 'autoflight/navigate_home' 38 | * Add autonomous flight plans 39 | * Contributors: Jacob Perron, Mani Monajjemi 40 | 41 | 0.5.1 (2016-05-04) 42 | ------------------ 43 | * Add bebop_description as a build dep to bebop_driver (fixes `#45 `_) 44 | * Fix inline build of arsdk to use the frozen manifest (fixes `#46 `_) 45 | - Prior to this release, the build script would always compile the 46 | development branch of ARSDK. This fix ensures that instead of 47 | `default.xml` manifest file - which represents the dev version of ARSDK 48 | package - `release.xml` is used by `repo`. This manifest file includes a 49 | certain hash for each ARSDK package that enforces a consistent build for 50 | ARSDK. 51 | * Contributors: Mani Monajjemi 52 | 53 | 0.5.0 (2016-04-01) 54 | ------------------ 55 | * Based on Parrot ARSDK 3.8.3. Tested with Bebop 1.0 (2.0.57) and Bebop 2.0 (3.1.0) 56 | * Update to SDK 3.8.3 57 | - SDK 3.8.3 from 58 | https://github.com/Parrot-Developers/arsdk_manifests.git 59 | - SDK 3.8.3 git hash: 2930cc7f7a79173d51c1fc167475fa9fa6650def 60 | * Add support for VideoStream v2.0 61 | * Publish TF 62 | * Experimental implementation of odometery (pose, velocity) 63 | * Publish the GPS fix as a ROS standard message (closes `#39 `_) 64 | - Message type: sensor_msgs/NavSatFix 65 | - Topic: fix 66 | * Add joint state publisher for camera's pan/tilt 67 | - Add a new param to enable/disable the TF publisher for odom 68 | - Add a new param to set the odom frame id 69 | * Include bebop_description and robot_state_publisher in driver's launch 70 | files 71 | * Add proper limitations for camera's pan/tilt joints 72 | * Add explicit linkage to libav (fixes `#32 `_) 73 | * Fix libav API inconsistency issues #30 #35 #36 74 | * Improve H264 parameter update method 75 | - Implement a better way to pass SPS/PPS params to H264 decoder (SDK 76 | 3.8.x) 77 | * Add a new CMake option "RUN_HARDWARE_TESTS" to explicitly enable hardware in the loop testing (disabled by default) 78 | * Contributors: Mani Monajjemi, chartoin, Jake Bruce 79 | 80 | 0.4.1 (2016-02-17) 81 | ------------------ 82 | * Add ROS API for recording on-board picture/video (closes `#5 `_) 83 | * Add a new ROS topic for taking on-board snapshot: `snapshot` 84 | * Add a new ROS topic for toggling on-board video recording: `record` 85 | * Update the docs 86 | * Add curl as a rosdep build dep (fixes `#33 `_) 87 | * Fix a bug in bebop_driver's nodelet destructor 88 | * Fix a bug in ASyncSub class 89 | * Contributors: Mani Monajjemi 90 | 91 | 0.4.0 (2016-01-17) 92 | ------------------ 93 | * Update Parrot SDK to 3.7.5 (from 3.6) 94 | - Remove upstream XML hash from .msg files to minmize msg type changes from now on 95 | - New Topic and Message type for `DefaultCameraOrientation` 96 | * Add cmd_vel timeout for safety 97 | - The driver now sends stop command if no new cmd_vel is received 98 | within a pre-defined timeout period. This timeout is set to 0.1s by default and can be changed via `cmd_vel_timeout` parameter. 99 | * Fix right-jand rule bug of angular.z @jacobperron (fixes `#26 `_) 100 | * Patch ARSDK to fix Sanselan's old URL 101 | - This is temporary and must be reverted when this is fixed upstream. 102 | Issue reported here: `Parrot-Developers/ARSDKBuildUtils#61 `_ 103 | * Add bebop ip address as ROS parameter (fixes `#19 `_) - (Param name: `bebop_ip`, default value: 192.168.42.1) 104 | * Fix CameraInfo issues (closes `#10 `_) 105 | - Fix bugs in loading camera calibration data and update the tests 106 | - Add a sample calibration file for bebop camera: bebop_camera_calib.yaml 107 | - Load camera calibration file by default in both node/nodelet launch 108 | files 109 | * Remove redundant bebop.launch file (closes `#11 `_) 110 | * Fix coordinate system inconsistencies (fixes `#13 `_) 111 | - Fix cmd_vel.linear.y sign error 112 | - Use attitude values in tests instead of velocities 113 | * Contributors: Anup, Mani Monajjemi, Jacob Perron 114 | 115 | 0.3.0 (2015-09-17) 116 | ------------------ 117 | * Renamed package to bebop_driver 118 | * Built against ARSDK3_version_3_6 119 | * bebop_autonomy is now a metapackage 120 | - bebop_autonomy is the ROS metapackage name 121 | - Rename bebop_autonomy package to bebop_driver 122 | - Rename bebop_autonomy_msgs to bebop_msgs 123 | * Contributors: Mani Monajjemi 124 | 125 | 0.2.0 (2015-09-10) 126 | ------------------ 127 | * Finalized documentation 128 | * Remove bebop_autonomy's dependency to image_view 129 | * Imrovements to code autogeneration scripts. 130 | * CLAMP values for cmd_vels and anim_id 131 | * Added contents to almost all doc pages 132 | * Bebop In The Loop tests (first revision) 133 | * Fixed more style (lint) issues 134 | * Finalized the first revision of tests 135 | * Add autogenerated docs for Settings, Topics and Params 136 | * Contributors: Mani Monajjemi 137 | 138 | 0.1.2 (2015-09-05) 139 | ------------------ 140 | * Move 'state' params to their own param namespace 141 | * Add missing unzip dep to package.xml 142 | * Contributors: Mani Monajjemi 143 | 144 | 0.1.1 (2015-09-04) 145 | ------------------ 146 | * Add support for downloading and building ARDroneSDK3 during the build process 147 | * Add flattrim, flip and navigatehome interfaces 148 | * Add forward declaration to classes where it is possible 149 | * Major bug fixes and improvements 150 | - Dynamic Reconfigure: Convert all two state int_t values to enum 151 | - Fix the private nodehandle bugs in State and Settings handlers 152 | - Fix the data flow of Settings between rosparam and dynamic reconfigure 153 | and bebop 154 | - Fix SDK enum types in C (I32 instead of U8) 155 | - Add Start/Stop streaming to Bebop interface class 156 | * Add bebop_nodelet launch with image_view 157 | * Organized DynR configs into groups 158 | + Moved the autogeneration report to a seperated file 159 | + build speed improvements 160 | * Dynamically reconfigurable Bebop settings 161 | * Add support to enable publishing of a specific State 162 | * Add support to propogate states from bebop to ROS 163 | * Auto-generated .msg and .h files based on libARCommands XML files 164 | * New threading model for data retreival and publishing 165 | - Nodelet now manages its own thread to receive frames from Bebop 166 | - GetFrame() function abstracts all sync to access the rgb frame 167 | - All subscribers send commands to the Bebop in their callbacks 168 | * Integreate ARSAL logs into ROS_LOG 169 | - Fix sync issues between frame grabber and publisher 170 | * Improve video decode/publish pipeline 171 | - Adopt frame decoding from official examples 172 | - Thread safe access to raw frame ptr 173 | - Synchronised frame decoding and publishing 174 | * Proof of concept ROS driver for bebop drone 175 | * Contributors: Mani Monajjemi 176 | --------------------------------------------------------------------------------