Closed brianhou closed 5 years ago
The issue was that the controller manager by default operates on /controller_manager
. Both controller managers were trying to be there, which was causing problems. I've pushed the neck controllers into the /schunk_robot
namespace, and everything seems to work now. The only remaining annoyance is that all hard-coded neck things from libherb (e.g. joint states, switching controllers) are now also under that namespace.
One roadblock for automatically aggregating the WAM and neck joint states (as I previously thought might be possible) is that the timestamps are different. @aditya-vk any thoughts about what to do? I'm now leaning toward just keeping them separate: people will just have to remember to get information from both places, and we'd need a JointStateClient
for each logical component in libherb.
Things seem to work now! Here's a quick summary of the decisions I made:
/controller_manager
s (they listen to the root /controller_manager
topic). My workaround is to push all the neck things into their own /schunk_robot
namespace in launch/schunk_neck.launch
. (It looks like I had to do different things to different nodes to make that change happen, and I'm not sure why. I'll investigate later.)/schunk_robot
namespace, the joint states are now published to /schunk_robot/joint_states
. This doesn't work because ROS state publishers will only read from the root /joint_states
topic. My workaround is to relay all messages from /schunk_robot/joint_states
to /joint_states
. This means that each message on /joint_states
doesn't contain the whole joint state of the robot, but it looks like a thing that other people do.@aditya-vk please review and let me know what you think!
Need to check
Also need to update neck script.