Introduction
Hi, this is Yu Zhou. I am a Duke graduate student in Mechanical Engineering and Materials Science department. I am one of the team members in the SHSbot (Smart Home Service Robot) project team in the ME 555 Capstone Course instructed by Professor George Delagrammatikas. This is my sub-project website, and I am mainly responsible for the path planning simulation for the SHSbot, and I also cooperated with my two teammates Jiaxun Liu and Shucheng Zhang, to engage in our project.
If you have any questions and suggestions, please feel free to contact me: yz442@duke.edu
zy2018666@gamil.com

Yu's Subproject
Gazebo Simulation with Moveit & Rvis

First step, we need to establish our ROS environment in Jetson Nano. NVIDIA Jetson Nano platform is built for autonomous machines, and it has a low power consumption and an affordable price tag, allowing it to run real-time computer vision and deep learning operations at the edge. There are various approaches online to teach beginners how to realize ROS installation and environment creation. Here is a relatively detailed tutorial for ROS and Jetson beginners, it includes specific commands and explanations which illuminate the function of each command. Also, there is another ROS installation tutorial which is more general and comprehensive. The ROS setup.bash script must be sourced as described on the ROS installation page.
Gazebo provides the ability to accurately and efficiently simulate populations of robots in complex various environments. After finished the setup of MoveIt, we were able to finish the Gazebo simulation integration, the MoveIt Setup Assistant helps setup the SHSbot to work with Gazebo, but there are still additional steps required to successfully run MoveIt in Gazebo. Regularly, we Install Gazebo using Ubuntu packages. At first, we need to grasp the basic concepts of ROS and already learnt through the ROS Tutorials. Then follow the steps of Gazebo installation tutorial to download the package and begin the installation. Here are several indispensable sub-steps:
- Test the stand-alone Gazebo works:
Before attempting to install the gazebo_ros_pkgs, make sure the stand-alone Gazebo works by running “gazebo” in terminal. Also, test adding a model by clicking on the “Insert” tab on the left and selecting a model to add. Test whether the right version Gazebo was installed to check version of Gazebo run “gazebo –version”. We also need to check where installed Gazebo located, and if it is in the correct location.
- Install gazebo_ros_pkgs(The set of ROS packages for interfacing with Gazebo are contained within a new meta package):
“gazebo_ros_pkgs” is a set of ROS packages that provide the necessary interfaces to simulate a robot in the Gazebo 3D rigid body simulator for robots. This is one of most significant packages in Gazebo installation. There are two approaches to Install gazebo_ros_pkgs: install Pre-Built Debian\Ubuntu binary packages and install from Source (on Ubuntu). We choose the second approach which needs to setup a Catkin Workspace which is a folder where allow users to modify, build, and install catkin packages to begin the installation, this step is relatively complex, and we follow this particular tutorial to complete the package installation.
- Testing Gazebo with ROS Integration:
To make sure that we have already setup and built ROS and Gazebo environment properly, the next step is to test whether we can run Gazebo through a simple rosrun command, after launching roscore if needed. These two commands will be the most frequent used commands: “source ~/catkin_ws/devel/setup.bash”, and ” roscore & rosrun gazebo_ros gazebo”
URDF in Gazebo
The Unified Robotic Description Format (URDF) is an XML file format used in ROS to describe all elements of a robot. To use a URDF file in Gazebo, some additional simulation-specific tags must be added to work properly with Gazebo. Here is the URDF generation tutorial.
- An element within each element must be properly specified and configured.
- Add an element for every joint and link
- Set proper damping dynamics
- Add actuator control plugins
- Add an element for the element
- Add a link if the robot should be rigidly attached to the world/base_link
- Verifying the Gazebo Model Works
- Viewing the URDF In Gazebo
The steps above are the basic steps to create URDF, but these steps are too tedious, a really deep understanding of kinematics to ensure that URDF in the subsequent development of the project can be available to implemented. Therefore, there is another approach which will be more efficient and more feasible for Mechanical Engineering student. We already have the integral 3D modeling of the SHSbot in SolidWorks, after doing some modifications and defining some joints, we exported the modeling Assembly to URDF from the SolidWorks to URDF Exporter. Here are two main parts of the modeling.
MoveIt which provides a platform for developing advanced robotics applications is a software for mobile manipulation, incorporating the latest developments in motion planning, manipulation, kinematics & dynamics, control and navigation. We supposed to combine Gazebo, ROS Control for a feasible development platform of SHSbot at first, then we finished the path planning via MoveIt.
The communication of Gazebo and Moveit is one of the most challengeable parts in my sub-project. For beginner, to establish the bridge between these two software, we need to have a relatively in-depth understanding of the relationships between ROS Control, Moveit , and Gazebo. As a rocky in Robot Arm, SHSbot is a huge challenge for me because of its complicated modeling, and original programming for various controllers which are also joint-state publishers. Therefore, doing research and learning the whole process from how to create URDF to how to do Gazebo Simulation with Moveit are crucial steps to develop the SHSbot.
After finished the setup of MoveIt, we were able to finish the Gazebo simulation integration, the MoveIt Setup Assistant helps setup the SHSbot to work with Gazebo, but there are still additional steps required to successfully run MoveIt in Gazebo.
- Fix the robot to the world coordinate system
- Add damping to the joint specifications
- Add inertia matrices and masses to the links
- Configure gazebo_ros_control, transmissions and actuators
- Adjust auto-generated ros_controllers.yaml
- Adjust auto-generated ros_controllers.launch
The steps above are relatively general steps for various kinds of robot arm to achieve the communication between Gazebo and Moveit. However, because the 3D modeling of SHSbot is based on armBOT which have been introduced in our project website. Since there are already some incomplete but usable “launch” and “controller” files in the armbot project file, but such incompleteness directly leads to the communication between various platforms cannot be successfully implemented, we found a robotic arm project similar to SHSbot as a reference. Besides, due to the limited running capability of jetson, and various joints, links, inertia of SHSbot needed to be defined and controlled, the path planning simulation of SHSbot is not very smooth. We applied the simplified version of the SHSbot modeling and here is the result of the simulation for path planning in Gazebo and Rivs&Moveit.
By comparing with the reference file, the missing controllers were generated and named, some yaml files were also modified.
- The commands were generated in the controller management files.
- Find the “launch” and “yaml” files that the armBOT lack of for Gazebo Simulation.
- Create the files such as “moveit_controller_manager. launch file”, “controllers.gazebo.yaml”, and so on, also do some modifications.
Finally, we got the following results, due to Jetson running overload, the simulation was not very smooth, it took many attempts to barely achieve the simulation of path planning a few times.
- 3D Modeling (Onshape or SolidWorks)
- Jetson Setup
- Gazebo and ROS control
- URDF Creation
- Communication between Moveit and Gazebo