问:
estimate transfer function of stepper motor?
I have a stepper motor which has an internal controller.
I would like to determine them both, but don't know how i should approach the problem.
the system receives a input velocity and position, and moves toward that position using that velocity. The input could also just be a velocity. </p>

<p>The plant is a Pan and tilt unit, which has 2 stepper motors. I Tried with ident but only got a fit of 5 %...  My input was a noisy signal, and output  was the position it writes out. </p>


问:
What is the achievable stiffness of a impedance/admittance controlled robot (incl. haptic devices), given its structural and control stiffnesses?
EDIT: I realised I missed the point of the paper completely (thanks to very-skim reading ;) ). So, this part of it I'm relating to is about how much damping - not how much stiffness - should we display to obtain stability, given a structural stiffness. I changed the question accordingly - what is achievable stiffness of a impedance/admittance controlled robot, given its structural and control stiffnesses? (Stiffness/compliance is, of course, mathematically just one of the terms in total impedance/admittance)

Let us consider a haptic device with mechanical and control parts, and mechanical part is not infinitely rigid (compliant). Basically, it would be a robot with impedance or admittance control. I thought perceivable stiffness can be just as simple as serial connection of two stiffnesses - and so the stiffer mechanical structure is, the better it can display control stiffness:

$k = \frac{k_e k_c}{k_e + k_c}$

where $k_c$ is stiffness control. Still, I cannot find any confirmation to this, although something very similar is stated in Samur's "Performance Metrics for Haptic Interfaces". I would be very grateful if you could refer me to some sources or just plain prove it wrong or right (:

In a paper (here, p. 728) I only found stability condition for virtual damping value in relation to virtual stiffness, given structural stiffness.

ContentLicense: CC BY-SA 3.0


问:
Cognitive Architectures: how do you perform qualitative and quantitative comparisons?
I couldn't find a sub stackexchange for artificial intelligence, but I think robotics comes close, and so I'm posting here.

I recently saw TED talks on AI and the Google car, with these being the most interesting to me:

Hod Lipson - Building "self-aware" robots

Juan Enriquez - The next species of human

Ray Kurzweil - Get ready for hybrid thinking

The third one led me to the 'criticism' section (labeled Analysis on that wiki article, though it certainly at least partially reads as a criticism section as well) of Kurzweil 'theory' of the brain, namely "Pattern Recognition Theory of Mind" (PRTM).  After some link surfing on the people who have performed analysis of PRTM and their respective academic contributions, I came to learn about Cognitive Architecture:

"A cognitive architecture can refer to a theory about the structure of
  the human mind. One of the main goals of a cognitive architecture is
  to summarize the various results of cognitive psychology in a
  comprehensive computer model. However, the results need to be in a
  formalized form so far that they can be the basis of a computer
  program. By combining the individual results are so for a
  comprehensive theory of cognition and the other a commercially usable
  model arise. Successful cognitive architectures include ACT-R
  (Adaptive Control of Thought, ACT), SOAR and OpenCog."

It appears that there are several interesting architectures, including the 3 mentioned above.  I read a bit about ACT-R, SOAR, OpenCog, DUAL, CHREST, and CLARION.  The list is not comprehensive.  It also appears that there are two main types of such architectures: Connectionism and Symbolic.

Though I have many questions, my main question is this:
What are some quantitative metrics and qualitative properties to measure and compare between the two architecture types?

Other questions

Can all architectures be categorized as one, the other, or some
combination of the two, or is there a third, fourth, etc?

How are two main types alike? How are they different?

What are some recommended further readings on this topic.

What centres and organizations are leading development in this?

What are some of the computer programming languages, related skill-sets, and
cross-domain knowledge set utilized in R&D and product offerings of
such systems?


问:
On-board monocular odometry for quadcopter stabilization
Has anyone done this with EKF/PID on a small microcontroller? Or know of code snippets to help implementing this?</p>


问:
Mini Recorder from RC Heli Parts
I had a RC Helicopter (with video,picture, and audio taking capabilities) that recently "died" (unrelated to short circuit). The reciever board short circuted, but the board that sent data to micro-sd card and had camera+mic was fine. I can access the data on the micro-sd card through the circuit, with a USB cable. The reciever board sent data via a 4 wire bundle to the camera board to make it take pictures/record audio. Is there any way to still do this from my computer (from the USB), and turn it into a mini spy camera? (Not remotely, jst through a cable)

I got this heli a while back so I don't have the heli number but the camera board number is TX6473 R1, and the reciever board number is 3319B rev.a

Reciever Board Image

Camera/Data Board Image

Title: Mini Recorder from RC Heli Parts


问:
Orientation parameter for quadcopter with madgwick fusion algorithm
I recently decided to build a quadricopter from scratch using Arduino and now I'm faced with an orientation estimation problem.

I bought a cheap 10DOF sensor with 3 axis magnetometer, 3 axis accelerometer, 3 axis gyro and a barometer and the complementary filter that I use to get orientation returns usable but noisy values.

I tried the Madgwick fusion filter too, but it returns unstable values that diverges from the ones I get with complementary filter. Given that the Madgwick filter implementation is correct, I pass acceleration values measured in Gs, gyro values measured in rps (radians per second) and Magnetometer values measured in uT, while sampling time is the same of my loop cycle. Is there anything I have missed?

Is there any advantage using Kalman filter?

EDIT1:

My problem was due to an wrong choice of sampling time and now seems to work, but convergence is very very slow (i.e. it takes about 3 seconds to reach the right value after a quick flip of the IMU). Rising value of Kp adds to much noise. I also tried to repeat filter update step more than once per cycle but it requires too much time exceeding the sampling time.

Here some graphs, from top to bottom Complementary filter, Madgwick filter and Madgwick filter with high Kp:

EDIT2:

Different values probably are caused by cable plug and unplug. Anyway raw data example from my sensor can be downloaded here


问:
Olf Futaba Rx & Tx with APM micro 2.7.2?
Hi there I just found this old Rx & Tx in my loft and need to know weather it is compatible with my APM micro 2.7.2. I already have telemetry but that does not give me manual control. My guess is I need a new Rx because the current one will make a hash of the electronics on the APM. Thanks in advance[![enter image description here][1]][1]

[![enter image descriptere][2]][2]


问:
Using Blob detection in V-Rep
I was trying to reproduce this youtube tutorial in V-rep and I came across some problems concerning blob detection. There are some complaints on this matter under the video. I don't believe that blob detection stopped working in recent v-rep versions, but I was unable to make it work (as a new v-rep user myself). Has anyone any idea how to properly implement it?

More specifically, I have a vision sensor named cam and I want it to follow a red ball. The vision sensor will detect the position of the ball and I will use it to control the joints that steer the sensor (yaw and pitch). My script follows

```<code>threadFunction=function()
    yaw=simGetObjectHandle("yaw")
    pitch=simGetObjectHandle("pitch")
    cam=simGetObjectHandle("cam")
    while simGetSimulationState()~=sim_simulation_advancing_abouttostop do
        result,pack1,pack2=simReadVisionSensor(cam)
        if result>0 then
            xtarget=pack2[5]
            ytarget=pack2[6]
            simAuxiliaryConsolePrint(out,string.format("\n x: %0.2f, y: %0.2f",xtarget,ytarget))
            simSetJointTargetVelocity(yaw,1*(0.5-xtarget))
            simSetJointTargetVelocity(pitch,1*(0.5-ytarget))
        end
    end
end

simSetThreadSwitchTiming(2)
out = simAuxiliaryConsoleOpen("Debug",8,1)
res,err=xpcall(threadFunction,function(err) return debug.traceback(err) end)
if not res then
    simAddStatusbarMessage('Lua runtime error: '..err)
end
</code>```

When I run the simulation I can see that the sensor sees the red ball at some point but result is always 0 meaning that no detection takes place.

Here is my scene

Title: Using Blob detection in V-Rep


问:
Telemetry with APM 2.6 and XBee
The transmission of telemetry data between the ground base station and APM 2.x (Arducopter), using XBee, is not well documented. The only documentation is Telemetry-XBee, but it does not specify what XBee version is used. I have been checking and I guess is version 1 (this one has P2P link and the others not), but I am not sure.

I would like to know, what XBee modules people use for flying drones? Do they have problems with the APM connection? How can I control the drone remotely using the XBee link with Mavlink protocol?

Title: Telemetry with APM 2.6 and XBee


问:
Complete Quadrotor Tutorial (Text)Book?
I'm looking for a complete tutorial textbook for how to build and control a quadrotor (dynamics, control, etc.).

I'm an engineer with a broad background in programming, mechanics, and control but it's been several years and I'm rusty. I was just wondering if anyone knew of a great "from the ground up" tutorial for quadrotors? I found this book which looks interesting but thought I'd ask here too.

Thanks!

EDIT

So, assume I've taken a formal course on all necessary topics: system modeling, mechanics, control theory, state estimation, programming, etc.

I'm looking for a book that assumes the reader is familiar with the topics but also goes step-by-step. For example, instead of just stating "here are the system equations" I'm looking for "let's derive the system equations" (but assumes you are familiar with modeling/kinematics). I'd like to start a quadcopter as a side project but have precious spare time so I'd prefer a single good reference instead of jumping from each individual topic textbook; maybe I'm just being greedy :)

Title: Complete Quadrotor Tutorial (Text)Book?


问:
Maximum ball screw speeds
What is the maximum rotational velocity of miniature ball-screw (diameters up to 12mm) for approximately 1000 thrust cycles, and which type/brand would that be, if the speed is limited by the ball return mechanism? The fastest I could find was 4000 rpm at 3000 N thrust, but this was from a datasheet with a big safety margin (millions of cycles).

I'm looking for either experience and data, or a general method/formula that can be used to find the maximum velocity (and load) as function of cycles or the other way round (similar to those of ball bearings). Suggestions and knowledge about faster types and brands of ballscrews than the ones I have been able to find is welcome as well.

Some more background information:
Ball screws are very interesting transmissions for electrically actuated legged robotics, since they provide a high-geared rotary-to-linear transmission that is accurate, precise, energy efficient and possibly backlash-free. However, the big downside is their limited rotational speed. The maximum rotational velocity is limited by resonance and the ball return mechanism. The former limit is easy to calculate (eigenfrequency calculation), and mostly not problematic for small spindles. However, the latter is a bigger problem. The balls in a ball screw roll through the threaded spindle and have to be recirculated to the other end of the nut. The recirculation limits the rotational velocity of the ballscrews. The corresponding maximum rotational velocities are not calculate-able (for as far as I know) and are provided by manufacturers in catalogues, either directly in rpm or via a so-called $D_n$-value, where the rotational velocity in rpm is $n=D_n/d$ where d is the diameter of the ball screw. But even then, the maximum rotational velocity of ball screws is capped at 4000 rpm or lower according to datasheets (depending on brand and ball return mechanism). The highest permissible rotational velocities I found were those of Steinmeyer ballscrews, at 4000 rpm, using an end-cap-return mechanism. Note that for electrical motors (up to 200W) ideal (maximum power) velocities are higher than 4000 rpm, and even more than twice as high for many brushless motors. It appears however that ball screws can run at higher speeds than what they are specified for in reality, because the specifications hold for many millions of cycles. I can only find a single unofficial source where someone claims to have run their ball-screws up to 6000 rpm, and in missiles (one-time-use) up to 7500 rpm. I'm interested in a theory or more experimental data that backs this up.

Title: Maximum ball screw speeds


问:
2D Positioning of mobile robot
I am just starting to explore an idea and I am somewhat of a novice in robotics. I am looking to position a mobile robot as accurately as possible on a concrete slab. This would be during new construction of a building and probably not have many walls or other vertical points for reference. the basic premise behind the robot is to print floor plans straight on to the slab. I will have access to the BIM (building information models, CAD, Revit) files of the building. I want the robot to position itself as accurately as possible on the blank slab using the BIM files as a map. What would be the best avenue to track and adjust positioning of the robot in the open space of a slab? Low frequency, Lidar, wifi? Lastly what sensors would be best?</p>

Title: 2D Positioning of mobile robot


问:
Can digital servo motors be modified for continuous rotation?
In an autonomous mobile robot, we're planning on using digital servo motors to drive the wheels. Servo motors usually don't rotate continuously. However, they can be modified to do so based on many tutorials online which only mention modifying [analog] servo motors.

My question is, can the same method(s) or any other ones be used to modify digital servo motors?

Thanks


问:
choice for camera sensor to be used with LiDAR
I am doing research on autonomous car and looking for a sensor to be used along with LiDAR laser scanner. Ladybug could be a very good option but the cost!! too expensive.
Could you please suggest me options for camera sensors with good FOV and which will cost me around $1000.
Thank you so much!!

-CHIANG CHEN


问:
How to drive robot without driving actuator?
I am participating in a robotics competition. I am supposed to design and build two robots. Out of these, one cannot have a driving actuator (it can have a steering actuator though, fed by a line following circuit). The other is supposed to drive the non-driving robot through an obstacle course, without touching it. This is kind of driving me crazy since at one point the separation between the two robots is 60 cm (23 inches).

Ways I've considered:

Wind Energy (wont work, need huge sails)

Magnetic Repulsion of some sort

Now repulsion I've spent a lot of time studying.

My solution was to use strong permanent magnets on the non-driving robot (Neodymium,N52) and electromagnets on the driving robot.

But, after doing a huge load of calculations came to the conclusion that not enough force can be transmitted over the distance as magnetic fields fall off too quick.

Rulebook: http://ultimatist.com/video/Rulebook2016_Final_website_1_Sep_15.zip

I am really looking for even a pointer here. Is there a trick somewhere that I am missing?


问:
Power on iRobot Create 2 via serial port
I have Arduino talk with Create 2 via serial interface. But before sending commands to the robot, I have to power it on by manually pushing the power button on the robot. How to make the robot turned on via that mini din 7 port, instead of pushing that power button?
I notice when plugin iRobot serial-2-USB cable into that port on the robot, the robot is immediately turned on, ready for received the first command (command 128), so apparently there is way to turn on the robot via that port.</p>


问:
Switching scheme for vector controlled pmac drive
I have 28  pmac motors (3-ph, 230 volt of 0.5 kw, 1.05kw an 1.21kw) in motor control center. Please suggest a time staggered switching scheme in order to avoid tripping due to voltage sag, swell , flicker etc</p>


问:
kk2.1.5 gyro bubble is not at centre
I have a quadcopter controlled through KK2.1.5 flight controller. I have been flying with it without problems, but now i am facing a problem. When i start and arm the kk2.1.5, by giving throttle it starts turning towards some direction with acceleration. I double checked the motor pins locations and all other things, they are correct. When i took a look to the gyro bubble of kk2.1.5 it wasnt at mid of the crosshair. I turned the quad off and then on. I check bubble again it was at centre. now again when i gave it throttle it started turning towards some direction. I checked the again, and it wasnt on centre this time too. So at the armed state the gyro bubble moves away from centre by giving throttle. due to which quad overcorrects itself. Now i have understood that the gyro is off centre due to vibration  of the FC. What should i do to antivibrate it. What material should i keep in between so that vibrations are almost zero.</p>

Title: kk2.1.5 gyro bubble is not at centre


问:
Torque control in eye-in-hand visual servoing
In most papers about IBVS the camera velocity is computed and then used as a pseudo-input for the manipulator. (e.g. this one) Is there any work in which the dynamic Lagrange model $H(q) \ddot q +C(q,\dot q)\dot q+g(q)=\tau$ of the manipulator is taken into consideration in order to compute the torque required to move the joints accordingly?</p>


问:
Removing PCB from a Dynamixel RX-24F servo?
For a mod on the Dynamixel RX-24F I need to remove the enclosed PCB. I removed all screws but the PCB doesn't come out easily (without applying more force than I'm comfortable with). It seems to be stuck on the three large solder points in the white area. Has someone experience with this particular servo?

It might be glued/soldered to the case, but I'm not quite certain. Any help is appreciated.


问:
Fanuc Robot "Heat" control
My work has an older Fanuc robot ( Arc Mate 100-iBe RJ3iB, Fanuc AWE2 teach pendant with  Powerwave 355M) and the old operator/programmer has left. I have taken over his job and cant find out how to turn down the voltage and wire feed speed because it occasionally burns through parts. I tried manually putting in voltage and wire feed speed but it seems it will only accept the previous weld schedules 1-8 and if i mess with them that will affect other programs using those. I just need someone to please point me in the right direction.
P.S. Typed on phone , sorry if sloppy.</p>

Title: Fanuc Robot "Heat" control


问:
Recommendation for 3D mechanism modeling and simulation software
I'm working on a robotic hand and I would like to simulate different joints and tendon insertion points before starting to actually build it.

I've been googling and found things like Solidworks and Autodesk, that seem very costly for a hobbyst like me but also I don't quite fully understand their capabilities (just CAD? 3D modelling but not simulation? Simulation but not interactive?). I've also found things like FreeCAD which seem to me somehow abandoned or just for CAD and not for simulation.

Another requirement would be interactivity of the simulation, not just rendering.

I don't have a problem with commercial software, but I'm looking for a reasonable cost for a hobbyst, not an engineering company.

Is there a software out there that meets all this requirements? Or should I use several programs each for a specific purpose?

Thanks!


