Open doctorcolossus opened 5 months ago
I noticed that the author of this official video about getting started with TurtleBot3 in ROS1 Noetic cloned turtlebot3 and turtlebot3_simulations from the github repo and built with catkin, rather than installing them via apt. I tried that, they built fine, and I re-sourced, but this did not resolve the issue either.
With roslaunch turtlebot3_bringup turtlebot3_model.launch
, there's also no "odom":
When I run roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
, the turtlebot visually appears in gazebo:
However, no tf
data seems to be published:
It's the same with roslaunch turtlebot3_gazebo turtlebot3_world.launch
:
But with roslaunch turtlebot3_fake turtlebot3_fake.launch
, the tf tree shows up and includes "odom":
In addition to experiencing the missing "odom" issue on the aforementioned bare-metal Jetson device, I am able to replicate it in a docker container built from the following Dockerfile
I've made for elevation_mapping_cupy
:
I run the image with the following script, which assumes that the image is named elevation_mapping_cupy
and whose purpose is to allow GUI programs to run through the host X server:
To run that exact image, you'll need an NVIDIA graphics card with CUDA and the NVIDIA container toolkit, plus an X server, and you'll need to adjust the base image and pip install
ed major version of cupy
. But the point with this Dockerfile
is to show that the missing "odom" behavior doesn't only happen only in one environment. I've run the built container on a completely different machine and architecture, and still don't see any "odom" frame. This Dockerfile
doesn't include the so-called dependent ROS packages, but as I noted above, installing those didn't change anything with the missing "odom", and yes, I did try this also in the running docker container and re-sourcing.
For a more minimal example, I made the following Dockerfile
which includes all of the so-called dependent packages, doesn't require any GPU, and builds turtlebot3_simulations
and turtlebot3_simulations
with catkin_build
:
Run it with:
Then in another window, to view the tf tree (replace boring_noether
with the name of the running container, which you can get from docker ps
):
docker exec \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--interactive \
--tty \
boring_noether \
/bin/bash -c "source /opt/ros/noetic/setup.bash; "`\
`"source /catkin_ws/devel/setup.bash; "`\
`"rosrun rqt_tf_tree rqt_tf_tree"
With this, I again see no "odom":
Am I missing something simple, or is this a bug? In the latter case, is there any fix or workaround?
It looks like a problem between turtlebot and gazebo. Perhaps you can check if ros-noetic-turtlebot3-gazebo is installed. If not, the model in gazebo may wrong.
Hi @ZhoZhicheng, thank you for your idea. I listed my ROS-related apt
packages above, and as you can see, ros-noetic-turtlebot3-gazebo/focal
is installed. What do you mean that the model in Gazebo may be wrong? Do you know how that could be checked or fixed?
Hello @doctorcolossus did you end up resolving this issue? I am facing the same problem with a pioneer3at model
Hey @margaridaaranha7, yes, I think that I eventually resolved the problem by installing apt package ros-noetic-gazebo-plugins
, which of course isn't mentioned in the documentation, and I guess I never bothered to follow up here since nobody from ROBOTIS ever bothered to respond to or even acknowledge my painstakingly-detailed issue, as sadly seems to be common practice within the open-source robotics community... Apparently some plugin provided by that package is responsible for publishing the turtlebot odom
topic. Here's hoping that will help you too!
Hello again, @doctorcolossus :)
Thank you so much for your quick and detailed response! I really appreciate it.
Unfortunately, I already had the ros-noetic-gazebo-plugins
package installed, but I managed to solve the problem, so I wanted to share my solution here in case it helps someone else.
My issue was that the odom
frame wasn’t being displayed when I used tools like rosrun tf2_tools view_frames.py
or rosrun rqt_tf_tree rqt_tf_tree
to visualize my TF tree.
frame_id: "odom"
So, after some investigation, I realized the problem was with my pioneer3at
model (which I was using from p2os
).
Since p2os also provides the pioneer3dx model, I gave that a try, and it worked perfectly!
I’m still fairly new to ROS and Gazebo, so I hope this explanation makes sense. I just wanted to share what I learned, and I hope it can help someone else facing a similar issue!
@doctorcolossus, thanks a lot, your solution worked for me.
I am using ROS Noetic on Ubuntu 20.04.6 LTS 5.10.104-tegra on a Jetson NX.
My ultimate goal is to run the example launch file for leggedrobotics/elevation_mapping_cupy, which uses turtlebot3_gazebo in its sourced elevation_mapping_cupy/launch/turtlesim_init.launch.
It gives me a lot of errors like:
"odom" passed to lookupTransform argument target_frame does not exist.
full log
$ export TURTLEBOT3_MODEL=waffle $ roslaunch elevation_mapping_cupy turtlesim_simple_example.launch PARAMETERS * /elevation_mapping/base_frame: base_footprint * /elevation_mapping/cleanup_cos_thresh: 0.1 * /elevation_mapping/cleanup_step: 0.1 * /elevation_mapping/corrected_map_frame: odom * /elevation_mapping/dilation_size: 3 * /elevation_mapping/dilation_size_initialize: 2 * /elevation_mapping/drift_compensation_alpha: 0.1 * /elevation_mapping/drift_compensation_variance_inler: 0.05 * /elevation_mapping/enable_drift_compensation: True * /elevation_mapping/enable_drift_corrected_TF_publishing: False * /elevation_mapping/enable_edge_sharpen: True * /elevation_mapping/enable_normal_color: False * /elevation_mapping/enable_overlap_clearance: True * /elevation_mapping/enable_pointcloud_publishing: False * /elevation_mapping/enable_visibility_cleanup: True * /elevation_mapping/image_channel_fusions/default: exponential * /elevation_mapping/image_channel_fusions/feat_.*: exponential * /elevation_mapping/image_channel_fusions/rgb: color * /elevation_mapping/initial_variance: 1000.0 * /elevation_mapping/initialize_frame_id: ['base_footprint'] * /elevation_mapping/initialize_method: linear * /elevation_mapping/initialize_tf_grid_size: 0.5 * /elevation_mapping/initialize_tf_offset: [0.0, 0.0, 0.0, 0.0] * /elevation_mapping/mahalanobis_thresh: 2.0 * /elevation_mapping/map_acquire_fps: 5.0 * /elevation_mapping/map_frame: odom * /elevation_mapping/map_length: 8.0 * /elevation_mapping/max_drift: 0.1 * /elevation_mapping/max_height_range: 1.0 * /elevation_mapping/max_ray_length: 10.0 * /elevation_mapping/max_unsafe_n: 10 * /elevation_mapping/max_variance: 100.0 * /elevation_mapping/min_height_drift_cnt: 100 * /elevation_mapping/min_valid_distance: 0.5 * /elevation_mapping/orientation_lowpass_alpha: 0.2 * /elevation_mapping/orientation_noise_thresh: 0.01 * /elevation_mapping/outlier_variance: 0.01 * /elevation_mapping/overlap_clear_range_xy: 4.0 * /elevation_mapping/overlap_clear_range_z: 2.0 * /elevation_mapping/plugin_config_file: $(rospack find el... * /elevation_mapping/pointcloud_channel_fusions/default: average * /elevation_mapping/pointcloud_channel_fusions/rgb: color * /elevation_mapping/position_lowpass_alpha: 0.2 * /elevation_mapping/position_noise_thresh: 0.01 * /elevation_mapping/publish_statistics_fps: 1.0 * /elevation_mapping/publishers/elevation_map_filter/basic_layers: ['min_filter'] * /elevation_mapping/publishers/elevation_map_filter/fps: 3.0 * /elevation_mapping/publishers/elevation_map_filter/layers: ['min_filter', 's... * /elevation_mapping/publishers/elevation_map_raw/basic_layers: ['elevation'] * /elevation_mapping/publishers/elevation_map_raw/fps: 5.0 * /elevation_mapping/publishers/elevation_map_raw/layers: ['elevation', 'tr... * /elevation_mapping/ramped_height_range_a: 0.3 * /elevation_mapping/ramped_height_range_b: 1.0 * /elevation_mapping/ramped_height_range_c: 0.2 * /elevation_mapping/resolution: 0.04 * /elevation_mapping/safe_min_thresh: 0.4 * /elevation_mapping/safe_thresh: 0.7 * /elevation_mapping/sensor_noise_factor: 0.05 * /elevation_mapping/subscribers/front_cam/data_type: pointcloud * /elevation_mapping/subscribers/front_cam/topic_name: /camera/depth/points * /elevation_mapping/time_interval: 0.1 * /elevation_mapping/time_variance: 0.0001 * /elevation_mapping/traversability_inlier: 0.9 * /elevation_mapping/update_pose_fps: 10.0 * /elevation_mapping/update_variance_fps: 5.0 * /elevation_mapping/use_chainer: False * /elevation_mapping/use_initializer_at_start: True * /elevation_mapping/use_only_above_for_upper_bound: False * /elevation_mapping/wall_num_thresh: 20 * /elevation_mapping/weight_file: $(rospack find el... * /gazebo/enable_ros_network: True * /robot_description:Meanwhile the turtlebot in gazebo remains as a white blob.
@ZhoZhicheng opened elevation_mapping_cupy issue 78 for the same problem, and maintainer @mktk1117 closed the issue, stating that it is a turtlebot issue and not their problem. I followed up with the @ZhoZhicheng, who confirmed that it did indeed turn out to be a turtlebot bug which which was supposedly "easy to solve", although they cannot recall how...
The tf tree looks like this: So clearly, as stated in the error, there is no 'odom' frame, which I guess is supposed to be there.
I found two issues, both unresolved, where people described the "odom" frame being disconnected from the rest of the tree: turtlebot3 issue 7790 and turtlebot3_simulations issue 214. In both of those issues, the "odom" frame exists, but is disconnected from the rest of the tree. For me, it doesn't appear to exist at all. In the first of those two issues, @ROBOTIS-Ashe advised installing all dependent ROS packages and @DingoOz advised remembering to source
devel/setup.bash
in the catkin build directory, but OP @abdur78 did not respond further, and the issue remains open three years later. But in my case, I had already remembered to source my/devel/setup.bash
, as well as/opt/ros/noetic/setup.bash
. Doing so again did not resolve the issue. I had apparently not installed all of the dependent ROS packages, but installing those did not resolve the issue either.Before installing the missing dependent packages, I had these apt packages installed:
output of
ros-message-generation/focal ros-message-runtime/focal ros-noetic-actionlib-msgs/focal ros-noetic-actionlib-tutorials/focal ros-noetic-actionlib/focal ros-noetic-amcl/focal ros-noetic-angles/focal ros-noetic-base-local-planner/focal ros-noetic-bond-core/focal ros-noetic-bond/focal ros-noetic-bondcpp/focal ros-noetic-bondpy/focal ros-noetic-catkin/focal ros-noetic-class-loader/focal ros-noetic-clear-costmap-recovery/focal ros-noetic-cmake-modules/focal ros-noetic-common-msgs/focal ros-noetic-common-tutorials/focal ros-noetic-control-msgs/focal ros-noetic-costmap-2d/focal ros-noetic-cpp-common/focal ros-noetic-cv-bridge/focal ros-noetic-desktop/focal ros-noetic-diagnostic-aggregator/focal ros-noetic-diagnostic-analysis/focal ros-noetic-diagnostic-common-diagnostics/focal ros-noetic-diagnostic-msgs/focal ros-noetic-diagnostic-updater/focal ros-noetic-diagnostics/focal ros-noetic-dynamic-reconfigure/focal ros-noetic-eigen-conversions/focal ros-noetic-executive-smach/focal ros-noetic-filters/focal ros-noetic-gazebo-dev/focal ros-noetic-gazebo-msgs/focal ros-noetic-gazebo-ros/focal ros-noetic-gencpp/focal ros-noetic-geneus/focal ros-noetic-genlisp/focal ros-noetic-genmsg/focal ros-noetic-gennodejs/focal ros-noetic-genpy/focal ros-noetic-geometry-msgs/focal ros-noetic-geometry-tutorials/focal ros-noetic-geometry/focal ros-noetic-gl-dependency/focal ros-noetic-grid-map-core/focal ros-noetic-grid-map-cv/focal ros-noetic-grid-map-demos/focal ros-noetic-grid-map-filters/focal ros-noetic-grid-map-loader/focal ros-noetic-grid-map-msgs/focal ros-noetic-grid-map-octomap/focal ros-noetic-grid-map-ros/focal ros-noetic-grid-map-rviz-plugin/focal ros-noetic-grid-map-visualization/focal ros-noetic-grid-map/focal ros-noetic-hls-lfcd-lds-driver/focal ros-noetic-image-transport/focal ros-noetic-interactive-marker-tutorials/focal ros-noetic-interactive-markers/focal ros-noetic-joint-state-publisher-gui/focal ros-noetic-joint-state-publisher/focal ros-noetic-kdl-conversions/focal ros-noetic-kdl-parser/focal ros-noetic-laser-geometry/focal ros-noetic-librviz-tutorial/focal ros-noetic-map-msgs/focal ros-noetic-map-server/focal ros-noetic-media-export/focal ros-noetic-message-filters/focal ros-noetic-message-generation/focal ros-noetic-message-runtime/focal ros-noetic-mk/focal ros-noetic-move-base-msgs/focal ros-noetic-move-base/focal ros-noetic-nav-core/focal ros-noetic-nav-msgs/focal ros-noetic-navfn/focal ros-noetic-nodelet-core/focal ros-noetic-nodelet-topic-tools/focal ros-noetic-nodelet-tutorial-math/focal ros-noetic-nodelet/focal ros-noetic-octomap-mapping/focal ros-noetic-octomap-msgs/focal ros-noetic-octomap-ros/focal ros-noetic-octomap-server/focal ros-noetic-octomap/focal ros-noetic-pcl-conversions/focal ros-noetic-pcl-msgs/focal ros-noetic-pcl-ros/focal ros-noetic-pluginlib-tutorials/focal ros-noetic-pluginlib/focal ros-noetic-pybind11-catkin/focal ros-noetic-python-qt-binding/focal ros-noetic-qt-dotgraph/focal ros-noetic-qt-gui-cpp/focal ros-noetic-qt-gui-py-common/focal ros-noetic-qt-gui/focal ros-noetic-qwt-dependency/focal ros-noetic-resource-retriever/focal ros-noetic-robot-state-publisher/focal ros-noetic-robot/focal ros-noetic-ros-base/focal ros-noetic-ros-comm/focal ros-noetic-ros-core/focal ros-noetic-ros-environment/focal ros-noetic-ros-tutorials/focal ros-noetic-ros/focal ros-noetic-rosbag-migration-rule/focal ros-noetic-rosbag-storage/focal ros-noetic-rosbag/focal ros-noetic-rosbash/focal ros-noetic-rosboost-cfg/focal ros-noetic-rosbuild/focal ros-noetic-rosclean/focal ros-noetic-rosconsole-bridge/focal ros-noetic-rosconsole/focal ros-noetic-roscpp-core/focal ros-noetic-roscpp-serialization/focal ros-noetic-roscpp-traits/focal ros-noetic-roscpp-tutorials/focal ros-noetic-roscpp/focal ros-noetic-roscreate/focal ros-noetic-rosgraph-msgs/focal ros-noetic-rosgraph/focal ros-noetic-roslang/focal ros-noetic-roslaunch/focal ros-noetic-roslib/focal ros-noetic-roslint/focal ros-noetic-roslisp/focal ros-noetic-roslz4/focal ros-noetic-rosmake/focal ros-noetic-rosmaster/focal ros-noetic-rosmsg/focal ros-noetic-rosnode/focal ros-noetic-rosout/focal ros-noetic-rospack/focal ros-noetic-rosparam/focal ros-noetic-rospy-tutorials/focal ros-noetic-rospy/focal ros-noetic-rosserial-msgs/focal ros-noetic-rosserial-python/focal ros-noetic-rosservice/focal ros-noetic-rostest/focal ros-noetic-rostime/focal ros-noetic-rostopic/focal ros-noetic-rosunit/focal ros-noetic-roswtf/focal ros-noetic-rotate-recovery/focal ros-noetic-rqt-action/focal ros-noetic-rqt-bag-plugins/focal ros-noetic-rqt-bag/focal ros-noetic-rqt-common-plugins/focal ros-noetic-rqt-console/focal ros-noetic-rqt-dep/focal ros-noetic-rqt-graph/focal ros-noetic-rqt-gui-cpp/focal ros-noetic-rqt-gui-py/focal ros-noetic-rqt-gui/focal ros-noetic-rqt-image-view/focal ros-noetic-rqt-launch/focal ros-noetic-rqt-logger-level/focal ros-noetic-rqt-moveit/focal ros-noetic-rqt-msg/focal ros-noetic-rqt-nav-view/focal ros-noetic-rqt-plot/focal ros-noetic-rqt-pose-view/focal ros-noetic-rqt-publisher/focal ros-noetic-rqt-py-common/focal ros-noetic-rqt-py-console/focal ros-noetic-rqt-reconfigure/focal ros-noetic-rqt-robot-dashboard/focal ros-noetic-rqt-robot-monitor/focal ros-noetic-rqt-robot-plugins/focal ros-noetic-rqt-robot-steering/focal ros-noetic-rqt-runtime-monitor/focal ros-noetic-rqt-rviz/focal ros-noetic-rqt-service-caller/focal ros-noetic-rqt-shell/focal ros-noetic-rqt-srv/focal ros-noetic-rqt-tf-tree/focal ros-noetic-rqt-top/focal ros-noetic-rqt-topic/focal ros-noetic-rqt-web/focal ros-noetic-rqt/focal ros-noetic-rviz-plugin-tutorials/focal ros-noetic-rviz-python-tutorial/focal ros-noetic-rviz/focal ros-noetic-self-test/focal ros-noetic-sensor-msgs/focal ros-noetic-shape-msgs/focal ros-noetic-smach-msgs/focal ros-noetic-smach-ros/focal ros-noetic-smach/focal ros-noetic-smclib/focal ros-noetic-std-msgs/focal ros-noetic-std-srvs/focal ros-noetic-stereo-msgs/focal ros-noetic-tf-conversions/focal ros-noetic-tf2-eigen/focal ros-noetic-tf2-geometry-msgs/focal ros-noetic-tf2-kdl/focal ros-noetic-tf2-msgs/focal ros-noetic-tf2-py/focal ros-noetic-tf2-ros/focal ros-noetic-tf2-tools/focal ros-noetic-tf2/focal ros-noetic-tf/focal ros-noetic-topic-tools/focal ros-noetic-trajectory-msgs/focal ros-noetic-turtle-actionlib/focal ros-noetic-turtle-tf2/focal ros-noetic-turtle-tf/focal ros-noetic-turtlebot3-autorace-2020/focal ros-noetic-turtlebot3-autorace-camera/focal ros-noetic-turtlebot3-autorace-core/focal ros-noetic-turtlebot3-autorace-detect/focal ros-noetic-turtlebot3-autorace-driving/focal ros-noetic-turtlebot3-autorace-msgs/focal ros-noetic-turtlebot3-bringup-dbgsym/focal ros-noetic-turtlebot3-bringup/focal ros-noetic-turtlebot3-description/focal ros-noetic-turtlebot3-example/focal ros-noetic-turtlebot3-fake-dbgsym/focal ros-noetic-turtlebot3-fake/focal ros-noetic-turtlebot3-gazebo-dbgsym/focal ros-noetic-turtlebot3-gazebo/focal ros-noetic-turtlebot3-msgs/focal ros-noetic-turtlebot3-navigation/focal ros-noetic-turtlebot3-simulations/focal ros-noetic-turtlebot3-slam-dbgsym/focal ros-noetic-turtlebot3-slam/focal ros-noetic-turtlebot3-teleop/focal ros-noetic-turtlebot3/focal ros-noetic-turtlesim/focal ros-noetic-urdf-parser-plugin/focal ros-noetic-urdf-tutorial/focal ros-noetic-urdf/focal ros-noetic-velodyne-driver/focal ros-noetic-velodyne-laserscan/focal ros-noetic-velodyne-msgs/focal ros-noetic-velodyne-pointcloud/focal ros-noetic-velodyne/focal ros-noetic-visualization-marker-tutorials/focal ros-noetic-visualization-msgs/focal ros-noetic-visualization-tutorials/focal ros-noetic-viz/focal ros-noetic-voxel-grid/focal ros-noetic-webkit-dependency/focal ros-noetic-xacro/focal ros-noetic-xmlrpcpp/focalapt list --installed | grep "^ros"
originallyThe following new packages were installed after following the commands given here to install dependent packages for noetic, but this did not help:
output of
ros-message-generation/focal ros-message-runtime/focal ros-noetic-actionlib-msgs/focal ros-noetic-actionlib-tutorials/focal ros-noetic-actionlib/focal ros-noetic-amcl/focal ros-noetic-angles/focal ros-noetic-base-local-planner/focal ros-noetic-bond-core/focal ros-noetic-bond/focal ros-noetic-bondcpp/focal ros-noetic-bondpy/focal ros-noetic-carrot-planner/focal ros-noetic-catkin/focal ros-noetic-class-loader/focal ros-noetic-clear-costmap-recovery/focal ros-noetic-cmake-modules/focal ros-noetic-common-msgs/focal ros-noetic-common-tutorials/focal ros-noetic-compressed-image-transport/focal ros-noetic-control-msgs/focal ros-noetic-controller-manager-msgs/focal ros-noetic-costmap-2d/focal ros-noetic-cpp-common/focal ros-noetic-cv-bridge/focal ros-noetic-depth-image-proc/focal ros-noetic-desktop/focal ros-noetic-diagnostic-aggregator/focal ros-noetic-diagnostic-analysis/focal ros-noetic-diagnostic-common-diagnostics/focal ros-noetic-diagnostic-msgs/focal ros-noetic-diagnostic-updater/focal ros-noetic-diagnostics/focal ros-noetic-drone-wrapper/focal ros-noetic-dwa-local-planner/focal ros-noetic-dynamic-reconfigure/focal ros-noetic-dynamixel-sdk/focal ros-noetic-eigen-conversions/focal ros-noetic-executive-smach/focal ros-noetic-fake-localization/focal ros-noetic-filters/focal ros-noetic-gazebo-dev/focal ros-noetic-gazebo-msgs/focal ros-noetic-gazebo-ros/focal ros-noetic-gencpp/focal ros-noetic-geneus/focal ros-noetic-genlisp/focal ros-noetic-genmsg/focal ros-noetic-gennodejs/focal ros-noetic-genpy/focal ros-noetic-geographic-msgs/focal ros-noetic-geometry-msgs/focal ros-noetic-geometry-tutorials/focal ros-noetic-geometry/focal ros-noetic-gl-dependency/focal ros-noetic-global-planner/focal ros-noetic-gmapping/focal ros-noetic-grid-map-core/focal ros-noetic-grid-map-cv/focal ros-noetic-grid-map-demos/focal ros-noetic-grid-map-filters/focal ros-noetic-grid-map-loader/focal ros-noetic-grid-map-msgs/focal ros-noetic-grid-map-octomap/focal ros-noetic-grid-map-ros/focal ros-noetic-grid-map-rviz-plugin/focal ros-noetic-grid-map-visualization/focal ros-noetic-grid-map/focal ros-noetic-hls-lfcd-lds-driver/focal ros-noetic-hri-msgs/focal ros-noetic-hri/focal ros-noetic-image-geometry/focal ros-noetic-image-proc/focal ros-noetic-image-transport/focal ros-noetic-interactive-marker-tutorials/focal ros-noetic-interactive-markers/focal ros-noetic-joint-state-publisher-gui/focal ros-noetic-joint-state-publisher/focal ros-noetic-joy/focal ros-noetic-kdl-conversions/focal ros-noetic-kdl-parser/focal ros-noetic-laser-geometry/focal ros-noetic-laser-proc/focal ros-noetic-libmavconn/focal ros-noetic-librviz-tutorial/focal ros-noetic-map-msgs/focal ros-noetic-map-server/focal ros-noetic-mavlink/focal ros-noetic-mavros-msgs/focal ros-noetic-mavros/focal ros-noetic-media-export/focal ros-noetic-message-filters/focal ros-noetic-message-generation/focal ros-noetic-message-runtime/focal ros-noetic-mk/focal ros-noetic-move-base-msgs/focal ros-noetic-move-base/focal ros-noetic-move-slow-and-clear/focal ros-noetic-nav-core/focal ros-noetic-nav-msgs/focal ros-noetic-navfn/focal ros-noetic-navigation/focal ros-noetic-nodelet-core/focal ros-noetic-nodelet-topic-tools/focal ros-noetic-nodelet-tutorial-math/focal ros-noetic-nodelet/focal ros-noetic-octomap-mapping/focal ros-noetic-octomap-msgs/focal ros-noetic-octomap-ros/focal ros-noetic-octomap-server/focal ros-noetic-octomap/focal ros-noetic-openslam-gmapping/focal ros-noetic-pcl-conversions/focal ros-noetic-pcl-msgs/focal ros-noetic-pcl-ros/focal ros-noetic-pluginlib-tutorials/focal ros-noetic-pluginlib/focal ros-noetic-pr2-msgs/focal ros-noetic-pr2-power-board/focal ros-noetic-py-trees-msgs/focal ros-noetic-py-trees/focal ros-noetic-pybind11-catkin/focal ros-noetic-python-qt-binding/focal ros-noetic-qt-dotgraph/focal ros-noetic-qt-gui-cpp/focal ros-noetic-qt-gui-py-common/focal ros-noetic-qt-gui/focal ros-noetic-qwt-dependency/focal ros-noetic-resource-retriever/focal ros-noetic-rgbd-launch/focal ros-noetic-robot-state-publisher/focal ros-noetic-robot/focal ros-noetic-ros-base/focal ros-noetic-ros-comm/focal ros-noetic-ros-core/focal ros-noetic-ros-environment/focal ros-noetic-ros-numpy/focal ros-noetic-ros-tutorials/focal ros-noetic-ros/focal ros-noetic-rosbag-fancy-msgs/focal ros-noetic-rosbag-migration-rule/focal ros-noetic-rosbag-storage/focal ros-noetic-rosbag/focal ros-noetic-rosbash/focal ros-noetic-rosboost-cfg/focal ros-noetic-rosbuild/focal ros-noetic-rosclean/focal ros-noetic-rosconsole-bridge/focal ros-noetic-rosconsole/focal ros-noetic-roscpp-core/focal ros-noetic-roscpp-serialization/focal ros-noetic-roscpp-traits/focal ros-noetic-roscpp-tutorials/focal ros-noetic-roscpp/focal ros-noetic-roscreate/focal ros-noetic-rosfmt/focal ros-noetic-rosgraph-msgs/focal ros-noetic-rosgraph/focal ros-noetic-roslang/focal ros-noetic-roslaunch/focal ros-noetic-roslib/focal ros-noetic-roslint/focal ros-noetic-roslisp/focal ros-noetic-roslz4/focal ros-noetic-rosmake/focal ros-noetic-rosmaster/focal ros-noetic-rosmon-msgs/focal ros-noetic-rosmsg/focal ros-noetic-rosnode/focal ros-noetic-rosout/focal ros-noetic-rospack/focal ros-noetic-rosparam/focal ros-noetic-rospy-tutorials/focal ros-noetic-rospy/focal ros-noetic-rosserial-arduino/focal ros-noetic-rosserial-client/focal ros-noetic-rosserial-msgs/focal ros-noetic-rosserial-python/focal ros-noetic-rosservice/focal ros-noetic-rostest/focal ros-noetic-rostime/focal ros-noetic-rostopic/focal ros-noetic-rosunit/focal ros-noetic-roswtf/focal ros-noetic-rotate-recovery/focal ros-noetic-rqt-action/focal ros-noetic-rqt-bag-plugins/focal ros-noetic-rqt-bag/focal ros-noetic-rqt-common-plugins/focal ros-noetic-rqt-console/focal ros-noetic-rqt-controller-manager/focal ros-noetic-rqt-dep/focal ros-noetic-rqt-drone-teleop/focal ros-noetic-rqt-ez-publisher/focal ros-noetic-rqt-graph/focal ros-noetic-rqt-ground-robot-teleop/focal ros-noetic-rqt-gui-cpp-dbgsym/focal ros-noetic-rqt-gui-cpp/focal ros-noetic-rqt-gui-py/focal ros-noetic-rqt-gui/focal ros-noetic-rqt-human-radar-dbgsym/focal ros-noetic-rqt-human-radar/focal ros-noetic-rqt-image-view-dbgsym/focal ros-noetic-rqt-image-view/focal ros-noetic-rqt-joint-trajectory-controller/focal ros-noetic-rqt-launch/focal ros-noetic-rqt-logger-level/focal ros-noetic-rqt-moveit/focal ros-noetic-rqt-msg/focal ros-noetic-rqt-multiplot-dbgsym/focal ros-noetic-rqt-multiplot/focal ros-noetic-rqt-nav-view/focal ros-noetic-rqt-plot/focal ros-noetic-rqt-pose-view/focal ros-noetic-rqt-pr2-dashboard/focal ros-noetic-rqt-publisher/focal ros-noetic-rqt-py-common/focal ros-noetic-rqt-py-console/focal ros-noetic-rqt-py-trees/focal ros-noetic-rqt-reconfigure/focal ros-noetic-rqt-robot-dashboard/focal ros-noetic-rqt-robot-monitor/focal ros-noetic-rqt-robot-plugins/focal ros-noetic-rqt-robot-steering/focal ros-noetic-rqt-rosbag-fancy-dbgsym/focal ros-noetic-rqt-rosbag-fancy/focal ros-noetic-rqt-rosmon-dbgsym/focal ros-noetic-rqt-rosmon/focal ros-noetic-rqt-runtime-monitor/focal ros-noetic-rqt-rviz-dbgsym/focal ros-noetic-rqt-rviz/focal ros-noetic-rqt-service-caller/focal ros-noetic-rqt-shell/focal ros-noetic-rqt-srv/focal ros-noetic-rqt-tf-tree/focal ros-noetic-rqt-top/focal ros-noetic-rqt-topic/focal ros-noetic-rqt-web/focal ros-noetic-rqt/focal ros-noetic-rviz-plugin-tutorials/focal ros-noetic-rviz-python-tutorial/focal ros-noetic-rviz/focal ros-noetic-self-test/focal ros-noetic-sensor-msgs/focal ros-noetic-shape-msgs/focal ros-noetic-smach-msgs/focal ros-noetic-smach-ros/focal ros-noetic-smach/focal ros-noetic-smclib/focal ros-noetic-std-msgs/focal ros-noetic-std-srvs/focal ros-noetic-stereo-msgs/focal ros-noetic-teleop-twist-joy/focal ros-noetic-teleop-twist-keyboard/focal ros-noetic-tf-conversions/focal ros-noetic-tf2-eigen/focal ros-noetic-tf2-geometry-msgs/focal ros-noetic-tf2-kdl/focal ros-noetic-tf2-msgs/focal ros-noetic-tf2-py/focal ros-noetic-tf2-ros/focal ros-noetic-tf2-tools/focal ros-noetic-tf2/focal ros-noetic-tf/focal ros-noetic-topic-tools/focal ros-noetic-trajectory-msgs/focal ros-noetic-turtle-actionlib/focal ros-noetic-turtle-tf2/focal ros-noetic-turtle-tf/focal ros-noetic-turtlebot3-autorace-2020/focal ros-noetic-turtlebot3-autorace-camera/focal ros-noetic-turtlebot3-autorace-core/focal ros-noetic-turtlebot3-autorace-detect/focal ros-noetic-turtlebot3-autorace-driving/focal ros-noetic-turtlebot3-autorace-msgs/focal ros-noetic-turtlebot3-bringup-dbgsym/focal ros-noetic-turtlebot3-bringup/focal ros-noetic-turtlebot3-description/focal ros-noetic-turtlebot3-example/focal ros-noetic-turtlebot3-fake-dbgsym/focal ros-noetic-turtlebot3-fake/focal ros-noetic-turtlebot3-gazebo-dbgsym/focal ros-noetic-turtlebot3-gazebo/focal ros-noetic-turtlebot3-msgs/focal ros-noetic-turtlebot3-navigation/focal ros-noetic-turtlebot3-simulations/focal ros-noetic-turtlebot3-slam-dbgsym/focal ros-noetic-turtlebot3-slam/focal ros-noetic-turtlebot3-teleop/focal ros-noetic-turtlebot3/focal ros-noetic-turtlesim/focal ros-noetic-unique-id/focal ros-noetic-urdf-parser-plugin/focal ros-noetic-urdf-tutorial/focal ros-noetic-urdf/focal ros-noetic-uuid-msgs/focal ros-noetic-variant-msgs/focal ros-noetic-variant-topic-tools/focal ros-noetic-velodyne-driver/focal ros-noetic-velodyne-laserscan/focal ros-noetic-velodyne-msgs/focal ros-noetic-velodyne-pointcloud/focal ros-noetic-velodyne/focal ros-noetic-visualization-marker-tutorials/focal ros-noetic-visualization-msgs/focal ros-noetic-visualization-tutorials/focal ros-noetic-viz/focal ros-noetic-voxel-grid/focal ros-noetic-webkit-dependency/focal ros-noetic-xacro/focal ros-noetic-xmlrpcpp/focalapt list --installed | grep "^ros"
after installing dependent packages