问:
SLAM - odometry motion model
I am making a project with a 4 wheeled differential robot to make visual SLAM using a stereo rig. I have some encoders to measure de displacement and the steering angle of the robot and I want to use the odometry motion model in the fastSLAM algorithm.

To use the odometry motion model you need to calculate the values it needs from the odometry reading (incremental encoders), $u_t=(\bar{x}_{t-1},\bar{x_t})$ where $\bar{x}_{t-1}=(\bar{x}\>\bar{y}\>\bar{\theta})$ and $\bar{x}_t=(\bar{x}'\>\bar{y}'\>\bar{\theta}')$ are the previous and the current pose extracted from the odometry of the vehicle.

My question is about how to obtain those values from the encoders. I guess that in this case I would need to obtain the equations from the geometric model for the differential robot:

$D_L=\frac{2\cdot\pi \cdot R_L}{N_c}\cdot N_L$

$D_R=\frac{2\cdot\pi \cdot R_R}{N_c}\cdot N_R$

$D_T=\frac{D_L+D_R}{2}$

$\Delta\theta=\frac{D_L-D_R}{L}$

where $D_L$ is the advance of the left wheel, $D_R$ is the advance of the right wheel, $R_L$ is the lecture from the left encoder, $R_R$ the lecture from the right encoder, $N_C$ the total number of pulses of the encoder type, $D$ is the total distance achieved by the robot and $\theta$ the angle steered. $L$ is the distance between the wheels.

Using those equations is possible to obtain the pose in every time step:

$\bar{x}_{t}=\bar{x}_{t-1}+D\cos(\theta_{t-1})$

$\bar{y}_{t}=\bar{y}_{t-1}+D\sin(\theta_{t-1})$

$\bar{\theta}_{t}=\bar{\theta}_{t-1}+\Delta\theta$

So those last are the values I need to inject to the modometry motion model and then add gaussian noise to them.
Am I right? Or is there another way of computing the pose from odometry for a differential 4-wheel robot?

ContentLicense: CC BY-SA 3.0

Title: SLAM - odometry motion model


问:
Triangulation from calibrated stereo rig
I am using a stereo rig to do SLAM, calibrated using the MATLAB Calibration Tool. I need to compute the 2D coordinates of a landmark using the observation model obtained from triangulation (the images are rectified).

The equations obtained from triangulation are the ones presented in the blue box here. Because I am doing SLAM in 2D the coordinates I need to use are $Z_p$ and $X_p$. The parameters needed to compute those values are $f$, $T$ and $disparity (x_L - x_R)$.

After doing the calibration intrinsics matrices $K_L$ and $K_R$ are obtained and a common intrinsic matrix for the stereo rig is calculated from $K = 1/2*(K_L +K_R)$ so I get the parameters needed in triangulation from  this common matrix.

The focal length is supplied from the manufacturer, and for my Logitech C170 is 2.3mm. The baseline $T$ from the calibration is 78.7803 mm. To compute the disparity I am obtaining SURF points and using RANSAC to discard the outliers so I get x coordinates from both rectified images.

The problem is that with those values I can't obtain correct values for $Z_p$ and $X_p$ and I am not sure why or where I am doing the wrong step. Anyone can help with this? Are those the correct steps to do triangulation from rectified stereo images?

EDIT: My stereo rig looks like the figure I attach:

If you compare the coordinates system with the one used in the link before is easy to see that my $X_r$ corresponds to the $Z_p$ from the link and the $Y_r$ corresponds to $X_p$, so the equations to calculate the distance using triangulation and with the coordinate system of the figure are:

$x_r=\frac{fb}{x_L-x_R}$

$y_r = \frac{(x_L-p_x)b}{x_L-x_R}-\frac{b}{2}$

Being $f$ the focal length, $b$ the baseline, $p_x$ the x coordinate of the central point and $x_L-x_R$ the disparity. The $X_r$ $Y_r$ coordinate system is situated between the two cameras, so this is the meaning of the $\frac{b}{2}$ displacement in the equations.

Calibration

To obtain the cameras calibration I am using the Stereo Camera Calibrator Toolbox with the chessboard pattern.

After calibration, I made some tests using MATLAB functions triangulate and reconstructScene to know whether the parameteres are well calculated. The distances I obtained using this functions (which use the stereoParams object created by the calibrator) works well and I obtain distances very similar to the actual ones. So I suposse the calibration works well.

The problem, as I explained before, is when I try to calculate the distances using the equations $x_r$ and $y_r$ because I am not sure how to obtain the common matrix $K$ for the stereo rig (the calibrator gives one intrinsic matrix for each camera, so you have two matrices).

The value of the baseline given from calibration make sense, I made a measurement with a ruler and gives me 78 mm approximately.

The $f$ value I assume should be in pixels but here again the calibration gives an $f_x$ and $f_y$ value so I am not sure which one should I use.

Those are the intrinsic matrices I obtain:

Left:
$\begin{pmatrix} 672.6879&-0.7752&282.2488\\0&674.3705&240.1287\\0&0&1 \end{pmatrix}$

Right: $\begin{pmatrix} 681.7049&0.0451&331.2612\\0&681.8235&246.1209\\0&0&1\end{pmatrix}$

Being the parameters of $K$: $\begin{pmatrix}f_x&s&p_x\\0&f_y&p_y\\0&0&1\end{pmatrix}$


问:
Q Learning And Kohonen Maps For Line Follower Robot
I'm trying to build a line follower robot and I'm interested in predicting the curves on the track.
I have 8 binary sensor array(qre1113).
My goal is to make a system that it can generalize what it learned about the curves and give me predictions about where should be at the line to pass it as fast as possible.

How can I integrate a system like Q learning and how can I train it?
And also how can I combine this system with a Type C PID controlller ?

There is a paper about it ot you are willing to explain

This is a important project for me and i am kinda running on clock so quick help would be appreciated


问:
Stereo vision for outdoor obstacle detection
I'm trying to detect obstacles for a distance of up to 10 meters in an outdoor environment. Up to meaning that I also want to be able to detect obstacles that are close to the robot. I am thinking of doing this using stereo vision, but I am unsure if this is in fact even possible (before I buy expensive hardware). So is it possible? Has anyone had any success?

If this isn't possible, then what kind of sensors could give me a decent point cloud for such a range (outdoors)? I need a sensor that will fit a medium size robot. Also it needs to be not overly expensive since I have a limited budget.

Thanks


问:
How to properly calibrate a magnetometer in IMU for precise yaw?
EDIT: Moved to ElectricalEngineering StackExchange Community

I'm using Sparkfun Razor IMU 9DOF sensor which incorporates accelerometer, gyroscope, and magnetometer, for giving the Euler's angles (yaw, pitch, and roll). I'm using the firmware at this link. It has Processing sketch for calibration of magnetometer, but it doesn't give the precise measurements. Especially, the yaw is imprecise. I'm using this sensor for measuring azimuth and altitude of stellar objects. The altitude is mostly correct, but azimuth (yaw) isn't.

I have several questions:

Is there a better way to calibrate magnetometer? Is the calibration sufficient, without using the Madgwick or Kalman filter?

Is there some nonlinearity present in the sensor? Since the yaw offset isn't constant, it changes (around -12 degrees up north to almost correct value at southwest). And if it is, how could I measure that nonlinearity and apply to the yaw measurements?

If I have to use Madgwick or Kalman, do I have to apply them on quaternions? I believe that applying them at the final yaw measurements wouldn't do the job.


问:
Accelerometer, gyro, and magnetometer sensor fusion for material resource survey
As a hardware engineer, I have studied quite a lot on sensor spec such as Accel, Gyro and Magnetometer including custom made fluxgate. I have studied matrix and quadarion (complex number) and so on.
I moving into calibration arena, I seen lot of article on calibration but not sure which is best solution to fix offset and mis-alignment axis. Can anyone point to best open source code.
I'm not interested in output results related to flight such as quadchopter and GPS, but more interested in directional math for drilling pipes, where toolface, inclination, azimuth and position is most important. What the best thesis or paper that cover this topic and open-source or example code (in C) for this application. Do I need Kalnman filter or such advance post data capture processing. Any tip how to avoid getting too involved with maths</p>


问:
Technique to increase POV resolution
I have thought of a technique to increase the resolution of a POV (persistence of vision) display. In an usual POV display, the LEDs are arranged in a strip and spun in a circle. There are two limiting factors to increasing the radial resolution along the circumference of any one circular path that an LED follows. One is, depending on the speed of the POV wheel, the minimum time required (decided by the microcontroller) to change the LED's color in case of a RGB. The other factor is the LED's width, that increases the 'bleeding' of color from one pixel to the neighboring pixel if the LED changes color or brightness too fast.

If one were to fix a slit in the front of an LED, |*|  <-- like so, would this help improve the resolution of the POV display; by doing this one would in effect be reducing the width of the 'pixel' along the circumference on which the led would be traversing.

Thus if one were to use a fast enough microcontroller and a narrow enough slit, one could probably obtain a very high resolution along one dimension at least.

To be clear I've not yet implemented this, and am just looking for any experienced person who can tell if this will work or not.

Title: Technique to increase POV resolution


问:
Automated high-precision weighing of individual parts
I'm trying to automate a process wherein individual small parts must be weighed one after another for identification / sorting.

The parts would be fed to the scale using a conveyor. A mechanism is in place to feed the parts one at a time (i.e. sufficient spacing between the parts).

I know that it is possible to have weighing idlers on industrial conveyors but their precision and repeatability seem to be inadequate for precision weighing. The parts range in weight from 100mg to 30g so the only type of scale that I've found that has sufficient precision (10mg or better) are precision/laboratory scales. For example: Torbal Precision Scales.

I can imagine a solution wherein a lightweight flat surface (e.g. plexiglass) could be laid atop the scale plater upon which the feed conveyor would deposit the parts to be weighed. Then, after a stable weight has been read by computer via the integrated RS-232 port, a motor controlled "sweeping mechanism" could brush off the part from the plexiglass plater onto a discharge conveyor system for routing into one of many possible part bins.

Given this, I have two questions:

Is there a technology that I'm unaware of that could achieve individual small part weighing that would be simpler than stated solution?

Would the plexiglass platter (used to create a larger flat surface) cause too much pre-loading to the load cells, thereby affecting the scales performance / durability in any way?


问:
ROS/Gazebo: URDF Error: No valid hardware interface element found in joint
I am fairly new to ROS and Gazebo. I have posted this question on the ROS/Gazebo forums, but they appear to be dead.

I am using ros-kinetic and gazebo7.3 on Ubuntu 16.04. I have been following this tutorial (Tutorial) and have adapted it slightly for my own vehicle (4 wheels instead of 2, skid drive plugin instead of diff drive).

I receive errors when running roslaunch on my own project, and I also get the same errors when using the same command on the completed project provided by the creators of the tutorial, Complete Project Github. I assume that means that I am missing something in ros or Gazebo.

Running:

roslaunch jaguar4x4_gazebo jaguar4x4_world.launch

gives the following errors (repeated for each of the four joint and trans):

```<code>[ERROR] [1472045218.311147687, 0.142000000]: No valid hardware interface element found in joint 'left_back_wheel_hinge'.

[ERROR] [1472045218.311359894, 0.142000000]: Failed to load joints for transmission 'left_back_trans'.
</code>```

Also:

[ERROR] [1472045218.646822285, 0.365000000]: Exception thrown while initializing controller leftfrontWheel_effort_controller. Could not find resource 'left_front_wheel_hinge' in 'hardware_interface::EffortJointInterface'. [ERROR] [WallTime: 1472045219.647578] [1.363000] Failed to load leftfrontWheel_effort_controller [INFO] [WallTime: 1472045219.647938] [1.363000] Loading controller: leftbackwheel_effort_controller [ERROR] [WallTime: 1472045220.651591] [2.366000] Failed to load leftbackwheel_effort_controller

This error is repeated for each of the 4 wheels.

I have seen similar error messages posted online, however, the solutions don’t seem to fix mine (I can't post any more links due to my reputation level).

(1). I already use the hardwareInterface tags

(2). I have already installed ros_control

If anyone has any ideas on how to fix these errors I would appreciate it.

EDIT -------------------------------------------------------------------

I think maybe there is an issue with the way that I have created my joints and the use of the hardwareInterface tags.

In my macros.xacro file I create my joints and link the transmission separately (I repeat this twice for the front and back wheels):

```<code>   <joint name="${lr}_front_wheel_hinge" type="continuous">
      <parent link="chassis"/>
      <child link="${lr}_front_wheel"/>
      <origin xyz="${+wheelPos-chassisLength+2*wheelRadius} ${tY*wheelWidth/2+tY*chassisWidth/2} ${wheelRadius}" rpy="0 0 0" />
      <axis xyz="0 1 0" rpy="0 0 0" />
      <limit effort="100" velocity="100"/>
      <joint_properties damping="0.0" friction="0.0"/>
    </joint>
</code>```

```<code>  <transmission name="${lr}_front_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="${lr}_front_wheel_hinge" />
    <actuator name="${lr}_front_Motor">
      <hardwareInterface>EffortJointInterface</hardwareInterface>
      <mechanicalReduction>10</mechanicalReduction>
    </actuator>
  </transmission>
</code>```

Doing it this way gives the errors mentioned above, but my model in Gazebo appears.

If I try to merge both of these blocks so that there is just one joint tag wrapped by the transmission tags then I get the following error and my model does not appear in Gazebo:

[ERROR] [1473672367.041892175]: Failed to find root link: Two root links found: [footprint] and [left_back_wheel]

I don't understand why I get this error because I have a joint between my chassis base link and the world in my Jaguar4x4.xacro file :

```<code> <link name="footprint" />

 <joint name="base_joint" type="fixed">
   <parent link="footprint"/>
   <child link="chassis"/>
 </joint>
</code>```

I now get a number of errors when trying to combine the joint and transmission blocks, so I imagine that this is not the best way to go?


问:
How to precisely land a copter in a defined place?
Say, I have a flat square landing place for a copter, made of e.g. aluminium or plastic, with marks on it making a square, looking like this from the top:

```<code>-------------------------------------
|                                   |
|   *                           *   |
|                                   |
|                                   |
|                                   |
|                  |                |
|                --+--              |
|                  |                |
|                                   |
|                                   |
|                                   |
|   *                           *   |
|                                   |
-------------------------------------
</code>```

The copter is smaller than the landing field, to land properly. Say, it has some sensors or can be manipulated by the computer that powers logic of the landing square. The square itself can have sensors too.

I want the copter to land as precisely as possible into the place marked by land signs.

What ways are possible to implement this functionality knowing that it's a DIY prototype where I have no access to secret technology, but only to that is available in online electronic components stores?

I think of these:

Having a camera either on the drone or on the landing plate that
finds the marks and calculates if these marks are in the right place
or if the drone must move along X or Y axis. Looks as an overkill and
will be hard to configure it for difficult conditions like raining,
night, snow.

Using laser transmitters and receivers.

Some solution I am not aware of but which is still simple and efficient enough.

In what direction should I look to find a solution for this problem?


问:
Mechanism to oscillate a human leg?
I'm working on creating a robotic device capable of oscillating an adult human leg using the knee as pivot, being able to constrain the amplitude of oscillation by controlling the mechanism with a microcontroller and some other electronic components.

The only idea I have to do this is by placing a pair of servomotors and some gears that will rotate the structure that holds the leg and then control the PWM, however I don't think I will be able to find servos strong enough to lift both the structure and the leg, so it would be very useful to hear some suggested mechanism and motors to accomplish this device.

Title: Mechanism to oscillate a human leg?


问:
Irobot Create 2 drawing power from Pi
I am controlling an IRobot Create 2 with a raspberry pi, which I am powering with one of these:

https://www.adafruit.com/product/1566

(I know, I know, I should have just gotten power from the battery thats already in the roomba)

Anyways.  I am trying to read electric current values flowing through the roomba as it cleans.  I should be getting negative values (which I did previous to using the battery).  My code was working, although I know that doesn't mean much.

After much thought, I was wondering if maybe the roomba is drawing power through the serial port from the raspberry pi, giving it a slight charge even though it is not on the charger.

Is this possible, and is there a way to confirm or deny my suspicions?

Any help is appreciated.

Title: Irobot Create 2 drawing power from Pi


问:
Introducing new particles in particle filters for localization
Standard particle filters can produce bad localization result if the initial particle generation step produces no particle that is close to location (and bearing) of tracked object. The accuracy depends on large number of particles to create at least one particle that's very close to state of tracking object.

Could we introduce in resampling stage a small number of completely random new particles? For example, 99% of particles are randomly selected with weighted probability, while 1% are new particles with random state.

My reasoning is that new particles that are bad guesses would quickly disappear, while good guesses would improve accuracy beyond what was possible with fixed particle pool. Does this improvement to particle filters make sense?


问:
Bilateral Stabilization
I'm starting out in more complex robotics, which in this case includes the bilateral stabilization of a humanoid robot.

I know that when a human walks, his/her pelvis moves in correspondence, which allows for a basic stabilization when being on one leg in between steps.

I'm wondering about how to replicate this type of effect in a humanoid robot.

Thank you for your time!

Title: Bilateral Stabilization


问:
Using an AR.Drone's IMU to perform PDR
My task is simple: I want to move my drone manually around a room (IMPORTANT: I DO NOT WANT TO FLY IT) and I want to see its position update on a map using IMU data.

I've attempted something in ROS and Rviz, but the position on the map does not update when I pickup my drone from spot A and place it 5 meters away at spot B. It does however update when I fly the drone from A to B.

My question is this : is there someway I can do dead reckoning using the drone while not flying it? Or is flying the drone necessary to perform dead reckoning using the drone's IMU?

EDIT: Here's what my Rviz shows when I pickup the drone from A and put it at B. As you can see, orientation is updated, but the position remains the same. However, when I fly the drone, I can see the red arrow move around the map.

Any help would be greatly appreciated!

EDIT : The duplicate question just asks for general solutions. Here I've found a solution, I just can't get it to work; I need help debugging.

Title: Using an AR.Drone's IMU to perform PDR


问:
Calculate input parameters of CTRV model
I am using Constant Turn Rate and Veloctity (CTRV)  model to predict the position of the vehicle.The CTRV model assumes a circular path between two consecutive time steps of the car as depicted in the figure, where the vehicle moves from point A to point B. Also, the yaw rate and velocity are assumed constant between two timesteps.

The displacement between the two points is denoted by S and R is the radius of the curvature. The five input parameters of the CTRV model are [ x, y, yaw angle, velocity and yaw rate]. The previous x, y position of the car is known to me. The laser data of the surrounding environment is available for each timestep. With this laser data, I have already calculated the Rotation matrix and translation vector between two time steps using ICP.

Now my question is how to calculate the input parameters of the CTRV model with the available data?

The followings things are clear to me: -

With the help of rotation angle I can calculate: -
 Theta = Displacement (S) / Radius (R)

The velocity can be calculated using the timesteps :-
 Velocity = Displacement (S) / t

The yaw rate can be calculated using :-
 Velocity = Yaw rate * Radius (R)

Considering the first equation I am not sure how to calculate the displacement S if Radius is not known to me.

Pardon me if my queries are a bit naive. I am still in the process of learning. Any help from your side will be much appreciated :)


问:
Quadcopter takeoff when low throttle /w PID
I'm making my own quad controller from scratch. I have fixed one axis on a "pendulum" so that only one axis can move freely ( + mode).
Let's say that I have 0 throttle. As you know PID output is added or taken away from throttle value on each motor.

My values of PID output are one instance let's say 5. (Quadcopter is laying at 5 degrees angle). Even in that case, one motor will spin at 5 speed, while other will be at -5 (won't move).

