问:
Is it better to have batteries distributed at the rotors or the center of the multicopter?
I've seen 3 approaches to mounting batteries on a multicopter:

All the batteries rigidly mounted near the center of the airframe

All the batteries in a bag hanging under the center of the airframe

Each rotor has its share of the batteries rigidly mounted near/under it. (For example, a quadcopter with 1/4 of all the batteries mounted underneath each motor).

Which design is the best, and why?
If there is no one best design, what are the advantages/tradeoffs between the designs?
Is there some other design I'm overlooking that is better in some way?

(This question focuses on multirotor flying machines.
For ground vehicles, see " Is it better to have weight distributed over the wheels or the center of the robot? ").

答:
You almost definitely want to have the battery rigidly mounted to the center of the airframe.

Mounting a battery underneath each motor (though I have never seen this) will increase the multicopter's moments of inertia, which will make it more "stable" in that it will more sluggishly lose its balance and thus give a controller more time to react. This, however, is a rather bruteforce way to go about flight stabilization.

Hanging the battery from a bag will make the flight characteristics needlessly complicated. Imagine that the "bag" is instead a rope with a weight attached to the end. What happens to the flight characteristics as the length of the rope increases?

Depending on the particular chassis design, mounting the battery rigidly can also dampen the motor vibrations, which reduces the need for heavy filtering of inertial measurements.


问:
robotics as a beginner
I want to begin robotics.So as a beginner what micro-controller would be convenient?Arduino or PIC?what type of robots can be built with arduino or PIC? Should I start from just a line-following vehicle? </p>

答:
Alright, this is my first question that I am answering. I'll try to throw as much light as possible to clarify your doubt. I guess, I'll open the door to many more answers.

Anyways, I am a 2nd Year Robotics Engineering student from Bristol, UK. I started out with an Arduino because when I entered Uni, I had no previous experience with electronics or even coding (zero knowledge infact). So, my uni had us start out with Arduino to get some coding experience with C. We did some coding on an Altera Development Board as well, that was to get us familiar with bit-wise operations for controlling hardware from the register level. Arduino is easier because you don't go into the territory of registers. You have pre-written functions for many operations like reading from sensors, writing to serial port, displaying strings etcetera. My first robot, my team named is Zeus was a helper robot, it's tasks were to follow wall, detect and avoid obstacles, identify and stop at the goal. The last task requires some algorithms to do it efficiently but hey, common, we just started out and so all we had to do was search the entire area, which was a fairly small one. We just had to connect sensors which were ready made and picked from the LEGO Kit and then just program them in Arduino using C. It was easy, the only thing that was difficult for us was we didn't have enough knowledge of C when coding, its easy now that I think back. Now, I am working on PIC Microcontroller, its a level above. Here you have to deal with registers and reading datasheets and configuring ports and yaada yaada yaada. I'd say start from scratch, learn how to use the Arduino first and when you successfully interface sensors with your motors on the Arduino platform which is again easy, then step up to do stuff like sending data wirelessly from a bluetooth back and forth between PC and Arduino. Then step up to do some small projects which will serve as foundation for the big stuff like line-follower robot. It's not as easy as the word sounds. It could be fairly easy on an Arduino but once you get into the discrete platforms like Atmel and PIC, you will deal with much more deeper levels of coding so to keep you strong for that, work on the Arduino a fair bit and then step up to the more complex MCUs like Atmel,PIC, Altera and so on.

I hope that answers your question a little atleast. I might have missed something, let me know, if you need more clarity on a specific issue.

ContentLicense: CC BY-SA 3.0

Title: robotics as a beginner


问:
Assigning Frames and Deriving Link Parameters
The textbook I'm using doesn't have the answers to the practice questions, so I'm not sure how I'm doing. Are the following DH parameters correct given the frames I assigned?

The original question is as follows:
The arm with 3DOF shown below is like the one in example 3.3, except that joint 1's axis is not parallel to the other two. Instead, there is a twist of 90 degrees in magnitude between axes 1 and 2. Derive link parameters and the kinematic equations for $^bT_w$ (where b means base frame and w means wrist frame).

Link Parameters:

$$\begin{array}{ccc}
  & const.        & and      &     &               \\
  & angle         & distance &     &               \\
i & \alpha_{i-1}  & a_{i-1}  & d_i & \bf{\theta_i} \\
\\
1 & 0             & 0        & 0   & \theta_1      \\
2 & -90           & L_1      & 0   & \theta_2      \\
3 & 0             & L_2      & 0   & \theta_3      \\
\end{array}$$

Frame Assignments:

答:
Seems like you are using the Proximal convention. It's always good practice to have an extra frame called {X0,Y0,Z0} at the base. It makes visualizing so much easier.

Anyways, from the image below, I know, it's not good, but hey common, I made it using a mouse. Alright, so I'll Z0 is the base frame and Z1 is parallel to it because, its the rotating Joint1 and Z2 is coming out of the screen, because it is Joint2 and obviously since, Z2 and Z1 are perpendicular to each other X1 will be perpendicular to the plane created by Z1 and Z2. Since, Z2 and Z3 are parallel, X2 will be towards Z3, that is Joint3. Now, Z3 and Ze are perpendicular since, Joint4 is a wrist joint. X3 will be perpendicular to the plane made by Ze and Z3. Finally X4 can be placed arbitrarily but I placed it parallel to X3 since, again, its easier that way. Now shoot off your rules of measuring the DH parameters using the Proximal Convention and boom you are off. :D Have fun..


问:
Find the difference between two consecutive sensor readings in real-time in C
I am working on a Micromouse and it has three sensors. Call it S1,S2 and S3. For now, I have to use S1. The idea is this S1 controls the left motor and S3, the right motor. S2 will detect wall in the front.

Anyways, I am trying to write a code in C for the dsPIC30F4011 MCU which would continuously read Sensor values and after reading two consecutive values, it will compare the two values. Read happens every 0.1ms.

The Flow of the Code is as follows:

```<code>// Initialize timer for generating interrupts every 0.1ms
// Pseudo-Code
void __attribute__((interrupt, auto_psv)) _T1Interrupt(void)
{
  int count = 0;      //Read Sensor1 and store value in Sensor1Value
  Sensor1Value = Sensor1;
  int i = count++;

  //Now this is part where I am lost :(
  // I want to do this
* diff_S1Value = Sensor1Value(i = n+1) - Sensor1Value(i = n); // n is in the mathematical sense, like n+1 is 2 and n is 1

  // So I want to compare the new value with the previous sensor value
  if (diff_S1Value != 0) // Checks if the difference is zero
  { //Duty Cycle of PWM that controls the Speed of the Motor
    Sensor1Value = Sensor1Value(i = n+2) + or - diff_S1Value;
    PDC1 = float k/Sensor1Value;
  }
}
</code>```

So if you look at the line with the *, how do I compare two sensor values in real-time every 0.1ms ? Let me know if one wants to more info!!

答:
You need to store the previous value somewhere, e.g. in a static:

```<code>void ...
{
  static int previous_value = 0;
  int current_value = Sensor1;
  diff = current_value - previous_value;
  previous_value = current_value
...
}
</code>```

Body:
You need to store the previous value somewhere, e.g. in a static:

void ...
{
  static int previous_value = 0;
  int current_value = Sensor1;
  diff = current_value - previous_value;
  previous_value = current_value
...
}


问:
Algebraic and geometric in inverse kinematic
I'm just wondering that is there any case that when algebraic way can't solve the problem while the geometric can ? Cause I'm working on a 2DOF robotics arm This one, I know the length of L1 and L2, location that I want for the end effector, then I tried calculating the angles by using algebraic but it gave me cos(alpha) > 1, but when I tried solving with geometric, I can find the solution, so is it because I use a wrong way in algebraic ?

Thank you very much.

答: Yup, I guess you are. But there are tradeoffs you see in the methods you pick to solve a problem. Algebraic is alright if you want to solve things analytically and if there are atleast 3DOF. You don't wanna be doing for something as trivial as a 2DOF arm because, you'll just be wasting effort in trying to come up with crazy equations. Geometric on the other hand is alright until 2DOF, 3DOF a little bit more complex and then from there onwards you have to brainstorm quite a bit. But then again, it's come down to your preference as well. You see, I don't like either of the methods. I like to use the Exponential Coordinates method, you can find in a book called "A Mathematical Introduction to Robotics Manipulation - Zhexiang Li, S.Sastry and R.Murray". It's an amazing book but anyways again, its upto you. For another example, one of my tutors for Robotics, she uses the algebraic method for everything she does no matter the DOF. So as I say its upto you. But if you say that you don't get the answer with one method and not the other then you're doing it wrong :D Have fun....^_^


问:
Slam and Vision (good resources)?
I would like to know if there is a good source that combines Slam problem with vision. From mathematical perspective, there are numerous resources that handle SLAM ,however, I didn't find a good source that focuses on slam and vision.  </p>

答:
Someuseful resources

Video lecture : Monocular SLAM and Real-Time Scene Perception

Lecture slides from TU-Dresden Vision-based SLAM lecture

Lecture from Bristol University (some links dead) : Visual SLAM tutorial

Title: Slam and Vision (good resources)?


问:
VeX - Keeping arm at an angle
So my team made a Vex robot for the toss-up competition, but we need the arm up during the autonomous. The problem is that it's too heavy to stay up on its own. I was going to use encoders to count what angle the arm is at. I was going to use this code, but I'm not sure if there's a better way.

```<code> while(MotorEncoder[rightMotor] < 1000)
  {
    motor[rightMotor] = 80;
    motor[leftMotor] = 80;
  }
</code>```

Would anyone recommend a better solution or is this the best way? This is untested by the way.

答:
Can't comment but expanding on Ben's answer.
To get the general magnitude of P you consider the range of your inputs and outputs. For vex motor control you have a control parameter range of -127 to +127. Your angle input if coming straight from the encoder value is 360 per revolution with the Cortex. One recommendation: for an arm with a fixed range, you are better off using a potentiometer which gives you an absolute rather than relative range position. Just make sure you mount it in a way that the arm doesn't move outside of the pots range. Motion range is about 250 degrees.

