Podcast #128: We chat with Kent C Dodds about why he loves React and discuss what life was like in the dark days before Git. Listen now.
29

I'm posting this as an answer because it is the answer. You can't. As @BendingUnit22 mentions, you are attempting "open loop" control. Noise and variations will mean that your robot will never drive a perfectly straight line. The motors could have different winding resistances (different drive currents/torque), the wheels could be different sizes, the ...


16

The official RaspberryPi operating system is a version of Debian, but there's also an ArchLinux version on their website. Despite ROS's claim of being cross-platform, they only officially support Ubuntu at the moment. However, experimental installations have been made for the following OSes, according to ros.org: OS X (Homebrew) Fedora Gentoo OpenSUSE ...


10

The short answer is "yes". I'm assuming you are describing an architecture that looks broadly ;-) like this: Real-time system <--> Soft-time system This is a very common robot architecture. The real-time system (RTS) (for example, an Arduino with appropriate firmware) handles the low-level sensor farming (conditioning, data packaging, management, and ...


10

The barometer carried on the pixhawk has an altitude resolution of 10 cm. If that isn't enough, you could write a kalman filter that uses the accelerometer data in the prediction step and the ultrasonic sensor and/or the barometer in the correction step. But I don't see this solving your problem. An accurate measurement of altitude at 20hz should be plenty ...


9

The Arduino is really an AVR Atmega328p. The Arduino is a fine off-the-shelf implementation of this microcontroller, but if you make many of them, you can buy the chip for less than $3 each in bulk, and it requires very little circuitry to run on its own -- a crystal and a couple of capacitors to run at 20 Mhz, or not even that if you can run at the built-in ...


8

Raspberry Pi has only one hardware PWM channel and Linux distribution it runs is not a real time system, so software PWM may be very unstable. You are not guaranteed, that your program will be executed at exact frequency you want, so you will have trouble getting precise timing required to drive servos. If you already have Arduino Mega and SSC-32, I would ...


7

