Hi I am trying to wrap MoveIt classes inside another class (which is a backend in a library). I am following the tutorial in http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/pr2_tutorials/kinematics/src/doc/kinematic_model_tutorial.html to figure out how to use all kinematics.
I managed to make the example work with a custom robot. The problem is that when I wrap it inside of a class it seems that is not working. The same piece of code works if I put it in the main.cpp file, but not if I call it from a method of a class. When using the code in the main.cpp it shows the pose of the direct kinematic and it performs the inverse kinematic but when I use it in the class the pose if the direct kinematic is a 4x4 identity matrix and it says that it cannot find the IK (After of each fragment of code there is an example of output)
By now, the class do not store any class member, it is just using the same piece of code. I cannot guess what could be happening. Could it be something scope dependent?
This works:
**main.cpp**
#include
#include
#include
#include
#include
#include
int main(int _argc, char **_argv)
{
ros::init(_argc, _argv, "asas");
ros::AsyncSpinner spinner(1);
spinner.start();
std::string mArmPrefix = "";
ros::NodeHandle n;
ros::Publisher mJointPublisher = n.advertise(mArmPrefix + "/joint_states", 1000);
robot_model_loader::RobotModelLoader robot_model_loader("/robot_description");
robot_model::RobotModelPtr kinematic_model = robot_model_loader.getModel();
ROS_INFO("Model frame: %s", kinematic_model->getModelFrame().c_str());
robot_state::RobotStatePtr kinematic_state(new robot_state::RobotState(kinematic_model));
kinematic_state->setToDefaultValues();
const robot_state::JointModelGroup *joint_model_group = kinematic_model->getJointModelGroup("arm4dof");
const std::vector&joint_names = joint_model_group->getVariableNames();
while (ros::ok())
{
std::vector joint_values;
kinematic_state->setToRandomPositions(joint_model_group);
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
for (std::size_t i = 0; i < joint_names.size(); ++i)
{
ROS_INFO("Joint %s: %f", joint_names[i].c_str(), joint_values[i]);
}
ROS_INFO_STREAM("Current state is " << (kinematic_state->satisfiesBounds() ? "valid" : "not valid"));
/* Enforce the joint limits for this state and check again*/
kinematic_state->enforceBounds();
ROS_INFO_STREAM("Current state is " << (kinematic_state->satisfiesBounds() ? "valid" : "not valid"));
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
const Eigen::Affine3d &end_effector_state = kinematic_state->getGlobalLinkTransform("arm_2");
/* Print end-effector pose. Remember that this is in the model frame */
ROS_INFO_STREAM("Translation: " << end_effector_state.translation());
ROS_INFO_STREAM("Rotation: " << end_effector_state.rotation());
bool found_ik = kinematic_state->setFromIK(joint_model_group, end_effector_state, 10, 0.1);
// Now, we can print out the IK solution (if found):
if (found_ik)
{
std::cout << "Inverse kinematic" << std::endl;
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
for (std::size_t i = 0; i < joint_names.size(); ++i)
{
ROS_INFO("Joint %s: %f", joint_names[i].c_str(), joint_values[i]);
}
}
else
{
ROS_INFO("Did not find IK solution");
}
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
}
ros::shutdown();
return 0;
}
Example output:
[ INFO] [1519129629.774489067]: Loading robot model 'arm4DoF'...
[ INFO] [1519129629.793275887]: Model frame: /base_link
[ INFO] [1519129629.793342125]: Joint arm_0_bottom_joint: -1.844674
[ INFO] [1519129629.793351311]: Joint arm_1_joint: 1.262605
[ INFO] [1519129629.793359813]: Joint arm_2_joint: -2.574378
[ INFO] [1519129629.793372435]: Current state is valid
[ INFO] [1519129629.793383459]: Current state is valid
[ INFO] [1519129629.793437553]: Translation: 0.43813
-1.55953
-0.990671
[ INFO] [1519129629.793535933]: Rotation: -0.962729 -0.0692766 -0.261444
-0.270467 0.24659 0.930613
-9.61075e-12 0.966641 -0.256137
Inverse kinematic
[ INFO] [1519129629.793729052]: Joint arm_0_bottom_joint: -1.844674
[ INFO] [1519129629.793739007]: Joint arm_1_joint: 1.262605
[ INFO] [1519129629.793747039]: Joint arm_2_joint: -2.574378
But this does not work:
**Arm.h**
#include
#include
#include
#include
#include
#include
#include
#include
class Arm
{
public:
void run();
};
**Arm.cpp**
#include
#include
#include
#include
#include
#include
#include
void Arm::run()
{
std::string mArmPrefix = "";
ros::NodeHandle n;
std::vector joint_values;
ros::Publisher mJointPublisher = n.advertise(mArmPrefix + "/joint_states", 1000);
robot_model_loader::RobotModelLoader robot_model_loader("/robot_description");
robot_model::RobotModelPtr kinematic_model = robot_model_loader.getModel();
ROS_INFO("Model frame: %s", kinematic_model->getModelFrame().c_str());
robot_state::RobotStatePtr kinematic_state(new robot_state::RobotState(kinematic_model));
kinematic_state->setToDefaultValues();
const robot_state::JointModelGroup *joint_model_group = kinematic_model->getJointModelGroup("arm4dof");
const std::vector&joint_names = joint_model_group->getVariableNames();
while (ros::ok())
{
kinematic_state->setToRandomPositions(joint_model_group);
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
for (std::size_t i = 0; i < joint_names.size(); ++i)
{
ROS_INFO("Joint %s: %f", joint_names[i].c_str(), joint_values[i]);
}
ROS_INFO_STREAM("Current state is " << (kinematic_state->satisfiesBounds() ? "valid" : "not valid"));
/* Enforce the joint limits for this state and check again*/
kinematic_state->enforceBounds();
ROS_INFO_STREAM("Current state is " << (kinematic_state->satisfiesBounds() ? "valid" : "not valid"));
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
const Eigen::Affine3d &end_effector_state = kinematic_state->getGlobalLinkTransform("arm_2");
/* Print end-effector pose. Remember that this is in the model frame */
ROS_INFO_STREAM("Translation: " << end_effector_state.translation());
ROS_INFO_STREAM("Rotation: " << end_effector_state.rotation());
sensor_msgs::JointState j_msg;
bool found_ik = kinematic_state->setFromIK(joint_model_group, end_effector_state, 10, 0.1);
// Now, we can print out the IK solution (if found):
if (found_ik)
{
std::cout << "Inverse kinematic" << std::endl;
kinematic_state->copyJointGroupPositions(joint_model_group, joint_values);
for (std::size_t i = 0; i < joint_names.size(); ++i)
{
ROS_INFO("Joint %s: %f", joint_names[i].c_str(), joint_values[i]);
}
}
else
{
ROS_INFO("Did not find IK solution");
}
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
std::cout << "-------------------------------------" << std::endl;
}
}
**main.cpp**
int main(int _argc, char **_argv){
ros::init(_argc, _argv, "asas");
ros::AsyncSpinner spinner(1);
spinner.start();
Arm arm;
arm.run();
}
Example output:
[ INFO] [1519132193.015645909]: Loading robot model 'arm4DoF'...
[ INFO] [1519132193.034682569]: Model frame: /base_link
[ INFO] [1519132193.034757365]: Joint arm_0_bottom_joint: -2.803085
[ INFO] [1519132193.034770917]: Joint arm_1_joint: -0.145080
[ INFO] [1519132193.034783361]: Joint arm_2_joint: -2.677995
[ INFO] [1519132193.034806116]: Current state is valid
[ INFO] [1519132193.034823085]: Current state is valid
[ INFO] [1519132193.034909581]: Translation: 0
0
0
[ INFO] [1519132193.035004678]: Rotation: 1 0 0
0 1 0
0 0 1
[ INFO] [1519132194.045864989]: Did not find IK solution
↧
Moveit classes inside a class
↧
Problem with gazebo launch with [/controller_manager/...]
Hi all ROS users,
My system is Linux-mint(16.04), ROS Kinetic 1.12.12
I made a my gazebo launch file:

it looks like good work, but there are some problem. That is:
[ INFO] [1519277544.787530619, 0.361000000]: Starting gazebo_ros_control plugin in namespace: /Loaded l_arm_controller_dual
[ERROR] [1519277544.923244209, 0.361000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/list_controllers]
[ERROR] [1519277544.923498348, 0.361000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/list_controller_types]
[ERROR] [1519277544.923590196, 0.361000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/load_controller]
[ERROR] [1519277544.923654401, 0.361000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/unload_controller]
[ERROR] [1519277544.923720687, 0.361000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/switch_controller]
[ERROR] [1519277544.923800040, 0.361000000]: Tried to advertise a service that is already advertised in this node [/controller_manager/reload_controller_libraries]
[ INFO] [1519277544.923897790, 0.361000000]: Loaded gazebo_ros_control.
[INFO] [1519277544.924636, 0.361000]: Controller Spawner: Waiting for service controller_manager/switch_controller
And, the gazebo launch file is:
Here, violin_dual_world.launch
----------
In there, "dual_arm_l_controller.launch" and " dual_arm_r_controller.launch" are as follow:
dual_arm_l_controller.launch
dual_arm_r_controller.launch
dual_arm_joint_state_controller.launch
----------
My goal is based on these gazebo launch, I want to moveit rviz plan --> execute to gazebo simulation like this:
[https://www.youtube.com/watch?v=1Huhevm2dOM](https://www.youtube.com/watch?v=1Huhevm2dOM)
Please help me.
Thank you.
↧
↧
fail to call service /get_planning_scene
Dear all,
What I am doing is receiving depth and rgb images and converting them into pointcloud which will be used by moveit to generate actomap. I have successfully used freenect to build actomap in moveit. Everything worked fine.
Since I need to receive images from another camera, I wrote code to receive images and publish on certain topics to let depth_image_proc to subscribe and do the process. I have finished all the things about generating pointcloud and it did have pointcloud published on the certain topic. But when I ran move_group and rviz, there were one warning and error. Warning is Failed to call service /get_planning_scene, have you launched move_group?. Error is Unable to connect to move_group action server within allotted time. But I did run move_group node since I can see move_group node was subscribing the topic that published pointcloud. Does it relate with tf? Since before I ran static transform publisher for my world and camera frames, rviz won't crash because of failure to call service.
Thanks for any help in advance.
↧
Extracting Data From MoveIt
Hi ROS community ,
i am beginner in ROS and i create my own URDF from SolidWorks using a [SolidWorks to URDF Exporter](http://wiki.ros.org/sw_urdf_exporter) . I configure this Arm with MoveIt and its working Well with MoveIt . **But i want to know the parameters like FK(forward kinematics ), IK(Inverse kinematics )and some other parameters related to my robot from MoveIt details** . I search on internet about it but i can't get any information about this so i came here if anyone knows so help me with this information .i attached the Image of my 3 D.O.F Robotic arm 
↧
Can anyone give me a example on how to use moveit_ros_control_interface?
Hello,
I'm trying to learn Moveit, but still haven't figure out what is the best way to execute a planned trajectories for a robot arm manipulator, even though I have spent quite some time searching the internet. Can anyone give me a brief summary or an example of what is the best way of doing it?
As I know the procedure may including the followings
First need to plan the trajectory, for example
moveit::planning_interface::MoveGroupInterface move_group("manipulator");
move_group.setPoseTarget(some_target_pose);
moveit::planning_interface::MoveGroupInterface::Plan my_plan;
bool success = move_group.plan(my_plan);
So what should I do afterwards?
1. Get out the joint trajectory and send to a joint trajectory (action) server (for example the one in ur_ros_wrapper)?
2. Or use moveit_ros_control_interface. But how? just do some thing like the following and then
move_group.move();
or
move_group.execute();
In ROBOT_moveit_config/launch/ROBOT_moveit_controller_manager.launch.xml, add
In ROBOT_moveit_config/config/ROBOT_controllers.yaml, add
controller_manager_ns: ROBOT
controller_list:
# Arm controller
- name: /ROBOT/position_trajectory_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- joint_1
...
As I see there is no connection between move_group and hardware interface and control interface. Seems missing something?
Thank you for your help in advance!
↧
↧
Wrong argument type when writing quaternion orientation to pose message
**Edit:**
I tried to just simply copy the quaternion values and hardcode them as an orientation coordinates. Results are the same, so maybe problem comes from another part of my grasp msg?
I dumped the message which I'm trying to use to pick my object: [link text](https://pastebin.com/xceknYxC)
----------
Hi,
I'm trying to generate `moveit_msgs/Grasp Message` using Python API and I'm getting ROSSerializationException in place where calculated quaternion values are assigned into `geometry_msgs/Pose Message/orientation`.
Piece of code where I'm making Grasp message and trying to get quaternion from euler angles:
p = PickPlaceInterface("arm", "gripper", verbose=True)
g = Grasp()
g.id = "test"
gp = PoseStamped()
gp.header.frame_id = "base_link"
gp.pose.position.x = grasps[0].surface.x
gp.pose.position.y = grasps[0].surface.y
gp.pose.position.z = grasps[0].surface.z
quat = quaternion_from_euler(grasps[0].approach.x, grasps[0].approach.y, grasps[0].approach.z)
print ("Quat type: " + str(type(quat[0])))
print ("Pose orient type: " + str(type(gp.pose.orientation.x)))
gp.pose.orientation.x = float(quat[0])
gp.pose.orientation.y = float(quat[1])
gp.pose.orientation.z = float(quat[2])
gp.pose.orientation.w = float(quat[3])
g.grasp_pose = gp
g.pre_grasp_approach.direction.header.frame_id = "base_link"
g.pre_grasp_approach.direction.vector.x = 1.0
g.pre_grasp_approach.direction.vector.y = 0.0
g.pre_grasp_approach.direction.vector.z = 0.0
g.pre_grasp_approach.min_distance = 0.001
g.pre_grasp_approach.desired_distance = 0.1
g.pre_grasp_posture.header.frame_id = "base_link"
g.pre_grasp_posture.joint_names = ["gripper_axis"]
pos = JointTrajectoryPoint()
pos.positions.append(0.0)
g.pre_grasp_posture.points.append(pos)
g.grasp_posture.header.frame_id = "base_link"
g.grasp_posture.joint_names = ["gripper_axis"]
pos = JointTrajectoryPoint()
pos.positions.append(0.02)
pos.effort.append(0.0)
g.grasp_posture.points.append(pos)
g.allowed_touch_objects = []
g.max_contact_force = 0
g.grasp_quality = grasps[0].score
p.pickup("obj", [g, ], support_name="supp")
**grasps[0].approach** is a `geometry_msgs/Vector3` message.
**grasps** is a list of GraspConfig.msg which is defined here: [link text](https://github.com/atenpas/gpd/blob/master/msg/GraspConfig.msg)
I'm getting this exception:
Traceback (most recent call last): File "pick_and_place.py", line 83, in
err = p.pickup("obj", [g, ], support_name="supp") File "/opt/ros/kinetic/lib/python2.7/dist-packages/moveit_python/pick_place_interface.py", line 154, in pickup
self._pick_action.send_goal(g) File "/opt/ros/kinetic/lib/python2.7/dist-packages/actionlib/simple_action_client.py", line 92, in send_goal
self.gh = self.action_client.send_goal(goal, self._handle_transition, self._handle_feedback) File "/opt/ros/kinetic/lib/python2.7/dist-packages/actionlib/action_client.py", line 553, in send_goal
return self.manager.init_goal(goal, transition_cb, feedback_cb) File "/opt/ros/kinetic/lib/python2.7/dist-packages/actionlib/action_client.py", line 466, in init_goal
self.send_goal_fn(action_goal) File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/topics.py", line 886, in publish
raise ROSSerializationException(str(e)) rospy.exceptions.ROSSerializationException: : 'required argument is not a float' when writing 'x: 0.008194649141243238 y:
0.1413781390046223 z: 0.44856469150891914 w: 0.8824595101581431'
Looks simple, I'm just messing with types. But when I checked them with:
print ("Quat type: " + str(type(float(quat[0]))))
print ("Pose orient type: " + str(type(gp.pose.orientation.x)))
I'm getting:
Quat type:
Pose orient type:
And now I'm confused ... Do you have an idea what I'm doing wrong?
I tried also numpy conversions and tricks mentioned here: [link text](https://answers.ros.org/question/69754/quaternion-transformations-in-python/), but results are the same. I'm using ROS Kinetic and Ubuntu 16.04
↧
Control the base with the trajectory of MoveIt?
Hi,
I am working with Iiwa(7 DoF) + Omnirob(Omnidirectional platform). My task is making them fullfill mobile manipulation tasks, this means making the platform and arm move synchronously for a certain task.
In order to plan the trajectory I am using moveit. For the planning of the platform trajectory we have two options:
1. Creating a P,P,R joints to define the movement of the platform. Each prismatic joint would refer to X and Y and the revolute would be the theta movement.
2. Define a virtual planar joint from base to /odom_combined.
In my case I used the {P,P,R} joints to plan the trajectory. So basically I am planning for 3(base) + 7(arm) joints group in Moveit.
Once the plan is done I would have a trajectory in {X,Y;Theta; T} for the base, and a similar one for the arm with each Joint.
**My problem comes now.**
As far as I know, there is no any controller for the base of the robot that allows you to provide a trajectory(vector of positions with time stamp), but only we can provide a path, as move_base does.
I wonder if anybody knows any controller for omnidirectional platforms in order to provide a trajectory created in moveit {X,Y,Theta,T}. In case not, whats the usual approach for omnidirectional mobile manipulators for synchronous base-arm manipulation?
Thanks alot!
↧
How can I implement a smooth "manual move" with Ros-industrial
Hello,
I'm searching how to implement a regular "manual" move with ros-industrial, and probably moveit.
By manual move, I mean that when a user press a button, the robot end-effector start moving in a single axis, and when he release it, the robot stop. (The movement on every industrial robot UI I guess (I only know UR and KUKA))
I currently did that, but in a "not smooth" way, like: when he press a button, and until he release it, I publish once each ms on a topic that I want it to go x cm more on that axis. but dues to accelerations, the robot don't do it smoothly.
I also tried like this: on the press event, I call a service so the robot start to go to a far point on this axis, and until I release the button, I publish each ms on a topic to say that I want it to continue, if it didn't receive this topic in time, the robot stop. Problem here was that I can't really define the "far" point, because it's related to the current position, and on the robot articulations (I think I can't, not sure)
Is there something I'm missing ?
Hope you can help, thank you!
↧
How do you use a gazebo world in rviz moveit?
I tried using my robot urdf and world sdf file in rviz moveit, but only the robot urdf showed up. The objects in my worldf file did not. Is there any easy way to use an established world file in moveit?
↧
↧
MoveIt getJacobian for Python?
I can see there is a getJacobian implementation in MoveIt! however the Python wrapper does not seem to have the same function. How can I get around this? Will I need to somehow build my own getJacobian function? I'm not very great with mathematics so I may find it difficult; could anybody point me in the right direction?
↧
ImportError: No module named moveit_commander
I was able to install moveit with binaries, as per the tutorial and it runs. However, when I try to use it in my own code, I get this error when importing moveit_commander. > ImportError: No module named> moveit_commander
I am using Ubuntu 16.04 and Kinetic. I re-checked the dependencies for moveit, and have installed:
ros-kinetic-moveit-core
ros-kinetic-moveit-kinematics
ros-kinetic-moveit-ros-planning
ros-kinetic-moveit-ros-move-group
ros-kinetic-moveit-planners-ompl
ros-kinetic-moveit-ros-visualization
ros-kinetic-moveit-simple-controller-manager
ros-kinetic-moveit-commander
as well as doing apt-get update and apt-get upgrade
The whole thing builds and moveit runs fine. But when I try to import moveit_commander into my planning program I get this error.
Some of the pages addressing this issue suggested upgrading pyassimp to version 3.3, so I did that as well (see below). It installed pyassimp version 3.3 but did not fix the error:
apt-get install python-setuptools
easy_install pip
pip install pyassimp
↧
Failed to load planning library in MOVEIT motion planning
We are doing project on igus robot arm. We have developed URDF package from SW2URDF extension. After that we are trying to integrate it in moveit setup assistant and generated package for moveit_config.
But, we are facing some error as below while launching demo.launch file,
[ INFO] [1520952510.319394087]: waitForService: Service [/get_planning_scene] has not been advertised, waiting...
[ INFO] [1520952515.319986595]: Failed to call service get_planning_scene, have you launched move_group? at /tmp/binarydeb/ros-kinetic-moveit-ros-planning-0.9.11/planning_scene_monitor/src/planning_scene_monitor.cpp:486
[ INFO] [1520952534.691775951]: No active joints or end effectors found for group ''. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1520952534.711537925]: Constructing new MoveGroup connection for group 'igus_planning' in namespace ''
[ERROR] [1520952564.725922669]: Unable to connect to move_group action server 'move_group' within allotted time (30s)
[ INFO] [1520952564.728670183]: Constructing new MoveGroup connection for group 'igus_planning' in namespace ''
[ WARN] [1520952564.779985993]: Interactive marker 'EE:goal_l4' contains unnormalized quaternions. This warning will only be output once but may be true for others; enable DEBUG messages for ros.rviz.quaternions to see more details.
It is not showing planning library in moveit*rviz window under motion planning.
Packages for URDF and moveit_config package are in github link below.
https://github.com/npd26/igus
Anyone have idea about what should we do to get planning library?
ROS version : kinetic
Thankyou
↧
Using Gazebo Plugin with .h File Type
I tried compiling a Gazebo plugin that is a header file (with .h file extension), it says:
CMake Error: CMake can not determine linker language for target: gazebo_ros_moveit_planning_scene
CMake Error: Cannot determine link language for target "gazebo_ros_moveit_planning_scene".
The following is my CMakeLists.txt:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
find_package(gazebo REQUIRED)
include_directories(${GAZEBO_INCLUDE_DIRS})
link_directories(${GAZEBO_LIBRARY_DIRS})
list(APPEND CMAKE_CXX_FLAGS "${GAZEBO_CXX_FLAGS}")
add_library(gazebo_ros_moveit_planning_scene SHARED gazebo_ros_moveit_planning_scene.h)
target_link_libraries(gazebo_ros_moveit_planning_scene ${GAZEBO_LIBRARIES})
Any suggestions for a fix? P.s. I'm trying to use this plugin: https://github.com/jhu-lcsr-forks/gazebo_ros_pkgs/blob/hydro-devel/gazebo_plugins/include/gazebo_plugins/gazebo_ros_moveit_planning_scene.h#L50-L82
↧
↧
Using Gazebo Plugin
I am trying to use the Gazebo plugin: https://github.com/ros-simulation/gazebo_ros_pkgs/blob/hydro-devel/gazebo_plugins/src/gazebo_ros_moveit_planning_scene.cpp
1. Will I need to install the whole Github repository to use that plugin?
2. To compile the plugin, will I need to create a directory with CMakeLists.txt and a copy of the plugin code above or is it possible to compile the plugin using the original code (without making a copy)?
3. I got this error:
> fatal error:> gazebo_plugins/gazebo_ros_moveit_planning_scene.h:> No such file or directory
I have installed gazebo_ros_pkgs. Any suggestions for a fix?
↧
Problem with braccio arm motion planning using MoveIt
Hello,
I am trying to add motion planning support to the braccio arm using MoveIt. The model is properly loading in RViz. But not loading properly in gazebo. When I try to do motion planning using RViz GUI, it is working. The arm could able to move from one location to the other. But when I try to run motion planning through code (MotionPlanner.cpp), I am getting following errors.
[ INFO] [1521704583.674200046]: Loading robot model 'braccio'...
[ INFO] [1521704583.755619682]: Loading robot model 'braccio'...
[ INFO] [1521704584.736409543, 36.857000000]: Ready to take commands for planning group arm.
[ INFO] [1521704585.061241099, 37.183000000]: Ready to take commands for planning group gripper.
[ INFO] [1521704585.064859450, 37.186000000]: Loading robot model 'braccio'...
[ INFO] [1521704585.115357269, 37.234000000]: Loading robot model 'braccio'...
[ INFO] [1521704585.485366141, 37.604000000]: RemoteControl Ready.
[ WARN] [1521704595.799003801, 47.841000000]: Fail: ABORTED: No motion plan found. No execution attempted.
[ INFO] [1521704595.799067112, 47.841000000]: Visualizing plan to target: FAILED
[ INFO] [1521704595.799170369, 47.841000000]: No planning scene passed into moveit_visual_tools, creating one.
Please find the steps to reproduce the issue.
1. git clone https://github.com/NitinPJ/MotionPlanning.git
2. cd MotionPlanning
3. cd catkin_braccio
4. catkin_make
5. source devel/setup.bash
6. roslaunch braccio_arm launch.launch
7. rosrun braccio_arm MotionPlanner
Kindly help me to solve the above issue.
**Platfrom:** Ubuntu 16.04, ROS Kinetic
↧
Moveit Pick and Place Manipulation plan Error
moveit_users
I am working on a pick and place trail using an excavator robot using moveit pick and place and moveit_simple_grasps to generate grasps for the pick and place pipeline. I have the grasp generator working fine but no matter what parameters i change in the config .yaml file required i always get an error with no motion plan generated. could someone help with the problem ? attached is the c++ code and the grasp_data.yaml file required in moveit_simple_grasps generator .
[ INFO] [1521633757.233173297]: Added plan for pipeline 'pick'. Queue is now of size 130
[ INFO] [1521633757.233387878]: Added plan for pipeline 'pick'. Queue is now of size 131
[ INFO] [1521633757.233565758]: Added plan for pipeline 'pick'. Queue is now of size 132
[ INFO] [1521633757.233661266]: Added plan for pipeline 'pick'. Queue is now of size 133
[ INFO] [1521633757.259952855]: Manipulation plan 17 failed at stage 'reachable & valid pose filter' on thread 2
[ INFO] [1521633757.270448057]: Manipulation plan 119 failed at stage 'reachable & valid pose filter' on thread 3
[ INFO] [1521633757.270590459]: Manipulation plan 16 failed at stage 'reachable & valid pose filter' on thread 1
[ INFO] [1521633757.270922774]: Manipulation plan 118 failed at stage 'reachable & valid pose filter' on thread 0
[ INFO] [1521633757.294972059]: Manipulation plan 51 failed at stage 'reachable & valid pose filter' on thread 2
[ INFO] [1521633757.306820635]: Manipulation plan 84 failed at stage 'reachable & valid pose filter' on thread 1
[ INFO] [1521633757.309723185]: Manipulation plan 85 failed at stage 'reachable & valid pose filter' on thread 0
[ INFO] [1521633758.492223810]: Re-added last failed plan for pipeline 'pick'. Queue is now of size 1
[ INFO] [1521633758.500294621]: IK failed
[ INFO] [1521633758.507225297]: IK failed
[ INFO] [1521633758.515416594]: IK failed
[ INFO] [1521633758.515482202]: Sampler failed to produce a state
[ INFO] [1521633758.515531577]: Manipulation plan 1 failed at stage 'reachable & valid pose filter' on thread 0
[ INFO] [1521633758.515687029]: Pickup planning completed after 1.270707 seconds ^C[rviz_mostafabakr_Inspiron_3537_29798_1993362218023763011-5] killing on exit [move_group-4] killing on exit [robot_state_publisher-3] killing on exit [joint_state_publisher-2] killing on exit [virtual_joint_broadcaster_0-1] killing on exit shutting down processing monitor...
code:
void pick(moveit::planning_interface::MoveGroupInterface &group){
ros::NodeHandle nh;
moveit_simple_grasps::SimpleGraspsPtr simpleGrasps;
moveit_visual_tools::MoveItVisualToolsPtr visualTools;
moveit_simple_grasps::GraspData graspData;
//graspData.base_link_ = "chassis";
if (!graspData.loadRobotGraspData(nh, "gripper"))
ros::shutdown();
visualTools.reset(new moveit_visual_tools::MoveItVisualTools("chassis"));
simpleGrasps.reset(new moveit_simple_grasps::SimpleGrasps(visualTools));
geometry_msgs::Pose objectPose;
objectPose.position.x = 3.0;
objectPose.position.y = 0.0;
objectPose.position.z = 0.25;
objectPose.orientation.x = 0.0;
objectPose.orientation.y = 0.0;
objectPose.orientation.z = 0.0;
objectPose.orientation.w = 1.0;
std::vector possibleGrasps;
simpleGrasps->generateBlockGrasps(objectPose, graspData, possibleGrasps);
//ROS_INFO_STREAM(possibleGrasps[0].grasp_pose.header.frame_id);
group.pick("barrel", possibleGrasps);
}
int main(int argc, char **argv){
ros::init(argc, argv, "grippertrial");
ros::AsyncSpinner spinner(1);
spinner.start();
moveit::planning_interface::MoveGroupInterface moveGroup("e1_complete"); moveit::planning_interface::PlanningSceneInterface planningScene;
const robot_state::JointModelGroup* jointModelGroup = moveGroup.getCurrentState()->getJointModelGroup("gripper");
moveGroup.setPlanningTime(200.0);
moveit_msgs::CollisionObject barrel; barrel.id = "barrel";
barrel.operation = moveit_msgs::CollisionObject::ADD;
shape_msgs::SolidPrimitive primitive;
primitive.type = primitive.CYLINDER;
primitive.dimensions.resize(2);
primitive.dimensions[0] = 0.5; //length
primitive.dimensions[1] = 0.25; //diameter
//barrel upright
geometry_msgs::Pose barrelPose;
barrelPose.position.x = 3.0;
barrelPose.position.y = 0.0;
barrelPose.position.z = 0.25;
barrelPose.orientation.x = 0.0;
barrelPose.orientation.y = 0.0;
barrelPose.orientation.z = 0.0;
barrelPose.orientation.w = 1.0;
barrel.primitives.push_back(primitive);
barrel.primitive_poses.push_back(barrelPose);
std::vector collisionObjectsVector;
collisionObjectsVector.push_back(barrel);
std::vector objectIds;
objectIds.push_back(barrel.id);
planningScene.removeCollisionObjects(objectIds);
planningScene.addCollisionObjects(collisionObjectsVector);
// sleep(5.0);
ros::WallDuration(5.0).sleep();
pick(moveGroup);
return 0;
}
and this is the .yaml file required for the moveit_simple_grasps
base_link: 'chassis'
gripper:
end_effector_name: 'gripper' #eef group name
# Default grasp params
joints: ['gripper_rotator_joint' , 'gripper_left_joint' , 'gripper_right_joint']
#open Gripper
pregrasp_posture: [0.0, 1.0, 1.0]
pregrasp_time_from_start: 4.0
#closed Gripper
grasp_posture: [0.0, 0.8, 0.8]
grasp_time_from_start: 4.0
postplace_time_from_start: 4.0
#max object width that can fit between fingers
max_grasp_width : 0.35
# Desired pose from end effector to grasp [x, y, z] + [R, P, Y]
grasp_pose_to_eef: [2.75869, -0.035, 2.23794]
grasp_pose_to_eef_rotation: [0.0, 0.0443414, 0.0]
end_effector_parent_link: 'quickcoupler'
could the problem be in the parameters of the .yaml or is there something wrong with the code ??
↧
Moveit Markers not working properly
Hi! Disclaimers I am a noob at this still, only found out about moveit last week because its the next step in my UnI project.
So I have my URDF:
I launched Moveit Setup assistant loaded the URDF. Generated the selft-collision matrix. Added a virtual joint with base link: "chao" (floor in portuguese) and parent "odom_combined" and its fixed, also tried plannar but don't think the problem is in this part.
Now I have tried multiple combinations of Planning Groups and End Effectors and one combination that atleast shows ONE marker in RViz is no end effector and Planning group: Joints:(chao_base,base_segundo,segundo_terceiro,terceiro_quarto) (all the joints except the last).
Added author info and generated the package. Now when I launch it with RVIZ it only shows 1 marker that corresponds to the "terceiro_quarto" joint and its the only joint that moves. I would like to know if anyone knows how to either had more markers for the other joints or a way to make that marker also move the other joints. I am doing something wrong in the Setup assistant, I doubt its the URDF but its also a possibility.
Thanks in advance!
↧
↧
No visualization in RViz when publishing on (collision_object) topic
I am trying to add a collision object using another way than
planning_scene.addCollisionObjects(std::vector
so I am trying to publish on (collision_object) and (attached_collision_object) topics using
ros::Publisher pub_co = nh2.advertise("collision_object", 10);
ros::Publisher pub_aco = nh2.advertise("attached_collision_object", 10);
However nothing shows in Rviz, when i echo the topic the msg is shown but nothing in Rviz
I also tried using moveit_visual_tools method
visual_tools_->publishCollisionBlock(------)
but also i get nothing !
any ideas why ?
↧
Redusing resolution from a cad model
Is there a ros package to reduce the resolution of any cad model (.stl/.dae/.obj)?
I am looking for something like [this](http://drububu.com/miscellaneous/voxelizer/?out=obj), where any cad model can be converted into a lower resolution voxel grid
I need this lower resolution model (of obstacles) to perform collision checks during path planning. Since its highly computationally expensive to do the same of the original model
↧
How to run moveit/descartes on the odroid xu4 (OpenGl ES)
Hi,
I am working on a project, which requires trajectory planning of an industrial arm (ABB IRB 120 using the IRC5 Compact Controller). My tests execute properly on my computer (Lenovo Yoga 8Gb Ram, Core i5, ROS Kinetic, Ubuntu 16.04 LTS), but fail to execute on the Odroid XU4.
**Test**
roslaunch artbot_trajectories artbot.launch
**Observations**
1. Throws an error after attempting to load the *robot model 'abb_irb120'*
2. Complains about X11 Visual, MESA LOADER, and libGL
*Unable to find an X11 visual which matches EGL config 9*
*Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface*
*MESA-LOADER: failed to retrieve device information*
*libGL error: unable to load driver: exynos_dri.so*
**Expected Results**
1. Launches RVIZ with the standard demo GUI
2. No Errors
**Supporting Files**
workspace: [link text](https://github.com/chibike/artbot_ws/tree/with_sound/src)
required_packages: abb_driver, artbot_trajectories, descartes (all included in workspace)
ros version: kinetic
moveit version: kinetic
os version: ubuntu mate 16.04 : [link text](https://dn.odroid.com/5422/ODROID-XU3/Ubuntu/)
*ubuntu-16.04.3-4.14-mate-odroid-xu4-20171212.img.xz 2017-12-15 09:16 1.3G*
Email: co607@live.mdx.ac.uk {Please use the question's title as the title of the email}
**Supporting Images**
**Tags**
ODROID-XU4, ABB, moveit, descartes, opengl, opengl.es, ubuntu-16.04
↧