I'm asking beacuse when I add throttle to my quad and if I angle it at 10 degrees, it bounces on the other side and then again back, untill I add at least half throttle, which is kida agressive and I can't imagine this scenario with 4 motors.
So is there any way I can compensate this values?

Thanks for the help!


问:
On robocup 2d simulation league
For some experiments, I need to have source code of a robocup 2d simulation team. Where can I find that? Is there any online test bed for this league for testing algorithms?</p>

Title: On robocup 2d simulation league


问:
Question regarding the orientation of Coxa servos in a HEXAPOD
I'm making a Hexapod robot (this is my first robotics project ever) and I'm having a hard time deciding the orientation of the servo motors on the COXA section. The hexapod I'm making is based on this with MG996R servo motors

The problem is that all the Hexapod assembly guides I've read (including the one above which I'm using) say that the servos on the coxa link have to be installed in a way that the Zero angles (the angle the servos move to automatically when they're plugged in) of the servos should point to look like this from above:
(the red circles are the servos in question)

I understand that the reason for setting up the zero angles of the coxa servos this way is so that the Hexapod can directly stand up when it is powered up (since the motors go to their zero angles on powering up).

Now here's the problem: the servos can only move forward from the zero angles and then back to the zero angles in COUNTER-CLOCKWISE direction and do not go backwards from the zero angles i.e not move in the opposite direction. Knowing this, I don't understand how I'm supposed to install the servos like in the picture since doing that would mean the motors on the LEFT side would not be able to turn in the clockwise direction for the tripod gait. Can anyone please explain me how I'm supposed to get the motors moving in clockwise direction for the tripod gait while keeping the zero angles set in the directions as shown in the picture?


问:
Advise on ROS move_base costmap footprint not connected error
I'm using ROS indigo in my project and all the nodes and visualisation (Rviz) seems to be functional when I launch the program using roslaunch. Here are the sensors used in the scooter:

Hokuyo Lidar

Phidgets Encoder

However, when I start moving the scooter (the robot) using the joystick, the scooter will move physically, but in Rviz, the object detected by the lidar moves to the scooter, instead of the scooter moving in the map. Furthermore, the costmap obstacles will get smeared as I continue to move the scooter forward. Where could I have missed out?

Here are the node connections:

A screenshot of the tf tree:

EDIT:
When I did roswtf, it shows that the robot footprint is disconnected, though the rqt graph shows otherwise. Here is the log of it:

```<code>Beginning test of your ROS graph. These may take a while...
analyzing graph...
... done analyzing graph
running graph rules...
... done running graph rules
running tf checks, this will take a second...
... tf checks complete

Online checks summary:

Found 1 warning(s).
Warnings are things that may be just fone, but are sometimes at fault

WARNING The following node subscriptions are unconnected:
* /rqt_gui_py_node_646:
  * /statistics
  * /tf_static
* /amcl:
  * /tf_static
* /rviz_1476945491120458509:
  * /tf_static
  * /map_updates
* /move_base
  * /tf_static
  * /move_base/TebLocalPlannerROS/obstacles
  * /move_base/cancel
* /robot_pose_publisher
  * /tf_static

Found 1 error(s).

ERROR The following nodes should be connected but aren't:
 * /move_base->/move_base (/move_base/global_costmap/footprint)
 * /move_base->/move_base (/move_base/local_costmap/footprint)
</code>```

Please advise on the possible ways that I can undertake to debug this issue.


问:
EtherCAT slave sensor node
We are currently working on a project where we want to use EtherCAT as a communication protocol between a central system (master) and several nodes (slaves). We want these slaves to have the following:

GPIO for sensors

Local processing (microprocessor ~200MHz+)

Programmable (e.g. through USB)

EtherCAT connection

We've looked a lot at off-the-shelf solutions and came to several EtherCAT modules which can handle the communication, such as the EasyCAT PRO, Anybus M40 and BECKHOFF F1111. We could connect these modules to an off-the-shelf microprocessor (e.g. Beaglebone)

However, we are also looking into an integrated, more powerful solution because we do not believe this can handle everything we want to do. The TI AM3359 ICE suits our purposes and we have bought and tested it. However we were wondering if there are smaller, off-the-shelf solutions, since this one has a lot of stuff that we do not need (e.g. screen and CAN connection) and it requires making our own PCB.

This is therefore my question. Do you guys know of any EtherCAT slave sensor node that can facilitate our needs and nothing more? We have been looking a lot but cannot find anything of this kind.

Title: EtherCAT slave sensor node


问:
How can i get the Laplace Transfer function for control process for quadcopter?
I'm a beginner for quadcopter construction with PID controller and PIC 16F877 microcontroller. Now, I'm troubling with how do make the control process with mathematical model for my quadcopter :( and how to draw flow chart for this?</p>


问:
Are the any self reproducing robots?
Is there a possibility of making robots which utilise  raw materials to create more versions of themselves? Clarifying the point what I would like to ask is that whether there are are any projects or research on robots that can reproduce!!!</p>

Title: Are the any self reproducing robots?


问:
Any free or paid software for graphical drawing of Robotics Kinematic Scheme?
I have been searching for days looking for a dedicated software for easily draw kinematic diagrams of robotics like this:

I came by this software but it is a bit hard to grasp. Is there any GUI based software instead?


问:
Cloth (non-rigid body) manipulation with computer vision?
I am currently working on a prototype device to automate cloth ironing task. So basically the mechanical design involves 4 manipulators and a separate manipulator arm with a hot pad (iron)  to manipulate a given cloth to perform the ironing task. I understand its a very complicated task and I have come up with the following steps to potentially go about solving this problem. I would appreciate any kind input on the plausibility of this idea (mechanical and software challenges).

For my first EB (Engineering build), I'm solely focusing on solving this problem for a T-shirt, probably extend this solution to other cloth types with modifications.

From a pile of clothes, choose a certain cloth for ironing using background subtraction and colour based image segmentation (already programmed this part and its working!)

Classify or recognise the chosen cloth into one of any known classes using CNN (Convoluted neural networks). I personally think this part is quite achievable given that I have enough training data to train my network.

This is where the problem begins!. After classifying the given cloth, find coordinates of points of interest to manipulate the cloth in a certain 'predetermined' mechanical movement to facilitate the manipulation of cloth. What I mean by points of interest here is, for example, in the case of a T-shirt (see image below); the algorithm should localise the locations the following parts
1) Midpoint of T-shirt hem (see image for details)
2) Corner point of T-shirt hem (see image for details)
2) Start of yoke
3) End of the yoke

