I’m Back (I never left)

3 minute read

Week of August 13

Monday - finally shot the video. This took all day and most of the night, but I got couple videos up at http://www.youtube.com/cwruesv

Thursday - Spent the day reading reference material and watching the talks from this year’s ROSCon. After reading the updated documentation for SWRI’s ROS Industrial, specifically the Vision and Roadmap, I have decided that ROS Industrial is worth pursuing. This requires abandoning RRI for PC/IRC5 communication and writing my own packet unpacking code in RAPID. (I’m also limited to TCP if I don’t use RRI.)

Friday - Spent the day writing up tasks and definitions. The task list I created is at https://github.com/evenator/masters/blob/master/tasks.xlsx?raw=true in Excel spreadsheet form. I decided the MS Project was just too much of a pain to work with.

Week of August 20

Monday - Got a basic “Hello World” message going back and forth over TCP at about 2 kHz. This is compared with the ~15 Hz I would have got from RRI. Naturally, this will be slower when I’m sending and unpacking actual data, but I expect to be able to send data quickly enough.

Thursday - Started writing a state message receiver for ROS Industrial. This requires creation of a new industrial message type for state messages, based on the specifications in their roadmap, a message handler in ROS that receives the messages from the IRC5 over TCP and sends the data to a ROS diagnostic publisher, and a RAPID TCP server to send the data to the PC.

Friday-Saturday - State message and state message handler compiled successfully (still relearning c++). The next step is to write  a ROS node that simulates the IRC5 and attempt to send messages over a loopback connection.

Week of August 27

Monday-Wednesday - State message and handling is now fully tested and working with the simulated IRC5. Added (but not tested) joint position handling, based on existing ROS Industrial code. Started work on the RAPID server for sending state information to the PC.

Week of September 3 (This Week)

Monday - Joint position handler now working with the simulated IRC5.

Tuesday - Adapted the existing a ROS Industrial downloader node to send joint trajectories from the PC to the IRC5. Captured messages as binary files and examined them in a hex editor to verify what I would have to write for the RAPID server. Wrote the RAPID server for robot state and joint messages.

Wednesday - Wrote the ROS node to receive joint trajectory streams from the ROS node. Because ROS doesn’t have generic queue or linked-list types, I had to use an array, so joint trajectory streams are limited to 100 points. I was able to compile and run both the joint trajectory receiver server and the robot state/joint status server on the IRC5, but have not yet tried connecting to them and receiving data.

Bottom Line and Next Steps

I’ve pretty much completed extending ROS Industrial to work with an IRC5 robot controller, as well as created a framework for robot status for ROS industrial using ROS’s diagnostic system (the ROS Industrial Roadmap didn’t really have a plan for dealing with these messages.)

  • Need to test the ROS nodes with the RAPID servers and see if messages come through properly.
  • Need to convert the RAPID servers to Semi-static tasks so they run in the background
  • Need to create a motion controller in RAPID that goes to joint trajectory streams.
  • Need to document all of my code and then I can contact SWRI and tell them what I've done.

After that, I should be pretty much done with the hardware driver side of things, and I can move on to actually using ROS industrial, working with the Kinect, and dealing with obstacle avoidance.

Categories:

Updated: