I recently bought a 6 dof DIY robot arm, 7 servos (with gripper) no feedback
I tried to make an accurate simple urdf, and then with moveit setup assistant i created a moveit package,
since i dont want to use ros control (i am not good on that, and i dont need it), moveit seems to want a FollowJointTrajectory action server that ros control typically handles, however i found an executable that does that for me, I was able then to make another node to listen to the arm_controller/follow_joint_trajectory/goal topic and extract the trajectory points, which i plan with some transformation to send to my rosserial node for execution on the real robot.
Is there a simpler way to do that? i think i will also need to publish a sensor_msgs/JointState topic to publish the new joint_state values (assuming perfect execution) for arm TF.
Also moveit_simple_controller_manager/MoveItSimpleControllerManager plugin seems to not work for me,
so in essence what i should do to easily control a arm without feedback and preferably without ros control?
they way i am currently headed i think the robot should be able to execute the trajectory but it will not respond to action cancel for example etc.
I hope i make sense!!
You might want to check out this video series that we did on creating your own robot arm, you might find usefull indications and code to help you there:
Hello, very helpfull content!!
I managed to use ros control (follow_joint_trajectory) with moveit and gazebo, then i created a node that subscribe to joint_states (from gazebo) and with some transformation (e.g -1.57 - 1.57 to 0-450 plus offset, reverse on some joints) send the position arguments to rosserial for execution on the real robot (quite hacky) Note: i should publish only when joint_states change value as not to overload the arduino due with 50hz
question1: can i use gazebo in headless mode just for the arm on the jetson nano, on a mobile base and kinect that dont live inside gazebo? or should i build a hardware interface so not to use gazebo? I think the example of hardware interface on the documentation is not working and you should use async spinner or RRT loop?? quite confusing not many simple examples??
question2: my arm seems to have depedent the joints 1 and 2 with a pulley, (e.g if joint1 moves down while joint2 stays put the orientation of link2 stays the same) in the urdf i assume indepedent joints, for the arm to work in the same way i have to move joint1 and joint2 together with the command of joint1, plus joint2 with command of joint2, anyway i can handle that with some clever transformations but is there a better way to descibe depedent joints in moveit or urdf? plus i need mechanical reduction for joint2 because of the pulley