I believe (through my mental visualisation) that these are the key points to place the T-shirt flat on the surface (a known STATE). When the T-shirt is flat on the surface, it could be stretched just enough to make the cloth wrinkle free to facilitate ironing through some kind of force sensing mechanism (Haven't really though about it, but I presume its not huge challenge).

When the cloth is in a known STATE, proceed to ironing using path planning algorithms.

I do  understand that this is a very complex problem, just want to get some inputs to see if I am on the right path. I am really not sure if STEP 4 is mechanically achievable since non-rigid body manipulation is a huge problem for robots. I am quite confident on the software aspect of the project, I believe a large enough data set and well tested algorithm will help me identify the afore-mentioned points of interest in a test cloth. But I would like hear the mechanical challenges and plausibility of this project from design engineers standpoint. Hope I'm clear about my query.

Any input is appreciated.
Thank you so much and cheers :)


问:
What is the effect that the size of the correlation window (in pixels) has on the matching performance of stereo algorithms?
While stereo algorithms perform matching, they usually compare pixels within a region around the feature. I would like to know what effect the size of that search window has on the matching performance.

And what sort of features don't get detected if you go on increasing the size?

Thank you.


问:
How do I hack RC transmitter of my drone by realised communication with my PC?
I have a Chinese drone (cost less than $100), that works with a 2.4Ghz transmitter of 2.4. I am trying to build an application in C++ to control the drone with PC. I am thinking of using an ARDUINO and a NRF24L01 module.  But I have not been able to establish communication with the drone. I don`t understanding the form of communication very well, is there a post, information, book, blog or idea that can help me?</p>


问:
Geometrical solution to an IK problem for a humanoid robot leg
On the attached figure, I show a graphical representation of the problem I am facing. I have developed a humanoid robot with a thigh which makes an angle with respect to the leg. It means that there is always a constant distance (R) – whatever the rotation of the thigh is - between the Pelvic and the leg. Besides, the foot is articulated with a forefoot and a midfoot.

If I want to compute the orientation of the leg and thigh with respect to a given position and orientation of the Pelvic (represented by the point $C$) and the Foot (represented by $A$ the position of the ankle and $\vec{U}$ the orientation of the foot.

I come up with the geometrical problem of computing a plane $P$, passing through $C$ with one orientation given by $\vec{U}$, which is tangent to a sphere whose center is the extremity of the Pelvic (point $C$).

Knowing the point of tangency $T$ I can compute the position of the knee $K$ and then the angular values for the leg and the thigh.

But I cannot find the equations to solve it so far... or may be there is another geometrical solution I did not think of?

I am trying to find a geometrical answer before going through a DH description + finding the values via decoupling and so on...("classical" Ik resolution).


问:
Visual SLAM for wheeled robot
I would appreciate your help for choosing the appropriate real-time SLAM algorithm.

I am interested in having autonomous robot, thus a SLAM component is needed for autonomous navigation.

The platform is Kobuki robot (Turtlebot2 without Kinect) which has wheel odometry.
To get a better localization, I want to use camera (Fisheye) - optionally looking upwards.

There is a lot of algorithms available online, most of them output 6DoF (do I need 6DoF for a wheeled robot? (x,y,theta) is enough, right?). I tried using several algorithms, but still didn't find the optimal one.

I believe that Loop-Closure is needed as well, because the final application would be to have a robot that coverage the area (visit each point once).

ROS is used to implement this robot, with small dev board (Intel Atom x5 processor).

Thanks in Advance

Title: Visual SLAM for wheeled robot


问:
How does a measurement model for camera based PNP work?
I am trying to write an EKF that can estimate the covariance of a pose estimate, where the estimation is being done by a PNP algorithm and 3D-2D correspondences in images. Although EKF based camera SLAM is pretty common, I've noticed that usually those techniques tend to integrate IMU data, as well as try to refine the map points along with the pose of the robot itself, thus considering both the map and localization somewhat unknown. But if I want to consider the map points as predefined and stable, and just want to compute the pose of a camera in 6 DOF, a relationship that is expressed simply between 3D and 2D points as:

$ \begin{bmatrix}
             x \\ y \\ 1
    \end{bmatrix}
    =
    K*\begin{bmatrix} R && t \end{bmatrix} * \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} $

where $R$ and $t$ are the unknowns. This result can further be optimized by trying to minimize the reprojection error, but I am wondering how this can be reconstructed as an EKF measurement equation, and thereby estimate the state covariance, with my state containing 3D coordinates and the Euler angles of the camera pose as $[x, y, z, r, p, y]$.


问:
Strange EKF localization covariance behavior during prediction only
I've implemented a simple robot simulation based on the equations from EKF localization with known correspondence found in Probabilistic Robotics by Thrun et. al. Everything seems to be working but I noticed the covariance matrix has an odd behavior when doing prediction only.

When I move the robot with a forward velocity and some angular velocity and no correction the covariance grows (size of eigenvalues), as expected. But when I move the robot backwards with some angular velocity the covariance shrinks a bit before growing again. I expect the covariance to always increase if there is no correction.

I checked my implementation many times for errors but I now suspect this issue may be attributed to the fact that the Jacobians V and M uses signed values of velocity and angular velocity, instead of absolute?

Here is a video showing the covariance shrinking and growing. In this video the true pose of the robot is in green with an imaginary depth sensor shown as a green cone. There are no landmarks, so no correction step. The gray is the estimated pose plus covariance ellipse at 95% confidence interval.

https://www.youtube.com/watch?v=RcHkCijyG7c&feature=youtu.be

UPDATE:
I've attached a graph that illustrates this issue better. Two graphs are shown below. The graph in red is running the EKF prediction on noise free input and plotting the area of the ellipsoid of the covariance. The area (uncertainty) monotonically increases as expected. I repeat the same thing but at t=10 I inverted the velocity, resulting in the blue graph. There is an oscillation in the area for some reason yet to be determined.

The Octave script I wrote can be found here http://pastebin.com/rQyczVbm


问:
issues with LSA-08 line sensor for line tracing
I am using LSA-08 self calibrating sensor for line following purpose. But the problem with my sensor is it can't distinguish between faint blue color and white color (having RGB values 185, 217, 235). Is there any technique for distinguishing them ?</p>


问:
Inverse kinematics for a robot lamp
I've been working on a robot lamp.
Looking something like this:

So i had a few questions. I've decided to simplify the movements by giving the head a fixed orientation like you see in the picture. The lamp can move around it's own center, but those movements are directly relatable to the X Y Z position of the end effector.

If I have understood all I've read correctly, I'll be able to calculate the other angles, which are now all in the same 2d plane, just by using some geometry right? I've worked out these formula's already (haven't tested anything yet).

If i do want the head to also move around the same plane, the calculations would get A LOT harder and more complicated and there would be a lot of possible solutions, is that right? Or is there an easy step to get to this point when i already did it with the fixed orientation? And even if it would be manageable, would it be a good addition? Because I want the lamp to look at you, and the generated angles could make it look in a weird direction.

Is writing an algorithm the way to go, or would i be better of just hardcoding movements? What would be your tips if you were to make something like this, regarding movement?

Thank for reading and i hope someone can tell me if i'm on the right track here, thanks.

Title: Inverse kinematics for a robot lamp


问:
Matlab Simulink showing following errror: kinematic constraints cannot be maintained
I'm using simulink to get joints torque by giving motion input. I create very simple CAD model in solidworks to learn simulink. Simulink model is showing in below figure.

During update it shows no error but when I Run it shows error as

3D-CAD model is shown below figure.

Can anybody help me to solve this problem.

Thanks.


问:
Are there any open source path planning libraries that implement Voronoi diagram techniques?
I've been looking into path planning for a non-holonomic robot with 3 DOF in a 2D plane and recently learned about Voronoi diagrams but I cannot find any open source planning libraries that use this technique. Are there any open source implementations of using Voronoi diagrams (preferably in C++)? If yes, then where? If not, then why? </p>


问:
LQR for Inverted pendulumn
I'm studying an optimal control for the inverted pendulum in the following figure

the state and the output of the system are defined as
$$x=\begin{bmatrix}r & \theta & \dot{r} & \dot{\theta} \end{bmatrix}^T, \quad y=\begin{bmatrix}r & \theta-\alpha & \dot{r} \end{bmatrix}^T$$

so the continuous state space model at the upright equilibrium is
\begin{cases}
\dot{x}(t)&=Ax(t)+B_u u(t)+B_\alpha \alpha(t)+B_\tau \tau(t)+B_{F_s}F_s\text{sign}(\dot{r}(t)) \\
y(t)&=Cx(t)+D_\alpha\alpha(t)
\end{cases}
where the disturbance inclination $\alpha$ is suppose constant, $\tau$ is a torque disturbance,$B_{F_s}F_s\text{sign}(\dot{r}(t))$ is a Coulomb's friction term and $u$ is the input force applied at the cart. The numerical values for the transfer matrices are
$$A=\begin{bmatrix}0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 2.8040 & -5.2658 & 0 \\ 0 & 18.5885 & -19.6959 & 0 \end{bmatrix}, \quad B_u=\begin{bmatrix}0 \\ 0 \\ 3.7629 \\ 5.5257 \end{bmatrix}, \quad B_\alpha=\begin{bmatrix}0 \\ 0 \\ -12.6447 \\ 18.5885 \end{bmatrix}, \quad B_\tau=\begin{bmatrix}0 \\ 0 \\ 0.5650 \\ 3.7629 \end{bmatrix}, \quad B_{F_s}=\begin{bmatrix}0 \\ 0 \\ -1.1187 \\ -0.5650\end{bmatrix}  $$
$$C=\begin{bmatrix} I_3 & 0_{3\times1}\end{bmatrix} ,\qquad D_\alpha=\begin{bmatrix}0 & -1 & 0\end{bmatrix}^T$$
where $I_n$ is the identity matrix $n\times n$ and $0_{m\times n}$ is the null matrix $m\times n$.

For a digital implementation is required a suitable sampling of the previous system, so the discrete relative state-space model is in the form
\begin{cases}
x_{k+1}&=\Phi x_k+\Gamma_u u_k+\Gamma_\alpha \alpha_k+\Gamma_\tau \tau_k+N_k(\dot{r}_k) \\
y_k&=Cx_k+D_\alpha\alpha_k
\end{cases}

Now there is my problem. To counteract the effects of constant rail inclinations a discrete-time integrator is appended to the model $(\Phi,\Gamma_u)$. It is taken in the simple form
\begin{equation}\tag{1} w_{k+1}=w_k+r_k\end{equation}
so the extended state of the system become
$$x^{\text{e}}=\begin{bmatrix}x & w\end{bmatrix}^T$$
and the control state feedback is designed by minimization the cost function
$$J(u)=\sum_{k=0}^\infty (x_k^\text{e})^TQx_k^\text{e}+Ru_k^2$$
where the cost's matrices $Q$ must be semi-defined positive and the scalar cost $R$ must be strictly positive.

I can't understand the function of the integrator $(1)$. The rail inclination affect both input and output of the system, so the integral action counteracts only the effect on output. Moreover, the state matrix $A$ is singular, so the system at least has one integral action by itself, and no more integrator has to appended to the system.

Maybe the integrator $(1)$ is considerer for drive the position of the cart to the start of the rail, i.e. $r=0$.

Thanks in advance for any suggestion.

Title: LQR for Inverted pendulumn


问:
PID tuning to make my balancing robot better
See the video below of my balancing robot.

Balancing robot

I was having trouble getting it to balance on hard surfaces but finally got it after playing with the PID gains a lot.  Previously it was balancing just fine on carpet.

I set the PID gains by just picking a Kp, then increasing Ki until the robot oscillated very badly and tried to smash it's self into the ground,  then increasing Kd until it was finally stable. Here's the gains I'm using in the video.

```<code>  Kp=20, Ki=4.5, Kd=45;
</code>```

It will sit in one spot balancing without any problem.  You can see in the video that it can even stop from falling after I give it a pretty good kick.  The problem is that it stops from falling over but then greatly overshoots the other direction.  In the video you can see when I give it just a small tap it runs the other way for a while before finally becoming stable again.

Any suggestions on what to try next?


问:
Scaling monocular SLAM with another source?
I have implemented a stable monocular slam tracking system, based on ORBSLAM2. I am trying to find a way to add real-world distance/scale to this.

At the same time, I am running a (less stable) stereo slam system.

What i would like to do is:

Using the correct scale of the stereo data, figure out the scale factor that is need to correct the mono to real-world scale, and multiply the output by this factor.

I do not want to adjust the slam algorithm, I need to take the two output streams (currently an Eigen::Vector3f for each stream) and find an algorithm that I can run for 30 seconds or so to find the scale difference, and therefore the factor that I need to multiply the mono by.

I am currently:

```<code>//Start system.

