Hot answers tagged

7

Aruco (as implemented in OpenCV) pros Easy to set up (with readily available aruco marker generator, opencv & ros implementation, etc.) fewer false detection (with default parameters) cons Newer versions of aruco is GPL licensed, hence opencv is stuck on an old implementation of aruco when it was still BSD. More susceptible to rotational ambiguity at ...


6

AprilTag is the state-of-the-art solution for pose estimation. The library itself already has pre-built functions to compute the marker position, given its size. The pose is estimated by homography decomposition and it's quite good if you don't go too far (2 or 3 meters for a 20cm marker). There is the C implementation made by the authors at University of ...


6

what you are looking for is written in the paper. Position refers only to x,y,z translational measurements while pose means position and orientation.


5

It sounds like you're using the camera frames to get a PnP solution, or something along those lines. A linear Kalman filter will usually work OK for most purposes if you're using roll/pitch/yaw and pose measurements coming from the camera algorithm. This is always the first port of call because it's much easier than EKF/UKF/etc. If this does not give ...


5

To extends the answer from the_parzival a bit: There are different kind of robots so that 'robot state' can have different meanings. If you have a drone or Roomba-robot, the most important state is related to its pose (position, orientation, speed, acceleration, ...). Other states are the Battery state, Motor speeds (and temperatures), essentially every ...


4

You can use a very low information matrix value at the orientation elements of your state, given that the information matrix is the inverse of the covariance matrix. The covariance matrix represents the uncertainty about the measurement, and the information matrix the certainty about it. So, the GPS constraints would have a small value at the elements ...


4

Most particle filter implementations will use some kind of importance sampling, which does not require you to make an assumption on the underlying distribution. This is one of the main reasons for using a particle filter in the first place. Importance sampling does not sample from the estimated distribution, but from your set of weighted samples. This ...


4

In general, I try to obey the following two rules when selecting states: Only use the states necessary for control, and Choose states to be measurable properties, whenever possible. For example, on my car's dashboard I could include: suspension displacement, brake pad wear, tire wear, etc. - these are all measurable properties that are critical to ...


4

It is also often the case that the author lacks knowledge, makes mistakes, or is adding unnecessary statements to their work. Just because it is published does not make it true. In this case though, it might be that the conjuction "and" and commas are confusing you. such as object recognition and pose estimation, visual odometry, and SLAM could ...


3

To get a smooth trajectory you should not have jumps in acceleration and because you are talking about pose both rotational and translational accelerations should be smooth. You can achieve this with interpolation. If you know the initial position & velocity and also final position & velocity, you have four boundary conditions and there for you can ...


3

You could try to use a bezier curve (https://en.wikipedia.org/wiki/B%C3%A9zier_curve) to interpolate with a curve and via points between A and B'. Also, is this a mobile robot or a robot arm? Do you need to go through all the points ?


3

Pose estimation means determining position and orientation. Odometry is using a (any) sensor to determine how much distance has been traversed, so visual odometry is just clarification that the particular sensor to be used for odometry is visual (a camera, typically). Traversed distance, though, means that odometry is relative - your car odometer may ...


3

The quaternion part [q_x, q_y, q_z, q_w] has four numbers but is a representation of 3D orientation, which has 3 degrees of freedom. Another common representation for orientation is the matrix Lie group $\mathrm{SO}(3)$, which is the group of $3\times 3$ rotation matrices (9 numbers, but only 3 degrees of freedom). Neither the quaternion nor the rotation ...


2

I believe this should tick all your boxes: http://wiki.ros.org/robot_localization It's a ROS node for 6D pose estimation that has the following features: Fusion of an arbitrary number of sensors. The nodes do not restrict the number of input sources. If, for example, your robot has multiple IMUs or multiple sources of odometry information, the state ...


2

The accuracy of fiducial markers (i.e. glyphs) depends on your camera's resolution, noise ratio, focus, and field of view. Essentially, you will need to ensure that there are enough pixels in the recorded image to represent the real-world precision that you want. To make this easier, it would help if the glyphs are as large as possible and the camera is ...


2

I think you can divide your problem into two subproblems: 1) Partition your 2D scan into segments/clusters which represent single objects. A basic algorithm could be: Start at first laser reading and create a new cluster Add next reading (neighbor) to cluster, if the range difference is below a threshold Else create a new cluster This approach can be ...


