C++ 玩家/舞台-机器人没有在模拟中移动?

C++ 玩家/舞台-机器人没有在模拟中移动?,c++,simulation,robotics,C++,Simulation,Robotics,我是新手。但不知何故,我设法想出了下面的代码,但并没有移动 首先是配置文件 driver ( name "stage" provides ["simulation:0"] plugin "stageplugin" #load the world file worldfile "robotWorld.world" ) driver ( name "stage" provides [ "positi

我是新手。但不知何故,我设法想出了下面的代码,但并没有移动

首先是配置文件

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"
)
map.inc文件

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
)
robot.inc文件

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()  
)
世界档案是

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"
)
这是主cpp文件(mainCode.cpp)

#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
使用名称空间PlayerCc;

cout在控制器外部,Player/Stage是线程化的。但是,您的代码必须管理自己的资源。因此,您需要放弃执行时间,以便其他事情(如您订阅的代理)可以运行


在while循环结束时添加一个sleep调用。这将允许代理更新数据(与播放器/舞台之间的数据)以便您接收新的传感器数据,播放器获得新的速度命令。

投票关闭为“太本地化”。也许,你应该把这个问题发到你正在使用的库的邮件列表中,或者自己去解决。@Pavel Shved我在stack over flow中看到了近5个与玩家/舞台相关的问题。所以我把它贴了出来,但我仍然认为你的问题太本地化了。也许这些问题也是。@Pavel Shved Partiall我必须同意你的看法。当然,在一个模糊的平台上会有帮助。链接声称,顺便说一句,该播放器是世界上使用最广泛的机器人控制界面,这表明该主题总体上是好的。
#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 ;
}