|
Post by cryptonb on Aug 18, 2016 0:16:33 GMT -7
Hey Max, first of all I want to thank you for providing such a huge amount of insights and software for other dobot-users. It's absolutely invaluable! I backed a dobot on kickstarter since I didn't know a lot about robotics, and dobot seemed like a solid product to get started with Had I known what I know today, I would have been more suspicious, but well it happened Sadly, I bought dobot mainly for it's reported accuracy and drawing abilities. I wanted to use my Dobot with ROS and have it draw accurately on cylindrical objects. For object recognition I'd use an intel realsense F200 camera, wich also has a ROS driver, providing a point cloud stream. From what I read here on the forum, the movement in a straight line from A to B is very accurate, but the backlash on the gears and motors does make it somehow imprecise again?I suppose the backlash means that printing is not possible but plotting could work if done very slowly? Do you have any additional tips on how to improve accurary? I just ordered the suggested accelerometers btw And one more question: I saw there is also a dobot project for Raspberry PI from one of the forum members. Are there any significant advantages for running it on a raspberry pi instead of the arduino? For the ROS and 3D camera part, I would always need a PC, anyways. Keep up the great work! Gregor
|
|
|
Post by Max on Aug 18, 2016 0:46:30 GMT -7
Any kind of operation that requires force stronger than just moving the arm in the air would not be accurate because of the backlash. Laser engraving, drawing with a brush and such should be accurate. Drawing with a pen (when the pen needs to be pushed a bit) won't be accurate. I encourage you to try yourself, with the stock software at least. Don't just take someone's word, you have the device already, you have nothing to lose. Plotting accuracy would depend on the plotting head. If it's an inkjet head, then it's ok. In case it's something that needs to be pushed a bit against the canvas - I'd say you won't get accurate result.
Printing/plotting/anything that requires accuracy is slow on dobot by definition. The curve can change only every 20ms, which means in order to make a complex curve you have to reduce velocity, otherwise it would overshoot and you'd get a saw-like line instead of an ellipse, for instance. With open-dobot you're free to play with velocity and see for yourself how it'd behave in stock software if they didn't limit it on such operations. You can also see how slowly it draws with stock software.
The one on RPi is implemented in pure python and is not suitable for this application. RPi does not provide a good way to do such things directly, but there are some hacks that could be employed. You could do that if you have time. But then BeagleBone Black is a much better candidate.
Arduino can perfectly cope with 20ms updates with all the math done on the PC. You can even use RPi for the math and connect Arduino via USB to it - works as well. There is not that much math for RPi, but it is way too much for just Arduino, which is why the first version of the stock firmware sucked and they had to reduce command rate from 250kbaud to 9.6kbaud
|
|
|
Post by cryptonb on Aug 18, 2016 2:04:07 GMT -7
Thanks for the quick reply ok, so I see that moving the head should only be done with no pressure applied. I think I can work with this, reduced speed is not an issue for me. In theory I could move, set a dot with force, move up, then try to sense when exactly the pen hits the surface to account for any displacements this may have caused in the z axis. Could propably be done with something like a pencil as it is conductive, same as the surface. (just brainstorming here...) Regarding ROS, it would propably be a good idea to offload calculations to moveit and just send the commands to the arduino with a proper hardware interface (https://github.com/ros-controls/ros_control/wiki/hardware_interface), right? Sorry for beginner questions, I am completely new to ROS and Arduino, but I know Python at least
|
|
|
Post by Max on Aug 18, 2016 6:10:35 GMT -7
Who said that displacements are only in z axis? It is not a scara robot. Think which motors are involved in movements in z axis, then think what other axes are affected by the same motors.
I don't know ros well enough to give you an advice here. Just apply common sense and reuse as much code as possible.
|
|
|
Post by cryptonb on Aug 18, 2016 7:05:11 GMT -7
yes, of course, I think I didn't explain it properly. Misplacement could happen on all axes, but as long as I do relative movements afterwards, it should not be that bad and could hopefully be detected and fixed with sensors.
Thanks for the help so far, will keep you posted!
|
|
|
Post by Max on Aug 18, 2016 14:11:27 GMT -7
It is usually considered not a good approach to fix a problem. If you, for example, are working on a computer vision problem then you must provide proper lighting instead of compensating for a bad one. Same with photography. Here, if you want really good results my advice would be to eliminate backlash. I think you'll spend much less time eliminating backlash and will get much better results than trying to compensate bad mechanics in software. I hope it is not a surprise that every sensor introduces noise into the system. Also, keep in mind that displacement in each axis will be somewhat proportional to the force vector and its direction relative to the current arm pose, the curve of the surface the force is applied to and the model of the mechanical imperfection (backlash in this case). That is not a trivial problem to solve, especially realtime. You can start with the stock firmware, see how accurate it is, and if it works for you without dancing around and compensating, you can switch to open-dobot if you need to extend dobot with more functionality and/or have full control over it.
|
|
|
Post by loneve65 on Dec 11, 2016 9:06:07 GMT -7
I just got my robot and now a little bit frustrated about the accuracy. I am wondering if there is any other way to reduce the backlash Max mentioned above. As far as I know, backlash comes from the reducer. So what if we just use the stepper motor to drive the arm directly without the reducer?
|
|
|
Post by Max on Dec 11, 2016 9:46:18 GMT -7
I just got my robot and now a little bit frustrated about the accuracy. I am wondering if there is any other way to reduce the backlash Max mentioned above. As far as I know, backlash comes from the reducer. So what if we just use the stepper motor to drive the arm directly without the reducer? First of all, the reduction is 10x, hence the torque multiplication is around that too. Second, the resolution (how accurately you can change joint angle) also improves by around that amount. Of course backlash reduces resolution improvement, but it is still better than without the reducer. The best way would be to build a reducer with timing belts. You still get torque, resolution, but no backlash (or negligibly small). That is how Kuka propagates force inside the arm to prevent backlash. The reducers Kuka uses is most likely harmonic drive.
|
|