ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

yijiangh's profile - activity

2019-11-03 16:59:47 -0500 received badge  Guru (source)
2019-11-03 16:59:47 -0500 received badge  Great Answer (source)
2019-02-08 10:13:51 -0500 received badge  Enlightened (source)
2019-02-08 10:13:51 -0500 received badge  Good Answer (source)
2018-10-20 19:10:59 -0500 received badge  Nice Answer (source)
2018-09-28 21:03:57 -0500 received badge  Necromancer (source)
2018-09-19 06:20:47 -0500 received badge  Famous Question (source)
2018-06-30 04:58:29 -0500 marked best answer set free_index for 7-dof robot's IKFast moveit plugin generation

Hi everyone,

I writing to ask a question about setting free joint index for a 7-dof robot's ikfast moveit plugin generation. I am running ROS kinetic on Ubuntu 16.04 and openrave master branch (commit). The sympy version I am using is 0.7.1 (matching openrave;s requirement).

The 7 dof robot I am working on consists of one standard 6 dof industrial robotic arm and a horizontal linear axis. Take the following 6-axis IRB6640 + linear axis for an example, the links info is:

name                    index parents                
-----------------------------------------------------
base_link               0                            
linear_axis_base_link   1     base_link              
linear_axis_zero        2     linear_axis_base_link  
linear_axis_carriage    3     linear_axis_zero       
linear_axis_robot_mount 4     linear_axis_carriage   
robot_base_link         5     linear_axis_robot_mount
robot_base              6     robot_base_link        
robot_link_1            7     robot_base_link        
robot_link_2            8     robot_link_1           
robot_link_3            9     robot_link_2           
robot_link_4            10    robot_link_3           
robot_link_5            11    robot_link_4           
robot_link_6            12    robot_link_5           
robot_tool0             13    robot_link_6           
eef_base_link           14    robot_tool0            
eef_tcp_frame           15    eef_base_link          
robot_link_cylinder     16    robot_link_1           
robot_link_piston       17    robot_link_cylinder    
-----------------------------------------------------
name                    index parents

A snapshot of the dae visualization:

However, I've tried setting free_index to each of the indices, but the ikfast either popped up the following error (and I've tried running round_collada_numbers) or it takes 8 minutes or so to compute and then end with some errors:

__main__.CannotSolveError: CannotSolveError: need 6 joints

My question is: What would be the role of thumb in setting up this free index in ikfast generation for our 6-index industrial robot + linear axis setup, which is quite common in many real-world industrial applications?

FYI, I have documented a lot of details in my trial-and-error in an updated ikfast tutorial dedicated to Kinetic here [1], in the hope that it can help others.

[1] https://github.com/yijiangh/framefab_...

2018-06-30 04:57:32 -0500 received badge  Notable Question (source)
2018-06-30 04:57:32 -0500 received badge  Popular Question (source)
2018-03-17 20:19:56 -0500 commented answer Generating an ikfast solution for 4 DOF arm

Complementing gvdhoorn's answer, I've posted an exmaple xml file here: https://answers.ros.org/question/196753/generatin

2018-03-17 13:15:45 -0500 answered a question set free_index for 7-dof robot's IKFast moveit plugin generation

Following the link in @gvdhoorn's comment above, I've successfully created ikfast plugin for my 6+1dof case, using ikfas

2018-03-17 12:01:06 -0500 answered a question Generating an ikfast solution for 4 DOF arm

Complementing gvdhoorn's answer, I've posted an exmaple xml file here: https://answers.ros.org/question/196753/generatin

2018-03-17 11:55:11 -0500 edited answer Generating ikfast plugin for 5 DOF robot

I've tested gvdhoorn's method and it worked! To complement gvdhoorn's answer, here is an example xml file for Collada

2018-03-17 11:52:27 -0500 answered a question Generating ikfast plugin for 5 DOF robot

I've tested gvdhoorn's method and it worked! <robot file="irb6600_with_linear_track_workspace.dae"> <Manipu

2018-03-16 00:03:37 -0500 asked a question set free_index for 7-dof robot's IKFast moveit plugin generation

set free_index for 7-dof robot's IKFast moveit plugin generation Hi everyone, I writing to ask a question about setting