//Store both values as Eigen::Vector3f;

Eigen::Vector3f initialWrong;
Eigen::Vector3f initialTruth;

//sleep the thread for a few seconds, and move the sensors.

// get the distances
float stopWrong = CurrentWrong - initialWrong;
float stopTruth = CurrentTruth - initialTruth;

scaleFactor = stopTruth / stopWrong ;
</code>```

This works, within a margin of error, but is very manual. I am looking for a more automatic / iterative way to do this that will minimize the error as much as possible.

How can I use a ground truth to scale monocular slam in real time?

Any thought or tips here would be greatly appreciated.
Thanks.


问:
real-time stereo vision system for long range (up to 100m) depth estimation
I want to implement a FPGA-based real-time stereo vision system for long range (up to 100m) depth estimation. Also, I want to use two ip cameras in the system. I have calculated depth error using the equation below with these parameteres:

baseline = 1m (at the expense of increased frontal blind zone area), z = 100m, f = 4mm, pixel_size = 4um, disparity_accuracy = 0.25px,

depth_error = dz = ((z^2)/b.f)*dp = 2.5m

My questions are: Are these calculations and equation above valid for long range stereo vision?

Are there any other considerations for designing this long range stereo vision system which may not be important in typical (short range) stereo vision systems?

I will be grateful for any information you can provide.


问:
What's the mathematical definition of quaternion 3x3 covariance matrices, and how does it relate to euler angles?
I'm adapting a KF orientation filter that represents the orientation as quaternion, and uses a 3x3 covariance matrix. Would someone know what 3x3 covariance represents in the case of a quaternion, and how that representation would relate to euler angles ?</p>


问:
Help with fusing multiple measurements with known covariances
I am working on an estimation application for multiple robots, each of which uses measurements from various sources to calculate position and orientation data. For now, I am looking at about three sources:

Orientation from an IMU

Both position and orientation from a camera

Position and orientation from relative measurements w.r.t another robot.

Naturally, the most widely used technique that combines a model with measurements is something like an EKF. But in my case, the orientation data (IMU) comes from an autopilot, which already has an EKF onboard, and hence provides covariance estimates as well. The vision based estimation (both individual and relative) are computed through a few iterations of bundle adjustment, and the bundle adjustment solver also provides covariance of its resultant estimate. Finally, I am not really interested in utilizing a complex, non linear model for the robot, but mostly in just fusing the measurements to provide one final pose estimate.

I have read about the concept of 'covariance intersection' in the context of Kalman filtering, which has been implemented in cooperative pose estimation using multiple data sources. I was wondering if I could get some advice as to whether Kalman filters etc. would still be applicable in my case, and if so, how to adapt them?


问:
Where can I get A3 poster size of Mars Exploration Rover Spirit/Opportunity?
I am looking for A3 size poster of Mars Exploration Rover Spirit/Opportunity for robotic education.

www.sunstartoys.com gives a little postcard-size of the MER along with its components on board when you buy the toy. But this is not large enough for classroom purpose.

Does anyone know where to buy A3 size poster of these MER for robotic education?


问:
Single Board Computer/Microcontroller Recommendations for controlling large DC motors?
Hey looking for recommendations. Right now I am using a sabertooth 2x25 motor controller for my drive train, receiving signals from a raspberry pi. From what I am seeing online - there is a lot of mixed reviews regarding this sort of setup. Everything seems to be running fine on my end, but I am curious to see what is the best optimal way to interface and program a large DC motor. Reasons why I decided to use a pi was because I needed ROS to be set up with my robot to perform autonomous tasks.

I understand that the pi's clock is not powerful enough to give precise PWM output signals, while its running computations at the same time. Is there a board out there that could possibly handle both?

Edit: Around 6A continuous load for the motors, 12 V


问:
Simple inertial 2d path planning library for arduino
I have a pretty simple 2d manipulator which uses an arduino to control a payload weighing about 2kg. I want to implement a simple 2d path planner which takes as input:

Current position, velocity, acceleration as 2d vectors

Target position as 2d vector

Bounding box as min/max x/y

Maximum acceleration

Maximum Jerk

... and outputs a path (function from time to (x,y)) which leads me to the target point as quickly as possible without violating the constraints.

I want to specify the initial velocity and acceleration (not just position) because a movement instruction might interrupt a movement already underway.

I want to specify the bounding box so that my payload doesn't hit any walls.

I want to specify a maximum acceleration so that the inertia of my payload doesn't overwhelm my control authority.

I want to specify a maximum jerk so that the springiness of my manipulator doesn't absorb some acceleration and whip it back at the end of travel. (I'm not sure whether I really care about maximum jerk except at the end of travel.)

Now I don't think the math here is very hard. I don't want to reinvent the wheel, but neither do I want to spend a week learning how to use a complicated and overpowered general kinematics library. Is there a very simple library that I can plug into my arduino IDE that could accomplish this for me?


问:
Inverse kinematics solutions pros and cons
I know at least 3 different solutions to inverse kinematics problem. They are pseudo inverse jacobian, cyclic coordinate descent and ANFIS networks. I would like to know their advantages and disadvantages comparing to each other.</p>


问:
Getting velocity from IMU acceleration
I am doing to research about why you cannot use IMU acceleration the integrate to get velocity.  Everyone says you cannot do that due to there being error but what error is this exactly and where does it come from?</p>

Title: Getting velocity from IMU acceleration


问:
Is it my PID that is unstable or my physical system? (Quadcopter)
I've been working on this Arduino-MPU6050 quadcopter for a while now, and it looks like it's close to being finished. I have programmed it in rate mode, so the PID's control the rotational velocity. Once I get those perfected I will write an outer set of positional PID's to control the rate ones.

But anyway, I'm still having issues getting the drone perfectly stable, and it drifts around more than it should. Below you can see a screenshot of a program I wrote, which shows the angular velocity in blue and the angular position in pink:

As you can see, the quadcopter is wobbling around pretty much randomly, and since there aren't any steady oscillations I'm guessing my PID is okay and that the instability is from something physical like vibration. Is this a reasonable assumption?

I am looking for any suggestions/possible explanations for this instability, and guidance on what I should do next. Invest in ant-vibration foam? Revise my PID?

I should also mention that I have not flown the quadcopter. I have it suspended using ropes attached to the legs of an upside down chair so that I can test one axis at a time.

General List of thing's I've Tried:

Modified the Arduino Servo.h to update the ESC's more frequently.

Changed the precision of my gyro from default 1/16.4 deg to 1/65.5 deg.

Balanced the props with bits of electrical tape.

Adjusted PID gains.

PID sample rate set to 3ms (333hz).

EDIT
Here is a snippet of my PID:

```<code>if (millis() - updateTimerPID >= sampleMillisPID) {
    if (thrust <= 1200) { // Don't turn on PID until sufficient throttle is reached.
      NWPower = thrust; //
      NEPower = thrust; // If PID not activated, set motors to base-throttle.
      SWPower = thrust; //
      SEPower = thrust; //

      inAutoRoll = false;  // Roll-Axis PID not activated.
      inAutoPitch = false; // Pitch-Axis PID not activated.
      inAutoYaw = false;   // Yaw-Axis PID not activated.

      I_rollRate = 0;   // Reset roll rate integral term.
      I_pitchRate = 0;  // Reset pitch rate integral term.
      I_yawRate = 0;    // Reset yaw rate integral term.

    } else { //PID is active - adjust Roll/Pitch/Yaw.

      adjustRollRate();
  //  adjustPitchRate();
  //  adjustYawRate();
    }
    updateTimerPID = millis(); // Reset PID timer.
  }

