Hey guys,
this is my second question in here and hopefully the first to get answered.
So I started working with Dynamixel Motors this week. I am trying to move a 5DOF arm with MoveIt!. The problem is that somehow I can't seem to smooth out the motion in any way. I updated the latency timer on the USB-Port to 1ms now the reading are at approx. 110Hz (12.5Hz with the default 16ms on Ubuntu):
~$ rostopic hz /motor_states/pan_tilt_port
subscribed to [/motor_states/pan_tilt_port]
average rate: 111.085
min: 0.007s max: 0.011s std dev: 0.00060s window: 111
average rate: 108.620
min: 0.007s max: 0.024s std dev: 0.00153s window: 217
average rate: 108.171
min: 0.007s max: 0.024s std dev: 0.00131s window: 324
average rate: 108.144
min: 0.007s max: 0.024s std dev: 0.00118s window: 432
average rate: 108.132
min: 0.006s max: 0.024s std dev: 0.00117s window: 465
So far so good I guess. The movement with 1m/s velocity seems to be somewhat smooth as seen in the attached graph: (EDIT* well I dont seem to be able to upload without 5 points so here is a [link](https://imgur.com/xlaQfdC))
- As you can see, the error is building up over time. This tells me that the controller speed seems to be wrong. I can't however change anything about it or at least I don't know how to.
- The second problem is at the end, where the "goal_pos" already reached the destination and the "current_pos" is not. The velocity at that point is set to 0 all of a sudden as if the reading of the current position is disregarded and the whole process slowy creeps to the desired position.
- Next problem I see is that the velocity is not smoothly updated. Its jumping up and down and seems to have a lot lower frequency than the position which might be the reason the next thing happens.
So as you can see on [this graph](https://imgur.com/Ql8La9o) the position gets a lot more jump when I slow the movement down with velocity scaling. I also enabled the points on the velocity so you can see that its in fact getting updated pretty frequently but the actual value doesn't get published as often.
If Anymore information is needed I will gladly supply code or screenshots.
Hope I get the help I need. Thank you guys in advance!
Gilgamesch47
↧
MoveIt! Dynamixel movement issues
↧
Converting ultrasound range to a Laser Scan
In my end of studies project, I have to make a robot that should do mapping and localization using only ultrasounds sensor. So for doing this i should convert sensor_msgs/LaserScan message to sensor_msgs/Range message.
My question: How can i do this ??
↧
↧
Difference between a planner and a planning library
This is a question about terminology regarding MoveIt!. I thought that the OMPL, STOMP and CHOMP are 'planning libraries' and RRT, PRM, SPARS etc. are 'planners'. But the MoveIt! website lists the OMLP, STOMP etc. in the ['Planners' tab](https://moveit.ros.org/documentation/planners/). So now I'm confused. Which is which and what is the difference?
↧
move_group Failed to validate trajectory after launching second simulation
I am launching two simulations, each on it's own gazebo master and each of those on their own ROS master. The ROS masters are connected with Multimaster-FKIE package where the `/gazebo` and `/gazebo_gui` topics are set private. There are two robots in the first simulations, one of them is a robotic arm and uses MoveIt! for movement planning. Each robot exists in it's own namespace.
When I launch the first simulation, the MoveIt! can control the robotic arm in the first simulation. As soon, as I launch the second simulation (on different ROS master), I start getting warnings in the terminal of the first simulation (shown below) and MoveIt is no longer able to control the robotic arm.

This is the error I get from the terminal in which I launch the first simulation:
[ WARN] [1557994112.124412241, 1892.202000000] [file:/tmp/binarydeb/ros-kinetic-moveit-ros-planning-0.9.15/trajectory_execution_manager/src/trajectory_execution_manager.cpp] [node:/panda/move_group] [TrajectoryExecutionManager::validate:955]: Failed to validate trajectory: couldn't receive full current joint state within 1s
[ INFO] [1557994112.124463958, 1892.202000000] [file:/tmp/binarydeb/ros-kinetic-moveit-ros-move-group-0.9.15/src/default_capabilities/execute_trajectory_action_capability.cpp] [node:/panda/move_group] [MoveGroupExecuteTrajectoryAction::executePath:118]: Execution completed: ABORTED
[ WARN] [1557994272.231470399, 2034.540000000] [file:/tmp/binarydeb/ros-kinetic-robot-state-publisher-1.13.6/src/joint_state_listener.cpp] [node:/panda/robot_state_publisher] [JointStateListener::callbackJointState:118]: Received JointState is 1267.643000 seconds old.
[ WARN] [1557994283.482286155, 2044.557000000] [file:/tmp/binarydeb/ros-kinetic-robot-state-publisher-1.13.6/src/joint_state_listener.cpp] [node:/panda/robot_state_publisher] [JointStateListener::callbackJointState:118]: Received JointState is 1266.500000 seconds old.
[ WARN] [1557994294.756474698, 2054.559000000] [file:/tmp/binarydeb/ros-kinetic-robot-state-publisher-1.13.6/src/joint_state_listener.cpp] [node:/panda/robot_state_publisher] [JointStateListener::callbackJointState:118]: Received JointState is 1265.322000 seconds old.
This is an output I get on terminal where I launch the MoveIt! script:
[ INFO] [1557994112.124960255, 608.002000000] [file:/tmp/binarydeb/ros-kinetic-moveit-ros-planning-interface-0.9.15/move_group_interface/src/move_group_interface.cpp] [node:/move_group_commander_wrappers_1557994109441851035] [planning_interface::MoveItErrorCode moveit::planning_interface::MoveGroupInterface::MoveGroupInterfaceImpl::execute:930]: ABORTED: Solution found but controller failed during execution
Before I launch the second simulation, the script finishes successfully and the arm executes the trajectory. I don't understand how can the second simulation have any effect on the moveit controller of the arm in the first simulation. Why is this happening and how can I fix this?
↧
Disable collisions between specified links and Octomap
Hi all,
I am using a manipulator with a suction gripper to pick up objects from the clutter. Planning scene and picking items are visible to the depth camera. I am using MoveIt! with occupancy_map_monitor plugin to generate Octomaps and plan / verify trajectory against potential collisions.
The problem occurs during the picking when I actually want to enter a collision between the suction cup and picked item. I do not want to disable collision check or clear Octomap completely for grasping, as some other collisions might occur.
My current solution involves additional prismatic joint in URDF, controlled via "/joint_states" topic. This joint can "extend" or "compress" suction cup collisions... But this solution seems to be an overkill, and might not scale for another purpose.
I tried to find a simpler solution, such as temporary disabling collisions between specified URDF link and Octomap, but I could not find any. Maybe someone knows a better way?
↧
↧
RECALLED: This goal was canceled because another goal was recieved by the simple action server
I am running a service that is using `moveit_commander` for planning and executing a Cartesian trajectory with the panda robotic arm. It seems, that a few seconds after initialization of the moveit commander
moveit_commander.roscpp_initialize(sys.argv)
it prints into terminal this warning
[ WARN] [1558019041.802065956, 2264.447000000] [file:/tmp/binarydeb/ros-kinetic-tf2-ros-0.5.20/src/transform_listener.cpp] [node:/move_group_commander_wrappers_1558019039613424573] [TransformListener::subscription_callback_impl:106]: Detected jump back in time of 14420.9s. Clearing TF buffer.
and after that no trajejtory will be executed and I get this message:
[ INFO] [1558071733.092369278, 2271.972000000] [file:/tmp/binarydeb/ros-kinetic-moveit-ros-planning-interface-0.9.15/move_group_interface/src/move_group_interface.cpp] [node:/move_group_commander_wrappers_1558019039613424573] [planning_interface::MoveItErrorCode moveit::planning_interface::MoveGroupInterface::MoveGroupInterfaceImpl::execute:930]: RECALLED: This goal was canceled because another goal was recieved by the simple action server
When I initialize the `moveit_commander` right before a request for executing the trajectory, it will be executed, but as soon as the warning message (shown above) is printed, the trajectory gets planned, but never executes and I get those info message (shown above) every time.
What is happening and how to fix this?
↧
what are the different ways to integrate custom gripper(pneumatic) with ROS?
Hello,
I have schrunk gripper on motoman robotic arm
> https://ibb.co/4jjF8Zr
,
> https://schunk.com/be_de/greifsysteme/product/16941-0370100-pgn-64-1/
how can I integrate this gripper with my robot and control it with Moveit?
or
simply, adding gripper length in endeffector Pose (last link pose(z)+gripper length, gripper is attached to last link rigidly using mounting plate) every time when giving object **target_pose** for pick from current pose in Moveit is easiest way?
thanks.
↧
How to config the planning group for irb-1410
There are several joints to be linked in irb-1410, but i can not find a good solution. If anyone has done it before, please tell me. Thx~!
↧
Moveit getJacobian returns wrong jacobian
I am trying to extract the Jacobian with that code:
robot_model_loader::RobotModelLoader robot_model_loader("robot_description");
robot_model::RobotModelConstPtr kinematic_model = robot_model_loader.getModel();
robot_state::RobotStatePtr kinematic_state(new robot_state::RobotState(kinematic_model));
const robot_state::JointModelGroup* joint_model_group = kinematic_model->getJointModelGroup("manipulator");
Eigen::MatrixXd jacobian;
Eigen::Vector3d reference_point_position(0.0,0.0,0.0);
geometry_msgs::Pose pose;
pose.orientation.x=0;
pose.orientation.y=0;
pose.orientation.z=0;
pose.orientation.w=1;
pose.position.x=0.249;
pose.position.y=0.0;
pose.position.z=0.68;
pose.position.x=0.74;
pose.position.y=0.0;
pose.position.z=0.855;
kinematic_state->setFromIK(joint_model_group, pose, 10, 0.01);
kinematic_state->getJacobian(joint_model_group,
kinematic_state->getLinkModel(joint_model_group->getLinkModelNames().back()),
reference_point_position, jacobian);
Eigen::MatrixXd joint_test(6,1);
double a1=*kinematic_state->getJointPositions("joint_a1");
double a2=*(kinematic_state->getJointPositions("joint_a2"));
double a3=(*kinematic_state->getJointPositions("joint_a3"));
double a4=*kinematic_state->getJointPositions("joint_a4");
double a5=(*kinematic_state->getJointPositions("joint_a5"));
double a6=*kinematic_state->getJointPositions("joint_a6");
joint_test.col(0).tail(6)<
↧
↧
Groupname is not found using moveit, kuka-iiwa-14
Hi!
I'm working with kuka-iiwa14 robot and try to simulate this in Gazebo using MoveIt. For the iiwa I use the package of Salvo Virga: https://github.com/IFL-CAMP/iiwa_stack. Running with Ros kinetic on Ubuntu 16.04
In the package I've removed all links to the iiwa7 files and replaced them with the iiwa14. Using `roslaunch iiwa_moveit moveit_planning_execution.launch` the combination with MoveIt and Gazebo runs. Draging, planning and executing in the MoveIt environment works perfectly.
Now I wrote a script to manipulate the location of the endeffector:
import sys
import copy
import rospy
import random
import moveit_commander
import moveit_msgs.msg
import geometry_msgs.msg
moveit_commander.roscpp_initialize(sys.argv)
rospy.init_node('move_interface', anonymous = True)
robot = moveit_commander.RobotCommander()
scene = moveit_commander.PlanningSceneInterface()
print "Group names are: %s" % "," .join(robot.get_group_names()) # Check for groupnames
manipulator = moveit_commander.MoveGroupCommander("manipulator")
display_trajectory_publisher = rospy.Publisher('/move_group/display_planned_path',moveit_msgs.msg.DisplayTrajectory, queue_size = 1)
pose_target = geometry_msgs.msg.Pose()
pose_target.orientation.w = 0.11
pose_target.position.x = 0.3
pose_target.position.y = 0.15
pose_target.position.z = 0.8
manipulator.set_pose_target(pose_target)
plan = manipulator.plan() #planning trajectory
manipulator.go(wait = True)
moveit_commander.roscpp_shutdown()
The group name "manipulator" corresponds with the name in de iiwa14.srdf file. However I got the following error, but don't know how to fix this.
orion@orion-desktop:~/catkin_ws/src/iiwa_stack-master/src$ python move_by_end_position.py
Failed to import pyassimp, see https://github.com/ros-planning/moveit/issues/86 for more info
[ERROR] [1558494320.348058400, 438.486000000]: Robot semantic description not found. Did you forget to define or remap '/robot_description_semantic'?
[ INFO] [1558494320.348590590, 438.486000000]: Loading robot model 'iiwa14'...
[ INFO] [1558494320.349741328, 438.487000000]: No root/virtual joint specified in SRDF. Assuming fixed joint
Group names are:
[FATAL] [1558494320.730383206, 438.623000000]: Group 'manipulator' was not found.
Traceback (most recent call last):
File "move_by_end_position.py", line 16, in
manipulator = moveit_commander.MoveGroupCommander("manipulator")
File "/opt/ros/kinetic/lib/python2.7/dist-packages/moveit_commander/move_group.py", line 52, in __init__
self._g = _moveit_move_group_interface.MoveGroupInterface(name, robot_description, ns)
RuntimeError: Group 'manipulator' was not found.
↧
Are odom_combined and base_link same for the PR2
When I perform a tf2 transformation from a frame to these frames, I seem to have getting the exact same values, are they same and both the world frame of the robot?
↧
My robot cannot pick a target by moveit
I want use moveit to control my robot for a simple pick_and_plce task in rviz, and I use ur10 with a robotiq85 gripper. But it plans always fail. The information shows that there is a contact between 'target' and 'wrist_2_link' (the link of ur10) and the IK was failed. So the robot cannot plan to pick and it didn't move.I changed the place of target for some times. but the results were same. I don't know what's wrong with it.
the information in the terminal as follows:
[ INFO] [1558698830.071226740]: Collision checking is considered complete (collision was found and 0 contacts are stored)[ INFO] [1558698830.071521909]: Found a contact between 'target' (type 'Object') and 'wrist_2_link' (type 'Robot link'), which constitutes a collision. Contact information is not stored.
[ INFO] [1558698830.071596110]: Collision checking is considered complete (collision was found and 0 contacts are stored)[ INFO] [1558698830.071945170]: IK failed[ INFO] [1558698830.072022409]: Sampler failed to produce a state[ INFO] [1558698830.072103597]: Manipulation plan 5 failed at stage 'reachable & valid pose filter' on thread 0[ INFO] [1558698830.072665101]: Pickup planning completed after 0.009758 seconds
there is the main part of my python script:
import sys
from copy import deepcopy
import rospy
import moveit_commander
from geometry_msgs.msg import PoseStamped, Pose
from moveit_commander import MoveGroupCommander, PlanningSceneInterface
from moveit_msgs.msg import PlanningScene, ObjectColor
from moveit_msgs.msg import Grasp, GripperTranslation, MoveItErrorCodes
from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint
from tf.transformations import quaternion_from_euler
GROUP_NAME_ARM = 'arm'
GROUP_NAME_GRIPPER = 'gripper'
GRIPPER_FRAME = 'tool0'
GRIPPER_OPEN = [0.0]
GRIPPER_CLOSED = [0.05]
REFERENCE_FRAME = 'base_link"
class MoveItPickAndPlaceDemo:
def __init__(self):
moveit_commander.roscpp_initialize(sys.argv)
rospy.init_node('moveit_pick_and_place_demo')
scene = PlanningSceneInterface()
self.scene_pub = rospy.Publisher('planning_scene', PlanningScene, queue_size=10)
self.gripper_pose_pub = rospy.Publisher('gripper_pose', PoseStamped, queue_size=10)
self.colors = dict()
arm = MoveGroupCommander(GROUP_NAME_ARM)
gripper = MoveGroupCommander(GROUP_NAME_GRIPPER)
arm.set_goal_position_tolerance(0.05)
arm.set_goal_orientation_tolerance(0.1)
arm.allow_replanning(True)
arm.set_pose_reference_frame(REFERENCE_FRAME)
target_size = [0.05, 0.05, 0.15]
target_pose = PoseStamped()
target_pose.header.frame_id = REFERENCE_FRAME
target_pose.pose.position.x = -1.0
target_pose.pose.position.y = 0.3
target_pose.pose.position.z = table_ground + table_size[2] + target_size[2] / 2.0 + 0.1
target_pose.pose.orientation.w = 1.0
scene.add_box(target_id, target_pose, target_size)
self.setColor(target_id, 0.9, 0.9, 0, 1.0)
self.sendColors()
grasp_pose = target_pose
grasps = self.make_grasps(grasp_pose, [target_id])
for grasp in grasps:
self.gripper_pose_pub.publish(grasp.grasp_pose)
rospy.sleep(0.2)
result = None
n_attempts = 0
while result != MoveItErrorCodes.SUCCESS and n_attempts < max_pick_attempts:
n_attempts += 1
rospy.loginfo("Pick attempt: " + str(n_attempts))
result = arm.pick(target_id, grasps)
rospy.sleep(0.2)
if result == MoveItErrorCodes.SUCCESS:
result = None
n_attempts = 0
places = self.make_places(place_pose)
# ...........................
def make_gripper_posture(self, joint_positions):
t = JointTrajectory()
t.joint_names = ['robotiq_85_left_knuckle_joint']
tp = JointTrajectoryPoint()
tp.positions = joint_positions
tp.effort = [1.0]
tp.time_from_start = rospy.Duration(1.0)
t.points.append(tp)
return t
def make_gripper_translation(self, min_dist, desired, vector):
g = GripperTranslation()
g.direction.vector.x = vector[0]
g.direction.vector.y = vector[1]
g.direction.vector.z = vector[2]
g.direction.header.frame_id = GRIPPER_FRAME
g.min_distance = min_dist
g.desired_distance = desired
return g
def make_grasps(self, initial_pose_stamped, allowed_touch_objects):
g = Grasp()
g.pre_grasp_posture = self.make_gripper_posture(GRIPPER_OPEN)
g.grasp_posture = self.make_gripper_posture(GRIPPER_CLOSED)
g.pre_grasp_approach = self.make_gripper_translation(0.01, 0.1, [1.0, 0.0, 0.0])
g.post_grasp_retreat = self.make_gripper_translation(0.1, 0.15, [0.0, -1.0, 1.0])
g.grasp_pose = initial_pose_stamped
pitch_vals = [0, 0.1, -0.1, 0.2, -0.2, 0.3, -0.3]
yaw_vals = [0]
grasps = []
for y in yaw_vals:
for p in pitch_vals:
q = quaternion_from_euler(0, p, y)
g.grasp_pose.pose.orientation.x = q[0]
g.grasp_pose.pose.orientation.y = q[1]
g.grasp_pose.pose.orientation.z = q[2]
g.grasp_pose.pose.orientation.w = q[3]
g.id = str(len(grasps))
g.allowed_touch_objects = allowed_touch_objects
grasps.append(deepcopy(g))
return grasps
↧
Robot arm falls over on spawn (Gazebo)
I'm using ROS Melodic with the denso_robot_ros package (https://github.com/DENSORobot/denso_robot_ros).
I'm currently trying to adapt my own arm to utilize the package. The package comes with a functioning example using the VS060 model, whereas I'm attempting to use the VS6577 A-B model with a custom end effector. I have created my own URDF (in xacro format) by using data obtained from the VS6577 controller for the arm and the custom end effector files.
When running the VS060 example, the arm will spawn in both Gazebo and RViz, with RViz providing the ability to control the arm by moving the position indicator located at the tip. When executing a trajectory in RViz, the model in Gazebo will make movements corresponding to the trajectory.
When running the VS6577 arm, the arm will spawn in both Gazebo in RViz, however it will flop over in both and fail to respond to commands. The arm in RViz will mimic the movement of the arm in Gazebo and doesn't exert any force to correct itself/stand up. The RViz VS6577 will still display the clickable indicator on the end of the robot arm that allows me to move it to a hypothetical position that it can then successfully plan to move it. Once I decide to execute the trajectory however, the arm doesn't make any attempt at movement while the terminal indicates that it has successfully moved.
[ INFO] [1558814233.787314221, 39.284000000]: Combined planning and execution request received for MoveGroup action. Forwarding to planning and execution pipeline.
[ INFO] [1558814233.787400526, 39.284000000]: Planning attempt 1 of at most 1
[ INFO] [1558814233.787467946, 39.284000000]: Starting state is just outside bounds (joint 'joint_2'). Assuming within bounds.
[ INFO] [1558814233.787630107, 39.284000000]: Found a contact between 'EEF_robot_magnet' (type 'Robot link') and 'J4' (type 'Robot link'), which constitutes a collision. Contact information is not stored.
[ INFO] [1558814233.787663090, 39.284000000]: Collision checking is considered complete (collision was found and 0 contacts are stored)
[ INFO] [1558814233.787701964, 39.284000000]: Start state appears to be in collision with respect to group arm
[ INFO] [1558814233.789812451, 39.287000000]: Found a valid state near the start state at distance 1.286259 after 3 attempts
[ INFO] [1558814233.790373357, 39.287000000]: Planner configuration 'arm' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1558814233.790927439, 39.288000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.790988817, 39.288000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.791059312, 39.288000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.791120209, 39.288000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.801353892, 39.298000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.801434857, 39.298000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.801546992, 39.298000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.801651412, 39.298000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.801795308, 39.299000000]: ParallelPlan::solve(): Solution found by one or more threads in 0.011119 seconds
[ INFO] [1558814233.802097227, 39.299000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.802147173, 39.299000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.802212709, 39.299000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.802269598, 39.299000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.802552450, 39.299000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.802608898, 39.299000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.802740881, 39.299000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.803146199, 39.300000000]: RRTConnect: Created 5 states (3 start + 2 goal)
[ INFO] [1558814233.803299703, 39.300000000]: ParallelPlan::solve(): Solution found by one or more threads in 0.001278 seconds
[ INFO] [1558814233.803514565, 39.300000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.803568959, 39.300000000]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1558814233.803931234, 39.301000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.804018772, 39.301000000]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1558814233.804166946, 39.301000000]: ParallelPlan::solve(): Solution found by one or more threads in 0.000710 seconds
[ INFO] [1558814233.807662980, 39.304000000]: SimpleSetup: Path simplification took 0.003425 seconds and changed from 4 to 2 states
[ INFO] [1558814233.808245998, 39.305000000]: Planning adapters have added states at index positions: [ 0 1 ]
[ INFO] [1558814239.718207573, 45.209000000]: Controller vs6577/arm_controller successfully finished
[ INFO] [1558814239.721180483, 45.212000000]: Completed trajectory execution with status SUCCEEDED ...
I would also like to add that the collision detection for the arm and end effector all seem to work properly in both RViz and Gazebo.
EDIT: In addition, the base of the robot is properly attached to the world with a static link, it's just the links above it that fall over.
↧
↧
Can't get robot arm's current pose with a error (Failed to fetch current robot state)
Hello, everyone.
Thank for looking this thread.
I want to get end-effector(link_t)'s pose using `moveit::planning_interface::MoveGroupInterface::getCurrentPose()`.
But, I could not get end-effector's pose and orientation like below.
header:
seq: 0
stamp: 74.419000000
frame_id: world
pose:
position:
x: 0
y: 0
z: 0
orientation:
x: 0
y: 0
z: 0
w: 1
I got following error (Failed to fetch current robot state)
robot@robot-NG:~$ rosrun sia20_control sequential_ik_solver
Is start spinner? true
[ INFO] [1559035400.947083805]: Loading robot model 'sia20'...
[ WARN] [1559035401.013390105]: Kinematics solver doesn't support #attempts anymore, but only a timeout.
Please remove the parameter '/robot_description_kinematics/sia20_arm/kinematics_solver_attempts' from your configuration.
[ INFO] [1559035402.311004825, 73.418000000]: Ready to take commands for planning group sia20_arm.
end effector name is
[ INFO] [1559035403.314437642, 74.418000000]: Didn't received robot state (joint angles) with recent timestamp within 1 seconds.
Check clock synchronization if your are running ROS across multiple machines!
[ERROR] [1559035403.314531291, 74.419000000]: Failed to fetch current robot state
header:
seq: 0
stamp: 74.419000000
frame_id: world
pose:
position:
x: 0
y: 0
z: 0
orientation:
x: 0
y: 0
z: 0
w: 1
[ INFO] [1559035404.314786192, 75.416000000]: Didn't received robot state (joint angles) with recent timestamp within 1 seconds.
Check clock synchronization if your are running ROS across multiple machines!
[ERROR] [1559035404.314857179, 75.417000000]: Failed to fetch current robot state
header:
seq: 0
stamp: 75.417000000
frame_id: world
pose:
position:
x: 0
y: 0
z: 0
orientation:
x: 0
y: 0
z: 0
w: 1
When I run following program.
#include
#include
#include
#include
#include
int main(int argc, char* argv[])
{
ros::init(argc, argv, "sequential_ik_solver");
ros::NodeHandle node_handle;
ros::AsyncSpinner spinner(3);
spinner.start();
std::cout << "Is start spinner? " << std::boolalpha << spinner.canStart() << std::endl;
const std::string PLANNING_GROUP = "panda_arm";
moveit::planning_interface::MoveGroupInterface move_group(PLANNING_GROUP);
//move_group.setEndEffectorLink("link_t");
std::cout << "end effector name is " << move_group.getEndEffector() << std::endl;
while (ros::ok()) {
std::cout << move_group.getCurrentPose() << std::endl;
}
return 0;
}
I'm glad if you know how to solve this problem it or come up with the cause, let me know it.
Thanks in advance.
[Additional information]
- [source code](https://github.com/harumo11/sia20/tree/master/sia20_moveit_config)
- ROS distro : melodic
If you need additional information, feel free to tell me it.
↧
How to fix end effector direction to approach object with MoveIt
Hello,
My question is that how to fix end effector orientation to approach object(move forward) with MoveIt?
I already let my robot to move to a given goal position(x, y, z).
If I would like to let robot grasp the object, move and approach it slowly is necessary.
So I want to move the robot 15cm forward by fixed direction of end effector.
As shown in the picture:

Does MoveIt or others have any function can achieve this?
If you can provide me example code with python will be better.
Thanks a lot.
↧
execute a pose in moveit too slow
I have a manipulator 6 DOF I can send it a pose with position and orientation and I set up a simple GUI using tkinter to publish the pose data for moveit to execute on RVIz. It pretty slower than what I expect I want it to be realtime but it take a period time about 6-7 second for every execution for 0.01 position to the next time press the button on GUI. Does anyone know how to make it better to get it realtime thanks in advance
↧
Octomap not available in MoveIt
I want to represent my robots environment (available as a point cloud) as Octomap in MoveIt (ROS Kinetic) to make it available for collision checking. Therefore I mainly followed the Perception Pipeline Tutorial (http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/perception_pipeline/perception_pipeline_tutorial.html). Since I don't have an operating sensor I used a topic constantly publishing the point cloud. I created a pointcloud.yaml
sensors:
- sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
point_cloud_topic: /fakesensor/pointcloud
max_range: 5.0
point_subsample: 1
padding_offset: 0.1
padding_scale: 1.0
max_update_rate: 1.0
filtered_cloud_topic: filtered_cloud
And added this to my launch file:
Starting RViz I can observe the point cloud I am publishing but there is no Octomap available.
Any ideas what I am missing?
I also tried to use the octomap_server. My .launch file looked like this:
I don't get any errors. In RViz I can add by topic the PointCloud2 /octomap_point_cloud_centers and the Marker Array /occupied_cells_vis_array. However in both cases there is nothing displayed in RViz. As far as I can see the topics are communicating fine. /octomap_point_cloud_centers Point Cloud in RViz is receiving messages. Echoing the /octomap_point_cloud_centers the data seems to be empty.
Thank you in advance for all ideas!
↧
↧
Moveit with Gazebo - FollowJointTrajectory does not work
Hello developers!
I'm using Manipulator-H from Robotis [github](https://github.com/ROBOTIS-GIT/ROBOTIS-MANIPULATOR-H) and I'm trying to create a go to goal in gazebo using moveit. By now I made:
- Created with moveit setup assistant the package
- Control it in RViz using Plan and Execute
But my problem is connect to moveit with gazebo. I'm trying to use FollowJointTrajectory without sucess... The **ERRORS** change between:
- **Failed to load mh_arm_controller**
OR
- **Could not load controller 'mh_arm_controller' because the type was not specified. Did you load the controller configuration on the parameter server (namespace: '/robotis_manipulator_h/mh_arm_controller')?**
PS: I listed those two errors most because when I solved one, the other appears.
I will present now the solutions that I tried:
- I followed this tutorial and created my own yaml and launch files with a different pipeline (because the files created by moveit setup assistant does not work by the same error): [low level controllers moveit](http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/controller_configuration/controller_configuration_tutorial.html)
- Checked import packages for ros control following this video: [Which ROS controllers required for PR2 ?](https://www.youtube.com/watch?v=VWFDwkgZLC8)
- Try this other tutorial [How to control a Gazebo simulated robot with MoveIt!](http://www.theconstructsim.com/control-gazebo-simulated-robot-moveit-video-answer/) but my **error** now changes to: **MoveItSimpleControllerManager: Action client not connected**
- Already looked those solutions too: [link1](https://answers.ros.org/question/227462/ros_control-fails-couldnt-find-the-expected-controller_manager/), [gazebo controller spawner warming](https://answers.ros.org/question/214712/gazebo-controller-spawner-warning/) and so on...
- Uninstalled ros a installed again
I think the problem are between: **namespace** or **FollowJointTrajectory** most because the ROBOTIS provide a position controller that works properly (I tried to follow the codes model without sucess). I already install every single controller in ros even pr2 controller (I really don't know what is FollowJointTrajectory in google).
**WHAT I MADE SO FAR (REMEMBER THAT I TRIED OTHERS FORMATS, BUT THIS IS THE MAIN PIPELINE THAT I TRIED 90% OF THE TIME):**
1 - Create a package for manipulator-h in moveit, adding FollowJointTrajectory
2 - manipulator_h_description folder has the manipulator_h.gazebo that I did not change. You can find where the piece of code:
/robotis_manipulator_h gazebo_ros_control/DefaultRobotHWSim
3 - moveit setup assistant created
**ros_controllers_yaml**
robotis_manipulator_h:
# MoveIt-specific simulation settings
moveit_sim_hw_interface:
joint_model_group: controllers_initial_group_
joint_model_group_pose: controllers_initial_pose_
# Settings for ros_control control loop
generic_hw_control_loop:
loop_hz: 300
cycle_time_error_threshold: 0.01
# Settings for ros_control hardware interface
hardware_interface:
joints:
- joint1
- joint2
- joint3
- joint4
- joint5
- joint6
sim_control_mode: 1 # 0: position, 1: velocity
# Publish all joint states
# Creates the /joint_states topic necessary in ROS
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
controller_list:
- name: mh_arm_controller
action_ns: follow_joint_trajectory
default: True
type: FollowJointTrajectory
joints:
- joint1
- joint2
- joint3
- joint4
- joint5
- joint6
- world_fixed
**ros_controllers.launch**
**PS: In this launch, I just changed ns from robotis_manipulator_h to /robotis_manipulator_h.**
4 - After this, in gazebo launch called **manipulator_h_gazebo.launch** I insert the controller as shown:
5 - launch the previous launch and get error!
PS: I commented both original controllers (position and effort) from robotis.
So my doubt are:
- Where I can learn FollowJointTrajectory type (package? is a pr2 controller?)
- Could be the namespace? where he is defined beside those files?
What can I try more to have sucess in my task?
**Using ROS-KINETIC & UBUNTU 16.04**
↧
Is there way to get Jacobian (or manipulability) in python with MoveIt?
I'm using compute_ik service in Python, but I wonder if I can get Jacobian matrix (actually I want manipulability). I want to check if the IK solution is healthy with the specified pose. I know I can do it in C++, but I'd be happy if I can quickly check it in Python. Thanks.
↧
realtime control manipulator in ros
I have a 6 DOF manipulator URDF, I can use the compute_ik service to have solution for a specified pose then I publish in Rviz but I see that if I use set_joint_value_target or set_pose_target it very slow. Is there other way to do that faster than set_joint_value_target and set_pose_target. Assuming that I have a node subscribe to a node that give me the pose that manipulator have to reach.
Thanks in advance
↧