Back to the question of P. You want P such that the input to the motor is in its range. Figure out the maximum angle error. For example if you want the arm at position 80 and it starts out at 0, the initially the error is 80. Since you want the motor input to be as large at 127, P=127/80 .  For the pot, output range is about 4000 and your maximum error might be on the order of 2000, so initially try P=127/2000.

A final bit of advice, since you are using a simple proportional controller (only P, not I and D terms), you will have some droop. That is, you'll never be exactly at 80 since this means no error and hence no drive. So the arm will settle in at some point below that - hence droop. The simple solution used in this case is to have your set point a bit above the desired point so the set point - droop = desired point.  You can adjust this after you get P established.

A final bit of advice, have your competition switch hooked up and have someone standing by to move the switch to off. If you get values really wrong, your arm could go crazy and hurt some one, or even worse, break something on the robot. I've seen shafts (and done it myself) that are twisted like taffy.

Title: VeX - Keeping arm at an angle


问:
What connectors are most reliable?
If you have used connectors for signal wiring for any length of time, you may find that they are unreliable.

Specifically, I find these to be unreliable when used for a long time, with a number of disconnections and re-connections:

This is due to the loss of springy-ness of the crimped metal end on the wire, which causes contact problems.

Which connectors (with rapid connection time) are reliable for multiple re-connections for simple signal wiring?

This excludes screw terminals and connectors with screws (eg. D-subminiature connectors), because they are not simple plug-in connectors.

答:
As you pointed out, on a robot with high vibration,
you want connectors that have "spring" (elasticity).
Even when momentarily jostled slightly out of position,
the spring pushes everything back into place.

Alas, there is a tradeoff -- the higher the vibration that a connector can tolerate without getting accidentally disconnected, the more difficult it is to deliberately connect and disconnect the connector.

Some connectors you might look at:

Stefan Vorkoetter has a nice review of connectors suitable for mid-size RC aircraft (easily handling 20 A), including Anderson Powerpole connectors which are the standard 12VDC connector in ham radio.

cage clamp terminal strips (also known as spring clamp terminal strips)

some kinds of twist-lock bi-pin connector and bayonet connectors

some kinds of 8P8C "RJ45" "Ethernet" connectors. Many RepRaps use these connectors to carry power over CAT5 cable to the stepper motors, in a way completely incompatible with any power-over-Ethernet standard or any Ethernet data standard.

a few barrel connectors have a retaining groove that lets it snap into place

The kind of IDC ribbon cable connector that has a "latch"

USB connectors are becoming the standard 5VDC connector

(Too many connectors allow parts to gradually slip further and further out of place, until the connection falls apart. This includes most screw connectors, barrel connectors, etc.).

Title: What connectors are most reliable?


问:
How to measure displacement, cheaply and without using an accelerometer?
Motion is known to be confined in a sphere with radius of about 0.5m, and resolution doesn't have to be very high (5cm is enough). The device will actually be incorporated in a toy designed for kids.

I tried implementing that with an accelerometer but the estimated displacement drifted away 100s of meters per minute.

Is there some other solution, maybe involving electrical or magnetic fields? It's important that the sensor costs no more than a few bucks.

Edit: The device should not be attached to anything mechanical and its movement is in 3d (a kid moves the toy freely).

答: I guess it depends partially on volume. Ultrasonics is very precise (down to sub-mm depending on your signal processing and frequency), but they cost $8-10 per transducer unless you are buying in large volume.  </p>


问:
Motion Model for Holonomic Robot
We are working with an holonomic robot equipped with three (120 degree shifted) omnidirectional wheels. The relative movement is estimated by dead reckoning using wheel encoders. To improve this estimation we installed an gyroscope to measure the change in orientation. Furthermore the robot has a 270 degree laser range finder.

In order to solve the kidnapped robot problem we implemented a particle filter. In every step each particle is updated according to the odometry and gyroscope readings. Since these readings are distorted by noise we need a motion model to include these errors. As described in Probabilistic Robotics by Thrun (Page 118 - 143) there are two commonly used motion models (velocity motion model and odometry motion model). However these models seem to describe the behavior of differential drive robots not omnidirectional robots. I base this thesis on the fact that the error in relative y-direction is proportional to the error in orientation as far as the motion models by Thrun are concerned. This is appropriate for differential drive robots as the orientation and the heading of the robot are identical. For omnidirectional robots this assumption can not be made since the heading and the orientation are completely independent. Even if we assume perfect information about the robots orientation we can still obtain error in relative y-direction.

I would like to discuss if my assumption - that the velocity/odometry motion model fails for omnididrectional robots - is correct or not as i am not sure about that. Furthermore  i am curious if there are any other motion models for omnidirectional robots that might fit better.

答:
I think you have two problems; first, on the mathematical side, the models aren't matching your geometry, so the assumptions about error accumulation are wrong, as you've ascertained.  I suspect that's fixable.

The second problem is harder and is related to the messy physics of omnidirectional robots (at least for 120-degree and Mecanum) - they generally involve so much nonlinear slip that odometry just doesn't work.  I don't have the mathematical rigor to defend this assertion, but if your output error component isn't significantly less than the ideal model output component, you might as well do dead reckoning based on a random number.  :-)

Title: Motion Model for Holonomic Robot


问:
How are color sensors used for line following?
I have to build a line following robot that will be able to detect a selected colored line on the floor and start following it.

How do color sensors do this after detecting the specific colored line?

答:
It seems like you are asking how to do the line following, so here's one way to think about it:

Once you have found the line, one way to follow it is to follow one of the edges of the line. For example: following the right edge could be done like this:

If you have two color sensors (left and right) and the left sensor is on the line while the right is not, continue forward.

If the right sensor or both sensors detect the line, turn right slightly until the robot is back on the right edge.

If the left sensor doesn't detect the line and the right doesn't detect the line, the robot has gone off the right side of the line. Turn left.


问:
How to calculate the power required to drive a fan
I need to specify a fan motor combination and wondered if there are formulas that can work this out? The fan we are using is a crossflow fan:

So I'm assuming the power required to drive it is derived from the number of blades, dimensions of blades (including angle of attack), dimension of barrel/wheel and the speed in RPM.

Is this possible or does it need to be worked out practically with experimental measurements etc?

Hopefully this is the correct stack for this question, if not then mods please feel free to edit/close.

答:
This is very rough, might or might not help you....

Treating it as a macroscopic perspective:

Kinetic Energy

$$E_k = \frac{1}{2}mv^2$$

For working energy in a flow, substitute volume with Area*Velocity and mass with density $\rho$

$$E_k = \frac{1}{2}\rho Av^3$$

With that, you should be able to estimate (after efficiency corrections) the power required.

Otherwise, a search for impeller equations might yield something. Most aerospace formulas are directed towards normal propellers with aerofoils.


问:
How does a six-axis force/torque sensor work?
I would really like a six-axis force/torque sensor for my robot, but I just can't afford one. I was thinking about making one of my own.

I have experience using strain gauges, but I can't work out how to arrange them so as to create a six-axis force/torque sensor.

Is this something I could feasibly make myself?

How do they work? What is the theory behind them?

I'm curious to know how they work, even if it's not feasible to make one myself.

Added:

Just to be clear, I'm talking about force / torque sensors, like this ATI Nano 17:

I am not talking about accelerometers or gyros, or MEMS IMUs.

答:
I don't think its entirely impossible to build something like this, especially if you already have some experience with strain gauges. I think the most common way is to arrange the sensor in a Stewart Configuration. There are a lot of articles on this, e.g. "Closed-form force sensing of a 6-axis force transducer based on the Stewart platform".

A similar Sensor from Schunk FT Nano says in the datasheet:

Monolithic element with three measuring phases with an angle of 120°.
  Each phase has two semiconductor strain measuring bridges which record
  deformation in the micrometer range.


问:
Why is ROS not a real-time operating system?
ROS is not real-time OS.
After reading the architecture of ROS, I am unable to realize why is ROS not real-time? What part of the architecture or what design decision is causing that?</p>

答: Check out this website, http://www.control.com/thread/1026205354 you'll find your answer. The reason I directed you to this website is because ROS is an Operating System to provide Real-Time like operation but not truly. You can also call it as Pseudo-RTOS. </p>


答:
For calculating the power required by the fan to set it into operation would be calculated using how much power is generated by the motor that is used by the fan. Now, the fan is like a load to the motor. From reading the picture and trying to make sense out of the air-flow arrows, it seems that air-is pulled into the system from the outside which I assume is going to be warm and air-is pushed out of the system because of the motor spinning the fans. The dimensions of the fan will help you calculate the amount of air-intake and output. If at all one parameter that will influence the power requirements will be the fans mass and the amount of drag the fans create as they spin. Since friction due to drag will add to the load that the motor has to drive.

What you can do is calculate the Power generated by the Motor with No-Load. Then calculate the drag generated by fans which you will take as mass and add it to the fans mass. Now you have mass which will be the load that the motor has to drive. Now calculate how much Power does the Motor generate with this mass which most likely will be the answer to your question. :D

Title: How to calculate the power required to drive a fan

Body:
I need to specify a fan motor combination and wondered if there are formulas that can work this out? The fan we are using is a crossflow fan:

So I'm assuming the power required to drive it is derived from the number of blades, dimensions of blades (including angle of attack), dimension of barrel/wheel and the speed in RPM.

Is this possible or does it need to be worked out practically with experimental measurements etc?

Hopefully this is the correct stack for this question, if not then mods please feel free to edit/close.


问:
Neuromorphic Engineering and Robotics
I have been into a boggling paper research on neuromorphic engineering and its implications on robotics applications, lately. It is relatively a less applied field and full of academic papers and difficult to skim easily :)

There are many ongoing projects applying analog or digital circuitry design to implement neurosynaptic simulations of the brain. Consumer oriented products like IBM Synapse and Qualcomm's Zeroth focus on digital hardware whereas academic research like Standford's neurogrid or ETC Zurich's Human Brain Project focus more on actual brain study using analog hardware.

If anybody is following this engineering field, can he/she spread more light on it and explain it's implications, methodologies and toolsets to the community, in detail?

PS : Regarding toolsets, I'm talking about the most feasible engineering methodologies to commit to the field.

