How to release the end effector from leveling. [closed]
We are currently using a 6-axis robot arm (MyCobot) controlled by MoveIt and with the addition of a gripper. Moveit's automatic route generation cannot sample the valid state of the goal tree if error: RRTConnect: z = 0.15 or less. I want to grab something close to the ground. As you can see in this image, I think one of the factors is that the angle of the 4th axis does not change downward. After investigating, I think that the function to keep the position of the end effector horizontal is working. Is there a way to unlock it and use Move to bring the end effector closer to the ground? We have confirmed that the designated position is a position where the target can be achieved.
pick_and_placer.cpp
#include <ros/ros.h>
#include <moveit/move_group_interface/move_group_interface.h>
int main(int argc, char **argv) {
ros::init(argc, argv, "pickandplacer");
ros::NodeHandle nh;
ros::AsyncSpinner spinner(2);
spinner.start();
moveit::planning_interface::MoveGroupInterface arm("mycobot_arm");
arm.setPoseReferenceFrame("base_link");
ROS_INFO("Moving to prepare pose");
geometry_msgs::PoseStamped pose1;
pose1.header.frame_id = "base_link";
pose1.pose.position.x = 0.0;
pose1.pose.position.y = 0.25;
pose1.pose.position.z = 0.15;
moveit::planning_interface::MoveItErrorCode ret;
ROS_INFO("move to WP1");
arm.setPoseTarget(pose1);
ret = arm.move();
if (!ret) {
ROS_WARN("Fail: %i", ret.val);
arm.setNamedTarget("vertical");
arm.move();
}
ros::Duration(1.5).sleep();
ros::shutdown();
return 0;
}
URDF
<?xml version="1.0" ?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter"
xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"
xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface"
xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor">
<xacro:property name="width" value=".2" />
<material name="dark blue">
<color rgba="0.1 0.1 0.9 1" />
</material>
<material name="gray">
<color rgba="0.8 0.8 0.8 1" />
</material>
<link name="world"/>
<link name="base_link"/>
<joint name="world_to_base_link" type="fixed">
<parent link="world"/>
<child link="base_link"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</joint>
<!-- holder joint & link -->
<joint name="base_bottom_joint" type="fixed">
<parent link="base_link" />
<child link="base_bottom_link" />
<origin xyz="0 0 0" rpy="0 0 0" />
</joint>
<link name="base_bottom_link">
<inertial>
<origin xyz="0 0 0" />
<mass value="3" />
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
</inertial>
<visual name="base_bottom">
<origin xyz="0 0 0.01" rpy="0 0 0" />
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
<geometry>
<box size="0.15 0.15 0.02" />
</geometry>
</visual>
<collision name="base_bottom">
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<box size="0.15 0.15 0.02" />
</geometry>
</collision>
</link>
<!-- body joint ...
Please add picture to your question vs using the link. Just added you points. Very good question. Unfortunately I don’t have suggestions
@osilva thank you.
This may be a problem related to MyCobot's hardware, so I decided to contact it officially. https://github.com/elephantrobotics/m...
Hope you get support to resolve this issue.
It was possible by adding angle information.
pose.pose.orientation.x = 0.0; pose.pose.orientation.y = 0.707106; pose.pose.orientation.z = 0.0; pose.pose.orientation.w = 0.707106;