void adjustRollRate () {
  float offset = requestedRollRate - rollRate; //How far off from the wanted roll angular velocity.

  I_rollRate += KrI * offset; // Adjust roll rate integral term.

  if(!inAutoRoll) { // Did the PID just turn on?
    lastRollRateOffset = offset; // The previous offset is set to the current one (D-term is now zero for this instance).
    inAutoRoll = true; // The PID is now on.
  }

  float adjust = (KrP * offset) + I_rollRate + (KrD * (offset -lastRollRateOffset)); // Motor power adjust value.

  NWPower += adjust; //
  NEPower -= adjust; // Adjust the motor powers.
  SWPower += adjust; //
  SEPower -= adjust; //

  if (NWPower > maxOutPID)NWPower = maxOutPID;
  else if (NWPower < minOutPID)NWPower = minOutPID;

  if (NEPower > maxOutPID)NEPower = maxOutPID;
  else if (NEPower < minOutPID)NEPower = minOutPID;

  if (SWPower > maxOutPID)SWPower = maxOutPID;
  else if (SWPower < minOutPID)SWPower = minOutPID;

  if (SEPower > maxOutPID)SEPower = maxOutPID;
  else if (SEPower < minOutPID)SEPower = minOutPID;

  lastRollRateOffset = offset;    // Remember the offset for next time.
}
</code>```


问:
Computation of Coriolis Matrix
I am controlling a 6-DOF robot. For this, I want to compute the Coriolis Matrix. From my study of examples, I understand there are several ways of going about it. At the moment, I am using the theory based on, "A Lie group formulation of Robot dynamics" [p. 615] by Park et al. But this is not computationally efficient as my simulations are very slow.
Based on my study of several projects on Github, I understand many people choose symbolic approach. I was also considering numerical differentiation to get the Christoffel symbols.

I would like seek some guidance regarding the pros and cons of the different methods. I would really appreciate any references that I can use to study.

Title: Computation of Coriolis Matrix


问:
F3 robot communications protocol?
I am considering writing a program to communicate with a Thermo Scientific F3 robot arm in order to eliminate their obsolete C500C controller.  Does anyone know the communications protocol to/from the F3?  All I know is that it is RS485.

Thanks

Title: F3 robot communications protocol?


问:
Is it possible to turn an irobot roomba into a create
As irobot do not sell the create in Australia and will not ship to Australia I am considering buying a second hand roomba to convert to a create.

Is this possible, what models should be avoided and any advise?

Thanks


问:
How unique are Quarternions and what about the sign?
I want to track a robot's orientation in space and wanted to choose quaternions for their many advantages.

However I have a few questions that I haven't found to be solved anywhere. The method I use to get quaternions from a rotation matrix is the one by Bar-Itzhack (2000). I want to use the "version 3" method always whether or not the rotation matrix is imprecise since the method for precise matrix (version 1) also involves almost the same computational effort (contructing some matrix and getting eigen*)and this way it is more robust if my matrix happens to be imprecise. My questions regarding quaternions are the following:

How unique are they when tracking in 3D space? Can I track the rotations of the tool frame without worrying about going through discontinuities in space? (E.g. like with axis-angle representation when the angle gets close to 0° or 180° and even is undefined for those) And no arbitrary outcomes.

In the method mentioned above a special matrix is constructed from the rotation matrix and then the eigenvector of the highest eigenvalue is used as the resulting quaternion. I wanted to confirm the correctness with the following test. However the resulting fixed-angle is often negative. So I started to just negate the quaternion but I suspect that there may be cases where this is wrong, so what is the method to determine the sign? This is my verification method:

Get rotation matrix of a fixed rotation around an axis (e.g. +42° about x)

From this rotation, apply the linked method above (version 3) to get the quaternion.

Get a rotation matrix from the quaternion back (method used by Craig)

And finally I convert the rotation matrix back into fixed angle representation and see if the angle is the same.

Any help would be much appreciated.

On this project I am not using ROS, everything is self-build.


问:
What type of wheel is preferable for a soccerbot?
After a few days,there will held a competition in our varsity.in this competition the task is,my robot will have to play soccer.this is a one to one manual game.I am thinking of building a robot consists of 4 wheel and the structure will look like a pyramid.but the difference between the outer surface of the pyramid and my bot is,the outer plane of my bot will be like a concave slope/curve.so that,when the opponent's bot will come to attack my bot,then it's wheel will go over my bot and will loose it's balence.I will take the chance and push that away from my path.

the dimentions of my bot must have to be between-

length=25cm

width=20cm

height=20cm

weight=3kg

but,my main problem is to make the concave slope.if the wheel diameter is large the it is impossible to make a perfect slop on which the opponent will easily ride.but if the diameter is small then it is possible to make a good slope.

now,this is the question.whether the small wheel will have any effect on the other sides of the bot like speed,friction or not ???

please suggest anything...you can..........what should I do?


问:
Consitent Scale in Monocular pose estimation
I just wanted to know if scale is conserved across multiple images, when doing a process such as monocular odometry. I know in reality the scale tends to drift over time due to accumulation of small errors, mismatching of features and other problems. However, if I had a perfect system with perfect correspondences and perfect relative pose estimation would the scale also drift over time.

While working through the problem I believe it should not as long as each pair of images has correspondences in common with the previous image pair. However, I would like if someone could just confirm this theory of mine. Also if you have any proof as to why this is or a paper that explains it in depth that would also be very helpful.


问:
How is a shear pad of remote compliance device formed?
I am researching on mechanical design of remote compliance devices (RCC)†. In the RCC, manufactured by ATI, they use shear pads for lateral compliance. They mention that shear pads are elastomers bonded with metal shims. I couldn't find how it is being made. Are there layers of elastomers between wedging pieces (shims) or something else? How is adhesion being achieved?

† From wikipedia: "In robotics, a Remote Center Compliance, Remote Center of Compliance or RCC is a mechanical device that facilitates automated assembly by preventing peg-like objects from jamming when they are inserted into a hole with tight clearance."


问:
How can there be a difference in quaternion values of two points taken from sensors where the orientation is exactly same?
I have two situations-

A) One, the body with sensor embedded in it kept at rest.
B) Second, the body is at rest for 10 secs, then undergoes some movement randomly and comes back to the exact orientation as the initial one (at rest) and kept there for rest for 10 secs again.

In the first case, the quaternion values are constant and that is what is expected. But in the second case, these values from the first 10 secs do not match with the last 10 secs. As the orientation is unchanged in both the situations, how can the quaternion values be different? Also, the accelerometer, gyroscope and magnetometer values for corresponding situations is same.

The sensors which I am using are accelerometer and gyroscope. I dont know the exact way how the quaternion values are getting computed from these sensor values here but I will try to give you a better understanding. So, the quaternion values initially at rest are [1,0,0,0]. If the object is kept at rest, it remains the same (should be like that) but if it moves randomly and then again comes to rest with the exact same orientation as the initial point, the quaternion values are [0.708547,-0.4962,-.4316,-0.2556]. If this is not matching, then what are the absolute quaternion values signifying?

Is there any flaw from my end in understanding the derivation of quaternion values at the conceptual level or I am missing something substantial?


问:
Dashboard for IRobot Create 2
In case anyone is interested, I build a dashboard for the icreate 2.(http://blog.mindfront.net/2017/06/roomba-dashboard-cli-dashboard-for.html)</p>

Title: Dashboard for IRobot Create 2


问:
Unmanned guard boat
I need an urgent help in my graduation project on unmanned guard boat.
I need to control the boat autonomously and manually using ArduPilot and Arduino Uno.

I just ask if anyone has the code, that can be written on the ArduPilot, that enables control both:

autonomously, using way-points, and;

manually, using LabVIEW,

and then sends the data through the Arduino to complete the movement of the boat as the motors are connected to the Arduino.

Furthermore I need to know to send GPS coordinates using a U-blox NEO-7M connected to ArduPilot running on an Arduino to be displayed through the serial port of PC on the software.

Title: Unmanned guard boat


问:
How to choose a motor for water surface vehicle?
I am about to build a water surface vehicle (a kind of boat).

I was looking for different type motors and ruled out the stepper and servo motors. But I got confused between brushed and brushless dc motors. Brushless motors on one hand are more efficient but brushed are low cost and less complex.

Can you explain to me or get me some resource on how to find the best motor for low as well as for high budget? I am expecting the load to be around 12 kg. Please draw my attention to the necessary requirements that need to be keep in mind while choosing the motors. Also suggest me link where I can study about water thrusters and the propellers.


问:
Obstacle avoiding by Pi camera
I designed a mobile robot with my colleagues for our graduation project, the purpose of it is to detect mines (metals) in a specific area

We are programming the robot using Python on Raspberry Pi 3

I want it to avoid obstacles using the Pi camera, is that possible through computer vision?

I searched a lot but I can't find a full reference that guides me to do it.

If it is too hard we'll use an ultrasonic sensor but can it, at least, make a graphical updated map, that marks the position of mines and obstacles on it?

Title: Obstacle avoiding by Pi camera


问:
Inertia Tensors in 3D objects for robot dynamics
I'm trying to obtain the dynamics of a 6DOF robot. Firstly, I calculated the combined centres of mass (between each link and the respective actuator) in order to calculate the gravity term, since it only depends on the combined centre of mass the the angles of the joints (Yes, I know there's another way which basically takes into account the centre of mass of the links and the actuators, but I just didn't follow that path). My calculations are correct since the robot is effectively compensating the gravity, but now I want to calculate the remaining terms (mass and coriolis).

Since I have the combined centre of mass between each "system" (link + actuator), and the datasheet of this robot only gives me the Inertia tensors at the center of mass of each part, I need to know the equivalent inertia tensor in the "new" centre of mass (the combined one).

Now, I've done my research and found little information on the web about this. I did found out that I could probably follow the parallel axis theorem, but I've seen people saying that it is based on the premise that the object is planar (which means it would only be applied to 2D objects). My question is: can I apply this theorem in 3D? If so, please explain to me what exactly do I have to do, and if not, what other options I have to follow.

Let me know if you understood what I'm after and thanks in advance.


问:
Stepper Motor For "Cable Car" System
I am a programmer with a lot of experience in IoT but somewhat new to actuators and robotics.

I would like to create a "Cable Car" which consists of two stepper motors and a pulley. The motors would be located one next to the other, and the pulley on the opposite wall. Each stepper motor would have a spool and be connected with fishing wire. In the middle would be a styrofoam boat. The idea would be to move the boat along the wire from one wall to another based on different metrics and calculations. Ideally it will travel from one end to the other in a months time and in slow increments.

Diagram using ASCII:

|___________________|
|x                 o|
|x_________________o|
|      |  |         |
|  <-- BOAT -->     |
|                   |
|                   |
x = stepper motor
o = pulley
_ = fishing wire (starts at top motor, goes to pulley(s), continues and ends at bottom motor)
| = wall

My question is: What type of stepper motors should and controller should I use? I estimate that the wire + the styrofoam boat will not weigh more than 3 pounds total. It will it hang at a height of 10 feet from the floor.

I am hoping to achieve this with a Rasperry Pi I have lying around.

I am confused about various torque requirements, voltage & amperage ratings etc.

If someone has a recommendation for hardware I would be extremely grateful.

Title: Stepper Motor For "Cable Car" System


问:
Theory behind wheeled inverted pendulum robots
I'm trying to get a deeper understanding of the theory behind wheeled self-balancing robots. Can anyone point me to a text on dynamic modelling and control theory that might help?</p>


问:
Is there an open source autonomous vehicle simulator with control over traffic?
As a part of my research work I'm supposed to build or use an existing autonomous vehicle simulator, in which I can also control the behaviour of the traffic in the system, I was searching on Google and posted on reddit to check if there is any such simulator (open source), After all the exhaustive attempts, I haven't found anything yet.

I'm trying to build this in V-rep or any other ROS compatible simulators. The end product has to look something like the one shown here, YouTube - Webots: The autonomous vehicle simulator, and would also give control over the traffic behaviour. Any help/suggestion is greatly appreciated.

PS: I do know that there's this one written in Unity, Github:A self-driving car simulator built with Unity (An Open Source Self-Driving Car), but we are looking to import OSM data and also Unity doesn't have a good ROS integration mechanism.


问:
Detecting "zero" when turning a potentiometer from a stepper motor
We're using a stepper motor to control a knob on a piece of audio equipment.  The stepper is coupled to the potentiometer shaft with a simple coupler.

Right now, in order to get to "zero" on the potentiometer, we "crank" the stepper motor -3600 steps (about one full rotation).

This creates unnecessary torque on the pot. I'm looking for a hardware solution to avoid this.  Here are a few ideas I had:

Some sort of zero detection - Know when the knob gets to 0 and stop the stepper from turning when it reaches that point.

A coupler that can detect excessive force on the shaft.  Basically some sort of spring loaded coupler that will "click" when the rotation gets to "zero" and close a circuit.

Also open to other ideas...

We're currently using Arduinos with Firmata firmware connected to Node.JS, but this is mostly a hardware issue.


问:
Open-source software that supports multi robot simulation and navigation capabilities
I am interested in knowing a software platform which deals with multi-robot navigation and:-

has implemented local  collision  avoidance  algorithms for each robot to prevent collisions between robots

has independent controllers such as PID for each robot

Most likely such a framework will be in ROS or python. I am interested in open source codes such as those in github. The goal is to have a platform where a set of way-points can be assigned to each robot and they can avoid collisions and reach their way-points. At least this much ability should be already implemented.


问:
Stepper Motor Torque
Tried searching for this answer in a simple way but can't seem to find the answer..

I have a 3 axis Bipolar Nema 17(Took off my 1st 3d printer =) ) robotic arm(Homemade) and provides 28oz-57oz of Torque as per datasheet,  now i am trying to figure out how much that can lift in Grams/lbs

Can anybody help?? Or if someone can give me a REALLY Simplified version on how to calculate and get the answer myself, which would be useful for future projects.

Thanxs
P

Title: Stepper Motor Torque


问:
Why do my quad copter motors slowly decrease RPM with full throttle?
The flight controller is setup using LibrePilot, no propellers are fitted, when I put the throttle of the transmitter to full the motors go to full RPM and then slowly decrease to zero RPM with no change in the position of the throttle. This repeats over time.

Check this video for visual symptoms: Quad motors slowly decrease RPM over time with full throttle.

This also happens when all the props are fitted.


问:
Quadrapod vs Hexapod
I want to build a robot, but I don't know if I want to build a quadrapod or a hexapod. I would like to use three servos/leg.

Can you tell me what are the pros and cons of quadrapods compared to hexapods?

Title: Quadrapod vs Hexapod


问:
Using a different T/X on my quadcopter
I have a Bugs 3 quadcopter, can I use a better transmitter from a helicopter for instance, a 2.4 GHz?</p>

Title: Using a different T/X on my quadcopter


问:
Issues with the dual VNH2SP30 motor carrier and 131:1 metal gearmotor 37Dx73L mm w/ 64 cpr encoders
For a while now I have been trying to build my own robotic platform, kind of like a turtlebot. However, I have kept running into an issue with controlling the motors. My main controller for sensor data input and motor driving output is the tiva c TM4C123G launchpad, which operates at 3.3V so I shift the signals to 5V (which the motor driver operates on).

The motor driver seems to respond correctly when the actual motor is not attached, but the LEDs that indicate the ouput do not shine when the motor is plugged in.

Here is a video which explains my problem: https://www.youtube.com/watch?v=j-Da2iAS8L8

I have tried using an arduino mega instead of the launchpad, but unfortunately the 64 CPR encoders are too fast for the mega to read and I need the encoder data (I'm trying to perform SLAM).

I honestly have no idea what is wrong with my circuit/boards I appreciate any help or insight on this problem! Thank you!

Since I'm also a high schooler I unfortunately do not have access to nicer tools such as oscilloscopes...


问:
Are homogeneous coordinates represented by appending image coordinates with a 1 in camera imaging
In camera imaging, there are several terms for point coordinates.

World coordinates: [X, Y, Z] in physical unit

Image coordinates: [u, v] in pixel.

Do these coordinates become homogeneous coordinates by appending with a 1? Sometimes in books and paper it is represented by [x, y w]. When is w is used? When is 1 used?

In the function initUndistortRectifyMap, http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#void%20initUndistortRectifyMap(InputArray%20cameraMatrix,%20InputArray%20distCoeffs,%20InputArray%20R,%20InputArray%20newCameraMatrix,%20Size%20size,%20int%20m1type,%20OutputArray%20map1,%20OutputArray%20map2)

the following process is applied

Is there one term for the coordinates [x y 1]? I don't understand why R can be applied to [x y 1]? In my view, R is the transformation in 3D. Is [x y 1] is one 2d point or one 3d point?

[u v]->[x y]->[x y 1]->[X Y W]->[x' y'] The coordinates are processed according to the above chain. What is the principle behind it?


问:
Probabilistic Robotics: Map-based motion model
I asked the following question in math.stackexchange, but realized that this might be the more appropriate place to post it: How did Thrun derive the following formula: (Context here)

I think that this formula might either be wrong or make assumptions that are not guarantueed to be true (like statistical independence), but am not sure which ones exactly. Any pointers are welcome :)


问:
Maintaining scale factor for essential matrix
I want to recover the trajectory of a vehicle using a monocular camera via the computation of the essential matrix between t-1 and t.
When I used OpenCV, I got correct trajectory wrt the ground truth. However, I want to code all the functions in Matlab but I got garbage when I plotted the trajectory and I think it is related to a scale factor problem.

In fact, the outputted essential matrix from opencv function is the following (between two consecutive frames)

$$ E = \begin{bmatrix}
 0.0052 & -0.7068 &  0.0104\\
 0.0052 & -0.7068 &  0.0104\\
 0.7063 &  0.0050 & -0.0305\\
-0.0113 &  0.0168 &  0.0002\\
\end{bmatrix}$$

After decomposing it into Rotation and translation and triangulating for 5 2D points, I got the following 3D points:

$$   X1 =\begin{bmatrix}
       -0.0940& 0.0478& -0.4984\\
       -0.0963& 0.0497& -0.4987\\
        0.3033& 0.1009& -0.5202\\
       -0.0065& 0.0636& -0.5053\\
       -0.0737& 0.0653& -0.5011\\
 \end{bmatrix}$$

Now, for the essential matrix outputted by Matlab functions, it is the following:

$$   E2=\begin{bmatrix}
       -0.2153 & 0.9573 & 0.1626\\
        0.8948 & 0.2456 &-0.3474\\
        0.1003 & 0.1348 &-0.0306\\
 \end{bmatrix}$$

When decomposing it into rotation and translation as well, and triangulating points, I got the following 3D points:

$$  X2 =\begin{bmatrix}
        0.1087&   -0.0552&    0.5762\\
        0.1129&   -0.0578&    0.5836\\
        0.4782&    0.1582&   -0.8198\\
        0.0028&   -0.0264&    0.2099\\
        0.0716&   -0.0633&    0.4862\\
 \end{bmatrix}$$

To verify the results, I did:

$$ X1./X2 =\begin{bmatrix}
       -0.8644 &   -0.8667 &   -0.8650\\
       -0.8524 &   -0.8603 &   -0.8546\\
        0.6343 &    0.6376 &    0.6346\\
       -2.3703 &   -2.4065 &   -2.4073\\
       -1.0288 &   -1.0320 &   -1.0305\\
 \end{bmatrix}$$

And an almost constant scale factor seems to exist between the first and second estimations.
I think that the scale factor have to be the same for all 3D points to get a correct trajectory when plotting it. How to maintain the scale factor?


问:
Help finding a linear actuator
I need help finding a linear actuator.

I only need it to move 15 mm but it also needs to move extremely fast. Preferably 1 inch per second. It needs to be capable of holding a 10 lb weight. The stroke speed is at full load. Also, I would greatly prefer it to be fairly cheap because I need to buy 4.

Title: Help finding a linear actuator


问:
Scara vs. Articulated arm robot
My setup is such that my tools reside on a wall and table directly adjacent to my work bench. I wish to build an arm that will ultimately grab tools and give them to me without me having to move from my bench. I'm wondering if a scara or articulated robotic arm is better suited for this task. Payloads shouldn't exceed 5kg and distance is not fully a factor since the robot might ride a track</p>

Title: Scara vs. Articulated arm robot


问:
Design of an equatorial mount
I am considering designing an equatorial mount for astrophotography. I have been researching on the best way to do that and I am thinking on using a stepper motor with a gearbox. The thing is that it needs to turn at a really low speed, 1 rev/day.
If I pick any Nema X motor I can get it to step 200/400 steps without a gearbox. The most reductions I have found are 1:100 (this is an example: http://www.ebay.com/itm/Nema17-23-34-Planetary-Gear-Ratio-5-1-10-1-15-1-20-1-30-1-40-1-50-1-100-1-Reduce-/201844830182?var=&hash=item2efee3afe6:m:mPuljSiQP2wMMZ69Cmf4BYA)

That means that I can get 20.000 steps/rev (400 step/rev motor) which would mean running the motor at 20.000/60*24 = 14 steps/min --> 4.34 sec/ step. I don't think the operation is smooth enough so it will might show in the pictures.

I have been researching on other similar projects and I have seen that they picked 1rpm as acceptable for that smoothness (0.15sec/ step for a 400 step motor). That means that I need a gearbox capable of around 1500:1. My questions is as follows:
- Does it make sense to add 2-3 gearboxes in series to get that value? Like those ones and adaptors for the output shafts since they are different in size to the input shafts: http://www.ebay.com/itm/NEMA34-NEMA23-Stepper-Motor-Planetary-Gearbox-36-1-30-1-24-1-16-1-10-1-6-1-4-1/122395466919?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIM.MBE%26ao%3D2%26asc%3D44757%26meid%3D57a6af176f9b48e0b9f2042efc480bc1%26pid%3D100005%26rk%3D3%26rkt%3D6%26sd%3D122395466919&var=422871734736. An example could be adding first 30:1, second 30:1, 2:1 (1800:1 all together).

Would it be better to design a planetary/spur gearbox to satisfy those requirements?

Thank you. I hope this is the right forum. I haven't find one suitable for mechanics

Title: Design of an equatorial mount


问:
Continual error attempting to use MicroPython with HC-SR04 sensor on Bit:Bot
On my Bit:Bot from 4Tronix ([see here])1

I have an HC-SR04 ultrasound sensor attached. It uses solely pin15, for both trig and echo.  I am able to use Microsoft MakeCode 'block editor' to get a reading () but am unable to find a working solution for MicroPython.

The closest I've found is this one on GitHub (below), but I just keep getting error message of '-11' scrolling across the Microbit's LED Matrix. I've checked for error code -11 but nothing exists.

```<code>from microbit import *
class HCSR04:

def __init__(self, tpin=pin15, epin=pin15, spin=pin13):
    self.trigger_pin = tpin
    self.echo_pin = epin
    self.sclk_pin = spin

def distance_mm(self):
    spi.init(baudrate=125000, sclk=self.sclk_pin,
             mosi=self.trigger_pin, miso=self.echo_pin)
    pre = 0
    post = 0
    k = -1
    length = 500
    resp = bytearray(length)
    resp[0] = 0xFF
    spi.write_readinto(resp, resp)
    # find first non zero value
    try:
        i, value = next((ind, v) for ind, v in enumerate(resp) if v)
    except StopIteration:
        i = -1
    if i > 0:
        pre = bin(value).count("1")
        # find first non full high value afterwards
        try:
            k, value = next((ind, v)
                            for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)
            post = bin(value).count("1") if k else 0
            k = k + i
        except StopIteration:
            i = -1
    dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)
    return dist

    sonar = HCSR04()
    while True:
        test = sonar.distance_mm()
        display.scroll(str(test))
        sleep(1000)
</code>```

Please help if you can.

Thanks


问:
Building a Autonomous pesticide spraying system using swarm robotics based on odor (volatile Organic Compounds) detection
Visible worms, pests, and diseased parts of plants emit a unique odor (Volatile Organic compounds with different concentrations). I understand that sensors which can quantitatively detect these compounds development are being developed. My idea is to build a swarm of robots which can spray pesticides by detecting VOCs on three targets present on plants across the fields.

Target 1: Visible worms, pests, larvae. May these can be mechanically eliminated

Target 2: Invisible pathogens on certain areas of a plant

Target 3: Areas where pesticides have to be sprayed to prevent disease

For these targets, pesticide has to be administered in the correct concentration
This idea can optimize the use of pesticides and treat the plant properly
Questions:

Is swarm robotics still sci-fi or Did any one implement it?

Are the  any specific scenarios where implemented swarm robotic systems  are coming to help and establish the ease?

Which is the implemented system or idea in conception that can help in formation of solution for the above problem?

How much time is required approximately to realize this idea?

Hope this question does not sound sci-fi and is practical and the intention is to solve a definite problem
How can i work by following some steps to further  make this idea concrete


问:
Kalman filter localisation equations
I am doing mobile robot localisation as a project. Now I stuck in obtaining the equations of EKF localisation. My robot moves straight for 10 seconds parallel to x-axis and robot equipped with 2 sonars - in front and in right side. As a landmark I have two lines in front of the robot and on the right side parallel to x-axis. Could you please help me to obtain the equations?! The map looks like this:

The robot is in the origin (0, 0), the landmark line parallel to X-axis coordinate is y=-2000mm, the landmark parallel to y-axis is x=4000. I already implemented the motion-based control which returns estimated pose of the robot and covariance matrix. The estimated pose of the robot is given by S=[Sx, Sy, Sth]. Please help me to find matrices of the correction step

What is my observation model Jacobian matrix?!
The papers in internet gives me only Jacobian matrix form for nonlinear model, but in my case as my teacher said the model is linear, but I dont know how to obtain this Jacobian matrix which has dimension H[2][3] matrix

Title: Kalman filter localisation equations


问:
Resampling step for MC variation reduction
I am reading particle filtering for robot localisation and specifically the resampling step to avoid particle degeneracy.  Can anyone explain me what MC (Monte Carlo) variation means? I saw it couple of times as a benefit of some resampling techniques against others.

For example, "Systematic resampling is the scheme preferred by the authors [since it is simple to implement, takes O(N) time, and minimizes the MC variation]" (Arulampalam et al., 2002).


问:
Make Pepper understanding and speaking German or other none-english languages
I am using the "Choreography" software to interact with Pepper. I can create english dialogs there. But I have problems to change the language to (e.g.) German.

In the settings of a Dialog I can choose other languages (e.g. German). But when I create a "Topic" there is only a checkbox for English. So I am confused at this point.

:EDIT:

The properties of the project itself does have language settings, too. There you have to check the languages you want to support. Then they are available for the modules.

Currently I need to restrict my answer to the "Choreography" software only. The software now offers "Topics" in "German". But Pepper now does nothing. There is a problem I currently can not identify.


问:
creating a robot from ez-b or regular arduino
Does anyone have experience with this ez-b, it is sold by ez-robot.com and comes with an SDK for Visual Studio

It has direct scripting in runtime and through usb or bluetooth, wifi, irc, https

My question is, if I get a regular arduino board, will i be able to do the same?
from what ive read, arduino needs to hold the instructions on its own memory, but I rather have the brain in the computer, and feed signals back and forth to the microcontroller

Also, is arduino alone, a step down as the website niceley puts it

Thanks for your help in advance

OwnerDisplayName: Ess Kay


问:
how to make a robot stand after it has fallen
I have seen the methods to make a bipedal robot stand and walk keeping its center of gravity in stable mode, but how can i make the robot stand if it falls in ground? For example right now i'm using valkyrie robot in a gazebo, but the problem is once it falls in ground i've to again restart the simulator or respawn the robot. hers the screen shot of this:

In internet also their are methods describing ways to make a bipedal robot stable while walking and standing but no way to make it stand after its fallen state. So if anyone knows the method or algorithm or have any reference than you can tell me.


问:
How to make ROS enabled Quadrotor with raspberry pi?
I am working on a project "ROS enabled Quadcopter", and am using hector_quadrotor package. But I am facing problems in Flight controller.

My world and quadcopter is running in gazebo but I don't know how to fly a quadcopter. There are many controller packages inside hector_quadrotor package.

Moreover, I want to run the same on real quadcopter with raspberry pi.

Anyone who can help me and send me some reference material.

Thank You in advance.


问:
Holonomic constraint forces using Lagrange multipliers
Consider a multibody robotic system with Lagrangian $ L = \dot{q}^{T}M\dot{q} + V $ and equations of motion of the form
$$M(q)\ddot{q}+C(q,\dot{q})\dot{q}+A^{T}(q)\lambda+N(q)=0 $$

where $N=\frac{\partial V(q)}{\partial q}$  and $\lambda$ represents the Lagrange multipliers for the constraint forces (MLS pg. 269; pg. 287 in pdf). $A$ is the constraint matrix from the Pfaffian form $A\dot{q}=0$. We are concerned with holonomic constraints, which can be differentiated to obtain the Pfaffian form.
$ C=\sum_{k=1}^{n} \Gamma_{ijk}  \dot{q_{k}} $ where $\Gamma_{ijk}$ are the Christoffel symbols of the first kind.

The Lagrange multipliers can be calculated using the formula (MLS pg. 270, pg. 288 in pdf)
$$\lambda =-(AM^{-1}A^{T})^{-1}AM^{-1}(C\dot{q}-N)$$

This gives the holonomic constraint forces $A^{T}\lambda$.

I would like to see some examples of this method for calculating the holonomic constraint forces for planar systems.

I have seen this method being applied to calculate the tension in a simple pendulum (MLS pg. 270, pg. 288 in pdf), but I would like to see examples of planar systems with more degrees of freedom.

I'm specifically interested in the case of a 2R manipulator shown below.

The equations of motion are on pg. 164-165 (pg. 182-183 in the pdf) in MLS.

My objectives are:

Apply the holonomic constraint $\theta_{1}(t)=0$ and obtain the holonomic constraint force.

Show that we get the dynamics of a simple pendulum for the
constrained system for initial conditions $\theta_{2}(0)=0, \dot{\theta_{2}}(0)=0$.

I have done the calculation for the constraint $\theta_{1}(t)=0$ but I'm not able to show 2. The expression I get for $\lambda$ is

$$\lambda=
\begin{array}{c}
 \frac{g (d \text{m2} \text{r2} (\sin  \text{t2})-\text{m2} \text{r2} (\cos  \text{t2}) ((\cos  \text{t2}) b+d))+b d (\sin  \text{t2}) \dot{\text{t2}} \dot{\text{t2}}}{d} \\
\end{array}
$$

where $(t1, t2)=(\theta_{1},\theta_{2})$ and $a, b, d$ are the geometric and inertial parameters $\alpha, \beta, \delta$ described in MLS (pg. 165; pg. 183 in the pdf).

Suggestions for other methods to calculate holonomic constraint forces would be helpful too.

References:

MLS refers to

Murray, R. M., Li, Z., Sastry, S. S., & Sastry, S. S. (1994). A
  mathematical introduction to robotic manipulation. CRC press.


问:
Controlling Pepper using ROS
I am trying to implement FastSLAM 1.0 and I am using sensory and control data acquired from Pepper via ROS to evaluate my implementation. However I am having major issues when I try and control Pepper's movement via ROS.

I am using Ubuntu 16.04 and ROS kinetic.

I set up my NAOqi bridging using the NAOqi driver command

```<code>$ roslaunch naoqi_driver naoqi_driver.launch nao_ip:=<MY_ROBOT_IP> roscore_ip:=localhost network_interface:=wlp1s0
</code>```

(I was originally using the pepper_bringup package to set up the brigde, however ran into errors stating I had not set up the PYTHONPATH to the NAOqi API properly

```<code>$ roslaunch pepper_bringup pepper_full_py.launch nao_ip:=<yourRobotIP> roscore_ip:=<roscore_ip>)
</code>```

I then run RViz, having sourced my setup.bash

```<code>$ rosrun rviz rviz
</code>```

I then find and load pre-configured RViz configuration in my catkin workspace into RViz

```<code>src/pepper_robot/pepper_description/config/pepper.rviz
</code>```

From there I am able to see Pepper in RViz along with the camera images and sonar .

Then I set up moveit so I can control Pepper with the commands

```<code>$ export NAO_IP=<YOUR_ROBOT_IP>