问:
Which brushless dc and propeller to choose?
I have a small bot(around 4-5kg with wheels) which is to be pushed without contact by another bot. I plan to do this using a bru and a propeller. I am having problems selecting the right combination. Please help me with these questions:-

Should the bldc be high kv or low kv(will i need high rpm or low rpm)

What is the  ideal propeller to use with the motor so that i can create enough thrust to get the 'small' bot in motion and keep it in motion?

What are the other criteria i should keep in mind while selecting.


问:
Is RoboCup still vivant and significant robotic issue?
A couple years ago RoboCup competitions seems to be quite vivant issue. Now when I'm looking for some info about it, it seems to be some kind of insignificant but this may be only my first impression (I was looking for 2D simulator league and it seems that it does not even exist anymore).

So is RoboCup still alive and significant robotic issue?


问:
increase current draw from serial port of icreate 2
This is from the icreate 2's document:
"Pins 1 and 2 (Vpwr) are connected to the Roomba battery through a 200 mA PTC resettable fuse. The continuous draw from these two pins together should not exceed 200 mA. Do not draw more than 500 mA peak from these pins, or the fuse will reset."
My project just need to draw a bit more than that number. So is there anyway to disable - short circuit - that fuse or replace that fuse with a bigger one? where does that fuse reside on the bot's circuit board?
If the above 2 is not possible (because the fuse is embedded inside some chip or too difficult to access for example), is it safe to run a small wire from the battery pole to the pin to by pass that fuse?

I know I can run a wire directly from battery pole to my circuit or draw power from the motor wires, but I love running through the serial port with keep things simple.


问:
PixHawk or Naza M V2 for Aerial Imaging of Small Study Area with Hexacopter
I have a project that is going to involve capturing ~80 images of a 35m x 50m agricultural study area for image processing.

I am wondering whether to use a NAZA v2 or PixHawk controller to outfit my ship (on a DJI F550 Flamewheel airframe).

My understanding is that Naza is limited as far as the amount of waypoints I can have during a particular mission. Can I break my imaging mission up into 8 or 10 sub-missions?

I also understand that PixHawk is in many ways superior but getting it up and running can be more finicky - I am on a limited time frame for this project.


问:
Panasonic MSMO22F2G (stepper motor hook-up)
I have a Panasonic MSMO22F2G Servo Motor that I'm using as a stepper motor. The motor has 4 wires coming out of a port farther to the front, and 11 wires coming out of a port towards the rear of the unit (presumed to be the encoder). I am trying to drive the motor with an arduino motor shield.

My question is this, how do i hook it up?

I have read that a stepper with 4 leads is a bipolar stepper, and that you group same coil wires together. I found that 3 wires on my stepper were on the same coil and the fourth seems to have no effect on the stepper. My checking process was using an ohm meter to see what was connected to what, as well as connecting wires and feeling the resistance.


问:
Gazebo or SimMechanics
I'm now considering to choose Gazebo or SimMechanics for simulating my quadruped robot.

I set some standards for the simulation:

Support Real-time application with ROS

Simulate contact impact well(with ground) (deformable if possible)

Good rendering Quality.

I have learned Gazebo for months, and see it has some limits to meet my requirements, especially the contact and friction problems.

I didn't use SimMechanics, but when i'm very impressed on it when i see this video.

Anyone who has experiences on Quadruped Simulation can share me some advice?

Thank you so much.

Title: Gazebo or SimMechanics


问:
Accurate technique to locate position?
What is the most accurate way to locate the position and orientaion of the body during some motion (rotation and translation)?

I need to track the body very precisely, the required accuracy is 100-200 microns, and with rather high frequency - at least 1kHz. The body has one rotation axis. This axis can translate along the path. Normally the track has ellipse like shape, but translation path can change, that's why I need to track the body. The limit of motion is 50 cm on any direction. Maximum velocity is 5 m/s.

Requirments about sensors: it's possible to place any sensor on the surface, but it's impossible to change the construction. So it's impossible to use encoders at the rotation axis to measure the angle.

I tried to do it with MEMS 9DOF sensors, but because of the noise it's very difficult to understand when there is a motion and when it's a noise.
Another idea is to use magnet and magnetomemter, but how is it possible to measure the resolution in this way?

Title: Accurate technique to locate position?


问:
Force measurement on grab bars
I recently start a project to measure the force on a bathroom grab bar. The force/load is applied by the person who need to the grab bar for assistant. What I want to measure is the load against the wall and do the the real-time monitoring of the load for further analysis to improve the design.

I am not quite sure about what kind of sensor would be suitable to do the measurement. I am looking at different load cells but cannot get the idea how to mount commercial load cells to do the measurement. What I am trying right now is using strain gauge to measure the strain near the end of the bar(wall side) and roughly calculate the load. I think (might be wrong) there may exists some kind of force/load sensors that can clamp on the bar to do the measurement.

Any sensor types/models or suggestion are welcome.

I also posted this question to EE forum
https://electronics.stackexchange.com/questions/57197/how-to-measure-force-that-applied-on-grab-bar

Title: Force measurement on grab bars


问:
CC3D OpenPilot - Communication port
I am building a quadrotor with a CC3D (OpenPilot) and a RPi.

My first idea is trying to communicate the CC3D with the RPi using the main port of the first one but I can't find any information about how to communicate the board with any device (or other information about the commands or serial configuration).

Anybody knows whether this is possible and where to find that info??

Title: CC3D OpenPilot - Communication port


问:
how to actuate pneumatic muscle by the signals received by emg sensors interfaced with raspberry pi?
My aim is to actuate a pneumatic muscle based on signals received by EMG sensors placed on the biceps. Is there any Matlab code which can process the received EMG signals and convert them into any form which can be useful for muscle actuation?

The linked video gives better insight to my question: exoskeleton arm pneumatic muscle


