Skip to content

Cannot teleoperate multirotor after calling reset service #4857

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
kanishkanarch opened this issue Jul 5, 2023 · 0 comments
Open

Cannot teleoperate multirotor after calling reset service #4857

kanishkanarch opened this issue Jul 5, 2023 · 0 comments

Comments

@kanishkanarch
Copy link

kanishkanarch commented Jul 5, 2023

Bug report

  • AirSim Version/#commit: AirSimNH binary tag 1.8.1
  • UE/Unity version: N/A
  • autopilot version: PX4-Autopilot commit b874eaf5f90
  • OS Version: Ubuntu 20 Kernel 5.15.0-75-generic
  • nVidia driver version: nvidia-driver-525 (525.116.04-0ubuntu0.20.04.1 amd64)

What's the issue you encountered?

Teleoperating the multirotor works fine as long as the reset service hasn't been called (rosservice call /airsim_node/reset "waitOnLastTask: false").

After calling the service, nothing crashes but the drone cannot be teleoperated anymore until the airsim_node.launch file is launched again (and the teleoperation node is run again). Infact I can see all data on all topics, including the teleopeartion data, but the teleoperation doesn't seem to move the drone.

I have also tried using the rostopic pub command, but that didn't work too. I'm not sure if this is a bug or I am missing something, because services let the nodes and topics resume their communication once they are called successfully.

I also saw that in turtlebot3 simulations, calling the reset_robot and reset_simulation services has no effect on teleop node communication. I was able to teleop the turtlebot even after calling both the reset services for it.

Settings

{
    "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
    "SettingsVersion": 1.2,
    "SimMode": "Multirotor",
    "ViewMode": "SpringArmChase",
    "ClockSpeed": 1.0,
    "Vehicles": {
        "SimpleFlight": {
            "VehicleType": "SimpleFlight",
            "DefaultVehicleState": "Armed",
            "EnableCollisionPassthrogh": false,
            "EnableCollisions": true,
            "AllowAPIAlways": true,
            "RC": {
                "RemoteControlID": 0,
                "AllowAPIWhenDisconnected": false
            },
            "Cameras": {
                "front_left": {
                    "CaptureSettings": [
                        {
                            "ImageType": 0,
                            "Width": 672,
                            "Height": 376,
                            "FOV_Degrees": 90
                        }
                    ],
                    "X": 0.50, "Y": 0.0, "Z": 0.0,
                    "Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0
                },
                "front_right": {
                    "CaptureSettings": [
                        {
                            "ImageType": 0,
                            "Width": 672,
                            "Height": 376,
                            "FOV_Degrees": 90
                        }
                    ],
                    "X": 0.50, "Y": 0.0, "Z": 0.10,
                    "Pitch": 0.0, "Roll": 0.0, "Yaw": 0.0
                }
            },
            "X": 0, "Y": 0, "Z": -5,
            "Pitch": 0, "Roll": 0, "Yaw": 0
        }
    }
}

How can the issue be reproduced?

  1. Run the AirSim binary
  2. roslaunch airsim_ros_pkgs airsim_node.launch
  3. rosrun teleop_twist_keyboard_airsim teleop_twist_keyboard_airsim.py (modified ROS teleoperation code to adhere to AirSim directions)
  4. Teleoperate the drone to somewhere else
  5. rosservice call /airsim_node/reset "waitOnLastTask: false"
  6. Teleoperation doesn't work now, unless the airsim_node.launch file and teleoperation node are not restarted.

I also saw the RQT graphs (below) right before and right after calling the service, and can't see any difference.

Following is the RQT graph when teleoperation works (before calling the service):
rosgraph_before

And following is the RQT graph when teleoperation stops working (right after calling the reset service):
rosgraph_after

Include full error message in text form

What's better than filing an issue? Filing a pull request :).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant