2d navigation with Arduino + iRobot?
So I have used iRobot + a laser scanner for 2d navigation using amcl, gmapping and move_base node. However, when I want it to run I have to place my laptop on top of it so now I am wondering if it is possible to use arduino so it is more convenient. I have been using ros but I feel like I am still at a beginner level so anything is appreciated!
Asked by Usui on 2019-06-04 16:28:03 UTC
Answers
Yes, it is possible to place the PC remotely.
Method 1 - Do all ROS processing on a Raspberry Pi on the robot - I do not know if Raspberry Pi has processing power to run full navigation stack. I doubt it.
Method 2 - Use Raspberry Pi with ROS to interface your sensors and motor driver and and put data into ROS topics - use WiFi to network Raspberry Pi with PC and run AMCL and move-base on PC - this seems likely to succeed if you can assure uninterrupted WiFi access.
Method 3 - Do it the hard way - using a wireless serial port and Arduino - I have a small two wheel robot with remote PC. It uses a Bluetooth serial port for all communication. On board there is a uC(not arduino but close enough) that puts all sensor data into a single data stream and sends to PC which has a node to decode the data stream and send data to appropriate nodes for processing. All robot commands from ROS go through same serial link and uC sends commands to appropriate device (laser scanner, motor driver, wav files).
There are ROS nodes that can help support this. http://wiki.ros.org/rosserial
I haven't used ROSserial so not sure how difficult it is to use.
In my case, for data transfer to PC, I started with Neato Laser scanner driver hacked (https://github.com/getSurreal/XV_Lidar_Controller), ported it to a thread in LPC1769, and interleaved all other data into the data stream using the same packet format. Data interleaved includes IMU data, wheel odom, bumper states, battery voltage, and laser scan data. It's absolutely workable, but it required a bunch of effort to do it.
If I had to start over, I would use Method 2. You'd learn a lot more doing method 3. Let me know if Method 1 works.
Asked by billy on 2019-06-04 17:50:38 UTC
Comments
Method 2 seems like the easiest, I will do that just to make sure that I can do it then I will try with other methods mentioned above. How would I get start with method 2? Btw, I am using the create_autonomy iRobot package + a hokuyo laser (urg_node)
Asked by Usui on 2019-06-04 18:23:15 UTC
If you already have it running on a PC, you should have a pretty good idea how to do it already.
Follow tutorials for ROS networking Tutorials for ROS on Raspberry PI Install ROS drivers for sensors on PI
Asked by billy on 2019-06-04 22:05:08 UTC
@billy Which tutorial? Could you link it? Thank you!
Asked by Usui on 2019-06-06 12:30:43 UTC
Comments
An arduino is not powerful enough do what you need it to do, its a microcontroller not a computer. I think you may be able to get away with a new raspberry pi but I'm not totally certain about that. A modern i3 processor / nvidia board should be enough though.
Asked by stevemacenski on 2019-06-04 16:53:32 UTC
which one do you think will be the easiest/quickest to do? Since I am still a beginner.
Asked by Usui on 2019-06-04 16:56:41 UTC
Definitely not the nvidia board
Asked by stevemacenski on 2019-06-04 17:04:34 UTC
https://www.youtube.com/watch?v=ZUs1LlN4cr0 This showed navigation with raspberry pi 3. Is it possible to just use laser scanner + irobot + raspberry pi? or do I need more?
Asked by Usui on 2019-06-04 17:30:22 UTC
I cannot tell you, you would have to try for yourself or ask someone that has tried
Asked by stevemacenski on 2019-06-04 17:36:29 UTC