If your robot is publishing joint angles at a reasonably high frequency, and you have a URDF describing the robot on the parameter server, and you have the robot_state_publisher running, then the current geometric description of your robot should be available to `/tf`

and you can use a method such as tf::Transformer::lookupTwist() to estimate the velocity of your target frame relative to another frame estimated using finite differencing. This will likely be noisy data even if the frequency of your `/joint_states`

information is quite high. Read more here.

If you have some way of measuring joint velocities (even if they are just finite differenced at high rates), you could alternatively use the manipulator Jacobian to map joint velocities to either spatial or body velocities. KDL (bundled in ROS as orocos_kdl) has tools for computing the Jacobian given joint angles and a URDF. This can also be done in Python via pykdl_utils.

Using either method, you could, in principle, estimate accelerations by numerically differentiating the velocities you get, but be aware, the results are not likely to be very accurate.