Gazebo | Ignition | Community
Ask Your Question

jbga's profile - activity

2018-06-18 09:02:31 -0600 received badge  Famous Question (source)
2017-06-26 03:47:59 -0600 received badge  Famous Question (source)
2017-06-26 03:47:59 -0600 received badge  Notable Question (source)
2017-06-06 06:38:47 -0600 edited question Correct parameters to laser type sensor

Correct parameters to laser type sensor I am trying to simulate a Hokuyo UST-10LX Scanning Laser Rangefinder presented

2017-06-06 06:33:43 -0600 received badge  Popular Question (source)
2017-06-01 09:52:42 -0600 edited question Correct parameters to laser type sensor

Correct parameters to laser plugin I am trying to simulate a Hokuyo UST-10LX Scanning Laser Rangefinder presented in th

2017-06-01 05:45:08 -0600 received badge  Organizer (source)
2017-06-01 05:44:48 -0600 edited question Correct parameters to laser type sensor

Correct parameters to laser plugin I am trying to simulate a Hokuyo UST-10LX Scanning Laser Rangefinder presented in th

2017-06-01 05:08:21 -0600 asked a question Correct parameters to laser type sensor

Correct parameters to laser plugin I am trying to simulate a Hokuyo UST-10LX Scanning Laser Rangefinder presented in th

2017-06-01 04:50:26 -0600 received badge  Famous Question (source)
2017-06-01 04:50:26 -0600 received badge  Notable Question (source)
2017-06-01 04:50:26 -0600 received badge  Popular Question (source)
2017-06-01 04:49:55 -0600 received badge  Notable Question (source)
2017-01-28 20:53:25 -0600 received badge  Famous Question (source)
2016-11-14 12:00:23 -0600 received badge  Popular Question (source)
2016-10-28 12:39:25 -0600 received badge  Student (source)
2016-10-28 10:26:16 -0600 asked a question Callbacks in world cycle

I made a world plugin that spawns and deletes specific objects, but i don't fully understand the world update cycle. This question arose when comparing the ROS and Gazebo communication system. In ROS, we can decide when to dispatch callbacks using spinOnce, but in Gazebo I do not know when the callbacks are executed. So my question is: When are the callbacks executed? Is this process asynchronous due to Boost.Asio?

2016-10-06 10:39:37 -0600 received badge  Famous Question (source)
2016-10-06 10:39:37 -0600 received badge  Notable Question (source)
2016-10-04 02:42:38 -0600 received badge  Popular Question (source)
2016-10-03 16:17:00 -0600 commented question My Model won't show up on the Insert tab in Gazebo
2016-10-03 16:10:19 -0600 commented answer Problem importing collada model

I flipped the normals and it worked. Thank you

2016-10-03 16:09:43 -0600 received badge  Scholar (source)
2016-10-03 12:45:07 -0600 commented question My Model won't show up on the Insert tab in Gazebo

Did you put the two files inside the same folder like the other models? If you could show the output of the tree command in the folders where all Gazebo models are stored i think it is more easy to help

2016-10-03 12:39:56 -0600 received badge  Editor (source)
2016-10-03 12:39:14 -0600 asked a question Problem importing collada model

Recently i made a model of a tunnel in blender that looks like this:image description I exported it to a Collada file but when i load the model into gazebo some parts of the model disappeared.image description I am using gazebo 2.2.3. Can you tell me what I am doing wrong?

2016-07-18 10:43:30 -0600 asked a question Ackermann steering odometry

I would like to known how to simulate odometry with noise in an ackermann steering vehicle in gazebo 2.2 .

2016-06-27 05:13:28 -0600 received badge  Notable Question (source)
2016-06-20 07:16:38 -0600 received badge  Popular Question (source)
2016-06-16 18:12:49 -0600 asked a question Simulate Odometry with Ackermann Locomotion

Hello,

I am trying to simulate odometry in an ackermann vehicle with gazebo but the error that I get after twenty meters is about 4 meters. I think the result of the GetAngle method is strange when the robot is stopped, because in every cycle the number representing the angle of the wheel decreases. The code that i have is the following:

        double currentLeftposition = frontLeft->GetAngle(positionAxis).Radian(); 
        double currentRightPosition = frontRight->GetAngle(positionAxis).Radian(); 
        geometry_msgs::TransformStamped odom_trans;
        nav_msgs::Odometry odom; 
        math::Pose currentPose;
        math::Vector3 position;
        math::Quaternion rotation; 
        double xPos,yPos,orientation;
        double currentLinearVelocity=rear->GetVelocity(1);
        double twoPI=2*M_PI;
        double rearWheelRotationAngle=rear->GetAngle(positionAxis).Radian();
        double angleDiff=angles::shortest_angular_distance(prevRearWheelRotationAngle,rearWheelRotationAngle);
        prevRearWheelRotationAngle=rearWheelRotationAngle;
        double revolution=angleDiff/twoPI;
        double revolution=(currentLinearVelocity*stepTime.Double())/twoPI;
        double wheelCircuference=wheelDiameter*M_PI;
        double distanceTravelledByWheel=revolution*wheelCircuference;
        double steering=getMiddleWheelAngle(-currentLeftposition,-currentRightPosition); 
        double turningAngle=tan(steering)/distanceBetweenAxis;
        double previousOrientation=previousPose.rot.GetYaw();
        math::Vector3 previousPosition=previousPose.pos;
        if(fabs(turningAngle)<0.001) //assume that the car is going ahead
        {
            xPos= previousPosition.x + distanceTravelledByWheel*cos(previousOrientation);
            yPos= previousPosition.y + distanceTravelledByWheel*sin(previousOrientation);
            orientation=previousOrientation;
         }
         else
         {
            double delta_theta=turningAngle*distanceTravelledByWheel;
            double radius=1.0f/turningAngle;
            double cx=previousPosition.x - sin(previousOrientation)*radius;
            double cy=previousPosition.y + cos(previousOrientation)*radius;
            orientation = remainder(previousOrientation + delta_theta,twoPI);
             xPos=cx + sin(orientation)*radius;
             yPos=cy - cos(orientation)*radius;
          }
          position.x=xPos;
          position.y=yPos;
          position.z=0;
          /*std::ofstream log("/home/bernardo/odom.dat", std::ios_base::app | std::ios_base::out);
          log << xPos << "   " << yPos << "\n";*/
          rotation.SetFromEuler(0,0,orientation);