PX4 / PX4-Autopilot

PX4 Autopilot Software
https://px4.io
BSD 3-Clause "New" or "Revised" License
8.5k stars 13.51k forks source link

[Bug] REQUIRED process [sitl-1] has died! #21837

Open AlexWUrobot opened 1 year ago

AlexWUrobot commented 1 year ago

Describe the bug

Install the lastest MAVROS and PX4-autopilot in Ubuntu 18.04 (python 2.7) I placed the PX4-autopliot under root, instead of any worksapce. When running roslaunch px4 mavros_posix_sitl.launch get error like this "=REQUIRED process [sitl-1] has died!"

image

How to reproduce

ridley2@ridley2-Alienware-Aurora-R12:~/PX4-Autopilot$ roslaunch px4 mavros_posix_sitl.launch

... logging to /home/ridley2/.ros/log/83d21e16-2010-11ee-b02d-cc6b1e18f8d5/roslaunch-ridley2-Alienware-Aurora-R12-20823.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB.

SUMMARY

CLEAR PARAMETERS

PARAMETERS

NODES / gazebo (gazebo_ros/gzserver) gazebo_gui (gazebo_ros/gzclient) mavros (mavros/mavros_node) sitl (px4/px4) vehicle_spawn_ridley2_Alienware_Aurora_R12_20823_4706267373789824166 (gazebo_ros/spawn_model)

ROS_MASTER_URI=http://localhost:11311

process[sitl-1]: started with pid [20854] process[gazebo-2]: started with pid [20855] process[gazebo_gui-3]: started with pid [20860] process[vehicle_spawn_ridley2_Alienware_Aurora_R12_20823_4706267373789824166-4]: started with pid [20865] process[mavros-5]: started with pid [20866] -----------------------------------------------------------------------------REQUIRED process [sitl-1] has died! process has died [pid 20854, exit code 255, cmd /home/ridley2/PX4-Autopilot/build/px4_sitl_default/bin/px4 /home/ridley2/PX4-Autopilot/build/px4_sitl_default/etc -s etc/init.d-posix/rcS name:=sitl log:=/home/ridley2/.ros/log/83d21e16-2010-11ee-b02d-cc6b1e18f8d5/sitl-1.log]. log file: /home/ridley2/.ros/log/83d21e16-2010-11ee-b02d-cc6b1e18f8d5/sitl-1*.log Initiating shutdown!

[mavros-5] killing on exit [vehicle_spawn_ridley2_Alienware_Aurora_R12_20823_4706267373789824166-4] killing on exit Traceback (most recent call last): File "/opt/ros/melodic/lib/gazebo_ros/spawn_model", line 20, in import rospy File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/init.py", line 49, in from .client import spin, myargv, init_node, \ File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in import roslib File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/init.py", line 53, in [gazebo_gui-3] killing on exit [gazebo-2] killing on exit [sitl-1] killing on exit Traceback (most recent call last): File "/opt/ros/melodic/bin/catkin_find", line 57, in main() File "/opt/ros/melodic/bin/catkin_find", line 42, in main results = find_in_workspaces(args.install_folders, args.project, args.path, first_matching_workspace_only=args.without_underlays, first_match_only=args.first_only, considered_paths=checked) File "/opt/ros/melodic/lib/python2.7/dist-packages/catkin/find_in_workspaces.py", line 149, in find_in_workspaces source_path_to_packages[source_path] = find_packages(source_path) File "/usr/lib/python2.7/dist-packages/catkin_pkg/packages.py", line 94, in find_packages ignore_markers=ignore_markers) File "/usr/lib/python2.7/dist-packages/catkin_pkg/packages.py", line 156, in find_packages_allowing_duplicates xml, filename=filename, warnings=warnings) File "/usr/lib/python2.7/dist-packages/catkin_pkg/package.py", line 730, in parse_package_string Traceback (most recent call last): File "/opt/ros/melodic/bin/catkin_find", line 12, in from catkin.find_in_workspaces import find_in_workspaces # noqa: E402 File "/opt/ros/melodic/lib/python2.7/dist-packages/catkin/find_in_workspaces.py", line 39, in from catkin_pkg.packages import find_packages File "/usr/lib/python2.7/dist-packages/catkin_pkg/packages.py", line 38, in from .package import _get_package_xml File "/usr/lib/python2.7/dist-packages/catkin_pkg/package.py", line 431, in class Person(object): KeyboardInterrupt errors += _check_known_attributes(root, ['format']) File "/usr/lib/python2.7/dist-packages/catkin_pkg/package.py", line 589, in _check_known_attributes

attrs = map(str, node.attributes.keys())

