ArduPilot / ardupilot_gz

Tools for ArduPilot ROS2 integration and testing on ROS 2 humble
GNU General Public License v3.0
27 stars 19 forks source link

Rover: add lidar to rover example #34

Closed srmainwaring closed 8 months ago

srmainwaring commented 9 months ago

This is a follow up to https://github.com/ArduPilot/ardupilot_gz/pull/33 that adds a lidar to the rover model. It enables the rover model to be used with the cartographer and navigation launch configurations developed by @pedro-fuoco as part of his 2023 GSoC project.

Dependencies

For testing and further details see the descriptions in the above PRs.

Tasks

srmainwaring commented 8 months ago

Here's a patch: srmainwaring#1

Merged and updated in PR.

srmainwaring commented 8 months ago

Do you intend to add the models repo to here: https://raw.githubusercontent.com/ArduPilot/ardupilot_gz/main/ros2_gz.repos?

https://github.com/ArduPilot/ardupilot_gz/pull/34/commits/0a570cd1e9244b33bbf5a3bc6795ee8b589edcb0

Ryanf55 commented 8 months ago

With latest changes:

[ERROR] [launch]: Caught exception in launch (see debug for traceback): "package 'topic_tools' not found, searching: ['/home/ryan/Dev/ros2_ws/install_humble/ardupilot_gz_bringup', '/home/ryan/Dev/ros2_ws/install_humble/ros_gz_sim', '/home/ryan/Dev/ros2_ws/install_humble/ros_gz_bridge', '/home/ryan/Dev/ros2_ws/install_humble/ros_gz_interfaces', '/home/ryan/Dev/ros2_ws/install_humble/ardupilot_sitl', '/home/ryan/Dev/ros2_ws/install_humble/micro_ros_agent', '/home/ryan/Dev/ros2_ws/install_humble/ardupilot_sitl_models', '/home/ryan/Dev/ros2_ws/install_humble/ardupilot_gz_gazebo', '/home/ryan/Dev/ros2_ws/install_humble/ardupilot_gz_description', '/home/ryan/Dev/ros2_ws/install_humble/ardupilot_gazebo', '/home/ryan/Dev/ros2_ws/install/ardupilot_sitl_models', '/home/ryan/Dev/ros2_ws/install/ardupilot_gazebo', '/home/ryan/Dev/ros2_ws/install/ardupilot_gz_bringup', '/home/ryan/Dev/ros2_ws/install/ros_gz_sim', '/home/ryan/Dev/ros2_ws/install/ardupilot_sitl', '/home/ryan/Dev/ros2_ws/install/micro_ros_agent', '/home/ryan/Dev/ros2_ws/install/ardupilot_gz_gazebo', '/home/ryan/Dev/ros2_ws/install/ardupilot_gz_description', '/opt/ros/humble']"

Perhaps add this to the workspace or package.xml if binaries are available? https://github.com/ros-tooling/topic_tools

srmainwaring commented 8 months ago

Ah, thought I'd added topic_tools to the package.xml already. Will update.

Ryanf55 commented 8 months ago

Ah, thought I'd added topic_tools to the package.xml already. Will update.

Seems like it's an issue for iris_maze.launch.py also; it was missed earlier.

srmainwaring commented 8 months ago

Seems like it's an issue for iris_maze.launch.py also; it was missed earlier.

No, wasn't missed. A dependency on topic_tools is in main as an <exec_depend>:

https://github.com/ArduPilot/ardupilot_gz/blob/6057dfa2462c7dc6c98e033e7040872c87b48b54/ardupilot_gz_bringup/package.xml#L9-L22

Ryanf55 commented 8 months ago

Seems like it's an issue for iris_maze.launch.py also; it was missed earlier.

No, wasn't missed. A dependency on topic_tools is in main as an <exec_depend>:

https://github.com/ArduPilot/ardupilot_gz/blob/6057dfa2462c7dc6c98e033e7040872c87b48b54/ardupilot_gz_bringup/package.xml#L9-L22

Ah my bad, I missed the rosdep call. Alright, after re-running that, robot_state_publisher is crashing. Same behavior on iris_runway and wildthumper_playpen.

ryan@B650-970:~/Dev/ros2_ws$ ros2 launch ardupilot_gz_bringup iris_runway.launch.py rviz:=true use_gz_tf:=true
[INFO] [launch]: All log files can be found below /home/ryan/.ros/log/2023-10-26-15-54-35-059657-B650-970-144838
[INFO] [launch]: Default logging verbosity is set to INFO
namespace:        
transport:        udp4
middleware:       dds
verbose:          4
discovery:        7400
port:             2019
refs:             /home/ryan/Dev/ros2_ws/install_humble/ardupilot_sitl/share/ardupilot_sitl/config/dds_xrce_profile.xml
command:          arducopter
model:            json
speedup:          1
slave:            0
sim_address:      127.0.0.1
instance:         0
defaults:         /home/ryan/Dev/ros2_ws/install_humble/ardupilot_gazebo/share/ardupilot_gazebo/config/gazebo-iris-gimbal.parm,/home/ryan/Dev/ros2_ws/install_humble/ardupilot_sitl/share/ardupilot_sitl/config/default_params/dds_udp.parm
synthetic_clock:  True
command:          mavproxy.py
master:           tcp:127.0.0.1:5760
sitl:             127.0.0.1:5501
[INFO] [ruby $(which gz) sim-1]: process started with pid [144839]
[INFO] [ruby $(which gz) sim-2]: process started with pid [144841]
[INFO] [micro_ros_agent-3]: process started with pid [144843]
[INFO] [dds_udp.parm --synthetic-clock -4]: process started with pid [144845]
[INFO] [mavproxy.py --out 127.0.0.1:14550 --out 127.0.0.1:14551 --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501 --non-interactive -5]: process started with pid [144848]
[INFO] [robot_state_publisher-6]: process started with pid [144851]
[INFO] [parameter_bridge-7]: process started with pid [144856]
[INFO] [rviz2-8]: process started with pid [144858]
[dds_udp.parm --synthetic-clock -4] Setting SIM_SPEEDUP=1.000000
[dds_udp.parm --synthetic-clock -4] Starting SITL: JSON
[dds_udp.parm --synthetic-clock -4] JSON control interface set to 127.0.0.1:9002
[dds_udp.parm --synthetic-clock -4] Starting sketch 'ArduCopter'
[dds_udp.parm --synthetic-clock -4] Starting SITL input
[dds_udp.parm --synthetic-clock -4] Using Irlock at port : 9005
[dds_udp.parm --synthetic-clock -4] Waiting for connection ....
[INFO] [relay-9]: process started with pid [144861]
[dds_udp.parm --synthetic-clock -4] bind port 5760 for 0
[dds_udp.parm --synthetic-clock -4] Serial port 0 on TCP port 5760
[micro_ros_agent-3] [1698357275.179578] info     | UDPv4AgentLinux.cpp | init                     | running...             | port: 2019
[micro_ros_agent-3] [1698357275.180044] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
[robot_state_publisher-6] Error:   Could not find the 'robot' element in the xml file
[robot_state_publisher-6]          at line 109 in ./urdf_parser/src/model.cpp
[robot_state_publisher-6] Failed to parse robot description using: urdf_xml_parser/URDFXMLParser
[robot_state_publisher-6] terminate called after throwing an instance of 'std::runtime_error'
[robot_state_publisher-6]   what():  Unable to initialize urdf::model from robot description

This is with the command in the README.

srmainwaring commented 8 months ago

Now that looks like a missing exec dependency on sdformat_urdf.

Added to #33 in https://github.com/ArduPilot/ardupilot_gz/pull/33/commits/54314b878566a416ffc5e2eff332414481b2e751 and rebased this PR on #33.