This package contains the common algorithms in robotic arm, and I have developed it based on universal robot. It will be continuously updateing.

Robotic_Arm_Algorithms

It contains the common algorithms in robotic arm, and will be recording the development as soon as I have completed the any one algorithm. The chosen robot is universal robot which is the most popular collaborate robot in the world.

Algorithm List

Notice: In this repository, I have used ur5e robot and its urdf file need to be changed in different situation, like need or not a force/torque sensor in the end effector. Please check the urdf file seriously and run the algorithm, Thanks.

1. Admittance

In compliant control, admittance control and impedance control are the most common control algorithms and equivalent each other. For running this algorithms, there are only two commands:

First of all, running a gazebo environment and upload a universal robot. I usually chose a ur5e.

$ roslaunch ur_e_gazebo ur5e.launch

Then, running the admittance control algorithm and you can observe the performance of it.

$ roslaunch Admittance Admittance_test.lanch

In this lanch file, it contains a node to publish a wrench signal to imitate an external force caused by operator. If you want to run it without publish node and to publish by yourself other package, you can run the following command. And the performance is shown in following gif file.

$ roslaunch Admittance Admittance.launch

2. Hybrid Position Force Control

In industrial polishing, coating painting, and so forth, the robotic arm needs to be controlled to move along the surface with pressure. The constant pressure provides a vertical force along the surface and won't be changed during moving. Because of it, the end effector and contact surface exist friction which causes the polishing and painting.

In this control algorithms, I have used a car wheel to imitate a curve surface that needs to be processed. This control algorithm contains position servo and forces closed-loop control as its name.

First of all, running the gazebo environment which contains a universal robot and a car wheel beside it.

$ roslaunch ur_e_gazebo ur5e.launch

Then, running the hybrid position force control

$ roslaunch hybrid_position_force_control hybrid_position_force_control.launch

And then it needs to use the topic publish command in the terminal. It is recommended to move to $[0.1,0.4,0.45]$ which along the x Axis at first, and then move to $[0.1,0.4,0.3]$ in z Axis. This makes the end contact with the curve surface and has a little slope angle. According to the force close-loop algorithm, the end effector will change its orientation to adapt it. At last, you command it to move to $[-0,1,0.4,0.3]$ along the x Axis which is simulated in the polish experiment. And the performance is shown in the following gif file.

3. Rapidly-exploring Random Tree (RRT)

Performance

1. Admittance

1

2. Hybrid Position Force Control

2

