Skip to content

ROS Airsim Node crashes when world_frame_id set to world_enu #4195

Closed
@MinnDevelopment

Description

@MinnDevelopment

Bug report

  • AirSim Version/#commit: a7c05fc (latest master)
  • UE/Unity version: 4.26.2
  • autopilot version: N/A
  • OS Version: Windows 10.0.19043.1348 (Running ros in WSL ubuntu 16.04)

What's the issue you encountered?

I want to record a rosbag with ENU coordinates. When trying to set the parameter world_frame_id to world_enu as suggested in https://microsoft.github.io/AirSim/airsim_ros_pkgs/#parameters the airsim_node process crashes.

Settings

settings.json

How can the issue be reproduced?

This happens consistently when I try running these commands using the python client:

client.confirmConnection()
client.enableApiControl(True)
client.armDisarm(True)
client.simPause(False)

client.takeoffAsync().join()
client.moveToZAsync(-100, 50).join()

I configured the parameter in ros/src/airsim_ros_pkgs/launch/airsim_node.launch:

<launch>
        <arg name="output" default="log"/>
        <arg name="publish_clock" default="false"/>
        <arg name="is_vulkan" default="true"/>
        <arg name="host" default="localhost" />

        <node name="airsim_node" pkg="airsim_ros_pkgs" type="airsim_node" output="$(arg output)">
                <param name="is_vulkan" type="bool" value="false" />
                <!-- ROS timer rates. Note that timer callback will be processed at maximum possible rate, upperbounded by the following ROS params -->
                <param name="update_airsim_img_response_every_n_sec" type="double" value="0.05" />
                <param name="update_airsim_control_every_n_sec" type="double" value="0.01" />
                <param name="update_lidar_every_n_sec" type="double" value="0.01" />
                <param name="publish_clock" type="bool" value="$(arg publish_clock)" />
                <param name="host_ip" type="string" value="$(arg host)" />
<!-- Custom parameters see  https://microsoft.github.io/AirSim/airsim_ros_pkgs/#parameters -->
                <param name="world_frame_id" type="string" value="world_enu" />
                <param name="odom_frame_id" type="string" value="odom_local_enu" />
                <param name="coordinate_system_enu" type="boolean" value="true" />
        </node>

        <!-- Static transforms -->
        <include file="$(find airsim_ros_pkgs)/launch/static_transforms.launch"/>
</launch>

The crash does not happen when I remove the custom parameters from the launch file.

Include full error message in text form

started roslaunch server http://DESKTOP-MDK8UT8:50146/

SUMMARY
========

PARAMETERS
 * /airsim_node/coordinate_system_enu: True
 * /airsim_node/host_ip: localhost
 * /airsim_node/is_vulkan: False
 * /airsim_node/odom_frame_id: odom_local_enu
 * /airsim_node/publish_clock: False
 * /airsim_node/update_airsim_control_every_n_sec: 0.01
 * /airsim_node/update_airsim_img_response_every_n_sec: 0.05
 * /airsim_node/update_lidar_every_n_sec: 0.01
 * /airsim_node/world_frame_id: world_enu
 * /rosdistro: melodic
 * /rosversion: 1.14.12

NODES
  /
    airsim_node (airsim_ros_pkgs/airsim_node)
    ned_to_enu_pub (tf/static_transform_publisher)

auto-starting new master
process[master]: started with pid [21780]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 6066bde0-5606-11ec-b6e2-309c239af351
process[rosout-1]: started with pid [21795]
started core service [/rosout]
process[airsim_node-2]: started with pid [21812]
process[ned_to_enu_pub-3]: started with pid [21813]
terminate called after throwing an instance of 'std::runtime_error'
  what():  Field x does not exist
[airsim_node-2] process has died [pid 18596, exit code -6, cmd /mnt/n/work/AirSim/ros/devel/lib/airsim_ros_pkgs/airsim_node __name:=ai
rsim_node __log:=/home/minn/.ros/log/1ea60c3c-5604-11ec-a595-309c239af351/airsim_node-2.log].
log file: /home/minn/.ros/log/1ea60c3c-5604-11ec-a595-309c239af351/airsim_node-2*.log

The log files contain a few other errors, which I don't know how relevant they might be:

[rosmaster.master][INFO] 2021-12-05 20:47:44,616: publisherUpdate[/rosout] -> http://DESKTOP-MDK8UT8:49959/ ['http://DESKTOP-MDK8UT8:49972/', 'http://DESKTOP-MDK8UT8:49982/']
[rosmaster.master][INFO] 2021-12-05 20:47:44,616: publisherUpdate[/rosout] -> http://DESKTOP-MDK8UT8:50133/ ['http://DESKTOP-MDK8UT8:49972/', 'http://DESKTOP-MDK8UT8:49982/']
[rosmaster.master][INFO] 2021-12-05 20:47:44,617: publisherUpdate[/rosout] -> http://DESKTOP-MDK8UT8:49959/ ['http://DESKTOP-MDK8UT8:49972/', 'http://DESKTOP-MDK8UT8:49982/']: sec=0.00, result=[1, '', 0]
[rosmaster.master][INFO] 2021-12-05 20:47:44,619: publisherUpdate[/rosout] -> http://DESKTOP-MDK8UT8:50133/ ['http://DESKTOP-MDK8UT8:49972/', 'http://DESKTOP-MDK8UT8:49982/']: sec=0.00, exception=<Fault -1: 'publisherUpdate: unknown method name'>
[rosmaster.threadpool][ERROR] 2021-12-05 20:47:44,621: Traceback (most recent call last):
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rosmaster/threadpool.py", line 218, in run
    result = cmd(*args)
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rosmaster/master_api.py", line 210, in publisher_update_task
    ret = xmlrpcapi(api).publisherUpdate('/master', topic, pub_uris)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1243, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1602, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1283, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1316, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1493, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 800, in close
    raise Fault(**self._stack[0])
Fault: <Fault -1: 'publisherUpdate: unknown method name'>
[rosmaster.master][INFO] 2021-12-05 20:47:45,728: publisherUpdate[/tf] -> http://DESKTOP-MDK8UT8:49982/ ['http://DESKTOP-MDK8UT8:49982/']
[rosmaster.master][INFO] 2021-12-05 20:47:45,730: -SERVICE [/ned_to_enu_pub/set_logger_level] /ned_to_enu_pub rosrpc://DESKTOP-MDK8UT8:49971
[rosmaster.master][INFO] 2021-12-05 20:47:45,730: publisherUpdate[/tf] -> http://DESKTOP-MDK8UT8:49982/ ['http://DESKTOP-MDK8UT8:49982/']: sec=0.00, exception=[Errno 111] Connection refused
[rosmaster.threadpool][ERROR] 2021-12-05 20:47:45,731: Traceback (most recent call last):
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rosmaster/threadpool.py", line 218, in run
    result = cmd(*args)
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rosmaster/master_api.py", line 210, in publisher_update_task
    ret = xmlrpcapi(api).publisherUpdate('/master', topic, pub_uris)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1243, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1602, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1283, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1311, in single_request
    self.send_content(h, request_body)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1459, in send_content
    connection.endheaders(request_body)
  File "/usr/lib/python2.7/httplib.py", line 1095, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 898, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 860, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 837, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 575, in create_connection
    raise err
error: [Errno 111] Connection refused

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug-reportfor issues filed as bug reportsros

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions