Christmas holiday! So time to spend on projects again. One of the projects that have been in the fridge for far too long is an autonomous mobile robot that I’m working on.
Eventually, it will use stereo vision to navigate, but for now I’m still in the early steps of making it move at all.
The robot uses the base and electronics of an old electric wheelchair. The wheelchair is based on electronics by a New Zealand based company called Dynamic Controls. Their motor controller seems rock solid, and it would be a waste to replace it with some piece of hobbyist hardware.
There is one problem though, it uses a proprietary CAN bus based network between joystick and the power module called DX-BUS.
To control the wheelchair base from an embedded computer instead of the joystick enough of the DX-BUS protocol needs to be implemented to emulate the joystick. At the same time I would like to be able to still use the joystick, for instance when training the robot.
Little has been written on the DX-BUS, the document that pops up the most (and is a valuable resource) is Amaya, C., et al. “Schedulability Analysis of CAN based Systems with Precedence Constraints.” This article using DX-BUS mostly as an example but glances on some of its workings.
I had been casually probing the bus using a CAN transceiver and a
Saleae Logic logic analyzer.
That did not help me much but helped me cofirm the exotic bus speed
2/19 Mbits/s or about
Then I got lucky and stumbled on Antão, P. “Cadeira de rodas eléctrica adaptada a tetraplégicos.” (2010). A dissertation by a Portuguese guy that closely matches what I’m trying to do. It is written in Portuguese, but it’s pretty readable without resorting to Google Translate too much. Antão already did do the hard work of reverse engineering some relevant parts of the DX-BUS protocol and deviced a scheme of using a CAN to CAN bridge to filter messages between joystick and power module.
I’m planning to to the same, using the two CAN interfaces on a MBED microcontroller. The good thing about the MBED is that it not only has the two CAN interfaces that I need for my project, but also ethernet. Ethernet is, of course, ideal for interfacing to one or more computers that will do processing of vision and will run the high level planning algorithms.
More parts are on their way, so to be continued…