Owner
Mingshan-Beal
B.Eng., Robotic Engineering; Research Assistant in State Key Laboratory of Synthetical Automation for Process Industries.
Mingshan-Beal
Comments
  • 'cartesian_state_msgs/PoseTwist.h'

    'cartesian_state_msgs/PoseTwist.h'

    hello, the system has the following error after catkin_make. Can you tell me where can I find the 'cartesian_state_msgs/PoseTwist.h'? Thank you for your help.

    In file included from /home/gaoxu/catkin_ws/src/Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/src/hybrid_position_force_control.cpp:8:0: /home/gaoxu/catkin_ws/src/Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/include/hybrid_position_force_control/hybrid_position_force_control.h:14:44: fatal error: cartesian_state_msgs/PoseTwist.h: 没有那个文件或目录 compilation terminated. Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/CMakeFiles/hybrid_position_force_control.dir/build.make:75: recipe for target 'Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/CMakeFiles/hybrid_position_force_control.dir/src/hybrid_position_force_control.cpp.o' failed make[2]: *** [Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/CMakeFiles/hybrid_position_force_control.dir/src/hybrid_position_force_control.cpp.o] Error 1 CMakeFiles/Makefile2:3049: recipe for target 'Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/CMakeFiles/hybrid_position_force_control.dir/all' failed make[1]: *** [Admittance-and-Application-simulation-devel/control_algorithm/hybrid_position_force_control/CMakeFiles/hybrid_position_force_control.dir/all] Error 2 Makefile:145: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j2 -l2" failed

  • WrenchSignalGenerate.cpp 如何修改 Wrench

    WrenchSignalGenerate.cpp 如何修改 Wrench

    您好: 十分感谢您的资料。我想请教一下如何在此文件中成功修改所模拟的虚拟wrench大小呢?我在原来的基础上进行了修改,例如: while (ros::ok()) { // wrench_msg.force.x = sin(t); // wrench_msg.force.y = sin(t); // wrench_msg.wrench.force.z = 5*sin(t); if(static_cast<int>(t)%10 < 5) { wrench_msg.wrench.force.x = 5; } else { wrench_msg.wrench.force.x = -5; } t += 1/TOPIC_HZ; wrench_pub.publish(wrench_msg); loop_rate.sleep(); } 但是在仿真中未能沿着力的方向(x)移动。另外想请教一下为何在rqt_plot中无法正确显示Wrench。非常感谢。(ROS Melodic + sim-devel branch) image

  • Some problems regarding /wrench

    Some problems regarding /wrench

    你好:

    感谢回复,在浏览了源码及尝试了sim-develnoetic两个branch后依然有以下几个问题想请教,希望您能有空答复: 在sim-devel branch下,似乎xacro文件中的六轴力传感器/WrenchSigbakGenerate都会通过消息/wrench发送到/Admittance。在不launchur5e.launch的情况下,单独发布话题/WrenchSignalGenerate能够正确生成fake wrench,如下图:

    Capture3

    然而,如果launchur5e.launch/WrenchSignalGenerate,(由于ft_sensor的干扰?)/wrench会产生巨大的震荡,如下图:

    Capture4

    下图是sim-develbranch下的Node Graph(/wrench有震荡):

    Capture1

    以上是sim-devel branch的问题,同样我也尝试了noeticbranch。/wrench/force/wrench/torque依然有一个微小变化的值,/wrench_fake能够通过/WrenchSigbakGenerate正常发布但是无法发送到/Admittance,如下图:

    Capture2

    因此,我的疑惑是:

    1. ft_sensor的作用?以及为何会有初始值及存在震荡
    2. noeticbranch下正确的Node Graph?/gazebo->/wrench是存在的么?我注意到control_algorithms/admittance/launch/Admittance.launch文件中:<arg name="TOPIC_WRENCH_STATE" default="/wrench"/>而不是使用/wrench_fake,不知道这里是否正确?
    3. 以上两个branch的问题是否有一些提示呢?

    感谢您的时间,期望您有空解答。Thanks! Env: UBuntu 20 + Noetic, complied through catkin build

  • compile error

    compile error

    -- Could not find the required component 'industrial_robot_status_interface'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found. CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not find a package configuration file provided by "industrial_robot_status_interface" with any of the following names:

    industrial_robot_status_interfaceConfig.cmake
    industrial_robot_status_interface-config.cmake
    
  • About Wrench_Fake.launch file

    About Wrench_Fake.launch file

    Hello, I have a problem about the Wrench_Fake.launch file, when I started the launch file, it says this. image Is this because I need to add information to the launch file by my own?

  •  Could not load controller 'cartesian_velocity_contraller_sim' because the type was not specified.

    Could not load controller 'cartesian_velocity_contraller_sim' because the type was not specified.

    [ERROR] [1647413655.498812691, 0.289000000]: Could not load controller 'cartesian_velocity_contraller_sim' because the type was not specified. Did you load the controller configuration on the parameter server (namespace: '/cartesian_velocity_contraller_sim')? Error when loading 'cartesian_velocity_contraller_sim' [ERROR] [1647413655.501064126, 0.291000000]: Could not start controller with name 'cartesian_velocity_contraller_sim' because no controller with this name exists

    hi, the erroe was occured when i run 'roslaunch ur_e_gazebo ur5e.launch controller:=cartesian_velocity_controller_sim' in ros.

  • Problems connecting to a real robot

    Problems connecting to a real robot

    I tried incorporating the real-robot version into my own UR5e startup file. But running have an error: [ERROR] [1645000038.861793476]: Could not load controller 'cartesian_velocity_controller_sim' because controller type 'cartesian_controller/CartesianVelocityController' does not exist. It doesn't seem to recognize your custom controller type, how can I do for this?

  • Would it be possible to share your paper

    Would it be possible to share your paper

    Hi! Thank you for your wonderful work. I was wondering if you have any publications/thesis regarding this project? If you have time, would you mind sharing your papers? That would be helpful for the community to understand your algorithms and follow your work. Thank you so much!

  • compile error

    compile error

    ubuntu18.04 melodic Robotic_Arm_Algorithms/universal_robot_control/cartesian_velocity_controller/include/cartesian_velocity_controller/kinematics_base.h:156:62: error: conversion from ‘urdf::LinkConstSharedPtr {aka std::shared_ptr}’ to non-scalar type ‘boost::shared_ptr’ requested boost::shared_ptr link_ = model.getLink(tip_name); ~~~~~~~~~~~~~^~~~~~~~~~

  • About the real robot application of the `joint torque controller`

    About the real robot application of the `joint torque controller`

    I tried to apply the code to my real UR3 robot. The followings have been done:

    1. change the ur_robot_driver/config/ur3_controller.yaml
    2. change the bringup launch file
    3. change the load_ur3.launch "hardware_interface/PositionJointInterface" to EffortJointInterface

    It gives the following ERROR for the joint torque controller

    This controller requires a hardware interface of type 'hardware_interface::EffortJointInterface'. Make sure this is registered in the hardware_interface::RobotHW class.
    

    I have reviewed the ur_robot_driver, and find no place to define a RobotHW for joint torque controller, Can you tell us the details of applying the controller to a real UR robot?

  • 在编译您的代码时中出现错误

    在编译您的代码时中出现错误

    /home/lwd/ur5_ws/src/Compliant-Control-and-Application-noetic/control_algorithms/impedance/include/impedance/Impedance.h:27:10: fatal error: joint_state_msg/Jointstate.h: 没有那个文件或目录 #include "joint_state_msg/Jointstate.h" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 缺少Jointstate.h这个.h文件,我确认了一下,确实没有,请问如何解决呢

  • urdf添加力传感器

    urdf添加力传感器

    您好,您在readme文件中说In this repository, I have used ur5e robot and its urdf file need to be changed in different situation, like need or not a force/torque sensor in the end effector. Please check the urdf file seriously and run the algorithm, Thanks.我尝试给机械臂添加力传感器,但都失败了,请问您有相关资料或者是有添加了力传感器的urdf文件吗?

Control of 4 DOF robotic arm using Bluetooth HC-05 Sensor
Control of 4 DOF robotic arm using Bluetooth HC-05 Sensor

SERV-E -> "At your Service" Problem Statement With the current boom of technology where the whole world is running towards digitisation and automation

Apr 27, 2022
Contains firmware and software used for the bead sprite printer v2 robotic system

Bead-Sprite-Printer-V2 Contains firmware and software used for the bead sprite printer v2 robotic system bead_fuser_arduino - this folder contains the

Dec 29, 2022
WIP: ESP32 powered robot dog, quadruped robot. This is just code, hardware in the other repositories
WIP: ESP32 powered robot dog, quadruped robot. This is just code, hardware in the other repositories

Small Robot dog (quadruped) Hardware ESP32 IMU (not implemented) 12 servos TowerPro mg90d (hope it will work) Two 18650 Software Arduino IDE compatibl

Dec 22, 2022
2D/3D Registration and system integration for image-based navigation of orthopedic robotic applications, inculding femoroplasty, osteonecrosis, etc.

Registration and System Integration Software for Orthopedic Surgical Robotic System This repository contains software programs for image-based registr

Sep 3, 2022
Let's upgrade cheap off-the-shelf robotic mowers to modern, smart RTK GPS based lawn mowing robots!
Let's upgrade cheap off-the-shelf robotic mowers to modern, smart RTK GPS based lawn mowing robots!

OpenMower Join the Discord server for OpenMower discussion: HERE About the Project ⚠️ DISCLAIMER: IF YOU ARE NOT 100% SURE WHAT YOU ARE DOING, PLEASE

Jan 4, 2023
A ROS package for mobile robot localization with 2D LiDAR

mcl_ros About mcl_ros mcl_ros is a ROS package for mobile robot localization with 2D LiDAR. To implement localization, Monte Carlo localization (MCL)

Oct 13, 2022
Baseline implementations for common algorithms in C++

Algo Baselines Baseline implementations for common algorithms in C++. The code in this repo will probably not be generic enough that you can use it fo

Nov 23, 2022
Arduino library for controlling the movements of a 2wd robotic car using a H-bridge motor driver L298P
Arduino library for controlling the movements of a 2wd robotic car using a H-bridge motor driver L298P

RoboticCar Arduino library for controlling the movements of a 2wd robotic car using a H-bridge motor driver L298P Install the library Download this re

Nov 21, 2021
AI-powered Smart Robotic Process Automation 🤖
AI-powered Smart Robotic Process Automation 🤖

Automagica The Automagica project began in 2018 with a focus on creating open source software to ensure that Robotic Process Automation technologies w

Dec 27, 2022
Contains Algorithms and Competitive Programming sites solutions (codeforces, codechef, etc.)

✨ hacktoberfest2021 ?? ?? Contributing to hacktoberfest 2021 Welcome to hacktoberfest 2021 Public Repository. ????‍?? A month-long celebration from Oc

Oct 22, 2022
A small RTOS for ARM Cortex-M3/M4 based Microcontrollers.
A small RTOS for ARM Cortex-M3/M4 based Microcontrollers.

A tiny RTOS for ARM Cortex-M3/M4 based Microcontrollers. Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Proje

Dec 31, 2022
PHP Encoder, protect PHP scripts in PHP 8 and PHP 7, High Performance, Compitable with X86_64, MIPS, ARM platform and Ubuntu/Centos/OpenWRT system.

What's FRICC2? FRICC2 is a PHP Script encryption tool. When you are developing a commercial software using PHP, the script can be distributed as encry

Dec 12, 2022
A simulation for QKM HL6-0900 6DOF robot based on gazebo
A simulation for QKM HL6-0900 6DOF robot based on gazebo

HLRobot_gazebo A simulation for QKM HL6-0900 6DOF robot based on gazebo Demo Demo Link Install sudo apt-get install ros-melodic-ros-control ros-melodi

Jul 21, 2022
An experimental operating system for x86 and ARM
An experimental operating system for x86 and ARM

Odyssey - an experimental operating system for x86 and ARM

Dec 28, 2022
Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout.
Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout.

Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. This is the Miryoku implementation for QMK.

Dec 25, 2022
Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout
Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout

Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. Miryoku KMonad is the Miryoku implementation for KMonad.

Dec 29, 2022
Universal fix for Google SafetyNet on Android devices with hardware attestation and unlocked bootloaders.

Universal SafetyNet Fix This is a universal fix for SafetyNet on devices with hardware-backed attestation and unlocked bootloaders (or custom verified

Jan 3, 2023
A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Jul 21, 2022
A lightweight ARM reverse engineering tool.

eydis A lightweight (basic and slow) ARM reverse engineering tool. I. Requierements macOS/Linux, Basics compiling tools, The SQLite3 + readline framew

Aug 15, 2022