30

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 ...


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 ...


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 ...


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

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

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

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

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

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

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

Yes, it is possible. This is a form of stereo vision. You will need an accurate model of how the robot moved between frames. Then you can use stereo vision techniques to calculate the disparity.


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 ...


4

Building on WildCrustcean's response another possiblity would be stereo vision. While we often think of stereo vision as using two cameras the techniques really only need images displaced in space and a model of the displacement. In other words I can take an image, move, then take another image. So long as I know the transformation between these two images I ...


4

It's hard to say exactly what they were doing, but the terms you may want here are "optical flow" and "egomotion". Sounds like there may have been some feature detection and matching (something like SURF or SIFT) or foreground/background segmentation thrown in as well. OpenCV is probably the most widely used codebase for computer vision, they have a lot of ...


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

I suspect that your Arduino is reseting, by the fact that the stall current of the motor by the product sheet is $800mA$, and you are using the USB power, then Arduino regulator, to supply the motor. As you are using the USB/Serial converter to make the connection to the Raspberry Pi, when it resets, it can be creating a new "virtual" serial port on the ...


4

You need a controller like this that can address them individually over I2C. These can be chained together to control more than you'll likely ever need: Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685 https://www.adafruit.com/products/815 How to use them with a Raspberry Pi: https://learn.adafruit.com/adafruit-16-channel-servo-driver-...


4

I agree with @Greenonline 's recommendation regarding LiPo batteries along with his warnings on battery care. It seems you will need a fairly small battery, considering your current requirements (about a 1000-2000mAh 2S LiPo). However, you also need to add 2 5V BECs (5V regulators in RC lingo) to power your circuits; The 7.4 or 11.1V provided by the battery ...


4

If you want to have a good balancing, PID loop timing is very important. Standard Raspberry OS, like Raspbian can't guarantee you any precise timing, so once your loop period may be 10ms, once it can be 1s, resulting in a robot to fall. You can try to run some real time operating system on RPi, like FreeRTOS, that would have preemptive capabilities (so a ...


4

The component you highlighted is called a tensile load cell. You could buy one from a supplier, but it probably would be cheaper to buy a cheap digital hanging scale and taking the sensor out of it - at least I couldn't find one less than $100, ten times the price of a 50kg digital hanging scale. You will need to do some analog conversion and amplification ...


4

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 ...


3

You probably want a PWM (pulse width modulation) solution. Essentially this means flashing the led on and off faster than you can see. To make it brighter, you increase the amount of on time versus off time. You could use an external PWM LED driver, or possibly you can produce PWM from the GPIO ports on the Pi and step it up using a transistor and / or ...


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