šŸ¤–Have you ever tried Chat.M5Stack.com before asking??šŸ˜Ž
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Harnessing the Power of ROS and MoveIt in Robotic Arm Manipulation

    PROJECTS
    ros python robotics m5stack-basic esp32
    1
    1
    1.9k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y
      Yuly12
      last edited by

      Introduction

      This article will document my experience using myCobot 280 M5stack in ROS. Why use ROS? Because when it comes to robotics, it's hard to avoid the ROS operating system.
      Today is our first time using this system. Today, I will start with an introduction to ROS, the configuration of the environment, and the use of mycobot280 in ROS.

      ROS

      ROS (Robot Operating System) is a flexible framework for writing robot software. It is a semi-open source project that provides researchers and developers with a set of tools and libraries to help them create various robot applications. ROS is mainly used for research and development of various robot systems, such as autonomous vehicles, service robots, industrial robots, drones, etc. It makes the development of robots more efficient and enhances the functionality and flexibility of robots. The two most notable modules in the ROS operating system are navigation and robotic arm control (moveit). Moveit allows users to quickly build robotic arm models and implement robotic arm control, such as modeling, kinematic solution, motion planning, obstacle avoidance, and more. Given such a powerful system, I want to use it to simulate some functions of the robotic arm, such as obstacle avoidance, path planning, etc.
      alt text

      Environment configuration

      ROS primarily supports operating systems like Ubuntu (Linux) and Mac OS (with partial support). The most common usage is on the Ubuntu system. My computer is installed with Ubuntu 18.04 version. The corresponding ROS version for Ubuntu 18 is Melodic. Different versions of Ubuntu correspond to different ROS versions.

      ubuntu16.04-kinetic
      ubuntu18.04-melodic
      ubuntu20.04-noetic
      

      Since my computer has already had the system and ROS environment installed, I won’t record each step here. The main focus will be on the operations within ROS. For the installation of the Ubuntu system and the setup of the ROS environment, you can search on Google. The ROS official website also has detailed installation tutorials.
      The scenario I’m using today involves controlling a robotic arm with MoveIt, so the demand for computer hardware is not high. Please note that if you are using features like SLAM radar navigation, you might need a higher-spec computer to handle the computational power. The standard to check whether ROS has been successfully installed is to open the terminal and type ā€œroscoreā€. If the content that appears is the same as the image below, it means the installation was successful.
      alt text
      Let’s use the ROS!

      Project

      To create a robotic arm in ROS and use some path planning features, you need to perform the following steps:

      • list itemCreate a URDF file, which is the model of the robotic arm.

      • list itemLoad the URDF file into the ROS server.

      • list itemUse RViz for visualization.

      • list itemCreate a MoveIt configuration package.

      • list itemUse MoveIt for motion planning.

      Creating a URDF file

      Creating a URDF file First, we need to create a URDF (Unified Robot Description Format) file for the robotic arm. This file is crucial as it describes the properties of the robotic arm, such as joints, links, and sensors, in the form of a 3D model. Since the product is the myCobot 280 M5Stack robotic arm from Elephant Robotics, Elephant Robotics has provided a URDF file for the myCobot 280 on Github, which describes some physical properties of the robotic arm.
      How to generate a URDF file:
      You need to use CAD software to create the model, ensuring that the 3D model you create matches the actual size of the robotic arm. Because the exported model needs to be in a format that ROS can accept, it is usually a DAE (Collada) file.
      alt text
      alt text

      Load URDF to ROS server

      Create a ROS package
      To create a package to store the URDF file, execute the following code in the terminal:

      catkin_create_pkg mycobot_description rospy std_msgs sensor_msgs
      

      Here, ā€˜rospy’, ā€˜std_msgs’, and ā€˜sensor_msgs’ are dependency packages in ROS. Add the generated URDF file to the mycobot_description/urdf directory.

      Create a launch file
      In the mycobot_description/launch directory, create a file named load_urdf.launch and add the following content to it.

      <launch>  <param name="robot_description" command="$(find xacro)/xacro.py $(find mycobot_description)/urdf/mycobot.urdf.xacro" /></launch>
      

      Lanuch ROS file
      Open the terminal and enter the following command:

      roslaunch my_robot_description load_urdf.launch
      

      After running, we can see the model we created in RViz.
      alt text

      Configure MoveIt

      Start MoveIt Setup Assistant:

      In a terminal, run the following command to start MoveIt Setup Assistant:

      roslaunch moveit_setup_assistant setup_assistant.launch
      

      alt text
      Load URDF in MoveIt In the main interface of MoveIt Setup Assistant, click the ā€œCreate New MoveIt Configuration Packageā€ button. Then, in the pop-up dialogue box, select my URDF file (in the ROS parameter robot_description). Click the ā€œLoad Filesā€ button to load your URDF file. If the image as shown below appears, it means the file has been loaded successfully.
      alt text

      Configure Robot

      Configure your robot according to your needs. Here are a few configurations briefly introduced:

      • Self-Collisions: MoveIt will automatically calculate the self-collision matrix of your robot. You can
        click the ā€œRegenerate Default Collision Matrixā€ button to generate a default self-collision matrix.
      • Virtual Joints: You can define virtual joints for your robot. Virtual joints are often used to connect your robot to the world.
      • Planning Groups: You can define the planning groups of your robot. Planning groups are a set of joints and links that need to move together. For example, you can create a planning group that includes all arm joints.
      • Robot Poses: You can define preset poses for your robot. These preset poses can be reused in planning.

      After the configuration is completed, a .launch file will be generated, and we can use the robotic arm in moveit by running it.
      alt text
      Let’s see how the moveit function performs path planning. By dragging the coordinates of the end of the robotic arm, we can make changes to the movement of the robotic arm, and also randomly generate paths.
      alt text
      Object obstacle avoidance

      We add an obstacle in MoveIt for the robotic arm to avoid. We add a cube, so the robotic arm will navigate around it when it follows its trajectory.
      alt text
      In addition to this, MoveIt has many features. For instance, motion planning, which can perform path planning for multi-joint robots, avoid collisions, and also use various motion planning algorithms like RRT, EST, LBKPIECE, etc. It also includes collision detection, which can carry out complex 3D collision detection, including self-collision and environmental collision (obstacles). Furthermore, it offers simulation capabilities, and can be integrated with the Gazebo robot simulator for realistic physical simulation, among other features.

      Summary

      MoveIt provides a comprehensive set of tools for research into the motion planning and control of robotic arms, eliminating the need to build complex motion planning systems from scratch. This allows developers to focus more of their energy on implementing specific application functions, rather than on solving underlying motion planning and control problems. Overall, ROS and MoveIt provide strong support for the development of robotic technology. They not only reduce development difficulties and improve development efficiency, but also promote innovation and application in robotic technology. Whether you are a researcher in robotic technology or a developer in practical applications, ROS and MoveIt will be indispensable tools for you.

      In the future, I will continue to explore more robotic arm projects and share my findings and achievements from time to time. If you find any errors in this article, feel free to communicate with me. If you like this article, your likes and comments will be the greatest support for me!

      1 Reply Last reply Reply Quote 1
      • First post
        Last post