开发者

Player/Stage- robot is not moving in simulaion?

开发者 https://www.devze.com 2023-01-09 06:29 出处:网络
I am new to player/stage. But somehow I managed to come up with the below code but is not moving First the configuration file

I am new to player/stage. But somehow I managed to come up with the below code but is not moving

First the configuration file

driver
(
    name "stage"

    provides ["simulation:0"]
    plugin "stageplugin"

    #load the world file
    worldfile "robotWorld.world"
)

driver
(
    name "stage"
    provides [
                    "position2d:0"
                    "laser:0"
             ]
    model "robot"
)

The map.inc file

define map model
(
    #color of the map
    color "black"

    #we need a boundary wall aroung the map, then only the robot can't go outside of     the map

    boundary 1

    gui_nose 1
    gui_grid 1
    gui_movemask 0
    gui_outline 0

    fiducial_reurn 0
    gripper_return 0
)

The robot.inc file

define robots_laser laser
(
    # minimum range of the laser
    range_min 0.0

    #maximum range of the laser
    range_max 2

    #field of view or pan angle of the camera
    #fov 180

    #assume the robot's size as 400*200, and  the camera is in the front end
    pose [200 100 0 0]

   开发者_运维知识库 #size of the camera
    size [0.025 0.025 0.001]
)

define robot position
(
    #size of the robot
    size [50 50 50]

    #as a default centre of rotation is the geometry centre

    #shape of the robot
    polygons 1

    polygon[0].points 4
    polygon[0].point[0] [0 0]
    polygon[0].point[1] [1 0]
    polygon[0].point[2] [1 1]
    polygon[0].point[3] [0 1]

    # car steering model
    drive "car"

    #mass of the robot
    mass 10.0

    robots_laser()  
)

The world file is

include "robot.inc"
include "map.inc"

#size of the simulation
size [15 15]

#interval_sim=5
#interval_real=10

#GUI window
window
(
    size [700 700]
    scale 2.5
    show_data 1
)

map
(
    bitmap "map2"
    size [300 300 3]
)

robot
(
    name "robot"
    pose [0 0 0 0]
    color "Green"
)

This is the main cpp file (mainCode.cpp)

#include<iostream>
#include<unistd.h>
#include<time.h>
#include<player-3.0/libplayerc++/playerc++.h>

using namespace std;

int main(int argc,char * argv[])
{
    using namespace PlayerCc;
    cout << "111111111111" << endl ;
    PlayerClient robotClient("localhost",6665);

    Position2dProxy p2dProxy(&robotClient,0);
    LaserProxy laserProxy(&robotClient,0);

    p2dProxy.SetMotorEnable(true);

    p2dProxy.RequestGeom();

    robotClient.Read();

    while(true) 
    {
        robotClient.Read();
        p2dProxy.SetCarlike(240,0);
        cout << laserProxy[45] << endl ;
    }

    cout << "reached the end of the coding" << endl ;
}

Every thing is fine but the robot is not moving, So In the above code I am getting a constant value as the output. And in the simulation robot is not moving. Anybody, please help me?


External to your controller, Player/Stage is threaded. However, your code must manage it's own resources. So, you need to give up execution time so that other things (like the proxies you've subscribed to) can run.

Add a sleep call at the end of your while loop. This will allows the proxies to update data (both to and from player/stage) so you receive new sensor data and player gets new velocity commands.

0

精彩评论

暂无评论...
验证码 换一张
取 消