答: Seems like this is a step towards what religious AI people would call a Singualarity. The goal to create a system which would function like the brain. I'am not into this field but I am into Robotics and AI. I can tell you that it's a step towards that dream. No one can say if its possible to do that because of Neuroscience finding weird things about the brain that they can't make sense of and Quantum Science confusing it even further. But what we can say is this, it's a step forward. It's like Quantum Computing in a way. So far in my opinion, Quantum Computing + Neural Model based Hardware + XXXX = Brain. So the implications are that you can develop Robotics to the level of using hardware that will emulate a few functions of the Brain so that we don't have to bang out heads against the table trying to make it learn something and do something. I'd say it's more to do with Automating most of the stuff that we humans are lazy or inefficient or incapable of doing. It will take many Engineering disciplines to come together, sorta like the United Nations. AI, EEE, ECE, Robotics, Neuroscience, Quantum Physics. Umm..I can't think of anymore that will make sense into the addition to make up for this field. </p>

Title: Neuromorphic Engineering and Robotics


问:
Help sending serial command to Roomba
I have a Raspberry Pi hooked up to a Roomba 560's serial port. While going over the spec, I noticed movement controls weren't as simple as I expected. I can't send bytes larger than 255, but, according to the spec, to go straight I have to send 8000. How does this work?

EDIT: My solution was the following three functions:

```<code>import serial
import time

def start():
    #Open serial connection
    global ser
    ser = serial.Serial('/dev/ttyUSB0', 115200)
    # this is the defualt Roomba baud rate
    # Start SCI - puts into safe mode
    ser.write(chr(128))
    # Enable the safe mode
    ser.write(chr(131))
    # this is required or the command may fail
    time.sleep(1)

# This makes the serial command fit the big-endian notation
def make4(num):
    num = num[2:]
    z2a = 4-len(num)
    for q in range(z2a):
        num = '0' + num
    return '\\x'+num

def move(vel, rad):
    # Init move command
    ser.write(chr(137))

    # velocity
    vhex = hex(vel)
    vhex = make4(vhex)

    #radius
    vrad = hex(rad)
    vrad = make4(vrad)

    # send to roomba
    ser.write(vhex)
    ser.write(vrad)
</code>```

答:
The spec says hex 8000 as in hexadecimal (which I usually write in C/Python notation as 0x8000). Each byte is exactly two hexadecimal digits. So you can break 0x8000 into 0x80 and 0x00 and send them separately, which correspond to decimal numbers 128 and 0.

You also have to know which to send first (referred as little-endian vs big-endian). The spec says [radius high byte] [radius low byte], so high byte comes first (big-endian).

Therefore send the sequence [128, 0] in order to transmit hex 8000.

Title: Help sending serial command to Roomba


答:
For the 2 DOF system you show, the algebraic and geometric really should give the same answers...usually a cos(alpha) > 1 means that your desired point is outside of the workspace (i.e, trying to reach a point 10 feet away with an 8 foot arm.)

Personally, I find that I make fewer mistakes using the geometric method. I actually make a fair number of mistakes with algebraic, which usually results in me giving up and using geometric. I would hazard a guess that your algebraic approach probably has mistake similar in nature to the ones I make.

Title: Algebraic and geometric in inverse kinematic

Body:
I'm just wondering that is there any case that when algebraic way can't solve the problem while the geometric can ? Cause I'm working on a 2DOF robotics arm This one, I know the length of L1 and L2, location that I want for the end effector, then I tried calculating the angles by using algebraic but it gave me cos(alpha) > 1, but when I tried solving with geometric, I can find the solution, so is it because I use a wrong way in algebraic ?

Thank you very much.


答:
ROS isn't even an operating system, it's a framework and it's usually built on top of Ubuntu. First and foremost, it provides a clean way to write several modular programs with inputs and outputs and stitch them together at runtime.

There's no reason you can't run ROS inside a RTOS (however, it was developed on Ubuntu, so it will take effort to get it running on anything else.)

Title: Why is ROS not a real-time operating system?

Body:
ROS is not real-time OS.
After reading the architecture of ROS, I am unable to realize why is ROS not real-time? What part of the architecture or what design decision is causing that?</p>


答:
Because air is a compressible fluid it's a rather complicated issue. This might be better suited to physics.stackexchange.com, but maybe I can point you in the right direction...

You can think of each rotor blade as a wing moving in a circle, and then you can view it in terms of aerodynamics.

Things we need to consider:

The speed the blade near the rotor will be greater than that at the end.

The angle of attack affects drag and lift, which translate to airflow. This can be maximized in favor of airflow but is interdependent with RPM.

Blades are often shaped along their length to take advantage of #1 and #2.

Blade count is somehow related to drag and ambient air velocity or temperature or something.

The stator and enclosure shape can induce turbulent air currents, which will increase drag.

At high speed you need to take into account laminar flow.

Thanks to thermodynamics, all the power you put in has to go somewhere. So the total of heat, airflow, acceleration, friction, and static force (every action has an opposite reaction) is going to give you your net power requirement.

It might be best to experiment, since fluid dynamics can be tricky.

See also:

Shape of Fan Blades - approaches to simulation

Design of a common table fan

What part of the fan blade actually does the noise generation? -
has an excellent answer on blade/enclosure turbulence.


问:
What do we call a coupling with infinite range of rotation
In most situations, range of motion is limited by the fact that we need to carry power or information past a joint. So, past a certain point there are either cables in the way, or the cables would stretch so much that they would either prevent further movement or break.

However, if we situate the conductors in concentric rings around or within the rotor shaft, we can have a joint that can rotate forever while keeping in contact with any modules on the other side.

What do we call this mechanism? Does it even have a name?

答:
It's called a slip ring.

http://en.wikipedia.org/wiki/Slip_ring

The Wikipedia page has several alternate names for it.

Be careful when using these devices, a cheap or damaged one with poor brushes will destroy a high-speed digital signal (and even worse, it will get damaged after you build a working prototype.)


问:
Fake localization using bag file in ROS
I have a bag file that contains couple of topics needed for localization, odometry data, kinect data and /tf. What I want is watching robot's movement path in rviz after initializing robot position (even I don't know how to initial it). Any help?

All topics:

```<code>/scan
/tf
/clock
/map
/odom
</code>```

答: For localisation you need map of the environment. For the data you have, you should use SLAM algorithm which give path and map of your environment. Try using gmapping in ROS.</p>

Title: Fake localization using bag file in ROS


答: have you tried using the optical mouse? the sensors they have are accurate enough(down to 1/400 inches )and the cost can be very small compared with encoders</p>

Title: How to measure displacement, cheaply and without using an accelerometer?

Body:
Motion is known to be confined in a sphere with radius of about 0.5m, and resolution doesn't have to be very high (5cm is enough). The device will actually be incorporated in a toy designed for kids.

I tried implementing that with an accelerometer but the estimated displacement drifted away 100s of meters per minute.

Is there some other solution, maybe involving electrical or magnetic fields? It's important that the sensor costs no more than a few bucks.

Edit: The device should not be attached to anything mechanical and its movement is in 3d (a kid moves the toy freely).


问:
arduino serial mixing incoming commands
In my project i'm aiming to control a quadruped robot from my android phone using raspberry pi as a middle device (web server). In order to make sure that the server on RPi working fine i googled and got an app that sends a specific character whenever a button is clicked and the arduino job here is simply to receive it from serial port and blink a led! (so easy huh?)
but the problem here is that i noticed that some leds are blinking when i click a button not assigned with them! this can be a disaster if you are controlling a robot!
Does anybody know the reason of this and the solution?

答:
If I had to guess, I'd say mismatch on baud rates, but it's dangerous to guess.

What you need is some old-fashioned debugging!

Three possibilities:

Bug in the app code

Bug in the arduino code

Problem with the interface/configuration

First things first, get a serial cable and connect it to a terminal program (Window's HyperTerminal or Unix's screen). First, test your serial cable by itself.Connect the TX to the RX (do a hardware loopback) and type a few characters and watch them appear in the terminal. Remove the loopback, type the characters and watch them fail to appear. This step is critical and has saved me several headaches.

Now, connect your app to the computer, and send some characters and make sure they appear on your terminal. This will test 1.

If that works, disconnect your serial cable from the app and connect it to the arduino. Type the characters and watch them appear. This will test 2.

If both tests pass, this indicates that it might be issue 3. At this point, it could be something such as improper grounding, slight differences in baudrate, loose connection (happens frequently, even to experts.)

Anyways, you need to narrow down the issue before proceeding. Good luck!

Title: arduino serial mixing incoming commands


问:
Capacitive touch input robot to remote access iPad
I'd like to buy a capacitive touch input robot in order to remote access my iPad but I'm having trouble describing a correct kind of robot.

I would like to keep lag down to an additional 60ms so that it is still a high quality interface.

I would like to have a robotic arm equipped with a capacitive pen that moves to places on the ipad screen based on the mouse or I'd like a array of capacitive pens that emulate the touch of a user.

I guess I'd use Squires software reflect and the mirror function but I'm open to using an SHD camera with the robotic arm and a pixel sensor array with the array of capacitive pens.

Does this make sense? How could I improve the design? What materials would I need to build it myself. Assuming ready built arm? How could I build an array of capacitive touch micro pens?

答:
Since the screen of an iPad is your desired workspace, and all the arm will have to lift is a stylus, this will not have to be a large arm.  There are many "hobby" arms built with hobby airplane servos that will probably work for you.  I won't list any makes / models because there are many out there.

I am not sure what your comment about lag is about, but if you want a fast arm, you should consider a Delta robot arm configuration.  Because the "standard" serial arms mentioned above are not very fast.  These are harder to come by.  the only hobby level delta arm i have seen was the Robot Army Starter Kit on Kickstarter.


问:
How to rotate covariance?
I am working on an EKF and have a question regarding coordinate frame conversion for covariance matrices. Let's say I get some measurement $(x, y, z, roll, pitch, yaw)$ with corresponding 6x6 covariance matrix $C$. This measurement and $C$ are given in some coordinate frame $G_1$. I need to transform the measurement to another coordinate frame, $G_2$. Transforming the measurement itself is trivial, but I would also need to transform its covariance, correct? The translation between $G_1$ and $G_2$ should be irrelevant, but I would still need to rotate it. If I am correct, how would I do this? For the covariances between $x$, $y$, and $z$, my first thought was to simply apply a 3D rotation matrix, but that only works for a 3x3 submatrix within the full 6x6 covariance matrix. Do I need to apply the same rotation to all four blocks? </p>