File "/usr/lib/python2.7/xml/dom/minidom.py", line 498, in keys import roslib.stacks # noqa: F401, I100 File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/stacks.py", line 45, in return self._attrs.keys() KeyboardInterrupt import roslib.packages File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/packages.py", line 48, in from catkin.find_in_workspaces import find_in_workspaces as catkin_find File "/opt/ros/melodic/lib/python2.7/dist-packages/catkin/find_in_workspaces.py", line 39, in from catkin_pkg.packages import find_packages File "/usr/lib/python2.7/dist-packages/catkin_pkg/packages.py", line 38, in from .package import _get_package_xml File "/usr/lib/python2.7/dist-packages/catkin_pkg/package.py", line 44, in from catkin_pkg.condition import evaluate_condition File "/usr/lib/python2.7/dist-packages/catkin_pkg/condition.py", line 17, in import pyparsing as pp File "/home/ridley2/.local/lib/python2.7/site-packages/pyparsing.py", line 6398, in class pyparsing_common: File "/home/ridley2/.local/lib/python2.7/site-packages/pyparsing.py", line 6598, in pyparsing_common ipv6_address = Combine((_full_ipv6_address | _mixed_ipv6_address | _short_ipv6_address).setName("IPv6 address")).setName("IPv6 address") File "/home/ridley2/.local/lib/python2.7/site-packages/pyparsing.py", line 5124, in init self.leaveWhitespace() File "/home/ridley2/.local/lib/python2.7/site-packages/pyparsing.py", line 4468, in leaveWhitespace self.expr = self.expr.copy() File "/home/ridley2/.local/lib/python2.7/site-packages/pyparsing.py", line 3969, in copy ret = super(ParseExpression, self).copy() File "/home/ridley2/.local/lib/python2.7/site-packages/pyparsing.py", line 1445, in copy cpy = copy.copy(self) File "/usr/lib/python2.7/copy.py", line 96, in copy return _reconstruct(x, rv, 0) File "/usr/lib/python2.7/copy.py", line 316, in _reconstruct state = info[2] KeyboardInterrupt shutting down processing monitor... ... shutting down processing monitor complete done

To Reproduce

git clone https://github.com/PX4/PX4-Autopilot.git --recursive ref

cd <PX4-Autopilot_clone>
DONT_RUN=1 make px4_sitl_default gazebo-classic
source ~/catkin_ws/devel/setup.bash    # (optional)
source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic
roslaunch px4 posix_sitl.launch

ref

Expected behavior

It should roslaunch successfully without error. It should publish mavros and iris (a drone model) in the gazebo world.

Screenshot / Media

No response

Flight Log

no log

Software Version

Ubuntu 18.04

Flight controller

None

Vehicle type

None

How are the different components wired up (including port information)

No response

Additional context

Thank you very much for your help ^^ No response

AllenHuangDongyue commented 1 year ago

same #21911 @lucasdemarchi @NaterGator @JamesHarrison @lfelipe

JohnTGZ commented 11 months ago

I realised the error for PX4 SITL originates from line 324 to 334 of the file "platforms/posix/src/px4/common/main.cpp", from commit 2110eae25d32ef102c5e44f2590fd7f9d65fc44d:

        if (test_data_path != "") {
            const std::string required_test_data_path = "./test_data";

            if (!dir_exists(required_test_data_path)) {
                ret = symlink(test_data_path.c_str(), required_test_data_path.c_str());

                if (ret != PX4_OK) {
                    return ret;
                }
            }
        }

For some reason, the test_data_path is not empty when spawning a PX4 SITL instance. As a result, the return code will not be PX4_OK and it will return -1, ending the program.

nikhil-sethi commented 8 months ago

For me this happened when I moved the PX4-Autopilot directory somewhere else and recompiled it in the new place. The folder ~/.ros/test_data is a symbolic link to PX4-Autopilot/test_data which doesn't get updated after recompiling. I just updated the link and things worked again.

newawesom commented 5 months ago

@nikhil-sethi I have the same problem when I moved the directory,so how to updated the link?

nikhil-sethi commented 5 months ago

@newawesom You can use the ln command (in linux) to update the symbolic link from the source directory (~/.ros/test_data) to the target directory (wherever your new test data folder is).

ln -s <target_directory> <source_directory>

you may also have to use -f flag to force the update if the link already exists.

newawesom commented 5 months ago

@newawesom You can use the ln command (in linux) to update the symbolic link from the source directory (~/.ros/test_data) to the target directory (wherever your new test data folder is).

ln -s <target_directory> <source_directory>

you may also have to use -f flag to force the update if the link already exists.

@nikhil-sethi Thanks for reply!Acutually,I deleted test_data directory in PX4-Autopilot and it worked after recompiling.