标签: robotics

我试图有一个墙跟随机器人,但在我的范围内没有声明的名称有错误我需要帮助

#include <iostream>
#include <libplayerc++/playerc++.h>

using namespace std;
int main(int argc, char *argv[])

{
using namespace PlayerCc;  
PlayerClient    robot("localhost");  
BumperProxy      bp(&robot,0);  
Position2dProxy pp(&robot,0);
pp.SetMotorEnable(true);


for(;;)
    double turnrate, speed;
double error;
bool wall;

motor_a_speed(0);
motor_c_speed(0);

while(1) {

    front_bumper = SENSOR_2;
    left_bumper = SENSOR_3;

    if (front_bumper > 2) {

        if (left_bumper < 3) {

            motor_a_speed(5);

            motor_c_speed(drive_speed);
            motor_a_dir(fwd);
            motor_c_dir(fwd);

        }

        else {

            motor_a_speed(drive_speed);

            motor_c_speed(5);
            motor_a_dir(rev);
            motor_c_dir(rev);

        }

    }

    else {

        motor_a_speed(drive_speed);

        motor_c_speed(drive_speed);
        motor_a_dir(brake);
        motor_c_dir(brake);
        mrest(100);

        cputs("bump");

        motor_a_dir(fwd);
        motor_c_dir(rev);
        msleep(450);


        cputs("right");

        motor_a_speed(10);
        motor_a_dir(fwd);
        motor_c_dir(fwd);
        mrest(1300); …
Run Code Online (Sandbox Code Playgroud)

c++ robotics

0
推荐指数
1
解决办法
412
查看次数

路径规划和障碍避免算法

我正在研究一个2D空间,我的机器人需要遵循轨迹,同时避开一些障碍物.

我最近读到了关于路径规划的方法,如"矢量场直方图"和"动态窗口方法".

是否值得在2D空间中使用这些算法,还是应该将其作为潜在场或快速探索随机树?

algorithm robotics

0
推荐指数
1
解决办法
2053
查看次数

移动机器人的蒙特卡罗定位

我正在为我的机器人实施蒙特卡洛定位,给出了环境地图及其起始位置和方向.我的方法如下:

  1. 在给定位置周围均匀地创建500个粒子
  2. 然后在每一步:
    • 运动用odometry更新所有粒子(我目前的方法是newX = oldX + odometryX(1 + standardGaussianRandom)等)
    • 使用声纳数据为每个粒子分配权重(公式是针对每个传感器概率*= gaussianPDF(realReading),其中高斯具有均值predictReading)
    • 以最大概率返回粒子作为此步骤的位置
    • 然后根据重量从旧的粒子重新采样9/10个新粒子,并在预测位置周围均匀地采样1/10

现在,我为机器人的环境编写了一个模拟器,以下是本地化的行为:http://www.youtube.com/watch?v = q7q3cqktwZI

我非常害怕机器人可能会在较长一段时间内迷路.如果将粒子添加到更广泛的区域,机器人会更容易丢失.

我期待更好的表现.有什么建议?

robotics robot montecarlo

0
推荐指数
1
解决办法
680
查看次数

GUI按钮按住 - tkinter

我正在尝试用python中的GUI来控制我的机器人汽车.我的问题是我如何做一个确定按下按钮的功能.我想在按下按钮时移动汽车,并在释放按钮时停止汽车.

from Tkinter import * 

hold_down = False 
root = Tk()

def button_hold(event):
      hold_down=true
      while hold_down== True: 
               print('test statement')
               hold_down = root.bind('<ButtonRelease-1>',stop_motor)

def stop_motor(event):
       hold_down= False
       print('button released')

button = Button(root, text ="forward")
button.pack(side=LEFT)
root.bind('<Button-1>',button_forward)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我试图模拟我在这个答案中找到的东西

我尝试在while一个布尔循环中做到这一点.当用户按下按钮时,布尔值变为True,代码进入while循环.当用户释放按钮时,布尔值会更改为,False并且代码将从循环中退出,但在此代码中,无论是否释放按钮,布尔值始终为true.

编辑:我希望在条件发生之前调用函数.要调用的函数是hold_down(),要检查的条件是按钮被释放.

更新:我找到了一种方法让它工作.

python robotics tkinter

0
推荐指数
1
解决办法
1万
查看次数

有人可以帮忙解释RobotC语法吗?

我已经在Python和JavaScript中编程了一段时间.我还编写了arduino语言,它是C和C++的混合.我刚刚被介绍给RobotC.RobotC使用的语法与我学过的任何语言都不一样.有人可以帮助解释这些语法差异,以便我能更好地理解它吗?

问题1:

制作电机时,可以使用以下语法:

motor[motorA] = 50
Run Code Online (Sandbox Code Playgroud)

这条线刚刚做了什么?在任何其他编程语言中,您将如何更改数组中的值,但在RobotC中,它的作用类似于函数调用.'motor'是一个数组还是一个对象?为什么在控制伺服系统时需要一个功能呢?

问题2:

在编程史上这是允许的吗?

motor[leftMotor] = motor[rightMotor] = speed = 127;
Run Code Online (Sandbox Code Playgroud)

那么这段代码会做什么呢?

speed = 127;
motor[rightMotor] = speed;
motor[leftMotor] = motor[rightMotor];
Run Code Online (Sandbox Code Playgroud)

要么

speed = 127;
motor[rightMotor] = 127;
motor[leftMotor] = 127;
Run Code Online (Sandbox Code Playgroud)

c robotics

-1
推荐指数
1
解决办法
298
查看次数

标签 统计

robotics ×5

algorithm ×1

c ×1

c++ ×1

montecarlo ×1

python ×1

robot ×1

tkinter ×1