问:
Gazebo laser plug-in fails to publish scan results
I have added hokuyo laser plug-in to mu urdf file. I successfully launched the robot in gazebo and done required changes to visualize it in rviz. I didn't get any error but the laser scan results are not published.

Fine my results below

Terminal while launching gazebo model in world

Result for rostopic echo /scan

I have also verified the tf of the model in rqt and its fine

Aslo find my urdf file below, can someone help me to fix this?

Link & joint:

```<code><link name="hokuyo_link">
    <collision>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.1 0.1 0.1"/>
      </geometry>
    </collision>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.1 0.1 0.1"/>
      </geometry>
    </visual>
    <inertial>
      <mass value="1e-5" />
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6" />
    </inertial>
  </link>

  <joint name="hokuyo_joint" type="fixed">
    <axis xyz="0 1 0" />
    <origin xyz="0 -0.055 0.2" rpy="0 0 0"/>
    <parent link="Base_plate"/>
    <child link="hokuyo_link"/>
  </joint>
</code>```

Controller:

```<code><gazebo reference="hokuyo_link">
        <sensor type="gpu_ray" name="hokuyo">
          <pose>0 0 0 0 0 0</pose>
          <visualize>false</visualize>
          <update_rate>40</update_rate>
          <ray>
            <scan>
              <horizontal>
                <samples>100</samples>
                <resolution>1</resolution>
                <min_angle>-1.570796</min_angle>
                <max_angle>1.570796</max_angle>
              </horizontal>
            </scan>
            <range>
              <min>0.10</min>
              <max>30.0</max>
              <resolution>0.01</resolution>
            </range>
          </ray>
          <plugin name="gpu_laser" filename="libgazebo_ros_gpu_laser.so">
            <topicName>/scan</topicName>
            <frameName>hokuyo_link</frameName>
          </plugin>
        </sensor>
      </gazebo>
</code>```


问:
mbed dc motor speed control using optocoupler encoder
i have been playing with mbed since few week ago and would like to create a test program for dcmotor speed control. im using a 24V dc motor with encoder attach.. then test,
at first i test with supplying a 5v and 3.3V from mbed to the motor. the thing work fine giving a 16 and 10rpm respectively.
later i try using 12v it give 40rpm.
then i try a 24v input, now the speed wont come out. and also the counter that count each on/off tick not counting up.

any possible reason?
my though that maybe when it move so fast that the ISR routine couldn't catch up to the speed..


问:
How does one implement a third order complementary filter for estimating altitude using data from an accelerometer and a barometer?
I am working with the CJMCU build of cleanflight on a small drone. As of now, the algorithm for altitude hold uses a first order complementary filter to combine data from the barometer and the accelerometer (after integrating the accelerations twice). However, I have noticed a considerable lag in the altitude readings and this seems to be hampering the control algorithm's performance.

The filter in question has been implemented in https://github.com/diydrones/ardupilot/blob/db8a2f7e8bb2183e6d281e7a348d455d855cf5e1/libraries/AP_TECS/AP_TECS.cpp
However, I'm unable to understand how this works.

Pardon me for any errors I may have committed.


问:
Is the distortion introduced by a lens protector significant in practice?
I have a computer-vision application I made to localize a robot in a room; the software has been in use for a while and is working fine.

When I calibrated the camera and got the intrinsics and lens distortion coefficients there was a lens protector on the lens, mounted on the robot's lid.

If I take off the robot's lid (and thus the lens protector) the localization solution becomes erratic and inaccurate, so I think the lens protector might be changing the distortion properties significantly.

Today the lens protector became detached and it was replaced shortly after. So now the calibration may no longer be valid and the localization solution is much more noisy.

Can a lens protector can greatly effect the distortion properties of the image, or can someone offer another explanation?

I intend to recalibrate and super-glue the lens protector down to the robot's lid, but I am curious if this is my problem, and if anyone else has encountered this with lens protectors.


问:
Freewheel diode / capacitor with this board?
With DC motors, it is common to put a freewheel diode and/or a capacitor in order to protect the equipment as the motor can induce current into the system.

I plan to use this board to control a 24V DC motor with a Arduino-like microcontroler. In an example in their documentation, they don't put such protection, so I wanted to know if it's unsafe, or is it that the board already protects the system?

The example in question:


问:
Ultrasonic flow sensor
The goal is to have a non-invasive flow meter that I can clamp over hydraulic lines.

As a student of hydraulics, I ended up looking and poking around for a good way to make an ultrasonic flow sensor with Arduino and possibly the hc-sr04. Not married to either idea.

So, I admit, I know nothing, but is it possible to do this?

Is there an easier way?

OwnerDisplayName: Yippeethemagician

Title: Ultrasonic flow sensor


问:
What is the difference between planning for kinematic car, dynamic car, blimp, and quadrotor?
I am working with a sampling based planning library. When I looked into the implementation, I found for kinematic car a SE2 state space(x, y, yaw), for dynamic car a SE2 compound state space (space allowing composition of state spaces), for blimp and quadrotor a SE3 compound state space was used. I could understand the design of SE2 and SE3 state spaces but the compound state spaces of dynamic car, blimp and quadrotor I could not comprehend or differentiate.

What is the difference in terms of state space for motion planning for kinematic car, dynamic car, blimp, and quadrotor?

ContentLicense: CC BY-SA 4.0


问:
How to communication with old robotic arms from NakkaNippon Electric?
I have a few robotic manipulators from NakkaNippon Electric and I'm trying to communicate with them using RS232 without success. The robot model are microrobots 88-4 or 88-5.

I'm sending commands via COM port, but I can't received anything from the box. I'm using a USB-to-DB9 converter (FTDI) with a DB9-DB25 cable.

On the net, the only reference I have for the robot is from an old post from year 2000 that was from user @peterkneale.

If it can help, here is the link to the scanned PDF manual.

You can see the commands on page 23-24 of the pdf (page 21-22 in document).

Any advice would be grateful


