How to write kinematic json for a custom robot?

I’ve written kinematic.json for a custom robotic arm with 7 joints (Dynamixel motors for all joints), in order to perform manipulations based on Inverse kinematics (using EndEffectorGlobalPlanner (EEGP), LQR subgraph components). I’ve replaced simulation connections with my robotic arm drivers in the “end_effector_control.py” example, but the app cannot perform manipulations to reach the target pose provided. These are my observations -

  1. Even though the transmitted messages from EEGP, LQR subgraph are None, the robotic arm moves to some position and the app either stops (due to “stack smash” error) or continues running, while throwing “Angle Limit Error”, “Input Voltage Error”, “Checksum Error”. The “Angle Limit/Checksum/Input Voltage Error” goes away for sometime when “limits” are provided in kinematic.json, but reappears as arm reaches some position and stops responding to further target pose commands. Also, the position reached by the arm changes if the “init_pose” provided to PoseInitializer component is changed.
  2. As per the App graph, all the components except “KinematicTreeToPoseTree” (Stalled status) are Running (Green color).
  3. For the “end_effector_control.py” example using Franka bot simulation, if I change the kinematic.json provided for the bot, it results in a different “apparent” pose than the pose reached using original (the one provided with Isaac) kinematic.json, for the same target pose provided. Therefore, should the kinematic.json represent the starting pose of the bot???
2 Likes