2018-03-16 00:03:36 -0500 asked a question set free_index for 7-dof robot's IKFast moveit plugin generation

set free_index for 7-dof robot's IKFast moveit plugin generation Hi everyone, I writing to ask a question about setting

2017-11-19 18:14:06 -0500 received badge  Necromancer (source)
2017-11-19 18:14:06 -0500 received badge  Teacher (source)
2017-05-17 16:27:33 -0500 received badge  Supporter (source)
2017-05-14 14:17:39 -0500 answered a question Service call returning false

In my scenario, the problem is that my serviceClient is initialized before my service server node is launched. For RvizP

2017-05-14 13:21:22 -0500 commented answer Service call returning false

Hi kotoko, I encountered the same problem. My case is that I was holding the service server in a standalone server an

2017-04-19 08:06:27 -0500 received badge  Enthusiast
2017-04-17 14:08:48 -0500 answered a question Could not load panel in rviz -- PluginlibFactory: The plugin for class ...

I encountered similar question when using pluginlib for loading my customized rviz panel, but I was using CMAKE_AUTOMOC for my qt objects. (Working on Ubuntu 14.04, ROS indigo)

My file system structure is like this:

pkg_folder
\-  config
\-  include/rviz_panel.h
\-  src/rviz_panel.cpp
\-  CMakeLists.txt
\-  package.xml
\-  package_description.xml

The core parts for add_library is:

catkin_package()
include_directories(include)
set(CMAKE_AUTOMOC ON)
set(HEADER_FILES
   include/FrameFabRvizPanel.h
)
set(SRC_FILES
    src/FrameFabRvizPanel.cpp
    #src/FrameFab.cpp
    #src/FrameFabRenderWidget.cpp
    #src/WireFrame.cpp
    )
**add_library(${PROJECT_NAME} ${SRC_FILES})**
target_link_libraries(
    ${PROJECT_NAME} ${QT_LIBRARIES} ${catkin_LIBRARIES}
)

Using this cmake file and package xml and description xml following official rviz plugin tutorial, I went through catkin_make process smoothly and harvest my lib_pkg.so successfully.

Then launching process for Rviz went on smoothly, and I can even see my panel in the add_new_panel list.

But when I click on it to open it, ROS pumped out an ERROR:

PluginlibFactory: The plugin for class 'framefab_mpp/FrameFabRvizPanel' failed to load.  Error: Failed to load library /home/yijiangh/catkin_ws/devel/lib//libframefab_mpp.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /home/yijiangh/catkin_ws/devel/lib//libframefab_mpp.so: undefined symbol: _ZTVN8framefab17FrameFabRvizPanelE)

(Exactly the same symptom @mcholewi has encountered in his thread)

When using rospack plugins --attrib=plugin rviz, I can successfully see the plugin_description.xml address for my pkg.

After getting stuck for 3 days, I happened to see this thread in stackoverflow. And it just saved huge amount of my time!

So change my CMakeLists.txt file like this:

change this line:

**add_library(${PROJECT_NAME} ${SRC_FILES})**

into

**add_library(${PROJECT_NAME} ${SRC_FILES} ${HEADER_FILES})**

And everything just works like a charm.

I think the reason can be found at CMake AUTOMOC official doc:

If an #include statement like #include "moc_foo.cpp" is found, the Q_OBJECT class declaration is expected in the header, and moc is run on the header file. A moc_foo.cpp file will be generated from the source’s header into the CMAKE_CURRENT_BINARY_DIR directory. This allows the compiler to find the included moc_foo.cpp file regardless of the location the original source. However, if multiple source files in different directories do this then their generated moc files would collide. In this case a diagnostic will be issued.

So in my previous mistake, the QObject declaration cannot be found thus pluginlib found my customized panel (FrameFabRvizPanel in my case) is undefined.

Thus the solution would be:

  • You can put cpp and header files for your rviz related plugin together in one folder
  • or use the technique stated above (link both source and header to your created library)
2017-03-23 21:44:15 -0500 answered a question roslaunch turtlebot_gazebo failure

You have to let ROS env know about this "new-coming" package but source it in devel workspace by running:

$ . ~/catkin_ws/devel/setup.bash

addressed in Building a catkin package in Catkin tutorial.

Hope this might help.