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?
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
I think you don’t have an extra swapfile on your jetson. You can add a new swap in two ways:
Like this guide How to Increase Swap Space on Jetson Modules?
Adding a new swap file 📊 jtop - jetson-stats 4.2.3
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]
— 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
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,
/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 | }
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: *** [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: *** [CMakeFiles/Makefile2:768: test/CMakeFiles/test_gazebo_ros_state.dir/all] Error 2
make: *** 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.
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.
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.