$ roslaunch pepper_dcm_bringup pepper_bringup.launch

$ roslaunch pepper_moveit_config moveit_planner.launch
</code>```

This starts the Moveit RViz GUI where I start my planning of the route I want Pepper to execute, following this documentation.

However whenever I execute it, it always fails and the error message I get from the terminal says that it cannot access any controls, (I thought I had a screen shot saved of the message, however I don't, but will be working on Pepper again tomorrow, so can acquire one then)

Has anyone got experience controlling Pepper using ROS and Moveit and may have had similar issues which they managed to resolve?

Otherwise has anyone any tips on how to control Pepper through other means? I have found documentation on ways to control it with a joystick, again if anyone has tried this and been successful, I would be grateful for some advise on how they managed to get it working.

Title: Controlling Pepper using ROS


问:
EKF based SLAM, marginalization and key-frames
I have a couple of tightly related questions regarding EKF-based visual SLAM. It is common in the Kalman based VSLAM litterature to marginalize 3d points and past poses. Condsidering the EKF as a bayesian filter, one can write its prediction step

$\tag{1} P(x_t|z_1,...,z_{t-1})=\int_{x_{t-1}} P(x_t,x_{t-1}|z_1,...,z_{t-1})dx_{t-1}$

with $x_i$ and $z_i$ respectively denoting states and measurements.

The right side of (1) clearly marginalizes the past state. So, here are the questions:

I understand that in EKF based SLAM, the current state needs to contain new features (e.g. newly triangulated points) but does not contain those that are not viewed anymore. So, $x_t$ and $x_{t-1}$ are not exactly the states of the same system. However, I don't see any other way of marginalizing older feature points than using (1). Is this the manner in which older points/features are magrinalized, or are there other intermediary steps?

In Key-frame based Bundle Adjustment approaches, one discards redundant information by dropping key-frames (although nowadays, more and more sytems take the filtering approach here and marginalize instead of discarding). I was wondering, since I couldn't find anything relevant, if there exists Key-frame EKFs? Is there an inherent property of the EKF that makes it incompatible with Key-frame selection?


问:
Which Trajectory representation for optimization
I'm strugling on that problem for a while, so any help is welcome.
I need a trajectory representation that is performant for optimization, i.e. I want something that computes quickly. The function I want to optimize takes into account the duration of the trajectory, and samples some points along it to compute some costs related to the environment (distance to obstacles, time to collision,...) and the trajectory (local speed, acceleration and jerk limitation,...).
For now I'm using a method based on waypoints and a dynamic local method that is too heavy for my usage. My optimization variables are the waypoints (position and a few derivatives), and the local method computes a spline between each successive waypoint. I think I can make profit of a less accurate method: I don't need to control the exact speed of each waypoints, nor their exact position and timing.

To be more specific, here are a few constraint I can think of:

the optimization algorithm can have some control on the speed along the trajectory (e.g. by constraining the duration on portions of the trajectory, or specifying speed vector on waypoints...). The speed may strongly vary along the trajectory;

I need a quick answer about the feasibility of the trajectory (low CPU usage);

In the case the method is based on waypoints, I can use only the waypoints to compute my cost, then the computation of a specific state along the trajectory can be slow, I don't care;

Otherwise, I need to quickly access a certain number of states to sample costs along the trajectory.

Start and final positions of the trajectory are fixed. I may need to specify their speeds also;

The trajectory is continuous in position, speed and acceleration, and jerk is bounded;

For now I'm focusing on holonomic problems: 2D/3D navigation, with orientation, arm motion...

I've been thinking of B-Splines, or Bézier curves, but I don't know much of their maths, and I'm not sure whether they fit my requirements...

Hope my question is clear enough, any advice is welcome!

Note: I'm not looking for a motion-planner, I want to optimize an existing trajectory to global/local optimum regarding some cost and constraints.


问:
Controls Project, Inverted Pendulum. Design issues
I am developing an inverted pendulum that uses a differential drive robot as base. The goal is to create a benchmark to practice my control using ROS, so I can implement what I learn on the Modern Control Engineering (5th Edition) [Katsuhiko Ogata] , and other books and Journals.

However, I am running into problems because of my lack of experience.

My hardware is composed of 2 Nema 17 stepper motors, 1 Energizer XP18000 as main battery,2 Motor Drivers DRV8825, 1 Arduino Mega, 1 Raspberry Pi 3, 1 Honeywell rotary Encoder 600 series.

I originally tried to do something similar to the b-robot but it ended being better to build a cart for benchmark because it is more stable and I can use an encoder to know the position of the rod.

The problems are:

low torque and too much mass, the robot is slow due to inertia.

Arduino Mega, and basically any AVR microcontroller is too slow for
Real-Time, the fastest I can communicate with Raspberry Pi3 is 30Hz.

I am thinking to do these changes:

Change the Arduino by a Nucleo Mbed board.

Running the Raspberry pi on non-gui or snap like the
ubuntu core, but with Ubuntu Mate.

Change the motor for DC or Servo motor.

I need to redesign the robot structure, making it small and light.

I would like advises on which hardware select for developing a precision robot. Which motors and motor drivers. If Nucleo boards would work well. This kind of things.

I also would like to know the best practices for programming the controllers for ROS.

I attached an image of the robot.


问:
affordable and easy to use one dimensional force sensor or load-cell
In our lab we mostly use ATI 6DOF force sensors, but they are so difficult that I just want to kill myself every time I have to use them. The reasons I don't like them are:

For the version I have (Mini45), I have to use a NI DAQ to read data from and NI DAQmx drivers are only x86 and mostly windows, not compatible with mac, Arduino or Rasperry pi which I use to control experimental setups.

I could have used one of those NetBoxes, but I have to pay a couple of thousands to buy one, probably a couple of thousands to calibrate the sensor, and wait a couple of month to get it calibrated and etc.

They are so difficult to use. They have this GUI (only windows) which you have to install (which BTW reminds me of the kind of software we used to use in 90s). They have also some LabView examples. These  are way too complicated to get around!

Even when you get them to work the signal is horribly noisy and you have to do all kind of magic filtering to get something useful.

they are very sensitive. For example if they are in contact with a cold metal or there is air blowing at them (which in my experiments including pneumatics happening a lot), they just give wrong measurements.

They are so delicate that if you bend the cable too much or screw them to your structure too hard they are broken and you have to pay a couple of thousands to send them back and fix!

the whole sensor+driver+DAQ is like a whole table full of cables and boxes!

customer service is bad. They are just like chatbots giving you pre-prepared answers!

no forum or user community (to my knowledge)

I just don't know why everyone keep using them. I'm really tired of all that wasting my time and resources. I was wondering if you could give me some suggestions. What I need

one dimensional force sensor

5V analogue output which I can measure with for example Arduino. Or a USB serial port which I can read with PuTTy for example.

up to 1200N

resolution is not that important. If I use an Arduino to read then 1200/1023 is the maximum resolution I can read anyway.

It must be affordable. not more than 100€ lets say

available here in Europe. with good local customer service

with good examples and tutorials and good user community

I did google first, but there seems to be way too much options that I'm confused which one to choose. Thought maybe you can share experience and give me some insights.


问:
How to improve confidence an object is in a particular place
I'm dealing with a problem where sometimes an object I'm looking at using RF signals can appear to be somewhere it's not due to the bouncing of the waves.

Currently what I have in place is a circular buffer that keeps the past 200 timestamps correlated to when it was seen it in that zone.

Once it sees that the object has been seen in two different zones it calculates the average time it was seen in both zones and returns the zone with the greater time.

This works pretty great under ideal conditions but sometimes the zones can be in a tight clusters so it's possible it sees 3 or more zones at once.

I understand this isn't exactly an easy problem to solve and I'm not looking for an answer on exactly what to do. I'm not sure if it's even possible to get something with 100 percent correct results but maybe some advice to improve what I have.

OwnerDisplayName: Sam

ContentLicense: CC BY-SA 4.0