答:
Covariance is defined as

$\begin{align}
C &= \mathbb{E}(XX^T) - \mathbb{E}(X)\mathbb{E}(X^T)
\end{align}$

where, in your case, $X \in \mathbb{R}^6$ is your state vector and $C$ is the covariance matrix you already have.

For the transformed state $X'=R X$, with $R \in \mathbb{R}^{6\times 6}$ in your case, this becomes

$\begin{align}
C' &= \mathbb{E}(X' X'^T) - \mathbb{E}(X')\mathbb{E}(X'^T)
\\
&= \mathbb{E}(R X X^T R^T) - \mathbb{E}(RX)\mathbb{E}(X^T R^T)
\\
&= R ~\mathbb{E}(X X^T) ~R^T - R\mathbb{E}(X)\mathbb{E}(X^T)R^T
\\
&= R \big(~\mathbb{E}(X X^T) - \mathbb{E}(X)\mathbb{E}(X^T)\big)R^T
\\
&= R C R^T
\end{align}$

As a caveat, be careful with Euler angles. Those are usual non-intuitive in their behavior so you might not be able to simply rotate them with the same rotation matrix that you use for position. Remember that they are usually defined (in the robotics world) in terms of the local coordinate system whereas position is usually defined in terms of the global coordinate system. Off the top of my head, though, I can't remember if they need special treatment.

Title: How to rotate covariance?

ContentLicense: CC BY-SA 4.0


问:
Any image transfer protocol for wireless serial transfer?
I want to send image over wireless serial communication. I am planning to capture images using either raspberry pi or stm32 mcu using DCMI and then transfer image using wireless serial communication module such as Xbee or 3DR radio which can provide air data rate upto 250Kbps at baud rate of 115200

I would like to know if there is any protocol which can send a jpeg compressed image as a wireless serial data.

答:
The only way I know is using FTP protocol.
YOu have to make your system connect to the internet using Ethernet Shield/ Wifi Shield/ 3G-GPRS (GSM) Shield. Then, using FTP protocol to upload the image to the local host. There are dozens of hosts that support the FTP protocol.
Then, you can easily re-download the image from anywhere else connected to the host.</p>


答:
Once you have the image stored as a file, you can transfer that using any one of dozens of file transfer protocols, as long as it is supported by both ends of the link.

We would really like to help, but it's impossible for anyone to read your mind and see what you put on both ends of the link.
And I certainly would like to help someone building a robot that can use a double crossover merging interchange (DCMI).
(Hint: it's not too late to edit your question and add a few more details).

If, hypothetically, you have lots of RF noise and you're trying to transfer a file between two Raspberry Pi machines over an XBee connection,
you might want to try the ZMODEM protocol.
ZMODEM was designed to reliably transfer files over high-noise, high-latency, slow dial-up links.
(I did a quick search and turned up this Zmodem on Raspberry Pi tutorial; you can probably find a better tutorial with a little more search time).

Title: Any image transfer protocol for wireless serial transfer?

Body:
I want to send image over wireless serial communication. I am planning to capture images using either raspberry pi or stm32 mcu using DCMI and then transfer image using wireless serial communication module such as Xbee or 3DR radio which can provide air data rate upto 250Kbps at baud rate of 115200

I would like to know if there is any protocol which can send a jpeg compressed image as a wireless serial data.


问:
Are propellers dangerous?
Aren't all propellers super dangerous? How are these startups like Hex and Pocket Drone selling drones as 'kid-friendly' to consumers? What happens if a kid puts his finger in a propeller's movement space while its flying? </p>

答: Yes, they are dangerous. I've cut myself multiple times. Once through the nail. The small toy helicopters are apparently some cause for increased eye injury, although studies suggest the injuries are usually not severe. Larger helicopters though seem to have caused fatal injuries in the past.</p>

Title: Are propellers dangerous?


答:
Ultrasonic transducers are the best bet, in my opinion. However, they might cost you a little over "a few bucks".

You have two options:

Set two/three ultrasonic Rx/Tx pair along one plane. Trigger them sequentially, in quick succession and triangulate your object in 3D.

A drawback of this approach is that the sensor noise would be phenomenal.

The other option would be:

Set three ultrasonic transmitters, one along each plane (X,Y and Z),
near the boundary of the active region in which the object will be
moving.

Place the ultrasonic receivers inside the object, one facing each
direction.

Precompute a lookup table that tracks the ultrasonic flight time
along each direction separately.

During operations, trigger the three sensors in quick succession,
getting X, Y and Z values consecutively.

This method should be less noisy.

You'll need and omnidirectional ultrasonic transmitter, like this: http://www.metrolog.net/transdutores/piezofilm/ultra40k.php?lang=en

[I'm not sure how much three of them would cost, but there must be some cheaper variant available somewhere].


答:
One of the most common solutions to this problem is structured light (Kinect). I'm not sure about the Playstation Move, but it uses something similar. </p>

<p>Ultrasound is going to be tricky, as you either need to bounce signals around or have a transmitting unit and a receiving unit, but I'm sure you could make it work. </p>

Body:
One of the most common solutions to this problem is structured light (Kinect). I'm not sure about the Playstation Move, but it uses something similar.

Ultrasound is going to be tricky, as you either need to bounce signals around or have a transmitting unit and a receiving unit, but I'm sure you could make it work.


问:
What UAV kit(s) would be suitable for a beginner roboticist with programming experience?
I'm really new to robotics, however I am a programmer familiar with several different languages. I don't have a ton of money to spend and I was wondering what is a really good starter kit.

My criteria is for the kit to be inexpensive and powerful, in that its functionality is extensible -- something that would allow the builder to be creative and possibly invent new ways to use it, not just a glorified model kit.

Being extendable to smartphones is a plus.

I'm not looking for something easy or introductory, just something powerful, flexible, and cost effective.

答:
I think your question is a bit too open-ended.  To get more specific recommendations, I think you'd have to provide some idea of what facet of robotics you want to get involved in.  The mechanical buildling aspect?  Motor control? Microcontroller programming? Use of various sensors?  As an example, I can ask what do you mean by powerful in your question ... motor torque or onboard computing capabilities?  Robotics is a broad field.

If very new to robotics, I would suggest you start out by buying the latest issue of Servo and/or Robot magazines (and then possibly subscribing).  Just glancing through these magazines will give you a lot of information regarding the current hobbiest/enthusiast robotics market, and in the magazines there are many advertisers for kits of all types.

A popular, lower cost, easy-to-learn, yet flexible, microcontroller that can be used for robotics is the Arduino.  There are prebuilt kits for integrating with smartphones. Check out the information here:

How can I integrate a smart phone with my robotics project?.


问:
Do servo motor specifications take into account the gear ratio inside?
I am looking at buying a servo motor for a an application that must be able to lift 4-5 lb at a rotational speed of approximately 1rpm. The servo motor listed here http://www.robotshop.com/ca/en/hitec-hs755mg-servo.html states a stalling torque of 200 oz-in. Is this torque rating at the horn of the servo motor or the torque rating of the actual motor before any gear reduction is done?

Is this motor sufficiently strong for my application?

答:
the torque rating is AFTER the gear reduction.

you can calculate the maximum load by the following equation

Torque = Force * Radius

if you try to lift 1.8-2.2kg load with this servo, you need to attach the load no farther than 6 cm away from the center of the horn.


答:
Aren't all propellers super dangerous?

Depends on the RPM and propeller size. Low RPM with very small diameter, may just result in cuts or bruises.

How are these startups like Hex and Pocket Drone selling drones as 'kid-friendly' to consumers?

Quads are not kid-friendly. Pocket drone uses collapsible propellers that may reduce the force of the impact, but it will hurt.

Hex uses pretty small propellers which reduces the area around it in which it will be dangerous.

What happens if a kid puts his finger in a propeller's movement space while its flying?

Nothing good. Quads are dangerous and need to be handled extremely carefully.

Title: Are propellers dangerous?

Body: Aren't all propellers super dangerous? How are these startups like Hex and Pocket Drone selling drones as 'kid-friendly' to consumers? What happens if a kid puts his finger in a propeller's movement space while its flying? </p>


问:
How to measure displacement, cheaply and without using an accelerometer?
Motion is known to be confined in a sphere with radius of about 0.5m, and resolution doesn't have to be very high (5cm is enough). The device will actually be incorporated in a toy designed for kids.

I tried implementing that with an accelerometer but the estimated displacement drifted away 100s of meters per minute.

Is there some other solution, maybe involving electrical or magnetic fields? It's important that the sensor costs no more than a few bucks.

Edit: The device should not be attached to anything mechanical and its movement is in 3d (a kid moves the toy freely).

答:
Accellerometers won't help much (as you noticed) because they are not global sensors. They drift. To beat this, you need some way of knowing the location of the object relative to another, fixed location. So, here's my question:

What are the constraints of the system? Is the object to be estimated tethered so it cannot move outside that sphere? or is the sphere an actual object?

If the sphere (or even boundaries of the sphere) are known, fixed, or some other way constrained, then you may have hope of fixing the accellerometer's bias, so long as you can detect that the object has actually not moved (e.g., by sensing the boundary).

You may consider putting sensors in the sphere itself. One way of doing this is magnetic (hall-effect) sensors, then making the object mildly magnetic. Then, whichever group of hall-effect sensors is reading the largest magnetic field is likely near the small object. I have successfully done this to track rotations in a wheel by placing a magnet inside the wheel and hall-effect sensors in the wheel well. Simple, and very, very cheap.

If there is no physical sphere, you may have to put all your sensors in the device. Then the problem is actually very hard! If a cheap solution existed for this, then the Army, Firefighters, Police, and all other sorts of disaster rescue people would love to know how you did it. All solutions I'm aware of require extremely expensive accellerometers, coupled with a GPS or camera system. Tough for cheap applications.


答:
Small quads that use brushed pager motors aren't too bad.  Typical quads that used brushless motors easily cut through flesh.  These shots were from an RC Groups thread where people were submitting their accident pictures.  Be careful!

For some  truly gruesome pictures (amputated fingers, severed tendons, etc), you can see this French language thread: http://chrismeme11.over-blog.com/article-36258812.html

Title: Are propellers dangerous?


问:
I don't understand Integral part of PID controller
I dont understand integral part of PID controller. Let's assume this pseudocode from Wikipedia:

```<code>previous_error = 0
integral = 0
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start
</code>```

Integral is set to zero in the beginning. And then in the loop it's integrating the error over the time. When I make a (positive) change in setpoint, the error will become positive and integral will "eat" the values over the time (from the beginning). But what I dont understand is, when error stabilizes back to zero, the integral part will still have some value (integrated errors over time) and will still contribute to the output value of controller, but it should not, because if error is zero, output of PID should be zero as well, right?

Can somebody explain me that please?

答:
Here's a video that gives an "intuitive" understanding of PID loops.  It has an explanation of the integral term, as well as the proportional and derivative terms.

https://www.youtube.com/watch?v=l03SioQ9ySg

There's a followup video that explains the math and shows how to derive the code from the general formula.

https://www.youtube.com/watch?v=sDd4VOpOnnA


问:
PID control against sine wave error
I'm writing a PID to control a toy car that follows a black line on a circuit. I've tuned my PID and it works at high speed for all the circuit except the winding section. For that, the error signal looks like a sine wave, and the toy car steers too much. I would like it to go close to straight, is it possible?

Edit: My car sees 100 grey points in a line ahead, and the difference between the darkest point and the middle of the visual range is the error signal. My output is the angle of a servo on the front wheels of the car, while the speed of the back motors is constant.

The desired performance would be to oscillate with an amplitude less than the amplitude of the winding road, and the actual performance is that the car steers close to the sine line for one period, and at the next max amplitude it under steers. Sorry, I can't provide graphs right now but I'll try to add some in the next days.

Is there a formula for adjusting the PID constants for the desired PID bandwidth?

答:
From An Introduction to Loop-Shaping Design for PID Control:

any constant gain feedback will act as a stabilizing controller when
  the loop is closed. This constant gain is simply a proportional
  controller. The gain raises or lowers the open-loop magnitude response
  hence setting the cross-over frequency.

...

When the loop is closed the cross-over frequency is the bandwidth of
  the closed-loop.

So you would run your loop in Proportional only mode over that section of track. Tune your P term until you achieve the desired performance. You will then need to add back in your I and D terms and tune over the rest of the track.

It may turn out that the P term chosen to achieve the desired performance over the winding section of track produces an unacceptable response for the rest of the track. In which case it may be best to simply place a low pass filter in front of your loop and not pass any errors that are above a certain value.

Title: PID control against sine wave error


问:
How can I integrate a smart phone with my robotics project?
Smart phones these days typically come with a gyroscope, accelerometer, compass, camera, and GPS sensor all on board. They also usually have a connection to the internet with Wifi and mobile data networks. I've seen many cases of using a phone as a remote control for a robot, but to me, it seems like the phone itself is a perfect lightweight computing and sensing platform for an autonomous robot.

The main obstacle I see is interfacing with actuators. Being able to control motors to steer even a table-top robot, or control servos, for example. Connecting and communicating to a microcontroller could be an obstacle as well.

As a robot hobbyist, I'd like to know how I can overcome these and other obstacles to be able to harness the power of my smart phone with my robotics projects.

答:
Another option is the IOIO-OTG board:

The Sparkfun product description describes its functionality:

It features a PIC microcontroller which acts like a bridge that connects an app on your PC or Android device to low-level peripherals like GPIO, PWM, ADC, I2C, SPI, and UART. An app-level library helps you write control code for these low level peripherals in the same way you'd write any other Java app!

This board should do everything you wish and it even has a nice tutorial to help you get started.


问:
VeX - Keeping arm at an angle
So my team made a Vex robot for the toss-up competition, but we need the arm up during the autonomous. The problem is that it's too heavy to stay up on its own. I was going to use encoders to count what angle the arm is at. I was going to use this code, but I'm not sure if there's a better way.

```<code> while(MotorEncoder[rightMotor] < 1000)
  {
    motor[rightMotor] = 80;
    motor[leftMotor] = 80;
  }
</code>```

Would anyone recommend a better solution or is this the best way? This is untested by the way.

答: proportional controller may yield steady state error. it's better to use PI control. that your arm will fall when the motors are not powered is due to the fact that no special backdrive protection is included in the motor or the mechansim. you may want some actual brake to stop the backdrive</p>

Title: VeX - Keeping arm at an angle


答:
One observation is that this is a slightly different situation than the classical control problem.  Your sensor is looking ahead so you're not measuring the current (or past error) but rather you're measuring where you want to position that car in some future time.  As an example, consider that your car currently has its wheels turned such that it is following a given arc to the right.  Your sensor tells you that the target line is somewhat to your right.  It is quite likely that you do not need to give any additional control input to hit your target and attempting to keep correcting to the right will over-steer the car.

To get the best tracking performance you need to figure out how the car drives in open loop mode.  Think about it as a race car driver approaching a turn, he doesn't correct his current error as he's going through the turn, he plans his approach and only correct the tiny errors left as he is taking the turn.  Your perfect driver will need very little correction as he takes into account all the parameters ahead of hitting that turn.

From a control perspective this part of your algorithm is known as feed-forward and is the most important part in getting your car to perform.

With the right feedforward in place you will still need a PID controller to take out any residual error.  One problem you have though is actually figuring out what to use as an error signal.  The simplest choice is to use that signal but you can probably do better.  There are a number of questions that discuss some PID tuning basics and you can refer to those (e.g. What are good strategies for tuning PID loops? ).

Title: PID control against sine wave error

Body:
I'm writing a PID to control a toy car that follows a black line on a circuit. I've tuned my PID and it works at high speed for all the circuit except the winding section. For that, the error signal looks like a sine wave, and the toy car steers too much. I would like it to go close to straight, is it possible?

Edit: My car sees 100 grey points in a line ahead, and the difference between the darkest point and the middle of the visual range is the error signal. My output is the angle of a servo on the front wheels of the car, while the speed of the back motors is constant.

The desired performance would be to oscillate with an amplitude less than the amplitude of the winding road, and the actual performance is that the car steers close to the sine line for one period, and at the next max amplitude it under steers. Sorry, I can't provide graphs right now but I'll try to add some in the next days.

Is there a formula for adjusting the PID constants for the desired PID bandwidth?


答:
Since an accelerometer is  not an option, an ir transmitter can placed on the toy. A  strip of ir receivers can be placed nearby. The receivers must be spaced out with blinders in between.  Essentially what you are actually doing, is defining a finite plane where the kid can move the toy. For instance, if the strip is in front of the child, at about 15 feet away, he can wave the toy freely along the x-axis. The length of the strip determines how the width of plane. You can adjust the height of the blinders as needed. When receiver Ri is activated,  time Ti is recorded (i = 0..n receivers). Since the distance between the receivers are fixed, it then becomes easy to calculate other variables using the recorded time. This method requires strong microcontroller programming ability. In the absence of an accelerometer,  i am eager to hear other options. Ultrasonic sensors  will not work for they only measure distsnce from a to b only.
Good Luck!</p>


问:
Quadcopter Localization Beacon
I want to use an RF beacon to localize my quadcopter for autolanding, when GPS is not precise enough, for example, when my driveway is only 10 feet wide, and the GPS is only showing 20-30 ft. accuracy (with a proverbial lake of lava on either side). The quadcopter would use the GPS to fly to the rough location until it had a strong enough signal off the beacon, when it would begin to use that signal to come to a landing in a precise location, referenced off said beacon. Can someone please explain to me the concepts and theories behind building the beacon and it's accompanying receiver (suitable for connection to an Arduino via any digital or analog method) and achieving, say, a 4" or better horizontal and vertical accuracy within a 50' sphere? Minimally, the quad should have range and altitude, i.e. "I am 10 feet away from the beacon and 2 feet above it". How much added complexity would it take to make the robot fully position aware about the beacon, i.e. "x ft. South, y ft. West and z ft. above it", where the coordinate system is determined by the beacon and not linked to any sort of geographic coordinate system? If the beacon is mounted on a, say, 10 ft pole, are there any changes to be made versus having it on the ground and presuming that all activity takes place above it's x-y plane?

Last note-
This thing would prefferably operate in the 72MHz band, please presume that where I'm operating, there are not other devices operating on the same band.

答:
I would start here, I know someone who did this on a quadrotor with some 50$ gps modules and said it worked very well.

http://www.rtklib.com/

http://en.wikipedia.org/wiki/Real_Time_Kinematic

Title: Quadcopter Localization Beacon


问:
Reading data from D+ and D- pins of a USB
So I have this optical mouse with me, which has a PAN3504DL-TJ optical sensor. It has a USB interface and when I looked up the internet, all I could find was tutorials using A2501 or sensors in those lines and it has pins like SCLK and SDI but I don't have them instead I have D+ and D-. I understand that these are the data pins so what I did was take two wires and plug them into my Analog Pins of my dsPIC30F4011 and read data from it. After setting up UART communication and transmitting data, all I get are numbers running continuously.

What I want to do is to read coordinates over the analog pins as the mouse aka the sensor moves on a surface. I would use this for position control for my robot.
So my question is how do I read coordinates from the Optical Sensor over the D+ and D- lines through my Analog Pins ?

答: The mouse is sending data using the USB protocol.  You will have to read and decode that protocol to get the mouse data.</p>


问:
Robotics StackExchange vs ROS Answer
Robotics Stackexchange vs. ROS Answer:
What is better and for what purpose?</p>

答:
The following are very common in software driven robotics:

Ros

ubuntu

c++

python

arduino

You may notice that all of those have a .stackexchange. But robotics may not always involve these.  And it's bigger than all of those.

Neither is better. They have different purposes.

Title: Robotics StackExchange vs ROS Answer


问:
Sourcing Motors for larger robots
I have been wanting to build larger robots and r/c cars for some time now, but one issue I have had is trying to find larger motors, in the range of electric wheelchair motor size. I found one set on ebay but I am trying to find a more reliable source for these.

To make my question more clear, I am looking for a reliable source(s) for medium size electric motors around the size and power rating of a typical electric wheelchair motor

答:
From what I found doing a quick search on eBay for electric wheel chair motors, they output 100-150 watts nominal. This isn't that much power and can easily be found.

If you are looking for precision miniature drive high quality motors (that come with a certain price tag):

Maxon Motors

Faulhaber

If space isn't at a premium in your designs, you can expand your search to lower quality, bigger motors that are much less expensive. A quick eBay search got me the two follwing manufacturers:

Dunkermotoren

Groschopp

If you are looking for a distributor, I know of RobotShop.

You can probably find others with the help of eBay or Google.

Title: Sourcing Motors for larger robots


问:
Software libraries for parsing sensor data
What software libraries are there for assisting the general problem of parsing a stream of sensor data?

We use various sensors like LIDARs and GPSINS units that provide messages in proprietary binary formats, and have to write drivers for each one. Even though there's a lot of similar concepts used in each sensor (like a general purpose datagram for all messages, consisting e.g. of start/end sentinels, length specifications and a checksum, and then a variety of well-defined message formats for the payload), it ends up being a lot of tedious work to develop a driver each time.

I'd love a solution where I can write out packet/message specifications in some format, and have a library that finds & extracts valid messages from a stream, and provides them in a simple data structure format.

I'm not too fussed about what language, but basically want a general purpose datagram parsing library. There's a lot of customisation with sensors, maybe some odd format parsing, and probably some initial configuration to start the data stream, so this is really something I want as a library for processing the data in real-time that can be used as part of a driver/application.

Everything I find is either too basic (the low level tools for interpreting individual elements, so still lots of time spent extracting individual elements explicitly), or too specific (i.e. parsers written specifically for one particular protocol).

As a concrete example, consider NMEA messages:

There's a basic outer datagram (starts with $ followed by message name, then comma separated data, and ends with *, checksum and line terminating character)

Data is in ASCII so needs to be parsed to binary for computational use

Outer datagram allows for validation and removal of incomplete/corrupted messages

Message name & content would be further parsed for consumption

Field names can be specified for ease of use

A 'GPGLL' message might be turned from $GPGLL,4533.21,N,17739.11,W,113215.22,A*31 into a programmatic data structure containing latitude, longitude, UTC timestamp and its validity.

答:
I have a feeling you won't get a generic solution for you problem. The reason for that is that you normally need to keep some sort of state on your device. Finding a general form to handle all different cases will end up in a construct that is likely quite complex. So why not use the general purpose tool that you have to handle such complexity (e.g. C++ or whatever other language you use).

That being said, there are some generic parts you could factor. In Rock for Example, we derive most drivers from a base library called iodrivers_base. This would do all the annoying IO stuff, and you just need to implement package parsing, package assembly and your state machine.


问:
Should I switch my servo system from brushed to brushless motors?
I have a robot that uses brushed motors in its servo system. These are Maxon 3W motors, with 131:1 planetary gearboxes. The motors are controlled by a PIC microcontroller, running a 1kHz PID controller. The servos are for a low speed high torque application. There is significant backlash between the sensor and the motor.

Maxon offer 12W brushless motors which are the same size. These are better in many ways: double the torque, better heat dissipation, higher efficiency.

The problem, obviously, is that they require more complex drive electronics. Also, I have heard a couple of people mention that brushed motors are better for servo applications, though they never explained why.

Has anyone else implemented this kind of system?

Are there any gotchas when using brushed motors for servos?

Is it possible to servo it at low speeds if I only have the 3 integral digital Hall sensors, and no encoder? (I would prefer not to add an encoder because of the money and space cost)

It torque ripple likely to be a problem?

答:
Brushed motors are easier for servo systems, but are not better.  Many high end servo systems are brushless/AC.

It is possible to control the motors at low speeds with only 3 hall sensors.  You really don't want trapezoidal commutation, especially at low speeds so could add an encoder or estimate the rotor position if necessary.

It is possible to estimate the rotor position with only hall/current sensors but if there are a lot of external disturbances it won't work very well.

Torque ripple is unlikely to be a problem, of course it depends on your application.  More advanced commutation methods (sinusoidal or flux vector) essentially eliminate torque ripple.

You say that your application is low speed, but you are also using a 131:1 gearbox.  What RPM does the motor normally see?  Its not really a low speed application if the motor is running at 30%+ of its rated RPM.  Even hall sensors are very high resolution after going through that much reduction so you might not really need low speed performance at the motor itself.

IMHO Given that your current system has significant backlash between the sensor and the motors, I can't imagine a brushless system doing any worse even with halls/trapezoidal commutation.


问:
Need Troubleshooting help regarding Arduino Uno & HC-06 Bluetooth connection problem
I just bought Arduino Uno and HC-06, I hooked up the connections:

5V Bluetooth → 5V Arduino

GND Bluetooth → GND Arduino

TDX Bluetooth → RX →1

RDX bluetooth → TX → 0

Here are the pictures:

My problem is that I cannot seem to search for the Bluetooth connection on my Laptop or on my phone.
Is there something wrong I am doing here?

答:
The R and T in "Rx" and "Tx" stand for "Receiver" and "Transmitter".

So the Transmitter from one device should be connected to the receiver of the other device. Thus:

Arduino Uno Rx -> HC-06 Tx

Arduino Uno Tx -> HC-06 Rx

EDIT:

Thanks to the pictures that I can now see, what are the values of the resistors on the Arduino Tx pin? 2.2k I think, but I cannot see very well.

In idle mode, both Tx and Rx should be high (5V). Can you verify this with a multimeter? This pdf  (p.8) states that the Rx should be pulled high. I assume that is what you did with the resistors, but I am confused to why you have two resistors. Could you explain this please? Usually a simple 10k resistor to Vcc should be sufficient. Adding a resistor between the Arduino Tx and the cable will cause reflections because of the impedance change and affect the signal quality.


问:
Do I need an accurate flight model for a UAV?
As I understand it, a Kalman filter uses a mathematical model of the robot to predict the robot's state at t+1. It then combines that prediction with information from sensors to get a better sense of the state.

If the robot is an aeroplane, how accurate/realistic does the model need to be? Can I get away with simple position and velocity, or do I therefore need an accurate flight model with computational fluid dynamics?

答:
Well, i had a little trouble understanding your question.
If you want to control it, and the UAV can be controlled (it has to do with its design) just use some decent controller. As far as I know the Ardupilot uses a very simplified version of a PID  controller and works just fine for pretty much everything.
You can add additional stability to an aircraft during its design with things like the position and angles of the wings.
The Kalman will give you the state, and you use that state to control the aircraft. But airplanes are made with lots of stability due to the uncertainties you get.
I remember using a LQR algorithm in college to control an aircraft. It incorporates state vectors and control vectors. That algorithm is pretty much state of the art. It incorporates everything you need from the aircraft. Just like you asked. And answering your question, we only need the coefficients of the main parameters, and we can look those up in tables and graphics (Search for Roskam books...). It doesn't get better than that. We would get two matrices A and B. One for state (x1) and another for control(u1) . The next iteration of the state of the aircraft that we wanted would be
 x2 = A.x1 + B.u1
The control vector u1 for now would take into account how the aircraft was,  and how we wanted it.
u1 = (x2 - A.x1)/B
So simple...
It's one of the best controllers you have out there. The other don't need information about the UAV,  just feed back.
Did you understand?
Did I solve your problem? </p>

<p>Ps.  For velocity, you need a pitot tube to measure the true airspeed. </p>

Body:
Well, i had a little trouble understanding your question.
If you want to control it, and the UAV can be controlled (it has to do with its design) just use some decent controller. As far as I know the Ardupilot uses a very simplified version of a PID  controller and works just fine for pretty much everything.
You can add additional stability to an aircraft during its design with things like the position and angles of the wings.
The Kalman will give you the state, and you use that state to control the aircraft. But airplanes are made with lots of stability due to the uncertainties you get.
I remember using a LQR algorithm in college to control an aircraft. It incorporates state vectors and control vectors. That algorithm is pretty much state of the art. It incorporates everything you need from the aircraft. Just like you asked. And answering your question, we only need the coefficients of the main parameters, and we can look those up in tables and graphics (Search for Roskam books...). It doesn't get better than that. We would get two matrices A and B. One for state (x1) and another for control(u1) . The next iteration of the state of the aircraft that we wanted would be
 x2 = A.x1 + B.u1
The control vector u1 for now would take into account how the aircraft was,  and how we wanted it.
u1 = (x2 - A.x1)/B
So simple...
It's one of the best controllers you have out there. The other don't need information about the UAV,  just feed back.
Did you understand?
Did I solve your problem?

Ps.  For velocity, you need a pitot tube to measure the true airspeed.


问:
Differential drive trajectory following control
I have a robot platform with differential drive which knows it's position and orientation.
Lets say that the space through which the robot moves is known and it has only static obstacles. The task is to move the robot from point A and heading alpha (on which it currently stands) to point B and heading beta on the map.

Lets also say that I can obtain a reasonable trajectory (in relation to the turning abilities of the robot). As both the robot and the sensors are inert, what are some general approaches for controlling such a robot to follow the path? It should of course be kept in mind that the final task is to reach the point B without colliding with the obstacles and not the perfect trajectory following.

I hope the question is not too general.

答: Pure pursuit is the standard method for following a trajectory with a differential drive (or ackerman steering) robot.  It is a very simple technique.  You should be able to search for it and find some (very old) papers describing it.


答:
YACC and Lex to the rescue.

They are exactly what you ask for: "a general purpose datagram parsing library".  Bytes go in one end, and structured data comes out the other end.  You are responsible for doing 2 things:

Tokenizing

Lex is used for tokenizing – deciding how the input stream of bytes should be grouped.  For example, to tokenize the text of a book, you'd want the tokens to be the words (i.e. all the letters and the apostrophe), and the punctuation.  In the GPS message you showed, the tokens would be the literal string $GPGLL (and separately, any other GPS commands that start with $), commas, groups of digits, N, W, and a few others.  This is essentially regular expression matching.

Parsing

YACC is used for parsing – deciding how the sequence of tokens should form structure.  To use the example of text in a book, parsing would allow you to tell whether certain text was a quotation (or parenthetical text) by keeping track of the opening and closing marks.  As an aside: try as you might, there is no regular expression that can tell you whether quotes or parenthesis are evenly matched; hence the need for parsing.  In the GPS example, the parse rules would be something like "a GPGLL command is the $GPGLL token followed by ,, followed by a float (which itself is an integer token followed by a . optionally followed by another integer), followed by an N or S token"... and so on.

Writing a parser is essentially writing a context-free grammar.

Although these may sound scary and difficult (they certainly sounded so to me...), I can say from personal experience that learning how to use these tools is much much much easier than trying to write your own parser from scratch and then maintain it.  There are many examples and tutorials online that should help you get started.

Title: Software libraries for parsing sensor data

Body:
What software libraries are there for assisting the general problem of parsing a stream of sensor data?

We use various sensors like LIDARs and GPSINS units that provide messages in proprietary binary formats, and have to write drivers for each one. Even though there's a lot of similar concepts used in each sensor (like a general purpose datagram for all messages, consisting e.g. of start/end sentinels, length specifications and a checksum, and then a variety of well-defined message formats for the payload), it ends up being a lot of tedious work to develop a driver each time.

I'd love a solution where I can write out packet/message specifications in some format, and have a library that finds & extracts valid messages from a stream, and provides them in a simple data structure format.

I'm not too fussed about what language, but basically want a general purpose datagram parsing library. There's a lot of customisation with sensors, maybe some odd format parsing, and probably some initial configuration to start the data stream, so this is really something I want as a library for processing the data in real-time that can be used as part of a driver/application.

Everything I find is either too basic (the low level tools for interpreting individual elements, so still lots of time spent extracting individual elements explicitly), or too specific (i.e. parsers written specifically for one particular protocol).

As a concrete example, consider NMEA messages:

There's a basic outer datagram (starts with $ followed by message name, then comma separated data, and ends with *, checksum and line terminating character)

Data is in ASCII so needs to be parsed to binary for computational use

Outer datagram allows for validation and removal of incomplete/corrupted messages

Message name & content would be further parsed for consumption

Field names can be specified for ease of use

A 'GPGLL' message might be turned from $GPGLL,4533.21,N,17739.11,W,113215.22,A*31 into a programmatic data structure containing latitude, longitude, UTC timestamp and its validity.


问:
Arduino Operational Frequency
Just wanted to clarify some pretty basic Arduino concept:

If I put this code into an arduino board:

```<code>double start, endTime;
long int counter = 0;

void setup()
{
  Serial.begin(19200);
start = micros();
}

void loop()
{
  endTime = micros();
  counter++;

  //Point A

  if((endTime - start) > 1000000)
  {
    Serial.println(counter);
    counter = 0;
    start = micros();
  }

}
</code>```

...I see >38000 value in my serial monitor (for the 'counter' variable).

However, the moment I put in some heavy calculation in 'Point A', the value drops to 150 - 170. This is expected, I guess.

My question is: Is the only way to push up the operational frequency lies in optimising the code/calculation? Or, is there some other way I can get faster execution?

答:
Correct: you must optimize your code.

The Arduino can do a fixed number of machine instructions per second, so reducing the number of instructions required for the calculation will increase the number of calculations that can be done per second.

$$\text{operational frequency} = \frac{\text{calculations}}{t} = \frac{\frac{\text{instructions}}{t}}{\frac{\text{instructions}}{\text{calculation}}} = \frac{\text{16 MHz}}{\frac{\text{instructions}}{\text{calculation}}}$$

Title: Arduino Operational Frequency


问:
How to use TOA (Time Of Arrival) to measure 3-axis location of a wireless device?
I need to read the location of my device within a 1m radius sphere, with accuracy of 5-10cm.

The device is handheld and wireless, and currently communicates using a Bluetooth v4 chip. I could add an RF transmitter on the moving part and a few stationary receivers at the base.

What components should I look into? What would be the cheapest way to triangulate it?

答:
TOA method is almost impossible to work at such short lengths with radio signals (as they travel at the speed of 3*10^8 m/s which means you need a very high sampling rate to detect that time difference). You should consider using some ultrasonic sound sources and microphones and use them for such a task.
If you wish to know the location of the device in 3 dimensions, you need to place one sound emitter onto the moving device and 4 microphones at the center of the sphere. The more apart the microphones are, the better precision you'll have.</p>


问:
What is a suitable model for four-wheeled differential drive rigid-body robots?
I found a model for 2-wheeled robots here:

What is a suitable model for two-wheeled robots?

How should I adapt it to a 4-wheeled setting?

答:
If only two wheels are connected to motors (and the other two are just used as pivots) then you can use the same model (the wheels on the same side, either left or right, have the same velocity).

If you have motors on all four wheels then it's a bit different story, you should first think about why you would do that. The problem there arises if the wheels on the same side (either left or right) do not turn with the same angular speed (or speeds proportional to their radius if one is larger) as that would cause drifting which you would have to take into the account. If they do in fact turn with the same angular speeds then again, the 2-wheeled model applies to this system as well.

Regards


答:
The microcontroller you are using has a certain clock frequency. Every operation you make it compute takes a specific (but constant) number of clock cycles to perform. What your code does is it enters the loop function, it performs all the tasks within it and then it jumps back to it's beginning and does everything again.

As you are limited by the number of operations you can perform per second and not the number of loop iterations, you need to either decrease the number of operations you are performing per loop iteration or find a way to increase the number of operations you can do per second.

In order to increase the number of operations you can do per second you need to increase the clock frequency which might mean buying a new chip if the one you are using is already at it's maximum.

Title: Arduino Operational Frequency

Body:
Just wanted to clarify some pretty basic Arduino concept:

If I put this code into an arduino board:

```<code>double start, endTime;
long int counter = 0;

void setup()
{
  Serial.begin(19200);
start = micros();
}

void loop()
{
  endTime = micros();
  counter++;

  //Point A

  if((endTime - start) > 1000000)
  {
    Serial.println(counter);
    counter = 0;
    start = micros();
  }

}
</code>```

...I see >38000 value in my serial monitor (for the 'counter' variable).

However, the moment I put in some heavy calculation in 'Point A', the value drops to 150 - 170. This is expected, I guess.

My question is: Is the only way to push up the operational frequency lies in optimising the code/calculation? Or, is there some other way I can get faster execution?


问:
24v dc to 12vdc converter
I have built a r/c car that runs on 2 30AH 12V DC deep cycle batteries. The motors are 24v motors that will each draw around 15A at full power. My  motor controller can handle this, as well as reclaiming braking energy.

This is my way of saying that i have a 24v power system. Now my issue is that I want to run a 12v device on this 24v service. I do not want to have the hassle of another battery to maintain so i would like to power it off the main batteries. All the BECs and other converters that i have found only supply around 1 amp while the device i am looking at powering will take around 4-5A 12v DC. Does anyone know of a device that will do this.

答:
If you already have two separate 12V batteries then it makes no sense to convert 24V down to 12V which you already have. As the two of your batteries are coupled together to form 24V, just draw a wire from the place where the two batteries meet and you'll have 12V there (with respect to the ground).

If by some strange reason you really want to convert those 24V to 12V, take a look at some switch-mode power supplies (like LM2576, it can output 3A but there are better ones, you should have no problem finding them), they are more efficient than linear voltage regulators (like 7805) and can give higher output current.

Regards

Title: 24v dc to 12vdc converter


问:
Atlas Robot Reference
Boston Dynamics keeps making great robots, however, I dont see any papers that they publish.  Although now I can find papers on people using the ATLAS robot, I can not find an original paper detailing the robot or its mechanics designs.  Is there a reference for the robot, should I use youtube videos?</p>

答:
Not really a solid answer, but...

Boston Dynamics does publish papers, though the only one I could find was the one for the BigDog: http://www.bostondynamics.com/img/BigDog_IFAC_Apr-8-2008.pdf

As for the ATLAS robot, it is nowhere to be found, but I believe that as soon as they publish it (if they ever do), it will be on their website http://www.bostondynamics.com

Title: Atlas Robot Reference


问:
Transformation a robot in 2D?
I'm watching this video at 36.00 min. The guy gave an example but I'm not sure what is the problem. He stated that if we want to move a robot then we should to the following

for inhomogeneous case,
$$
x' = Rx + t \\
R =
\begin{bmatrix}
cos\theta & -sin\theta \\
sin\theta  & cos\theta
\end{bmatrix}
$$
where $t$ is the translation vector and $x$ is the previous position.

in homogeneous case,
$$
x' =
\begin{bmatrix}
R & \bf{t} \\
\bf{0}^{T} & 1
\end{bmatrix}
x
$$
Now, he gave an example in which
$$
t =
\begin{bmatrix}
1 \\
0
\end{bmatrix}
,
x =
\begin{bmatrix}
0.7 \\
0.5
\end{bmatrix}
$$
My solution is as the following in Matlab

```<code>% inhomogeneous case
>> a = 45;
>> R = [cosd(a) -sind(a); sind(a) cosd(a)];
>> t = [1; 0];
>> x = [0.7; 0.5];
>> xnew = R*x + t
xnew =

    1.1414
    0.8485
</code>```

For homogeneous case

```<code>>> xn = [R t; 0 0 1]*[x ; 1]

xn =

    1.1414
    0.8485
    1.0000
</code>```

Both have same result, but the guy got another result. What exactly he did is

```<code>>> xf = [R x; 0 0 1]*[t ; 1]

xf =

    1.4071
    1.2071
    1.0000
</code>```

Why he did switch $t$ and $x$? I'm aware of the issue that he is trying to calculate the velocity but in fact he is computing the position. This mistake in the notation won't affect the final result.

Second question, why he assumed that the forward movement of the robot in the above example should be
$$
t = \begin{bmatrix}1\\0\end{bmatrix}
$$
? He said that because the robot always in the forward movement move in +x axis. Why this is the case? The movement in robot's frame is determined based on the direction of the robot and the distance the robot travels which is specified as hypotenuse length.

答:
The problem is that the rotation matrix describes the rotation around the coordinate system center and not around the center of the robot, so here's what happens.

You wish to add to the robot position a vector which is oriented the same as he is (which is described by R), so how do you do this. You take a vector t which is rotated by 0 degrees (that is [1; 0] because of the angle convention), you multiply it by intensity (which is 1 because of 1m/s), you rotate it so it has the same direction as your robot (because it should move forward) and then you add that vector to the current position (which is described by x).

So you in the end you get x'=R*t+x which is the same thing he did.

EDIT:
I forgot to mention that this is much easier to remember in homogeneous representation:

S=[R R x; R R y; 0 0 1]

which represents the "state" of the robot (it's position and orientation, as I mentioned, if it's looking to the right along x axis its angle is 0). So when you multiply the state of the robot with transformation matrix you get the new state. Transformation matrix is in the exact shape as the state matrix, so it's A=[R R tx; R R ty; 0 0 1]. So if you want only to translate the robot you make [R R; R R] identity matrix [1 0; 0 1], and if you want only to rotate the robot you make tx=ty=0. You can both rotate and translate the robot at the same time like this but keep in mind that the robot will first translate and then rotate (that is, it will translate with respect to the old orientation, not the new one). If you wish to rotate and then translate it, make a rotation transformation matrix and multiply it by the translation transformation matrix and then use that matrix as the transformation matrix which you will multiply with the state matrix (right side multiply as always). Order of matrices is of course important as matrix multiplication is not commutative.

Regards

Title: Transformation a robot in 2D?


问:
How to explain bandwidth of a measurement to a noob?
I am working on a system which is measuring a force. The specification is to have a 500Hz bandwidth on the measurement.

Now I was trying to explain this 500Hz bandwith to my mom and I could not really explain it easily.

What is the most easy way to explain the term bandwidth of a measurement to someone without control engineering background?

答:
I would attempt to explain it like this.

The measuring system has some latency and cannot detect very very fast changes (if you were to push it and release it in less than a microsecond it probably wouldn't detect anything). Bandwidth is a measure of that characteristic, that is, it tells us how fast change can the system measure.

500Hz bandwidth means that any change that is greater than the changing speed of a 500Hz sine wave will not be measured correctly. (this is a loose and not perfectly correct explanation but I guess you won't be explaining Fourier transform to a person without engineering/maths background).


问:
Building A Servo Tester To Measure Peak/Stalled Amp Draw
Since finding data on stalled and in use under load (not free) amp draw for servos seems impossible, I want to build/create my own servo tester.

All I really want to know is how much amps the servo is drawing at idle, at movement under load, and at stalled/full position. I think that should cover all the bases relative to amp usage on the servo but if not, please let me know what I am missing.

Here are my questions:

I am going to need a power supply for an exact 4.8V and 6.0V since that seems to be the standard measurement voltages.

I'll need some way to accurately measure the amp draw.

I'll need some way to control the servo movement.

Is that it? What am I missing and if anyone has any suggestions please let me know and thanks for the help.  This seems to be uncharted waters for those in the RC hobby area but someone in the robotics field may have been down this path.

答:
I believe that is everything you need. As for the solutions:

http://www.ti.com/lit/ds/symlink/lm2576.pdf you can implement power supply both for 4.8V and for 6V with this circuit, there is application note in the datasheet which you can use to calculate the needed component values to get the desired output voltage.

https://www.digikey.com/product-highlights/us/en/allegro-acs710-current-sensor-ic/1030 ACS710 is a current sensing sensor, or you can just use a standard ampermeter.

You need a microcontroller to implement the control for the servo. Servos are usually controlled via pulse width modulation (PWM), where the signal period is 20ms, duration of logical "1" is 1ms (5% duty cycle) for the minimal angle position, 1.5ms (7.5% duty cycle) for the middle and 2ms (10% duty cycle) for the maximal angle position.

Regards


答:
The simplest explanation I can think of is to compare bandwidth to the rate which you look at things. It doesn't really cover how continuous systems work but given that most people deal with digital or discontinuous systems (even if they don't know it) it's a relevant, if not perfect, analogy.

Compare a low bandwidth with having your eyes closed and then opening them briefly once every 5 seconds. Not only are you going to be slow to react to changes because you only get an update every 5 seconds (latency) but you will also miss all of the things happening while your eyes are closed (filtering).
A higher bandwidth would be opening your eyes once a second. You could increase the sampling rate up until your eyes are always open.

The more rapidly you open your eyes, the higher your bandwidth. So higher bandwidth means not only can you update you output more quickly but you also capture more of the things going on.

Edit: The above is a closer analogy to the sampling rate of your system. The bandwidth of the system is a measure of how quickly your system can react to your observations.
If we follow the blinking analogy the system bandwidth is a measure of how quickly you can react to the changes you see when you open your eyes. A low bandwidth system will have difficulty reacting to changes,no matter how much you open your eyes. a fast bandwidth system can respond quickly to changes but will be limited by how often you oen your eyes to look

Title: How to explain bandwidth of a measurement to a noob?

Body:
I am working on a system which is measuring a force. The specification is to have a 500Hz bandwidth on the measurement.

Now I was trying to explain this 500Hz bandwith to my mom and I could not really explain it easily.

What is the most easy way to explain the term bandwidth of a measurement to someone without control engineering background?


答:
For small quantities and ad-hoc projects just above the eBay level: www.surpluscenter.com

For repeatable prototypes: www.robotmarketplace.com
then track back by searching on manufacturer for larger quantities.

Title: Sourcing Motors for larger robots

Body:
I have been wanting to build larger robots and r/c cars for some time now, but one issue I have had is trying to find larger motors, in the range of electric wheelchair motor size. I found one set on ebay but I am trying to find a more reliable source for these.

To make my question more clear, I am looking for a reliable source(s) for medium size electric motors around the size and power rating of a typical electric wheelchair motor


答: I just use a standard servo tester but put a multimeter in the loop on the +5v side by cutting the power line on a servo extension. Very simple but works fine. I suppose if you were after exact measures a precise voltage supply might matter. </p>

Title: Building A Servo Tester To Measure Peak/Stalled Amp Draw

Body:
Since finding data on stalled and in use under load (not free) amp draw for servos seems impossible, I want to build/create my own servo tester.

All I really want to know is how much amps the servo is drawing at idle, at movement under load, and at stalled/full position. I think that should cover all the bases relative to amp usage on the servo but if not, please let me know what I am missing.

Here are my questions:

I am going to need a power supply for an exact 4.8V and 6.0V since that seems to be the standard measurement voltages.

I'll need some way to accurately measure the amp draw.

I'll need some way to control the servo movement.

Is that it? What am I missing and if anyone has any suggestions please let me know and thanks for the help.  This seems to be uncharted waters for those in the RC hobby area but someone in the robotics field may have been down this path.


答:
2pietjuh2's Mom:

Are you familiar with dog whistles?

Dog whistles make a sound at a frequency that dogs can hear but humans can not.  The sound it makes has a higher frequency than the maximum frequency humans can hear.

If we try to draw a picture of what human hearing is like it looks something like this:

You may have seen this already if you've ever taken a hearing test.  Where the red circles are low signal where our hearing gets worse.  In this example we have a person who can hear pretty well between 250Hz and 8000Hz (Hz is a measuring unit called after Heinrich Hertz and means cycles per second) but less well outside this range, or band.  We can think of the area from the first frequency to the last frequency as a "band".  Humans with good hearing can still hear something up to 20000Hz but we are not as sensitive to those higher frequency sounds.  At some point we simply will hear nothing at all no matter how loud/strong the sound is.

Not this kind of a band:

But more like a band you'd wear on your wrist.  We measure the width of this band and that's our band width, bandwidth.  For our human example it's 8,000 minus 250 Hertz or about 7,750 Hertz (ignoring the little dip around 4,000).  If someone asked me to design the hearing system for this human they would specify a bandwidth of 7,750Hz.  We usually need to decide what's large enough to count as being inside the band in order to determine this.  The "standard" human hearing range is often considered to be 20Hz to 20,000Hz or a bandwidth of about 19,980Hz.

Meanwhile, our best friend:

Has a hearing range of about 40 Hz to 60 kHz (kHz is kilo-Hertz or one thousand Hertz).  So we can say his hearing bandwidth is about 59,960Hz (60,000-40).

We can explain this mathematically and more rigorously but that will take more time where most people would lose interest (a few hours should yield an expert level of understanding for this particular concept).  I think it's important to stress out the origin of the term as the width of the band in a graph of frequency vs. response (e.g. in radio, light etc.)

(p.s. All images from Wikipedia)


问:
Project Idea for a AI related project
I am a Computer Science final year undergraduate student.Until now,I used to shirk away from robotics as I believed that it is more related to electrical and mechanical aspects.But my interest in robotics grew by seeing some demos and I seriously want to make a robot which involves AI by teaming up with interbranch students of college.So what is the best project I can pick up as a beginner in robotics and AI and some experience in Computer Science so I can apply AI Machine learning concepts so that it learns something.How to start something?</p>

答:
Basically almost any control system can be used with machine learning. You just learn the control logic instead of using some PID for example. Here is one simple example which doesn't have too much robotics involved but you'll get the point I hope: http://www.youtube.com/watch?v=XiigTGKZfks

Ball and Plate system could also be interesting to you. You could generally base your research on comparison of different algorithms, both machine learning (HMM, reinforcement, supervised...) and some more often used controllers like PID and Fuzzy logic.

Regards

Title: Project Idea for a AI related project


问:
Effectiveness of a Mobile Robot In Relation To Mass
Do mobile and/or autonomous robots become more or less effective the bigger they get? For example, a bigger robot has bigger batteries, and thus bigger motors, whereas a smaller robot has the exact opposite, making it need less energy, but also have smaller motors. Is there any known theorem that models this?</p>

答:
http://en.wikipedia.org/wiki/Square-cube_law

The square-cube law essentially states that larger robots are more fragile.

"You can drop a mouse down a thousand-yard mine shaft and, on arriving
  at the bottom, it gets a slight shock and walks away. A rat is killed,
  a man is broken, a horse splashes." — J.B.S. Haldane, biologist

Note that this only applies in a very generic mechanical sense.  You can't really make rules involving robot size since robots are so diverse.