2

The packages you've found don't estimate scale or 3d pose because that's not really feasible using just an imu. The only way to get 3d pose from an imu is to integrate acceleration (adjusting for attitude) but all real sensors have sensor bias so the error in the integration will grow unbounded. To account for that, another sensor needs to be used to ...


2

Without knowing exactly what type of AR marker you are interested in, I'll talk about two types that I am familiar with: ArUco and April Tags. Both are AR markers that have open source libraries with stripped down (and possibly outdated) versions implemented in OpenCV. These libraries will give you the full pose of the camera based on the marker in the ...


2

The problem in both cases is to move the robot tool to some pose relative to an object. Let's assume the camera is attached to the end of a robot arm (eye in hand case) so we will consider this a problem in moving the camera. The tool will always be at a fixed relative pose to the camera. In PBVS we uses a geometric model of the object, plus known camera ...


2

Since you are going to have a mechanism that can draw within a square why not put a light sensor on it and use the same mechanism scan for the opponent's move? At the start of the game, scan all the squares and record the brightness value for each square. If the board is clear, all the values should be low. After your opponent is done and before each ...


2

The process you need to go through is actually similar to the camera calibration procedure in OpenCV or other software. The chessboard is replaced by your robot, and you can skip the intrinsic estimation step. I would actually recommend you take a look https://github.com/hengli/camodocal a multi rig camera calibrator. Anyways a high level overview. The two ...


2

I am just going to explain from the basics. So feel free to skip through the first part and scroll to the bottom if you want the answer. Basics: The 3 parameters of your pose are $x,y,\theta$. These can be stored as homogeneous matrix which is the combination of the translation($x,y$) and the rotation($\theta$). It looks like so $$\begin{bmatrix} cos(\theta) ...


1

The state of the Robot refers to the properties of the robot that you want to estimate. If you take a 2D robot as an example, then you might be interested in its 2d position which refers to $$ X(t) = \begin{bmatrix} x(t) \\ y(t) \\ \end{bmatrix} $$ If you also want to estimate its velocity, then you can add another element to its state vector and ...


1

The problem was a bug in my code where I was accessing the translation part of the solution directly, and not the camera position, so it was indeed a missing transformation. For future reference, the true camera position from a PNP solution needs to be computed as \begin{equation} C = -\mathbf{R}^\top * t \end{equation} $\mathbf{R}$ is the rotation matrix ...


1

The range between -1 or +1 is a normalized range like you said. The question is the following: Were those values divided by 180 (degrees) or 2*pi (radians)? You should check any existant documentation regarding Rutgers APC 2015. Usually, the convention is to have the angles bounded between -pi/pi or -180/180, because expressions like atan2 or atan2d returns ...


1

Check whether they are in radians. Most algorithms use radians for pose estimation.


1

If your problem is small and uncertainty information is not available, you can just set it with identity matrices. Covariance or information matrix will let you set which relative pose to trust more, but it is meaningless if such information is not available.


1

You are right. That is absolutly graph optimization problem. Sorry for the answers above but you don't need spline or acceleration for this. The graph optimization will find 5 poses above in your figure that reduce your sensor observation error at B as well as all the other inter poses. Graph optimization usually includes constraints on relative poses. That ...


1

No, nothing is "necessary". You can estimate the pose of the robot perfectly legitimately using only IMU data. You can also estimate it perfectly legitimately using only image data. But it won't be that good, there will be errors in any sensor. Localization is not a decision problem. It can be tempting to "switch" between sensors and think really hard ...


1

DSO initializes the scene and camera poses with a specific scale factor such that the average inverse depth of the pointHessians is one. After the initialization the first two frameHessians are led into the backend to do a bundle adjustment like optimization in which, however, the previous determined scale can change (because the absolute scale is not ...


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