As we are making progress on the development of robotic applications in our lab, we experience benefits from providing an easy-to-deploy common ROS Kinetic environment for our developers so that there is no initial setup time needed before starting working on the real code. At the same time, any interested users that would like to test and navigate our code implementations could do this with a few commands. One git clone command is now enough to download our up-to-date repository to your local computer and run our ROS kinetic environment including a workspace with the current ROS projects.
To reach this goal we created a container that includes the ROS Kinetic distribution, all needed dependencies and software packages needed for our projects. No additional installation or configuration steps are needed before testing our applications. The git repository of reference can be found at this link: https://github.com/icclab/rosdocked-irlab
After cloning the repository on your laptop, you can run the ROS kinetic environment including the workspace and projects with these two simple commands:
cd workspace_included ./run-with-dev.sh
This will pull the robopaas/rosdocked-kinetic-workspace-included container to your laptop and start it with access to your X server.
The two projects you can test
Once you are inside the container you will have everything that is needed to test and play around with the two projects we are currently working on, namely robot navigation and pick&place. Both of the projects are based on the hardware we recently acquired. The hardware is our SUMMIT-XL Steel from Robotnik, equipped with a Universal Robots UR5 arm and a Schunk Co-act EGP-C 40 gripper (see a picture of the hardware below). Besides this, we mounted a Intel Realsense D435 camera on the UR5 arm and two Scanse Sweep LIDARs on 3D-printed mounts. Please have a look at our previous blog post for more details about the robot setup and configuration.
robot navigation project
You can test our robot navigation project by launching a single launch file from the icclab_summit_xl project in the container:
roslaunch icclab_summit_xl irlab_sim_summit_xls_amcl.launch
A Gazebo simulation environment will be started with an indoor simulated scenario where the Summit_xl robot can be moved around. Additionally Rviz will be launched for visualization of the Gazebo data (see picture below).
By selecting the 2D Nav Goal top bar option in Rviz it is possible to give a navigation goal on the map in Rviz. The robot will start planning a path towards the goal, avoiding obstacles thanks to the environment sensing based on the LIDAR scans. If a viable path is found, the robot will move accordingly.
You can test our pick&place application by calling another launch file from the icclab_summit_xl project which is part of the workspace in the container:
roslaunch icclab_summit_xl irlab_sim_summit_xls_grasping.launch
Also in this case a Gazebo simulation environment will be started, with an empty world scenario with the Summit_xl robot and a sample object to be grasped placed in front of the robot (being the deployed gripper opening as small as 1.8cm the selected object is pretty small). Also Rviz will be launched for visualization of the Gazebo data (see picture below) with Moveit being configured for the arm movement.
As visible from the Rviz visualization picture above, an octomap is configured for collision avoidance in the arm movements. The octomap is built based on the pointcloud received from the camera mounted on the arm. A first simple test to see the UR5 arm moving, is to define a goal for the end-effector of the arm and make moveit plan a possible path. If a plan is found it can be executed and see the resulting arm movement.
To test our own python scripts for the pick&place application, you can run the following commands within the container:
cd catkin_ws/src/icclab_summit_xl/scripts python pick_and_place_summit_simulation.py
The python script will move the arm towards an initial position so that the object to be grasped can be seen with the front and the arm-mounted cameras. A pointcloud will be built based on the pointcloud from both cameras. Based on the resulting pointcloud, the object to grasp will be identified and a number of possible poses will be found for the gripper to grasp the object. Then moveit will look for a collision-free movement plan to grasp the object. If all of these steps are successfully executed, the object will be grasped and a new movement plan will be computed for placing the object on top of the robot (note that this last step might require some more time as we are adding orientation constraints to the object placement). You can watch a video of our pick&place simulation you can perform with our project below.
As stated earlier, our default simulation setup follows our acquired hardware and uses, therefore, a Schunk gripper. However, you can simulate also a Robotiq gripper for the given robot configuration by changing a parameter when launching the project and by using a second python script as reported below:
roslaunch icclab_summit_xl irlab_sim_summit_xls_grasping.launch robotiq_gripper:=true cd catkin_ws/src/icclab_summit_xl/scripts python pick_and_place_summit_simulation_robotiq.py