Hello,
I'm relatively new to MoveIt and ROS. For the past week, I have been trying to configure the 3D sensor (a Kinect) on my robot model to work in MoveIt!, following the tutorial [here](http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/pr2_tutorials/planning/src/doc/perception_configuration.html). Additionally, I created a node to launch the Octomap Server.
However, after completing these steps and firing up MoveIt!/Rviz with Gazebo, the Planning Scene doesn't contain any 3D data. I have checked the topics list, and my simulated robot is publishing the correct PointCloud2 data, and the Octomap server is running and publishing correct occupancy maps. What else is needed to get Octomap to publish the data to the Planning Scene?
Code:
config/sensors_kinect.yaml
sensors:
- sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
point_cloud_topic: /kinect/depth/points
max_range: 5.0
point_subsample: 1
padding_offset: 0.1
padding_scale: 1.0
filtered_cloud_topic: filtered_cloud
launch/sensor_manager.launch.xml
↧
How to give Octomap data to the Planning Scene? (MoveIt!)
↧
How to setup Moveit for a Real arm.
Treat me as supper noob. So, I am trying to make a 5dof custom arm controlled by arduino.
Steps taken :
1 - Have a URDF file of my arm.
2- Have moveit configurations done by move it assistant.
3- planned motion with move_group_interface.
Now I am stuck at how to proceed further, these are the questions I need an answer for :
1 - Do I have to write controllers used in controllers.yaml file in moveit configurations ? if yes then please share a tutorial.
2 - Can I use Fake_controllers from moveit ?
3 - After I plan the path how to forward it to the arduino node ? (I am not sure what I have to do with follow_trajecotry.action)
Your will be a life for me, any help is welcomed, thank you.
↧
↧
MoveIt! correctly planning but sometimes failing to execute trajectories
Hello,
I am on ROS Kinetic and Ubuntu 16.04 LTS. I have been using MoveIt! for 3 months now and recently discovered a problem that is really bothering me. I am testing the MoveIt!'s OMPL planners in an application where a cutting tool (which is the end effector of a manipulator) has to reach a specific point in a branch of a vine tree, all simulated in Gazebo. This tree is added as an collision object to the program, so MoveIt! is aware of it and should not collide with it. The normal behavior of this application is: I request a plan for the manipulator to go to that point, MoveIt! calculates the path and, If a solution is found, it is executed. However, sometimes MoveIt! says that a solution is found (path well calculated) but then the manipulator exhibits strange trajectories and hits the vine, not accomplishing its goal. This is really strange because it happens with all the planners of the OMPL implemented in MoveIt!, happening more often with some planners than others. The one that exhibits the best behaviour of them all is the BFMTkConfigDefault, failing only 4 times out of 20.
I am pretty sure that the controllers of the manipulator are well tuned because I can make the manipulator reach any point that is not a collision object. Plus, the manipulator reaches the point that I want a lot of times (which is not a collision object, of course). Can somebody explain me why the manipulator is sometimes hitting a tree even though MoveIt! says that a solution was found to the path problem and the path was well executed?
Thanks in advance,
José Brito
↧
MoveIT! acceleration scaling factor not working
I am using ROS Indigo with Ubuntu 14.04. During one of my codes I set my acceleration scaling factor to be 0.001 and velocity scaling factor to be 0.005 for testing purposes. But when I recorded the data with ***follow_joint_trajectory/goal topic***, the **scaled acceleration limits** were violated. Here's my code :
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
ros::init(argc, argv, "move_group_cartesian_demo");
ros::NodeHandle node_handle;
ros::AsyncSpinner spinner(1);
spinner.start();
sleep(5.0);
moveit::planning_interface::MoveGroup group("arm");
moveit::planning_interface::PlanningSceneInterface planning_scene_interface;
// Setting the pose tolerance
group.setGoalPositionTolerance(0.00001);
// Setting the orientation tolerance
group.setGoalOrientationTolerance(0.001);
tf::TransformListener listener;
tf::StampedTransform transform;
std::vector joint_positions;
group.getCurrentState()->copyJointGroupPositions(group.getCurrentState()->getRobotModel()->getJointModelGroup(group.getName()), joint_positions);
joint_positions[0] = 0.0;
joint_positions[1] = -0.54168;
joint_positions[2] = 0.0;
joint_positions[3] = -0.66667;
joint_positions[4] = 0.000139;
joint_positions[5] = -0.272563;
joint_positions[6] = 0;
group.setJointValueTarget(joint_positions);
group.setJointValueTarget(joint_positions);
moveit::planning_interface::MoveGroup::Plan my_plan;
group.move();
sleep(5.0);
// ......................... Cartesian Paths ..........................
std::vector waypoints;
listener.lookupTransform ("base_link", group.getEndEffectorLink().c_str(), ros::Time(0), transform );
geometry_msgs::PoseStamped pose;
pose.header.stamp = ros::Time::now();
pose.header.frame_id = "/world";
pose.pose.position.x = transform.getOrigin().getX();
pose.pose.position.y = transform.getOrigin().getY();
pose.pose.position.z = transform.getOrigin().getZ();
pose.pose.orientation.x = transform.getRotation().getX();
pose.pose.orientation.y = transform.getRotation().getY();
pose.pose.orientation.z = transform.getRotation().getZ();
pose.pose.orientation.w = transform.getRotation().getW();
geometry_msgs::Pose target_pose2 = pose.pose;
target_pose2.position.x += 0.001;
// Note this is not the speed of the end-effector point.
group.setMaxVelocityScalingFactor(0.005);
group.setMaxAccelerationScalingFactor(0.001);
moveit_msgs::RobotTrajectory trajectory;
const double jump_threshold = 0.0;
const double eef_step = 0.0001;
double fraction = group.computeCartesianPath(waypoints, eef_step, jump_threshold, trajectory);
ROS_INFO("Visualizing plan 2 (cartesian path) (%.2f%% achieved)", fraction*100.0);
my_plan.trajectory_ = trajectory;
group.execute(my_plan);
ros::shutdown();
return 0;
}
The maximum acceleration for each joint is set to be **10 rad/s^2** and maximum velocity is set to be **pi radians/s**. can anyone help me out with this ??
↧
Orientation problem between Gripper and Object ??
I am working on a pick and place project using ROS & MoveIt!, I wrote my own pick and place functions which generate grasp poses according to the pose of the object and then automatically picks. (all grasps for now are done from the top since I am working with an excavator)
One part of the routine is rotating the gripper to have a <90 deg> angle difference between the gripper frame and the object frame so that the grip is good (instead of having the gripper close at edges)
My approach is once the gripper reaches the object --> transform the object into the gripper's frame and then --> get the rotation around z-axis of the object in the gripper frame (yaw) and then --> rotate the gripper by this value + <90 deg>
The code works fine when the object is originally rotated around z-axis and/or x-axis (of the world frame) but any rotation in y-axis (of the world frame) rotation is not as desired and the gripper collides with the object when moving downwards ? I don't understand why since I am transforming to gripper frame anyway ? any ideas ?
bool akit_pick_place::rotateGripper(moveit_msgs::CollisionObject object_){ //needs adjusting (rotation in y-axis has problems)
geometry_msgs::PoseStamped object_in_world_frame, object_in_gripper_frame;
object_in_world_frame.pose = object_.primitive_poses[0];
object_in_world_frame.header.frame_id = object_.header.frame_id;
//transform object from world frame to gripper rotator frame
transform_listener.waitForTransform("gripper_rotator", WORLD_FRAME, ros::Time::now(), ros::Duration(0.1)); //avoid time difference exceptions
transform_listener.transformPose("gripper_rotator",ros::Time(0), object_in_world_frame, WORLD_FRAME, object_in_gripper_frame);
//get roll, pitch, yaw between object frame and gripper frame
tf::Quaternion qq(object_in_gripper_frame.pose.orientation.x, object_in_gripper_frame.pose.orientation.y,
object_in_gripper_frame.pose.orientation.z, object_in_gripper_frame.pose.orientation.w);
tf::Matrix3x3 m(qq);
double roll, pitch, yaw;
m.getRPY(roll, pitch, yaw);
ROS_INFO_STREAM("roll: " << roll << " pitch: " << pitch << "yaw: " << yaw);
//account for angles in different quadrants
if (yaw <= 0.0){
gripperJointPositions[0] = (M_PI/2) + yaw;
} else {
gripperJointPositions[0] = yaw - (M_PI/2);
}
gripperGroup->setJointValueTarget(gripperJointPositions);
gripperSuccess = (gripperGroup->plan(gripperMotionPlan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
gripperSuccess = (gripperGroup->execute(gripperMotionPlan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
ROS_INFO_STREAM("Gripper Motion Plan: " << (gripperSuccess ? "Rotated gripper" : "FAILED TO ROTATE GRIPPER"));
return (gripperSuccess ? true : false);
}
↧
↧
Build of moveit from source fails in ROS Kinetic: FCL library errors
Building moveit with catkin_make in ROS Kinetic (Ubuntu 16.04) fails with the following errors
/usr/local/include/fcl/math/constants.h:49:1: error: expected primary-expression before ‘static’
static constexpr S pi() { return S(3.141592653589793238462643383279502884197169399375105820974944592L); }
^
/usr/local/include/fcl/math/constants.h:49:1: error: expected ‘}’ before ‘static’
/usr/local/include/fcl/math/constants.h:49:1: error: expected ‘;’ before ‘static’
/usr/local/include/fcl/math/constants.h:52:18: error: ‘S’ does not name a type
static constexpr S phi() { return S(1.618033988749894848204586834365638117720309179805762862135448623L); }
^
/usr/local/include/fcl/math/constants.h:55:20: error: ‘constants’ does not name a type
using constantsf = constants;
^
/usr/local/include/fcl/math/constants.h:56:20: error: ‘constants’ does not name a type
using constantsd = constants;
^
/usr/local/include/fcl/math/constants.h:58:1: error: expected declaration before ‘}’ token
} // namespace fcl
^
Do i need to add any compiler flags to the CMakeLists?
# toplevel CMakeLists.txt for a catkin workspace
# catkin/cmake/toplevel.cmake
cmake_minimum_required(VERSION 2.8.3)
add_compile_options(-std=c++11)
set(CATKIN_TOPLEVEL TRUE)
# search for catkin within the workspace
set(_cmd "catkin_find_pkg" "catkin" "${CMAKE_SOURCE_DIR}")
execute_process(COMMAND ${_cmd}
RESULT_VARIABLE _res
OUTPUT_VARIABLE _out
ERROR_VARIABLE _err
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
if(NOT _res EQUAL 0 AND NOT _res EQUAL 2)
# searching fot catkin resulted in an error
string(REPLACE ";" " " _cmd_str "${_cmd}")
message(FATAL_ERROR "Search for 'catkin' in workspace failed (${_cmd_str}): ${_err}")
endif()
# include catkin from workspace or via find_package()
if(_res EQUAL 0)
set(catkin_EXTRAS_DIR "${CMAKE_SOURCE_DIR}/${_out}/cmake")
# include all.cmake without add_subdirectory to let it operate in same scope
include(${catkin_EXTRAS_DIR}/all.cmake NO_POLICY_SCOPE)
add_subdirectory("${_out}")
else()
# use either CMAKE_PREFIX_PATH explicitly passed to CMake as a command line argument
# or CMAKE_PREFIX_PATH from the environment
if(NOT DEFINED CMAKE_PREFIX_PATH)
if(NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
string(REPLACE ":" ";" CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
endif()
endif()
# list of catkin workspaces
set(catkin_search_path "")
foreach(path ${CMAKE_PREFIX_PATH})
if(EXISTS "${path}/.catkin")
list(FIND catkin_search_path ${path} _index)
if(_index EQUAL -1)
list(APPEND catkin_search_path ${path})
endif()
endif()
endforeach()
# search for catkin in all workspaces
set(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE)
find_package(catkin QUIET
NO_POLICY_SCOPE
PATHS ${catkin_search_path}
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
unset(CATKIN_TOPLEVEL_FIND_PACKAGE)
if(NOT catkin_FOUND)
message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.")
endif()
endif()
catkin_workspace()
I guess this is related to https://gist.github.com/JeroenDM/bb79d08c1d50549f99f05c6d68285ef9
and https://answers.ros.org/question/279195/how-to-install-fcl-library-in-ros-kinetic-catkin-workspace/
and https://answers.ros.org/question/291649/cannot-use-fcl-with-ros/
↧
MoveIt! Euler angles or rotation vector?
I'm trying to figure out whether the MoveIt MoveGroupInterface, in particular, moveit_commander uses rotation vectors or Euler angles as orientation input. The documentation for move_group.set_position_target is not clear in this regard:
> [x, y, z, rot_x, rot_y, rot_z] or a list of 7 floats [x, y, z, qx, qy, qz, qw]
The list is then passed to [MoveGroupInterface](https://github.com/ros-planning/moveit/blob/6bf3d04488a42e4e8e7153c2349c2d35103e7e50/moveit_ros/planning_interface/move_group_interface/src/move_group_interface.cpp#L1843) where it is converted by [Eigen](http://docs.ros.org/diamondback/api/eigen_conversions/html/eigen__msg_8cpp_source.html) to a Pose (XYZ and Quaternion) which looks more like the original input should be a rotation vector.
The MoveGroupInterface also has a [setRPYTarget](https://github.com/ros-planning/moveit/blob/6bf3d04488a42e4e8e7153c2349c2d35103e7e50/moveit_ros/planning_interface/move_group_interface/src/move_group_interface.cpp#L1945) function, which expects roll pitch yaw == (fixed XYZ?) Euler angles.
Therefore, I'm not 100% sure if set_pose_target expects Euler angles or a rotation vector.
Can anyone please clarify me on which pose representation is expected.
↧
MoveIt! Benchmarking issue
Hi all,
I have faced a problem when trying to apply the benchmarking to my robot (UR5). Initially I followed the tutorial which is on Fanuc and it works because you don't have to create packages or launch files since everything is already there.
I copied the "benchmarks" folder which contains -> examples -> demo1.yaml and demo_fanuc.launch (and I modified them properly to adapt to my robot). After that I was able to connect to database and saving scene and query. Everything works until I run the benchmark [roslaunch moveit_ros_benchmarks demo_fanuc.launch]. The error is the following:
[ INFO] [1527089331.704758889]: Loaded queries successfully
[ INFO] [1527089331.704794510]: Benchmark loaded 1 starts, 0 goals, 0 path constraints, 0 trajectory constraints, and 1
queries
[ INFO] [1527089331.704935837]: Benchmarking query 'Start2_Pick2' (1 of 1)
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
Debug: Starting goal sampling thread
Debug: Waiting for space information to be set up before the sampling thread can begin computation...
[ INFO] [1527089331.705864397]: Planner configuration 'manipulator[RRTConnectkConfigDefault]' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
Debug: The value of parameter 'longest_valid_segment_fraction' is now: '0.01'
Debug: The value of parameter 'range' is now: '0'
Debug: manipulator[RRTConnectkConfigDefault]: Planner range detected to be 13.823008
Info: manipulator[RRTConnectkConfigDefault]: Starting planning with 1 states already in datastructure
Debug: manipulator[RRTConnectkConfigDefault]: Waiting for goal region samples ...
Debug: Beginning sampling thread computation
Debug: Stopped goal sampling thread after 10 sampling attempts
Debug: manipulator[RRTConnectkConfigDefault]: Waited 0.010097 seconds for the first goal sample.
Info: manipulator[RRTConnectkConfigDefault]: Created 5 states (2 start + 3 goal)
Info: Solution found in 0.013512 seconds
Info: SimpleSetup: Path simplification took 0.005666 seconds and changed from 4 to 2 states
================================================================================REQUIRED process [moveit_run_benchmark-3] has died!
process has died [pid 22641, exit code -11, cmd /home/arscontrol/nuovo_ws/devel/lib/moveit_ros_benchmarks/moveit_run_benchmark __name:=moveit_run_benchmark __log:=/home/arscontrol/.ros/log/fdd3e3c8-5e9d-11e8-a63f-d07e3591555f/moveit_run_benchmark-3.log].
log file: /home/arscontrol/.ros/log/fdd3e3c8-5e9d-11e8-a63f-d07e3591555f/moveit_run_benchmark-3*.log
Initiating shutdown!
================================================================================
[moveit_run_benchmark-3] killing on exit
[mongo_wrapper_ros_Kazar_22597_4042277702145717894-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
arscontrol@Kazar:~/nuovo_ws$
Has someone faced this issue before or was able to make the benchmarking for his own robot?
My Ubuntu version: 16.04 ROS Kinetic
↧
Is it okay to give MoveIt! a target pose in end-effector frame when using custom plugin for IK solver?
If one is using MoveIt! with a custom plugin for the kinematic solver, is it okay to specify a target pose in a link frame that was not present when the plugin was made? I've fixed a tool on the tool0 link (the tool flange) of the UR10 model and MoveIt! is using the UR10KinematicsPlugin. Everything has operated just fine when I had the end-effector as the final link in the planning group in the SRDF, but I'm wondering if there's some reason I ought to have the planning group stop at the tool flange and specify target poses for that frame instead of the ee frame.
↧
↧
MoveIt moveit::core::RobotModel::RobotModel
Hey there,
I can not create a RobotModelConstPtr. I need this to create a RobotState (http://docs.ros.org/jade/api/moveit_core/html/classmoveit_1_1core_1_1RobotState.html#ac5944765b49ee074030c01010af36c07).
A part of my Code:
// Construct a kinematic model
const RobotModelConstPtr kinematic_model; //need it later for RobotState
robot_model::RobotModel kinematic_model = (RDFLoader.getURDF(), RDFLoader.getSRDF());
The error is " 'RobotModelConstPtr' does not name a type".
This is a link to my hole code (https://www.dropbox.com/s/rko84pkkiigug9j/inv_node_end.cpp?dl=0).
It would be perfect if someone can help me out.
Thanks
The whole code:
#include
#include
#include
#include
// MoveIt!
#include
#include
#include
int main(int argc, char **argv)
{
ros::init(argc, argv, "inv_node");
ros::AsyncSpinner spinner(1);
spinner.start();
ros::NodeHandle nh;
// Convert urdf file in a string
std::ifstream u("youbot_arm.urdf");
std::stringstream su;
su << u.rdbuf();
// upload the urdf to the parameter server
nh.setParam("robot_description", su.str());
// Convert srdf file in a string
std::ifstream s("youbot.srdf");
std::stringstream ss;
ss << s.rdbuf();
// upload the srdf to the parameter server
nh.setParam("robot_description_semantic", ss.str());
// Initialize the robot model
rdf_loader::RDFLoader RDFLoader(su.str(), ss.str());
// Construct a kinematic model
const RobotModelConstPtr kinematic_model; //need it later for RobotState
robot_model::RobotModel kinematic_model = (RDFLoader.getURDF(), RDFLoader.getSRDF());
ROS_INFO("Model frame: %s", kinematic_model->getModelFrame().c_str());
// RobotStat that maintains the configuration
robot_state::RobotStatePtr kinematic_state(new robot_state::RobotState(RobotModel);
kinemati_state->setToDefaultValues();
// choose JointGroup
const robot_state::JointModelGroup* joint_model_group = RobotModel.getJointModelGroup("arm_1");
// Forward Kinematics
kinematic_state->setToRandomPositions(joint_model_group);
const Eigen::Affine3d &end_effector_state = kinematic_state->getGlobalLinkTransform("arm_link_0");
/* 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());
ros::shutdown();
return 0;
}
↧
How to embody the wrist singularity in MoveIt
Hello, I am using MoveIt to simulate the trajectory of a UR10 robot. When the trajectory is obtained and transplanted to the actual application of a UR robot, the wrist singularity occurred in the process. So how to avoid the situation in the MoveIt or embody singularity in ROS?
↧
Xacro arguments not appearing in MoveIt! Setup Assistant
Hello,
I am on Ubuntu 16.04 LTS and on ROS Kinetic. I have worked with MoveIt! several times and I had to change my MoveIt! package more than one time because I added more links and joints to my URDF model. At the time, I launched the moveit setup assistant and clicked on "Edit Existing MoveIt Configuration Package" and selected the path to the MoveIt! config package that I had previously created. After that I would write arguments in a text box named XACRO arguments (or someting like this) in order to load some parts of my model (because my original URDF is the Husky robot and I am also loading other additional parts like the kinetic, etc.). The problem is that this XACRO arguments text box used to appear below the text box were I type the path for my MoveIt! config package, but now it's not appearing anymore and I don't know why. This makes it impossible for me to even load and see correctly my MoveIt! config package in the Setup Assistant and I also can't alter it like I want. Do you know why this is happening?
Best regards,
José Brito
↧
Unable to plan IK using MoveIt!
I'm using the LMA kinematics plugin to plan motion for a 6DOF arm. I'm able to use the interactive marker freely in Rviz (although some joints keep going in to invalid states or out of the defined joint limits sometimes and turn pink).
Now I am trying set pose targets from python ([my script here](https://pastebin.com/xW6ED33h)). If I use `get_random_pose()` and set this pose using `set_pose_target()`, planning and executing works as expected. However, when I use the same random pose target values and create a custom `geometry_msgs.msg.Pose()` object and the set the pose target, I keep getting the following warning:
Python:
[ WARN] [1524579808.359818083, 4184.338000000]: Fail: ABORTED: No motion plan found. No execution attempted.
Moveit:
Error: RRTConnect: Unable to sample any valid states for goal tree
at line 215 in /tmp/binarydeb/ros-kinetic-ompl-1.2.1/src/ompl/geometric/planners/rrt/src/RRTConnect.cpp
Info: RRTConnect: Created 1 states (1 start + 0 goal)
Could it be an issue with my python script or the inverse kinematics? How is planning working with random pose and fails to plan with the same position and orientation values when I create a custom pose object and assign these values? Tried increasing the planning time, attempts and goal tolerance with no luck!
PS:
I was unable to use IK fast as it kept failing to solve the IK and with KDL, the interactive marker does not move properly (joints seem to stick at 90 degrees and movement is not free). Actually my arm is 5DOF and I had to include a dummy revolute joint with ilmits (0-0.01) to make the interactive marker work with LMA plugin. IK fast failed to generate for both 6DOF and 5DOF (Raghavan Roth equations too complex error).
[URDF file here](https://github.com/ardop2/ardop2/blob/master/ardop_description/urdf/ardop_description.urdf).
[My MoveIt Config package here.](https://github.com/ardop2/ardop2/tree/master/ardop_moveit_config)
Image of my robot for reference:

↧
↧
Significance of adding end effectors in MoveIt! Setup Assistant
Naive question perhaps but what exactly does this provide? Somewhere on the wiki/tutorials the claim is made that by adding end effectors you enable additional end-effector-specific (internal) functionality (Steps 4 and 6 [here](http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html)).
In the past I have not included the end effectors when using the MoveIt! Setup Assistant and have yet to have any issue with limited functionality (that I know of...). **That said, I guess my question is: what does adding an end effector in MoveIt provide and/or what cool stuff am I missing?**
[edit] link to appropriate documentation
↧
arm_controller/joint_trajectory topics not being displayed
Hey!
For my [GSoC 2018](https://summerofcode.withgoogle.com/projects/#6587806298669056) project, I had previously attached a Kinect sensor to the UR5 robot, generated MoveIt! Config packages for them and tested it on RViz. I was able to spawn the robot with the controllers activated in Gazebo. The next step of my project was to be able to command the robot in Gazebo using MoveIt!.
In this process of trying to launch the robot in Gazebo, I noticed that the arm_controller/joint_trajectory topics which are related to the **action server** are not being displayed while using **rostopic list**. However, the weird part is that on launch, the initial information from the terminal shows that the arm_controller_spawner node has started. [This link](https://github.com/ros-industrial/universal_robot/issues/281) had a related solution but it didn't work.
I previously downloaded the [Universal robot Github package](https://github.com/ros-industrial/universal_robot) and the **ur5.launch** file loads the required arm_controller.joint_trajectory topics properly. However, that same thing was not working with my files (which are minor edits of the UR5 files). I am not able to figure out why exactly is this happening. I have attached the related files with this question. Thanks in advance.
Edit: While comparing with the UR5 launch, I realised that the arm_controller and joint_state_controller are not loaded successfully with my model as that message is not showing on the terminal with Gazebo launch.
The complete URDF file can be accessed via this [Google Drive Link.](https://drive.google.com/open?id=1bgAlqDw-e1aMt0ITg5Imstc4YLksiRFR)
**Gazebo Robot Launch file**
**workcell_ur5.launch file**
**controller_utils.launch**
**myworkcell_control.yaml**
arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
constraints:
goal_time: 0.6
stopped_velocity_tolerance: 0.05
shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
shoulder_lift_joint: {trajectory: 0.1, goal: 0.1}
elbow_joint: {trajectory: 0.1, goal: 0.1}
wrist_1_joint: {trajectory: 0.1, goal: 0.1}
wrist_2_joint: {trajectory: 0.1, goal: 0.1}
wrist_3_joint: {trajectory: 0.1, goal: 0.1}
stop_trajectory_duration: 0.5
state_publish_rate: 25
action_monitor_rate: 10
**joint_state_controller.yaml**
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
**rostopic list**

**Gazebo_launch**

↧
Calling pick results in "No Sampler was constructed"
Hi folks,
I am trying to get a simple pick & place demo to work. Objects were added to the planning scene and are correctly shown in rviz with their according names. I am using the Franka Emika Panda simulation which is started with `roslaunch panda_moveit_config demo.launch`. When I use the `panda_arm_hand` planning group and call `group.pick('my_object')`, an error is displayed stating that "No sampler was constructed". In addition, maybe as a consequence of the above, the following appears in the log:
[ INFO] [1527240082.156847614]: Planning attempt 1 of at most 1
[ INFO] [1527240082.156979205]: Added plan for pipeline 'pick'. Queue is now of size 1
[ERROR] [1527240082.157460490]: No sampler was constructed
[ INFO] [1527240082.157499970]: Manipulation plan 0 failed at stage 'reachable & valid pose filter' on thread 0
[ WARN] [1527240082.158674635]: All supplied grasps failed. Retrying last grasp in verbose mode.
[ INFO] [1527240082.158787599]: Re-added last failed plan for pipeline 'pick'. Queue is now of size 1
[ INFO] [1527240082.159718144]: Manipulation plan 0 failed at stage 'reachable & valid pose filter' on thread 1
[ INFO] [1527240082.162419179]: Pickup planning completed after 0.001770 seconds
In another attempt, I supplied a list of possible (more or less meaningful) grasps to the pick method, but that didn't change the outcome.
Do you have any suggestion to get rid of this error message? I was unable to find any clue regarding this particular error message- Do I have to load any special package, configuration parameter, or must some ros node be running I am currently not aware of?
Some remarks: I work with an Rviz simulation primarily, Kinetic inside an Xenial-based Docker container. However, I observed the error message also with a real robot on a real Xenial Ubuntu System. Both Ros and Ubuntu Packages are up-tot-date. The controller invoking the pick routine is written in Python, if that matters.
Regards, SC
↧
AR2 robot - import into ROS
I have more requests than I can count to get my robot ROS enabled, I thought I would start with trying to get URDF into moveit. Using the solidworks plugin, Ive defined the base and then a child of the base with components for J1 and then a child of J1 for components of J2 and so on. joints 2 thought 6 appear correct but joint 1 gets picked up as joint type fixed and there is no valid axis selection available. Im not sure what im missing. Also the origin for the base is far below the robot which is confusing. are there any examples or tutorials available showing a complete run through in defining and importing a 6 axis robot?
thanks
Chris Annin
[https://github.com/Chris-Annin/AR2](https://github.com/Chris-Annin/AR2)
↧
↧
Is it possible to simulate a quadrupedal robot using Moveit? if not what is the best possible way to control the robot through ros??
I am using ROS Kinetic and gazebo 7 for my simulation
↧
SW2URDF - urdf .stl files not found
Ive used SW2URDF to export a urdf but every time I get errors stating the models cannot be found. Ive been at this for 2 days straight, the models are in fact there and there isnt any discrepancy in path or file name, case is correct. Ive poured over the forum and tried everything from changing the filepath to complelety reinstalling ros, move it and reconfiguring workspace. im running ubunto 16.04 and kinetic any insight would be appreciated:
[ERROR] [1527370549.957216539]: Error retrieving file [package://AR2urdf/meshes/base_link.STL]: Package [AR2urdf] does not exist
↧
move_group_interface and pose_goal
Hey guys,
I'm writing my Bachelor-thesis, have 4 weeks to go and I have a serious problem. I run a 5DOF robotarm.
Right now I'm trying to implement a move_group_interface program to send cartesian goals to the arm to pick up tings later.
The controller is workin and the robot follows random paths perfectly. Now the problem is that I'm unable to generate valid pose goals.
I'll tell you what works and what I've tried till now.
1) RVIZ: Random valid target => motion_planner finds a path and the controller executes without any problems.
2) move_group_interface => generate randomPoseGoal => works like RVIZ, so no problem (while studying the sourcecode I realized that it just generates the pose_goal by generating a joint_space_goal (maybe something like that would be my solution?!)
3) generate randomJointSpaceGoal => works perfect as well
4) reading the robotPose after reaching a random goal => extracting the necessary information (like pose.x, pose.y, pose.z, orientation.x, orientation.y, orientation.z, orientation.w) => build a poseGoal by myself with these information => trajectory is calculated and executed
5) using getCurrentRPY() after reaching a randomGoal=> gernerate a poseGoal with the obtained position and orientation and creating the orientation via tf::generateQuaternionMsgFromRollPitchYaw works as well.
The positions I use are reachable and the orientation should.
When I change just a little bit on working data MoveIt! wont find a plan.
Example:
"smallarm_hw_motion_planner 0.287307 -0.0883872 0.298863 -2.244 0.854 -2.411" works fine
"smallarm_hw_motion_planner 0.287307 -0.0883872 0.298863 -2.244 0.854 -2.311" no motion_plan found (the 3 in the last argument)
so where is my problem? How do I transform the coordinate systems?
My plan is to send something like this to the move_group_interface to move the arm.
rosrun pos.x pos.y pos.z angle.r angle.p angle.y
at minimum the correct position. later then by calling a function..
I hope somebody can help me
greetings Chris
↧