You are asking two different things. 1) Is there a robotics-specific operating system, and 2) Is it possible to do hardware-level control on an R-Pi without messing around with an operating system. This is sort of a false dichotomy, as an operating system is a benefit, not a cost, unless you are severely constrained for processing power. Microcontrolers (...


6

Robotics is hard enough as it is when all your dependencies are working. The last thing you need are additional problems coming from incompatible components or unsupported combinations. I looked into this a little and here was my progression: Raspberry Pi doesn't support Ubuntu because it's ARM CPU uses an older instruction set (ARM v6 I believe?) and the ...


6

Stereo vision and SLAM are pretty heavy algorithms, both in terms of the processing power and RAM required. You can forget about running this on a little microcontroller like an Arduino. These run at tens of MHz, and have only a few KB RAM. At the very least you'll need something running at hundreds of MHz with hundreds of MBs of RAM. You didn't say exactly ...


6

Since the open-closed loop issue is already mentioned, I will give a comment to the "I once tried to run a dc-motor without a load". Yes you might damage your motor with this but you can also damage or destroy your motor with a load. The destruction is coming from the current and the resulting temperature. If there is no smoke and some obvious smell coming ...


5

This question was well-answered by ThomasH, but in addition I just want to suggest the possibility of wireless tethering the quadcopter to a laptop. That is, just write a nice-and-fast wireless (wifi?, bluetooth?) communication protocol for the quadcopter, then do the heavy CPU stuff on a laptop, while transmitting the instructions and sensor queries to the ...


5

Since you're running directly from a battery I would say it's safe to just add as much decoupling (in other words caps across your input power) as possible, since the only real downside (that I think is relevant to your setup) to adding a lot of capacitance is increased in-rush current (since the capacitor naturally acts as a short-circuit during charge-up). ...


5

It sounds like you're experiencing a "brown out" caused when the excessive current draw from the battery causes a drop in the supply voltage. This is due to the fact that batteries have internal resistance (a.k.a output impedance). In this example, if the load drops to $0.2\Omega$, the internal resistance of the battery will cause the output voltage to be ...


5

I must agree with the other two answers, however the main issue is that you do not have enough voltage into your regulator (I see from your comment to Ian that you are using a Pololu D15V35F5S3 Regulator). If you refer to the Pololu D15V35F5S3 Product Description, down at the bottom you will find the following graph: Looking at the red line for 5V output: ...


5

Firstly, this is a stupid nit-picky thing, but neither the Arduino nor RPi are micro controllers. Anyways, to answer your question: Neither of your concerns are really problems. Arduinos come in all kinds of sizes and ALL of them should have enough pins to do what you want. And the RPi can easily be run headless, and programs can be run at startup with ...


5

A Raspberry Pi should be sufficient for the control you intend to do with it. In designing a controller under a full multitasking operating system, like the Linux operating systems that are available for the Raspberry Pi, you have to be careful about the real-time requirements, and if the time share chunk of processor made available to your software will be ...


5

This may be overkill, but some of the past work I was involved in was trying to detect a vertical line (a pipe) in the camera's field of vision, and navigate relative to it. The process was as follows: Pick a threshold value, and split the image into black and white Perform Canny edge detection on the image Use a Hough transform to find the strongest lines ...


5

A kinect mounted on your robot is enough for mapping and localization. There are a few different packages that will work: rgbdslam can create a 3d map using a kinect You can use depthimage_to_laserscan to take in a depth image from the kinect and output a laser scan message which you can then use with gmapping for mapping, and the nav stack to navigate your ...


5

The ROSBerryPi page is quite outdated, you actually can install prebuilt ROS Groovy binaries on Raspbian. You will be better off installing prebuilt ROS binaries rather than building from source on your pi. I don't have any experience with Ubuntu on the raspi but it's running great on my Odroid UX4 (similar single board computer) and ROS Jade runs just ...


5

The motor driver chip you state you are using, the L293D, is a "quadruple half H driver." This means that, instead of two full H circuits capable of driving a motor forward and reverse, you have four half H circuits, which are only capable of driving a motor in one direction. You even speculate in your post, Either the L293D's chip is broken (but then ...


5

For interfacing with a camera, I would recommend the Pi. The reason is that the AVR in the Arduino is an ordinary processor, whereas the Broadcom SoC in the Pi was originally designed for multimedia. Besides the ARM processor, it contains video encoding/decoding hardware that you won't find in the Arduino. Of course, you would need to learn how to use that ...


5

Well this is embarrassing. I didn't realize they are in fact different distributions not variants. Also found the page where you can find out more about them: http://wiki.ros.org/Distributions


5

The reason is Clock on the Raspberry Pi. Note that the raspberry is powerful but not that powerful that it can run an OS and simultaneously give you precisely timed PWM outputs. I assume that you'll be handling the motors with PWM on the Enable pin on the motors. Reasons: As stated, it is more on getting precise PWM outputs on for the motor driver. The ...


5

Robots tend to be portable devices powered by batteries. Portable battery operated devices tend to use embedded processors with limited power and memory. Compiled code has several advantages over interpreted code in such applications: Compiled code usually takes up less space. So you can have more code in the same amount of space. Compiled code usually ...


5

For power management, you can use either a DC/DC Convertor, a linear regulator, or a combination of the two. DC/DC Converter A DC/DC Converter changes DC voltage levels. Three common types are: Buck Converter: Takes a higher input voltage to a lower output voltage Boost Converter: Takes a lower input voltage to a higher output voltage Cuk Converter: A ...


4

An experimental repository has just been populated with ROS Groovy packages for Raspbian (wheezy), instructions to use it can be found here: http://www.ros.org/wiki/groovy/Installation/Raspbian The repository has 350+ packages and the core ROS packages can be installed in a matter of minutes on a fresh Raspbian install.


4

Yes it does, but installing ROS on Debian is do-able, yet not trivial.


4

I built a line following robot with an Arduino before. It was really simple to do and all we used were color sensors on the bottom inputted in the Arduino, and then of course some motors for the wheels. But using an Arduino allowed us to have plenty of room for other components we wanted to add on to make our robot do more things. Also, if you want to ...


4

It really depends on the project. For a line follower robot ( in your case ), using the Atmel's AVR series is the best choice. Specially ATMEGA16 or even ATMEGA32. Because the line-follower is a small project and the Arduino is too much for it. And the other advantage of Atmega16 is that it is cheap. If it is broken or faulty then you can change it easily....


4

Read Ada Fruits Tutorial along with many other sources of IR tutorials out there. Then for an Arduino I would use (and have used) Ken's IRremote Library as it has several examples, several device protocols and requires only a TSOP38238. And is quickly adaptable to others. Look at the GitHub Network of Forks, as there are others who have added other device ...


Only top voted, non community-wiki answers of a minimum length are eligible