It contains the compliant control algorithms in robotic arm, and the chosen robot is universal robot which is popular collaborate robot in the world.
mkdir catkin_ws/src && cd catkin_ws/src
git clone https://github.com/MingshanHe/Compliant-Control-and-Application.git
catkin build (or cd .. && catkin_make)
If there is come up with some errors during compile process, you might need to install some ros packages for support this project, I recommend you to run following command or search the compile error in Google or Baidu and so on.
rosdep install -i --from-path src --rosdistro noetic --ignore-src -r -y
If there is an error 'Unable to locate ...', try following commands.
echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/ros-latest.list
sudo apt update
- Clone xarm repository [https://github.com/xArm-Developer/xarm_ros]
- Copy stl files in
xarm_ros/xarm_description/meshes/xarm6/visual/
toCompliant-Control-and-Application/robots/universal_robot/fmauch_universal_robot/ur_description/meshes/ur5e/visual/
adding_xarm
to the end of file names. - Rename the values of
visual
andcollision
inCompliant-Control-and-Application/robots/universal_robot/fmauch_universal_robot/ur_description/config/ur5e/visual_parameters.yaml
to the xarm's stl files. - Copy the values in
xarm_ros/xarm_description/urdf/xarm6.urdf.xacro
toCompliant-Control-and-Application/robots/universal_robot/fmauch_universal_robot/ur_description/urdf/inc/ur_macro.xacro
- Add the definitions such as
joint1_lower_limit
to<xacro:macro name="ur_robot" params="
. - Do not change the name of links and joints as defined in
ur_macro.xacro
.
- Add the definitions such as
using the following command to check the self-defined controller. Like:cartesian_velocity_controller
rospack plugins --attrib=plugin controller_interface
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.
roslaunch ur_gazebo ur5e_bringup.launch transmission_hw_interface:=hardware_interface/PositionJointInterface specified_controller:=cartesian_velocity_controller
roslaunch admittance Admittance.launch
After the robot has moved to the desired pose, run the following commands to generate fake wrench signal
roslaunch admittance Wrench_Fake.launch
roslaunch ur_gazebo ur5e_bringup.launch transmission_hw_interface:=hardware_interface/EffortJointInterface specified_controller:=joint_torque_controller
roslaunch impedance Impedance.launch
roslaunch mir_gazebo mir_ur5e.launch tf_prefix:=robot1
roslaunch admittance HybridAdmittance.launch tf_prefix:=robot1
roslaunch ur_gazebo ur5e_bringup.launch transmission_hw_interface:=hardware_interface/PositionJointInterface specified_controller:=cartesian_velocity_controller environment:=polish
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 the pose [-0.1, 0.3, 0.3, 0.707, -0.707, 0.0, 0.0].
rostopic pub /desired_carteisan_pose_cmd geometry_msgs/Pose "position: x: -0.10 y: 0.30 z: 0.30 orientation: x: 0.707 y: -0.707 z: 0.0 w: 0.0"
roslaunch mir_gazebo mir.launch
There are some pre-settings that will be needed to run in this project. Three mode is provided to be tested.
- Mobile Robot(mir robot)
- Mobile Robot(mir robot) with a Robotic Arm(UR5E)
- Mobile Robot(mir robot) with a Robotic Arm(UR5E) and a Gripper(Robotiq)
For change amoung them, this project have provided the setting params in the mir.launch
file. And you also need to change the start controller for the robotic arm in mir_gazebo_common.launch
Gmapping:
roslaunch mir_navigation hector_mapping.launch
MoveBase Framework:
roslaunch mir_navigation move_base.xml with_virtual_walls:=false
rviz -d $(rospack find mir_navigation)/rviz/navigation.rviz
AMCL Localization:
roslaunch mir_navigation amcl.launch initial_pose_x:=10.0 initial_pose_y:=10.0
MoveBase Framework:
roslaunch mir_navigation start_planner.launch \
map_file:=$(rospack find mir_gazebo)/maps/maze.yaml \
virtual_walls_map_file:=$(rospack find mir_gazebo)/maps/maze_virtual_walls.yaml
rviz -d $(rospack find mir_navigation)/rviz/navigation.rviz