open-navigation / opennav_docking

Nav2 Compatible Docking Task Server & BT Utils
Apache License 2.0
97 stars 22 forks source link

Parameter configuration for holonomic robot #72

Open annanya-tamu opened 2 weeks ago

annanya-tamu commented 2 weeks ago

Hello,

I noticed that the controller (graceful controller) that is currently being used is for non-holonomic robots. I was wondering if there were any suggestions on how to tune the parameters to set it up as close as possible to a holonomic robot? Or if there is any other workaround to this.

Thanks!

SteveMacenski commented 2 weeks ago

I think it should work fine for your case, we have videos / users with mecanum and powered caster omnidirectional robots that are doing this fine today :-)

https://www.youtube.com/watch?v=hrjF_XAT0nE

annanya-tamu commented 1 week ago

Hi Steve,

Thanks for sharing the video! I should have been a little more specific, as I am looking to control a legged robot like this. In this video, I have set use_external_detection_pose as false, but wanted to share the type of robot I am working on.

When I set use_external_detection_pose to true, the robot seems to make adjustments to itself based on the front left camera (where it's getting the transform to the fiducial from) and the rest of the body "sways" and doesn't seem to align itself completely perpendicular to the fiducial when docking. Ideally, I would like to have it's entire body stay perpendicular when docking just like it does when undocking. I should mention that the "body" frame is located in the middle of the robot and there exists a "rear" and "front" frame as well. Do you have any suggestions to the current param file setup to achieve this?

docking_server:
  ros__parameters:
    controller_frequency: 50.0
    initial_perception_timeout: 5.0
    wait_charge_timeout: 1.0
    dock_approach_timeout: 60.0
    undock_linear_tolerance: 1.0
    undock_angular_tolerance: 0.1
    max_retries: 3
    base_frame: "body"
    fixed_frame: "odom"
    dock_backwards: false
    dock_prestaging_tolerance: 0.5 #changed from 0.5

    # Types of docks
    dock_plugins: ['dog_dock']
    marsupial_ghost_dock:
      plugin: 'opennav_docking::SimpleChargingDock'
      docking_threshold: 0.25
      staging_x_offset: -2.0
      use_external_detection_pose: true
      use_battery_status: false
      use_stall_detection: false

      external_detection_timeout: 1.0
      external_detection_translation_x: -0.18
      external_detection_translation_y: 0.0
      external_detection_rotation_roll: -1.5708
      external_detection_rotation_pitch: -1.5708
      external_detection_rotation_yaw: 3.1415
      filter_coef: 0.1

    # Dock instances
    docks: ['main_dock']
    main_dock:
      type: 'dog_dock'
      frame: odom
      pose: [0.0, 0.0, 0.0]

    controller:
      k_phi: 2.0
      k_delta: 2.0
      v_linear_min: 0.15
      v_linear_max: 0.15
      v_angular_max: 0.75