# Tag Info

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

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

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

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

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

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 If you look in the industry, they usually use capacitive proximity sensors. This sensors can be adjusted easily to sense behind the glass. In addition I can tell you, that this measurement is highly reliable. Usually they start around 70$, but you find also some cheaper DIY-solutions. Another possibility is the use floating styrofoam with a magnet on top ...

3

Simple X-Y stages are well understood and form the basis for the many open source hardware projects for 3D printers. Each axis of an XY stage can be made from a pair of 6mm stainless steel rods, three LM6UU 6mm Linear Ball Bearings, a stepper motor (typically a NEMA14/17/23 motor) and stepper driver electronics. These axes can then be connected to the ...

3

Though, there is not much information about your servos let's assume that they consume at least 1A each. This value will probably be higher given that you want to move doors and that requires torque. Now let's see the RPi's capabilities. An answer from Stack Exchange Raspberry Pi, tells you the necessary information and sources about the RPi's power rails ...

3

The only issue with having the off-board controller is that the commands to the quad-rotor might lag, because of 1. range to controller or 2. the complexity of image processing code. With that said I wouldn't say use an Arduino only, because it probably won't be fast enough to do image processing + stabilization from accelerometers and gyroscopes. Instead ...

3

You could maybe use Matlab to plot the position of your vehicle? This is how I'm trying to do that: I have a 'logging'-program running on the Raspberry Pi that counts each sampling time the pulses from the encoders. This I log in a file. This file I upload in Matlab to calculate X and Y coordinate and the angle under which the vehicle is standing, assuming ...

3

The Roombots example you posted does not use a level shifter because they are using the Create USB cable to talk to the robot. If you are planning to use this cable, you do not need the level shifter. If you are not planning to use this cable and instead will be interfacing directly to the Raspberry Pi serial pins (on the GPIO header), then the answer below ...

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