问:
Use MATLAB Compiler SDK generated package in KUKA Sunrise.Workbench
The MATLAB Compiler SDK allows to create a wrapper for a MATLAB function which can be accessed by Java software. Based on my understanding, KUKA's Sunrise.Workbench IDE uses most of the standard Java functions.

I was trying to read the package generated using the MATLAB Compiler SDK (the new version of MATLAB Builder JA) into the workbench platform. I could successfully read the package into Eclipse IDE, but not into Workbench.

The reason for using the Compiler SDK is that, I have some functions is MATLAB, and I want to use the same in the workbench programming.

Does anyone have experience with the same? Appreciate any help.


问:
Topics of object perception for pr2
I started to use ROS hydro (Robot Operating System) on ubuntu, using the simulator "Gazebo" and roscpp library, in order to program some robots.

In case of pick up and place known objects by robots, what are the topics of object perception for pr2 in ROS??

Title: Topics of object perception for pr2


问:
Waiting for the r_gripper_sensor_controller/gripper_action action server to come up
I started to use ROS hydro (Robot Operating System) and roscpp.
I tested some examples to move the gripper of pr2 in Gazebo (especially the code in :  http://wiki.ros.org/pr2_gripper_sensor_action/Tutorials/Grab%20and%20Release%20an%20Object%20Using%20pr2_gripper_sensor_action ) with catkin package.

I launch : roslaunch pr2_gazebo pr2_empty_world.launch

and when I run the node of code with : rosrun pack_name node_name, I get :: Waiting for the r_gripper_sensor_controller/gripper_action action server to come up ... Waiting for the r_gripper_sensor_controller/gripper_action action server to come up ...

I want to know the cause of those lines in order to see the results. what should I do??

it is notable that when I launch : roslaunch pr2_gripper_sensor_action pr2_gripper_sensor_actions.launch

      in the previous link, I get :

[pr2_gripper_sensor_actions.launch] is neither a launch file in package [pr2_gripper_sensor_action] nor is [pr2_gripper_sensor_action] a launch file name


问:
Action cost to get smooth path
What action cost should be used to get a smooth path? Like we use distance traversed to get the shortest path. Will the cost to get a smooth path will be something related to rate of change of slope of the path?</p>

Title: Action cost to get smooth path


问:
PID tuning for Quadcopter
I have been stabilizing my quadcopter. I tuned my angle PIDies and my quadcopter tries to stabilize itself, but there is some overshooting. Which is, I think, due to gyro rates. I have read that we have to use two PIDies on an axis. I'm having problems to attach these two PIDies.

Can anyone help me in cascading angle PID and rate PID? Will I have to tune rate PID after tuning angle PID?

Title: PID tuning for Quadcopter


问:
Firmata over nRF24
I'm having some technical problems... I'm trying to use Firmata for arduino but over nrf24, not over Serial interface. I have tested nRF24 communication and it's fine. I have also tested Firmata over Serial and it works.

Base device is simple "serial relay". When it has data available on Serial, read it and send it over nRF24 network. If there is data available from network, read it and send it through Serial.

Node device is a bit complex. It has custom Standard Firmata where I have just added write and read override.

Read override id handeled in loop method in this way:

```<code>while(Firmata.available())
    Firmata.processInput();

// Handle network data and send it to Firmata process method
while(network.available()) {
    RF24NetworkHeader header;
    uint8_t data;
    network.read(header, &data, sizeof(uint8_t));
    Serial.print(data, DEC); Serial.print(" ");
    Firmata.processInputOverride(data);
    BlinkOnBoard(50);
}

currentMillis = millis();
</code>```

Firmata processInputOverrride is little changed method of processInput where processInput reads data directly from FirmataSerial, and in this method we pass data down to method from network. This was tested and it should work fine.

Write method is overloaded in a different way. In Firmata.cpp I have added an method pointer that can be set to a custom method and used to send data using that custom method. I have then added custom method call after each of the FirmataSerial.write() call:

```<code>Firmata.h
...
size_t (*firmataSerialWriteOverride)(uint8_t);
...

void FirmataClass::printVersion(void) {
  FirmataSerial.write(REPORT_VERSION);
  FirmataSerial.write(FIRMATA_MAJOR_VERSION);
  FirmataSerial.write(FIRMATA_MINOR_VERSION);
  Firmata.firmataSerialWriteOverride(REPORT_VERSION);
  Firmata.firmataSerialWriteOverride(FIRMATA_MAJOR_VERSION);
  Firmata.firmataSerialWriteOverride(FIRMATA_MINOR_VERSION);
}
</code>```

I have then set the overrided write method to a custom method that just writes byte to network instead of Serial.

```<code>size_t ssignal(uint8_t data) {
    RF24NetworkHeader header(BaseDevice);
    network.write(header, &data, sizeof(uint8_t));
}

void setup() {
...
Firmata.firmataSerialWriteOverride = ssignal;
...
}
</code>```

All stages pass right (I guess) and then I don't get any response from Node when I request pin states

```<code>...
< f0 6a 7f 7f 7f ... 7f 0 1 2 3 4 5 6 7 8 9 a b c d e f f7 // analog mapping
> f0 6d 0 f7 // sysex request pin 0 state and value
> f0 6d 1 f7
> f0 6d 2 f7
...
> f0 6d 45 f7
// And I wait for response...
</code>```

There is no response. Any ideas why would that happen? Node receive all messages correctly and code for handling pin states exist.

Title: Firmata over nRF24


问:
What frames are supported by the Dynamixel XL-320 OLLO?
I was recently looking into purchasing either a Dynamixel AX-12A or XL-320. The XL seems to use OLLO frames, which only seem to be available in a toy-like set.

I was wondering if there are any other frames available or if I should just get an AX-12?


问:
How to determine the angles between a UAV and a sphere
I have an UAV modeled in three dimensions with let's say position coordinates $p_{uav} = (x_1,y_1,z_1)$ that is moving in a direction $d = (d_x,d_y,d_z)$ and a moving obstacle modeled as a sphere with known centre coordinates $p_{sph}=(x_2,y_2,z_2)$ and radius $ r_{sph}$.

If I have a plane $p$  in the direction of movement of the UAV that intersects the sphere, I want to be able to calculate the angles with respect to the vehicle's movement formed by the tangents to the sphere in the plane $ p$. In the figure, I would like to know how to calculate the angles $α_1$ and $α_2$.

If it helps, what I am looking is an extension in three dimensions for this:

Which is a vehicle in two dimensions ;it is obviously an easier problem which requires only the centre of the circle. However I am not really sure how to make it work in 3D, as supposedly the plane can intersect the sphere at any two points, not necessarily the centre.

Thanks in advance for your help.


问:
Quality check robot
How to develop a robot based system to continuously monitor and check products for defeat which are moving on a conveyer belt using sensors and kick out the defect product from the queue?</p>

Title: Quality check robot


问:
Issues with Running Multiple Instructions in Sequence
I tried to use Microsoft Robotics Dev Studio (sample 4) to write a code that was able for robot to go with a square path by just one clicked. However, there is one problem.
When I try to put DriveDistanceRequest and RotateDegreesRequest in a loop. It would only execute the last request. The problem is that Arbiter.Choice within the DriveDistance is activated immediately as soon as the drive operation starts. Did anyone have this kind of problem before? If so, how do I solve it? If no, how am I able to fix this problem? Thanks your so much.</p>
```<code>//-----------------------------------------------------------------------
//  This file is part of Microsoft Robotics Developer Studio Code Samples.
//
//  Copyright (C) Microsoft Corporation.  All rights reserved.
//
//  <span class="math-container">$File: RoboticsTutorial4.cs $</span> <span class="math-container">$Revision: 22 $</span>
//-----------------------------------------------------------------------

using Microsoft.Ccr.Core;
using Microsoft.Ccr.Adapters.WinForms;
using Microsoft.Dss.Core;
using Microsoft.Dss.Core.Attributes;
using Microsoft.Dss.ServiceModel.Dssp;
using Microsoft.Dss.ServiceModel.DsspServiceBase;
using System;
using System.Collections.Generic;
using System.Security.Permissions;
using xml = System.Xml;
using drive = Microsoft.Robotics.Services.Drive.Proxy;
using W3C.Soap;
using Microsoft.Robotics.Services.RoboticsTutorial4.Properties;
using Microsoft.Robotics.Services.Drive.Proxy;
using System.ComponentModel;

namespace Microsoft.Robotics.Services.RoboticsTutorial4
{

    [DisplayName("(User) Robotics Tutorial 4 (C#): Drive-By-Wire")]
    [Description("This tutorial demonstrates how to create a service that partners with abstract, base definitions of hardware services.")]
    [DssServiceDescription("http://msdn.microsoft.com/library/bb483053.aspx")]
    [Contract(Contract.Identifier)]
    public class RoboticsTutorial4 : DsspServiceBase
    {
        [ServiceState]
        private RoboticsTutorial4State _state = new RoboticsTutorial4State();

        [ServicePort("/RoboticsTutorial4", AllowMultipleInstances=false)]
        private RoboticsTutorial4Operations _mainPort = new RoboticsTutorial4Operations();

        [Partner("Drive", Contract = drive.Contract.Identifier, CreationPolicy = PartnerCreationPolicy.UseExisting)]
        private drive.DriveOperations _drivePort = new drive.DriveOperations();
        private drive.DriveOperations _driveNotify = new drive.DriveOperations();

        public RoboticsTutorial4(DsspServiceCreationPort creationPort) :
                base(creationPort)
        {
        }

        #region CODECLIP 02-1
        protected override void Start()
        {
            base.Start();

            WinFormsServicePort.Post(new RunForm(StartForm));

            #region CODECLIP 01-5
            _drivePort.Subscribe(_driveNotify);
            Activate(Arbiter.Receive<drive.Update>(true, _driveNotify, NotifyDriveUpdate));
            #endregion
        }
        #endregion

        #region CODECLIP 02-2
        private System.Windows.Forms.Form StartForm()
        {
            RoboticsTutorial4Form form = new RoboticsTutorial4Form(_mainPort);

            Invoke(delegate()
                {
                    PartnerType partner = FindPartner("Drive");
                    Uri uri = new Uri(partner.Service);
                    form.Text = string.Format(
                        Resources.Culture,
                        Resources.Title,
                        uri.AbsolutePath
                    );
                }
            );

            return form;
        }
        #endregion

        #region CODECLIP 02-3
        private void Invoke(System.Windows.Forms.MethodInvoker mi)
        {
            WinFormsServicePort.Post(new FormInvoke(mi));
        }
        #endregion

        /// <summary>
        /// Replace Handler
        /// </summary>
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        public virtual IEnumerator<ITask> ReplaceHandler(Replace replace)
        {
            _state = replace.Body;
            replace.ResponsePort.Post(DefaultReplaceResponseType.Instance);
            yield break;
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        //stop
        public virtual IEnumerator<ITask> StopHandler(Stop stop)
        {
            drive.SetDrivePowerRequest request = new drive.SetDrivePowerRequest();
            request.LeftWheelPower = 0;
            request.RightWheelPower = 0;

            yield return Arbiter.Choice(
                _drivePort.SetDrivePower(request),
                delegate(DefaultUpdateResponseType response) { },
                delegate(Fault fault)
                {
                    LogError(null, "Unable to stop", fault);
                }
            );
        }

        //forward
        #region CODECLIP 01-3
        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        //forward
        public virtual IEnumerator<ITask> ForwardHandler(Forward forward)
        {
            if (!_state.MotorEnabled)
            {
                yield return EnableMotor();
            }
            // movement speed
            // This sample sets the power to 75%.
            // Depending on your robotic hardware,
            // you may wish to change these values.
            drive.SetDrivePowerRequest request = new drive.SetDrivePowerRequest();
            request.LeftWheelPower = 0.5;
            request.RightWheelPower = 0.5;

            yield return Arbiter.Choice(
                _drivePort.SetDrivePower(request),
                delegate(DefaultUpdateResponseType response) { },
                delegate(Fault fault)
                {
                    LogError(null, "Unable to drive forwards", fault);
                }
            );
        }
        #endregion

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        // backup speed
        public virtual IEnumerator<ITask> BackwardHandler(Backward backward)
        {
            if (!_state.MotorEnabled)
            {
                yield return EnableMotor();
            }

            drive.SetDrivePowerRequest request = new drive.SetDrivePowerRequest();
            request.LeftWheelPower = -0.6;
            request.RightWheelPower = -0.6;

            yield return Arbiter.Choice(
                _drivePort.SetDrivePower(request),
                delegate(DefaultUpdateResponseType response) { },
                delegate(Fault fault)
                {
                    LogError(null, "Unable to drive backwards", fault);
                }
            );
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        // left turn speed
        public virtual IEnumerator<ITask> TurnLeftHandler(TurnLeft turnLeft)
        {
            if (!_state.MotorEnabled)
            {
                yield return EnableMotor();
            }

            drive.SetDrivePowerRequest request = new drive.SetDrivePowerRequest();
            request.LeftWheelPower = -0.5;
            request.RightWheelPower = 0.5;

            yield return Arbiter.Choice(
                _drivePort.SetDrivePower(request),
                delegate(DefaultUpdateResponseType response) { },
                delegate(Fault fault)
                {
                    LogError(null, "Unable to turn left", fault);
                }
            );
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        // right turn speed
        public virtual IEnumerator<ITask> TurnRightHandler(TurnRight forward)
        {
            if (!_state.MotorEnabled)
            {
                yield return EnableMotor();
            }

            drive.SetDrivePowerRequest request = new drive.SetDrivePowerRequest();
            request.LeftWheelPower = 0.5;
            request.RightWheelPower = -0.5;

            yield return Arbiter.Choice(
                _drivePort.SetDrivePower(request),
                delegate(DefaultUpdateResponseType response) { },
                delegate(Fault fault)
                {
                    LogError(null, "Unable to turn right", fault);
                }
            );
        }

        #region CODECLIP 01-4
        private Choice EnableMotor()
        {
            drive.EnableDriveRequest request = new drive.EnableDriveRequest();
            request.Enable = true;

            return Arbiter.Choice(
                _drivePort.EnableDrive(request),
                delegate(DefaultUpdateResponseType response) { },
                delegate(Fault fault)
                {
                    LogError(null, "Unable to enable motor", fault);
                }
            );
        }
        #endregion

        #region CODECLIP 01-6
        private void NotifyDriveUpdate(drive.Update update)
        {
            RoboticsTutorial4State state = new RoboticsTutorial4State();
            state.MotorEnabled = update.Body.IsEnabled;

            _mainPort.Post(new Replace(state));
        }
        #endregion

        // Here is where I had change the code.
        #region Test Code (Creating Path)
        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        public virtual IEnumerator<ITask> PathHandler(StartPath path)
        {
            if (!_state.MotorEnabled)
            {
                yield return EnableMotor();
            }

            for(int i=1; i<3; i++)
            {
                    if(i == 1)
                    {
                        drive.DriveDistanceRequest distance = new drive.DriveDistanceRequest();
                        distance.Power = 1;
                        distance.Distance = 1;

                        yield return Arbiter.Choice(
                            _drivePort.DriveDistance(distance),
                            delegate(DefaultUpdateResponseType response) { },
                            delegate(Fault fault)
                            {
                                LogError(null, "Unable to turn left", fault);
                            }
                        );

                    }
                    else if(i == 2)
                    {
                        drive.RotateDegreesRequest rotate = new drive.RotateDegreesRequest();
                        rotate.Power = 1;
                        rotate.Degrees = 90;

                        yield return Arbiter.Choice(
                            _drivePort.RotateDegrees(rotate),
                            delegate(DefaultUpdateResponseType response) { },
                            delegate(Fault fault)
                            {
                                LogError(null, "Unable to turn left", fault);
                            }
                        );
                    }

            }

        }
        #endregion
    }
}
</code>```


问:
Starting out, dissertation project using computer controlled drone
For my final year in Computer Science university I will be doing a dissertation that includes controlling a drone through computer and communication with an onboard camera for computer vision.

The first step is obtaining a drone that suits my needs, and I have no clue how to go about it. Basically what is needed is a drone that will be able to communicate with a computer both for its movement and to "stream" the video to the computer for analysis.

So, would I go for a store bought drone, a rasperry pi or some other microcontroller based one etc. What do I need to take into consideration etc?

P.S. the project is going to be based indoors, so I don't need crazy range, or very powerf


问:
Need help in implementing EKF based SLAM
I just started learning about slam and I have been trying to simulate a robot moving around a set of landmarks for the past 3 days. The landmarks have known correspondences.

My problem is, if I add motion noise to the covariance matrix in the prediction step, the robot starts to behave very weirdly. If I don't add motion noise in the prediction step, the robot will move around perfectly. I have been trying to figure out why this is happening for 3 days now but cannot find anything wrong with my code.

I have attached a link to github which has all the files pertaining to my project. In the folder named 'octave' the file 'prediction_step' and 'correction_step' contains code for the prediction and correction steps respectively. The ekf_slam file is the main loop which calls the above two functions.

My github repository also contains 3 videos which correspond to robot with no motion noise, robot with motion noise and another video which shows how the robot should ideally go about.

Please help me in figuring out what is wrong with my code in 'prediction_step' and 'correction_step'.

Link to my github repository: please click here