Gazebo Classic in Isaac Ros Docker

Hello ,
I was wondering if it is possible to use gazebo classic instead of the newer ones inside the isaac ros docker image. I have gz garden installed but i cant get some plugins to work and i’ve only worked with the gazebo classic before.
I have tried the official instalation documented here:

But running “sudo apt install ros-humble-gazebo-ros-pkgs” Returns E: Unable to locate package ros-humble-gazebo-ros-pkgs
and building from source also fails.
Iam Running this on a Jetson Orin Nano Devkit with the image given on the original nvdia sites
Sorry if this is not the right place to ask.

Hi @flavionzambi ,

As you notice, yes, we don’t have a built gazebo on our farm.
The only way to have Gazebo is to manually build from the source.

Which type of failure did you get when you complied gazebo?

Best,
Raffaello

Hello

After downloading all the packages and running colcon build i succesfully build 2 packages : gazebo_dev , gazebo_msgs but on the third one : gazebo_ros my jetson orin freezes on like 70%. I couldnt get a screenshot so iam attaching a picture i took after it froze


The steps i took are the sames one as on the link i sent before under the build tutorial ofcourse.

Have you checked if there is enough memory to compile Gazebo on your Jetson? You may need to allocate more cache on your device.

You can add a swap file to increase the size.

I believe i have ? Im not sure if i have to check seperatly for the docker or something specific but this is mine storage:
jetson@jetson:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk1p1 56G 41G 14G 76% /
none 3,1G 0 3,1G 0% /dev
tmpfs 3,2G 36K 3,2G 1% /dev/shm
tmpfs 649M 20M 629M 3% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 3,2G 0 3,2G 0% /sys/fs/cgroup
tmpfs 649M 20K 649M 1% /run/user/124
tmpfs 649M 32K 649M 1% /run/user/1000
/dev/loop0 16M 78K 16M 1% /media/jetson/L4T-README
jetson@jetson:~$ free -m
total used free shared buff/cache available
Mem: 6480 1857 2087 33 2535 4374
Swap: 3240 0 3240

Hi Flavio,

I think you don’t have an extra swapfile on your jetson. You can add a new swap in two ways:

Manually adding

Like this guide How to Increase Swap Space on Jetson Modules?

jtop

Adding a new swap file 📊 jtop - jetson-stats 4.2.3

Best,
Raffaello

Hello
I did create an extra swap file and the build got further or alteast went on for longer before eventually failing with this Error:
[Processing: gazebo_ros]ete] [gazebo_ros:build 70% - 27min 34.4s]
[Processing: gazebo_ros]
[Processing: gazebo_ros]
[Processing: gazebo_ros]
[Processing: gazebo_ros]
[Processing: gazebo_ros]
[Processing: gazebo_ros]
— stderr: gazebo_ros
CMake Warning at /usr/src/gtest/CMakeLists.txt:54 (project):
VERSION keyword not followed by a value or was followed by a value that
expanded to nothing.

CMake Deprecation Warning at /usr/src/gtest/CMakeLists.txt:56 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.

Update the VERSION argument value or use a … suffix to tell
CMake that the project does not need compatibility with older versions.

In file included from /usr/include/c++/9/vector:67,
from /usr/include/c++/9/functional:62,
from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/9/algorithm:71,
from /usr/include/ignition/math6/gz/math/Helpers.hh:20,
from /usr/include/ignition/math6/gz/math/Quaternion.hh:20,
from /usr/include/ignition/math6/gz/math/Pose3.hh:20,
from /usr/include/ignition/math6/ignition/math/Pose3.hh:18,
from /usr/include/sdformat-9.8/sdf/Actor.hh:23,
from /usr/include/sdformat-9.8/sdf/sdf.hh:2,
from /usr/include/gazebo-11/gazebo/test/ServerFixture.hh:29,
from /workspaces/isaac_ros-dev/src/gazebo_ros_pkgs/gazebo_ros/test/test_gazebo_ros_state.cpp:15:
/usr/include/c++/9/bits/stl_vector.h: In instantiation of ‘void std::_Vector_base<_Tp, _Alloc>::_M_deallocate(std::_Vector_base<_Tp, _Alloc>::pointer, std::size_t) [with _Tp = Ogre::ParameterDef; _Alloc = Ogre::STLAllocator<Ogre::ParameterDef, Ogre::CategorisedAllocPolicyOgre::MEMCATEGORY_GENERAL >; std::_Vector_base<_Tp, _Alloc>::pointer = Ogre::ParameterDef*; std::size_t = long unsigned int]’:
/usr/include/c++/9/bits/stl_vector.h:332:2: required from ‘std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = Ogre::ParameterDef; _Alloc = Ogre::STLAllocator<Ogre::ParameterDef, Ogre::CategorisedAllocPolicyOgre::MEMCATEGORY_GENERAL >]’
/usr/include/c++/9/bits/stl_vector.h:484:7: required from here
/usr/include/c++/9/bits/stl_vector.h:352:7: internal compiler error: Segmentation fault
352 | }
| ^
0xffffaf051e0f __libc_start_main
…/csu/libc-start.c:308
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-9/README.Bugs> for instructions.
make[2]: *** [test/CMakeFiles/test_gazebo_ros_state.dir/build.make:76: test/CMakeFiles/test_gazebo_ros_state.dir/test_gazebo_ros_state.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:768: test/CMakeFiles/test_gazebo_ros_state.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…
make: *** [Makefile:146: all] Error 2

Failed <<< gazebo_ros [30min 42s, exited with code 2]

Summary: 2 packages finished [30min 54s]
1 package failed: gazebo_ros
1 package had stderr output: gazebo_ros
2 packages not processed

Also i was running jtop to monitor the mem usage and noticed that my memory was being used fully along with all of the cores of cpu but the swap file remained at 1G/7.2G which was there even before i started the compile. Was the swap memory even used? Or am i supposed to make it available somehow for the docker.
Also thanks for helping me iam not sure if this still belongs on this forum

Sorry after adding --executor sequential to the colcon build option i succesfully build the gazebo packages and regarding the swap file usage i didnt notice that the overview of jtop got stuck and only needed to be refreshed to show the usage of the swap file which was used succesfully.
Thanks for helping me with this issue iam trying to learn as much as i can coming from electrical engineering.

With that i would also want to ask will i need to build the gazebo package if i now exit the docker? I dont think i would have to but if yes how would i prevent that.

Also how do i edit the docker image to install some ros packages on the start up using apt-get install so far i just run it on each restart as i dont know which script to edit and include it there.

Again great thanks in helping, Although I’ll probably be here again soon asking for help.

Best Regards,
Nzambi

happy to help :-)

About Gazebo, I don’t know where all binaries are stored after the build.
Such a reference: Developer Environment Setup — isaac_ros_docs documentation
If all builds are in ~/workspaces/isaac_ros-dev you should find on your host (outside the docker) all build and install folders. (build, install, log)
I suggest checking on the Gazebo documentation

You should build a new docker image that automatically installs all Isaac ROS packages or commits your current container, but I think you are not pretty familiar with docker, I suggest doing some tests on docker to figure out how it works.

Best,
Raffaello

Yes i already got to it since it seems that is my bottleneck but im already making the image that downloads all the packages since that is the only part i need to do(as in not needing to rebuild). Also got to forwading some usb devices to the docker. Hopefully Ill get it all under control soon.
Thanks again.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.