Wall Touch - AnandaNN/M100_DTU_ROS GitHub Wiki

Wall touch


Autonomous wall touch

The mission for doing an autonomous wall touch mission. Uses the position controller, laserscanner, and visual servoing as well as the gui.

On drone: roslaunch dtu_controller autonomous_wall_touch.launch use_robot_localization:=true/false

Pilot computer: roslaunch visual_tracker_w_gui gui.launch

The autonomous wall touch demonstration runs through the following steps:

  1. Initializes everything including ContactController, laserScanner, csrt_tracker, gui, and position observer or robot_localization
  2. The pilot takes off and a target is selected in the GUI.
  3. Check if position seems correct, then start autonomous mode
  4. Once autonomous mode is started, start the position controller and hold the current position for 3 seconds before centering position around the target while holding the same distance.
  5. Start the approach and move closer until 1 meter from the wall.
  6. Start the wall engagement by ramping closer very slowly. When contact is made stop the position controller and start the ContactController instead.
  7. Stay on the wall for 10 seconds or until wall control fails.
  8. Fly 2 meters away from the wall before releasing control authority back to the pilot and ends the mission.

Note

The user can select to use the robot_localization extended kalman filter package for position estimation based on the laserscanner, IMU, and camera. This is done with the launch parameter use_robot_localization. If set to true robot_localization is used. Else a simple lowpass-filter observer is used. The observer combines the data from the different position estimates and filters it while checking for large discontinuities(>1.2 meter). It does no estimation only filtering and packing it in the topic used by the controller.

Manual approach for touch controller testing

This can be used to test the contact controller to check its stability. The node code can be found in the dtu_controller/src/contactController_w_rod_test_node.cpp.

roslaunch dtu_controller contact_controller_w_rod_test.launch

The node checks the switch on the rod to determine when the wall is touched. While in F-mode the pilot flies the drone into the wall. When the switch engages the contact controller takes over control of the drone and stays in contact with the wall. It will stay there until the pilot pitches away from the wall with the remote. Pitching away will level the drone to 0 degrees and then gives control back to the pilot and the process can be retried. If contact fails(switch isn't pressed more) the pilot will also receive control.